신경망 학습
- 인공 신경망은 입력에 대해서 순전파 연산
- 순전파 연산을 통해 나온 예측값과 실제값의 오차를 Cost Function 통해 계산
- 오차(Cost)를 미분하여 Gradient(기울기) 구하고,
- 역전파 수행
- (Zeroing Gradients)
원본 링크
개요
이름 그대로. 출력에서 입력 방향으로 ‘거꾸로’들어가면서 가중치를 하나씩 업데이트함
역전파 1단계, 2단계 라는 식으로 명명할 수 있는데,
레이어 사이의 가중치 행렬을 업데이트하는 하나하나의 단계를 뜻하는거임.
근데 거꾸로 들어가니까 제일 첫단계인 1단계는 가장 마지막 가중치행렬 업데이트.
직접 계산해보는 역전파

활성화 함수로 시그모이드, 비용함수로 MSE 사용
역전파 1단계 W5 를 찾기
Chain Rule
∂W5∂Etotal=∂o1∂Etotal×∂z3∂o1×∂W5∂z3
∂Etotal/∂o1
Etotal=21(targeto1−outputo1)2+21(targeto2−outputo2)2
targeto1, targeto2, outputo2는 모두 o1에 대한 함수가 아님.
outputo1=o1임. 표기법 차이.
∂o1∂Etotal=−targeto1+outputo1
targeto1,outputo1 : 알고 있는 값.
∂o1/∂z3
참고,
Sigmoid의 미분
Sigmoid(x)×(1−Sigmoid(x))
원본 링크
또한, o1=sigmoid(z3) 이다.
∂z3∂o1=o1×(1−o1)
o1 : 알고 있는 값.
∂z3/∂W5
∂W5∂z3=h1
왜 why? W5⋅h1+b=z3
h1 : 알고 있는 값.
역전파 2단계 W1 찾기
∂W1∂Etotal=∂h1∂Etotal×∂z1∂h1×∂W1∂z1
∂Etotal/∂h1
∂h1∂Etotal=∂h1∂Eo1+∂h1∂Eo2=∂z3∂Eo1∂h1∂z3+∂z4∂Eo2∂h1∂z4=∂o1∂Eo1∂z3∂o1∂h1∂z3+∂o2∂Eo2∂z4∂o2∂h1∂z4
1단계와 같은 방법
∂Eo1/∂o1
Eo1∂o1∂Eo1=21(targeto1−outputo1)2=−(targeto1−outputo1)
targeto1,outputo1 : 알고 있는 값.
∂o1/∂z3
∂z3∂o1=o1×(1−o1)
o1 : 알고 있는 값.
∂z3/∂h1
∂h1∂z3=W5
W1 : 알고 있는 값 (역전파 1단계에서 구함)
결론
이처럼 역전파 단계를 거쳐가며 새로운 가중치 값을 찾아낼 수 있음을 확인하였다.