Backpropagation
해당 게시물은 "혁펜하임의 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의 이해를 돕는 유튜브 영상을 첨부한다.