신경망 학습
훈련데이터로부터 매개변수의 최적값을 자동으로 획득
→ 자동으로 학습할 때 손실함수(Loss)를 지표로 사용!
→ 손실함수를 최소화하는 매개변수를 찾는다.
→ 미분, 기울기 이용
손실함수
- 오차제곱합(SSE; Sum of Squared Error)
E=21Σk=1n(yk−tk)2
- 교차엔트로피(CEE; Cross-Entropy Error)
E=−Σk=1ntkloge(yk+C)
- 실제로 정답일 때의 예측값의 자연로그 계산(tk=1)
- 정답일 때의 출력이 전체 값을 정함
- yk=0이면 E는 −inf이므로 loge에 C를 더해줌
Gradient Update
- Batch Gradient Descent
모든 학습 데이터를 사용하여 Graident 계산 및 Update
- Stochastic Gradient Descent
한 개의 학습 데이터를 사용하여 Gradient 계산 및 Update
- Mini-batch Gradient Descent
모든 학습 데이터를 Mini-batch로 쪼개어 한 번의 Gradient 계산 및 Update에 한 개의 Mini-batch 사용
∴ 속도와 최소값의 수렴을 고려하여 미니배치 경사하강법 채택
경사하강법
기울기를 잘 이용해 함수의 최소값을 찾아가는 방법
- 현 위치에서 기울기를 구해 기울어진 방향으로 일정 거리만큼 이동하기를 반복
xt=xt−1−η∂x0∂ft−1
- 기울기(경사): 모든 변수의 편미분을 벡터로 정리한 것(수치미분을 이용하여 계산)
- 기울기가 0이라고 최소값인 것은 아니다. (∵ 극소점, 안장점)
- 기울기는 수치미분을 통해 구하는 것은 단순하지만 시간이 오래걸린다.
순전파(Forward Propagation)
- 올바른 순서대로 학습을 진행
- 최초 입력값으로부터 각 층마다 존재하는 가중치와 연산하고 활성화 함수를 통과하는 과정을 순서대로 이어나가 최종 layer까지 계산한 후 실제 label과 오차를 계산하는 것
역전파(Backward Propagation)
(1) 덧셈 노드의 역전파
z=x+y∂x∂z=1∂y∂z=1
역전파 시, 입력된 값 그대로 출력
(2) 곱셈 노드의 역전파
z=xy∂x∂z=y∂y∂z=x
입력된 신호의 서로 바꾼 값 출력
오차역전파법 사용하여 활성화 함수 구현
(1) ReLU
y={x,if(x>0)0,if(x<=0)
∂x∂y={1,if(x>0)0,if(x<=0)
(2) Sigmoid
∂y∂Ly2e−x=∂y∂L(1+e−x1)2e−x=∂y∂L1+e−x11+e−xe−x=∂y∂Ly(−y)
(3) Affine: 신경망의 순전파 때 사용하는 행렬곱
미니배치 단위로 계산할 때, 형상(shape)은 X = (n,x), Y = (n,y)
(4) Softmax with CEE
(y-t) 형태 = 현재 출력과 정답 레이블의 오차 그대로 드러냄
-> 앞 계층들은 이를 통해 큰 깨달음 얻음
항등함수 SSE 조합도 (y-t) 형태로 나옴
-> Softmax&CEE, 항등함수&SSE 사용하는 이유
실제 신경망 예시

참고
밑바닥부터 시작하는 딥러닝 <사이토 고키>