역전파 개념(Back-Propagation)
순전파(Forward-Propagation)를 통해 예측값과 실제값의 오차를 최소화하기 위해 파라미터(W,b) 를 업데이트하는 과정
_image_1.png)
파라미터 업데이트(학습) 과정
순전파(Forward Propagation)
_image_2.png)
활성화 함수(h, o): Sigmoid 함수
가중치합 1
z1=w1x1+w2x2=0.3×0.1+0.25×0.2=0.08
z2=w3x1+w4x2=0.4×0.1+0.35×0.2=0.11
활성화 함수 1
h1=sigmoid(z1)=0.51998934
h2=sigmoid(z2)=0.68047592
가중치합 2
z3=w5h1+w6h2=0.45×h1+0.4×h2=0.44498412
z4=w7h1+w8h2=0.7×h1+0.6×h2=0.68047592
활성화 함수 2
o1=sigmoid(z3)=0.60944600
o2=sigmoid(z4)=0.66384491
역전파(Back Propagation)
Loss Function: MSE
E=21((t1−o1)2+(t2−o2)2)
E=21((0.4−o1)2+(0.6−o2)2)=0.02397
편미분과 Chain rule
편미분
- z=f(x,y,...)에 대하여, z를 x에 대해서 편미분 하는 것을 ∂x∂z 라 표현함
- f(x,y)=x2+xy+y2
- 위 함수에 대한 x의 편미분을 구하면 (y 는 상수 취급),
∂x∂f(x,y)=2x+y
Chain rule
- 합성함수의 미분을 구하기 위해 chain rule 성질을 이용함
_image_3.png)
역전파 1단계
_image_4.png)
- w5,w6,w7,w8에 대한 업데이트
- 우선, w5 업데이트하기 위해서 ∂w5∂Etotal 를 계산함
- E 함수를 w5에 대해 미분하기 위해서는 합성함수의 미분 즉, Chain rule 성질을 이용해 미분해야함(함수 E에 다이렉트로 w가 포함되어 있지 않으므로)
- Chain rule에 따라, 아래와 같이 표현함
∂w5∂E=∂o1∂E×∂z3∂o1×∂w5∂z3 ,
- 먼저, 첫번 째 항인 ∂o1∂E을 구해보면 E 를 o1에 대해 편미분하므로, 아래와 같이 정리됨
E=21t12−t1o1+21o12 + 21t22−t2o2+21o22
∂o1∂E=(o1−t1)=0.209446
- 다음, 두번 째 항인 ∂z3∂o1을 정리하는데, o1은 시그모이드 함수를 통해 나온 값을 정의하며, 시그모이드 함수의 미분은 f(x)×(1−f(x))로 정의됨
∂o1=sigmoid(z3)×(1−sigmoid(z3))=o1×(1−o1)
∂z3∂o1=o1×(1−o1)=0.609446(1−0.609446)=0.23802157
z3=h1w5+h2w6
∂w5∂z3=h1=0.51998934
- 따라서 구한 값들을 모두 대입해 최종값을 구할 수 있다
so, ∂w5∂E=0.290446×0.23802157×0.51998934=0.02592286
최적화
- 업데이트가 완료된 가중치는 최적화 방법에 따라 가중치 업데이트를 한다
- 최적화 방법: 경사 하강법
- 학습률( α, Learning rate, 하이퍼 파라미터): 0.5
- 같은 층의 나머지 가중치들도 위 방법과 동일하게 기울기를 구하고, 가중치 업데이트를 진행함
w5+=w5−α∂w5∂E=0.45−0.5×0.02592286=0.43703857
∂w6∂E=∂o1∂E×∂z3∂o1×∂w6∂z3→w6+=0.38685205
∂w7∂E=∂o2∂E×∂z4∂o2×∂w7∂z4→w7+=0.69629578
∂w8∂E=∂o2∂E×∂z4∂o2×∂w8∂z4→w8+=0.59624247
_image_5.png)
역전파 2단계
- w1,w2,w3,w4에 대한 업데이트
- w1 업데이트하기 위해서 ∂w1∂Etotal 를 계산함
- chain rule에 따라, 다음과 같이 나타낼 수 있다
∂w1∂E=∂h1∂E×∂z1∂h1×∂w1∂z1
- 이때, 출력층의 각 에러 Eo1,Eo2를 아래와 같이 정의하고,
Eo1=21(t1−o1)2, Eo2=21(t2−o2)2
- 미분법칙에 따라 ∂h1∂E을 풀어 쓰면 다음과 같다
∂h1∂E=∂h1∂Eo1+∂h1∂Eo2
- 위 식의 우변의 두항을 각각 구해보면, ∂h1∂Eo1은 다음과 같다
∂h1∂Eo1=∂z3∂Eo1×∂h1∂z3=∂o1∂Eo1×∂z3∂o1×∂h1∂z3
=(o1−t1)×o1×(1−o1)×w5=0.0224337
∂h1∂Eo2=∂z4∂Eo2×∂h1∂z4=∂o2∂Eo2×∂z4∂o2×∂h1∂z4
=(o2−t2)×o2×(1−o2)×w7=0.00997311
- 따라서 위에서 구한 ∂h1∂E을 대입하여 계산해보면 E에 대한 w1의 기울기는 아래와 같다
∂h1∂E=(0.0224337+0.00997311)=0.03240681
∂z1∂h1=h1×(1−h1)=0.24960043
∂w1∂z1=x1=0.1
∂w1∂E=∂h1∂E×∂z1∂h1×∂w1∂z1=0.03240681×0.24960043×0.1
=0.0008088
파라미터 업데이트
- w1의 가중치를 업데이트하고, 같은 레이어의 나머지 가중치들도 동일한 방식으로 업데이트함
w1+=w1−α∂w1∂E=0.3−0.5×0.0008088=0.2995956
∂w2∂E=∂h1∂E×∂z1∂h1×∂w2∂z1→w2+=0.24919112
∂w3∂E=∂h2∂E×∂z2∂h2×∂w3∂z2→w3+=0.39964496
∂w4∂E=∂h2∂E×∂z2∂h2×∂w4∂z2→w4+=0.34928991
결과 확인
업데이트 된 가중치에 대해서 다시 순전파를 진행하여 오차가 감소하였는지 확인함
기존 오차
파라미터 업데이트 후 오차
참고
Prev:
4. 손실 함수(Loss Function)
Next:
6. 최적화와 경사하강법(Optimization)
DeepLearning