AI

Backpropagation

pullwall 2024. 9. 3. 18:34
728x90
해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.

역전파(Backpropagation)는 미분이 뒤로 전달되기 때문에 "Back"propagation이라고 부른다.

 

역전파를 이해하기 위해 chain rule을 먼저 알아야 하는데 이에 대해서 잠시 설명한다.

 

$(x^2+1)^2$라는 식은 $x \to x^2 \to x^2+1 \to (x^2+1)^2$의 과정으로 만들어진다.

 

$(x^2+1)^2$을 chain rule을 따라 미분해 보면 아래와 같이 미분할 수 있다.

  • $\frac{d(x^2+1)^2}{dx}=\frac{(x^2+1)^2}{d(x^2+1)} \frac{(x^2+1)}{d(x^2)} \frac{(x^2)}{d(x)}$

감이 오는지? 식 전개 과정에서 자기 자신을 그 전 단계에 대해 미분하는걸 반복하면 된다. 그것이 chain rule이다.

 


위와 같은 신경망이 있다.

 

loss 는 MSE로 $L=(\hat{y_1}-y_1)^2+\hat{y_2}-y_2)^2$라고 하자.

 

그러면 그래디언트 $\frac{\partial L}{\partial w_1}$는 chain rule에 의하여 아래와 같이 계산할 수 있다.

  • $\frac{\partial L}{\partial w_1}=\frac{\partial L}{\partial n_3}\frac{\partial n_3}{\partial d_2}\frac{\partial d_2}{\partial n_2}\frac{\partial n_2}{\partial d_1}\frac{\partial d_1}{\partial w_1}$

그런데 $w_2$가 바뀐다면 loss를 구성하고 있는 $\hat{y_2}$에도 영향을 미치기 때문에 이것도 고려해 주어야 한다.

 

즉, 위 그림에서 하늘색 path도 아래와 같이 고려해 주어야 한다.

  • $\frac{\partial L}{\partial w_1}=\frac{\partial L}{\partial n_3}\frac{\partial n_3}{\partial d_2}\frac{\partial d_2}{\partial n_2}\frac{\partial n_2}{\partial d_1}\frac{\partial d_1}{\partial w_1}+하늘색path$

이는 아래와 같은 식으로 정리할 수 있다.

  • $\frac{\partial L}{\partial w_1}=2(\hat{y_1}-y_1)f_{2}^{'}(d_2)w_2f_{1}^{'}(d_1)n_1$

activation과 weight가 반복되는 모습을 보이는데,

 

hidden layer가 하나라면 activation-weight-activation-n의 꼴이고

hidden layer가 두개라면 activation-weight-activation-weight-activation-n 꼴이 된다.

 


 

forward propagation를 통해 $d$ 값들을 계산한 후 저장한다.

 

이후 backpropagation을 할 때 저장해 놓았던 $d$값들을 사용하여 미분값을 구한다.

 

위 그림과 같은 신경망에서는 총 17개의 파라미터가 있는데(weight, bias) 이에 대한 미분을 위와 같은 방법으로 전부 구한다.

 

그러면 17개의 파라미터를 업데이트 할 때 ($x_1=x_0-\alpha g$꼴) 여기 있는 $g$ 값을 backpropagation을 통해 얻음으로써

loss가 최소가 되는 방향으로 업데이트를 진행하는 것이다.

 

 


 

마지막으로 backpropagation의 이해를 돕는 유튜브 영상을 첨부한다.

 

https://youtu.be/SmZmBKc7Lrs

 

 

 

 

728x90