입력값과 은닉층 그리고 출력층에서 주어지는 수는 각각 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>
모두의딥러닝(조태호, 길벗)
'datascience > DL' 카테고리의 다른 글
Backpropagation(역전파) - 코드로 구해보기 (0) | 2021.06.06 |
---|---|
Backpropagation(역전파) - 은닉층 가중치 업데이트 계산식 도출 (0) | 2021.05.25 |
딥러닝 순전파 실습(퍼셉트론 계산과정) (0) | 2021.05.16 |