datascience/DL

Backpropagation(역전파) - 출력층 가중치 업데이트 계산식 도출

patrck_jjh 2021. 5. 22. 21:38

 

 

 

 

 

입력값과 은닉층 그리고 출력층에서 주어지는 수는 각각 2개씩이다.

가중치의 합은 $a$로 활성화 함수는 $\sigma$(sigmoid function)로 주어진다.

 

 


 

$w_{31}$(출력층의 가중치)의 가중치 업데이트 계산식 도출

 

 

기초적인 식인 $w_{31}(t+1)=w_{31}(t)-\frac{\partial error}{\partial w_{31}}$에서 $\frac{\partial error}{\partial w_{31}}$를 구하고자 한다

 

 

여기서 $error=\frac{1}{2}(y_{t1}-y_{1})^{2}+\frac{1}{2}(y_{t2}-y_{2})^{2}$ 이다. (각 출력값의 MSE의 합)

 

 

체인룰에 의해 $\frac{\partial error }{\partial w_{31}}=$ $\frac{\partial error}{\partial y_{1}}$ $\cdot\frac{\partial y_{1}}{\partial a_{1}^{(2)}}$ $\cdot\frac{\partial a_{1}^{(2)}}{\partial w_{31}}$로 표현이 가능하다

 

 

각각의 요소별로 계산을 해보면

 

$\frac{\partial error}{\partial y_{1}}=$ $y_{1}-y_{t1}$ 

 

$\frac{\partial y_{1}}{\partial a_{1}^{(2)}}= y_{1}(1-y_{1})$  ( sigmoid 함수($\sigma(x)$)의 1차미분 참조, $\frac{\text{d} \sigma(x)}{\text{d}x}=\sigma(x)\cdot(1-\sigma(x))$)

 

$\frac{\partial a_{1}^{(2)}}{\partial w_{31}}=$ $z_{1}$ 이다

 

종합적으로

 

$\frac{\partial error}{\partial w_{31}}=$ $(y_{1}-y_{t1})\cdot y_{1}(1-y_{1})\cdot z_{1}$이므로

 

$w_{31}(t+1)=w_{31}(t)-$ $(y_{1}-y_{t1})\cdot y_{1}(1-y_{1})\cdot z_{1}$이다

 

여기서 $(y_{1}-y_{t1})\cdot y_{1}(1-y_{1})$는 델타(delta)식이라고 하고 $\delta_{y}$로 치환하면  -----  (델타($\delta$)식=오차*활성화함수의 미분값)

 

최종적인 입력층 오차 업데이트 식은

 

$w_{31}(t+1)=w_{31}(t)-$ $\delta_{y}$ $\cdot z_{1}$가 된다.

 

 

 

 

 

 

 

<feedback>

Powerpoint로 직접 개념도를 그려보았다. 또한 비교적 복잡한 수식들을 코드로 적어 보았다. 장기적으로 복잡한 개념들에 대해 기록하고자 할 때 필요한 요소라고 생각하기 때문이다.

 

<References>

모두의딥러닝(조태호, 길벗)