일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 알고리즘
- 파이썬
- 프로그래머스
- 운영체제
- 딥러닝
- 구글 킥스타트
- BFS
- DFS
- AI
- nlp
- 동적 프로그래밍
- 브루트포스
- 네트워크
- 코딩 테스트
- 코딩테스트
- linux
- 백준
- 프로그래밍
- PYTHON
- 그래프
- 코딩
- 리눅스
- CSS
- 순열
- 킥스타트
- dp
- OS
- kick start
- google coding competition
- 동적프로그래밍
- Today
- Total
목록AI/밑바닥딥러닝1 (14)
오뚝이개발자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmb4hH/btqE0PTXy3j/U5AIctOzH20doq3K0yr1K1/img.png)
매개변수 갱신 신경망 학습의 목적은 손실함수의 값을 최대한 낮추는 매개변수를 찾는 것이었다. 이는 바로 최적의 매개변수를 찾는 최적화 문제이다. 앞 장에서 다루었던 매개변수의 기울기(미분)를 이용해 갱신하는 방식을 확률적 경사 하강법(SGD)라 한다. 최적화 방법에는 SGD말고도 모멘텀, AdaGrad, Adam 이라는 다른 방법들이 존재한다. (아래의 코드는 SGD를 구현한 것.) class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): params[key] -= self.lr * grads[key] GD와 SGD의 차이에 대해 조금 더 정확히 말하자면, SGD..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brHCnK/btqE0BHy1eu/KOaXeJfdKtcJS7I5zThS10/img.png)
오차역전파법(backpropagation) 이전까진 신경망의 학습에서 가중치 매개변수의 기울기를 수치미분을 사용해 구했다. 수치미분은 단순해서 구현이 쉽지만 계산이 오래 걸린다는 단점이 있다. 오차역전파법은 이러한 단점을 개선해 가중치 매개변수의 기울기를 효율적으로 계산하도록 도와준다. 오차 역전파법을 이해하기 위해 먼저 그래프로 나타낸 계산 그래프를 살펴보자. 계산 그래프 문제 : 슈퍼에서 사과 2개, 귤 3개를 샀다. 사과와 귤을 개당 100원, 150원이다. 소비세가 10%일 때 지불금액은? 위의 문제를 계산 그래프로 나타내보면 아래와 같다. 위의 계산그래프의 흐름은 왼쪽에서 오른쪽이다. 이러한 방향의 진행을 순전파(forward propagation), 반대 방향의 진행을 역전파(backward ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BhZ6m/btqEYI8xJ5W/2ktrzk8vbTEtwhzHrcYKL0/img.png)
손실함수란? 신경망이 최적의 매개변수를 탐색해 학습할 수 있도록 해주는 지표 데이터 주도 학습 기계학습은 데이터가 생명이다. 데이터에서 답을 찾고, 특징을 추출해 패턴을 발견하는 방식. 신경망의 이점 모든 문제를 같은 맥락에서 풀 수 있다. EX) 손글씨로부터 숫자 5를 인식하는 문제, '개'를 인식하는 문제 등. Training data, Test data training data : 최적의 매개변수를 찾기 위한 '학습'에 이용 test data : 학습한 모델의 '평가'에 이용 두 개를 나누는 이유 : 범용능력을 제대로 평가하기 위해 범용능력이란? 아직 보지 못한 데이터로도 문제를 올바르게 풀어내는 능력으로 기계학습의 최종 목표 손실함수 예시 1. 평균제곱오차(Mean Square Error, MSE..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cee3M5/btqEPVFoqI1/XWcWDeybDKYC7la5UDox60/img.png)
신경망이 퍼셉트론과 다른 점 퍼셉트론에선 가중치 매개변수의 값을 사람이 직접 입력해주었지만 신경망에선 학습을 통해 가중치 매개변수의 값을 데이터로부터 자동으로 학습 신경망의 구조 편향을 명시한 신경망 편향(bias)의 입력신호는 항상 1이다. 활성화 함수(activation function)의 등장 활성화 함수는 입력신호의 총합이 활성화를 일으키는지를 결정하며 퍼셉트론에서 신경망으로 가는 열쇠이다. 위의 그림과 아래의 그림을 비교해보면 다음층으로 가기전 입력신호의 총합이 h()라는 함수를 거쳐가는 것을 알 수 있다. 이것이 활성화 함수이다. 이를 수식으로 나타내보면 다음과 같다. (이 예시에서는 활성화함수를 step function이라 가정함.) 활성화 함수의 종류 1. 계단함수(step function..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MyszJ/btqEKQrreRq/aZXFlLSekTYEhXOC0rAA1k/img.png)
퍼셉트론(Perceptron)이란? 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 알고리즘으로 신경망(딥러닝)의 기원이다. 위의 그림에서 원을 '노드(뉴런)'이라고, w1과 w2를 가중치라고 부른다. 위의 퍼셉트론을 수식으로 나타내면 다음과 같다. 즉, w1x2 + w2x2의 값이 세타보다 작거나 같으면 0을, 크면 1을 출력한다. 이 때, 세타를 임계값이라 한다. 다시말하면, 신호의 총합이 임계값을 넘을 때만 1을 출력하는데 이를 "뉴런이 활성화"되었다고 한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 역할을 한다. 기계학습이란? 기계학습에서 '학습'이란 위와 같은 퍼셉트론의 적절한 매개변수 값을 컴퓨터가 자동으로 정하게 하는 것을 말한다. 그렇다면 사람이 하는 일은 무엇일까? 바로 구조..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JuBdb/btqEKxq7yIY/yJYxkh2p9EmkoY4kl1lR31/img.png)
Numpy란? 배열과 행렬 계산에 유용한 라이브러리로 일반적으로 아래와 같이 import 해준다. import numpy as np Numpy의 배열 생성(np.arrary()) np.array() 메서드는 리스트를 인수로 받아 넘파이의 특수한 형태의 배열(numpy.ndarray)을 반환한다. # np.array() 실습 X = np.array([1.0, 2.0, 3.0]) print(X) # [1. 2. 3.] print(type(X)) # Numpy 배열 간 산술연산 numpy 배열 간의 산술연산은 element-wise 연산 즉, 원소별 연산이다. 주의할 점은 연산을 하는 배열(행렬)의 형상이 같아야 한다. 여기서 형상이란 N차원 배열에서 각 차원의 크기(원소수)이다. # Numpy 산술연산 실습..