역전파(Backpropagation) 알고리즘

박재한·2022년 2월 7일
0

Deep Learning

목록 보기
2/22
post-custom-banner

참고자료

  • 역전파(Backpropagation) 알고리즘은 한마디로 말하면, 손실함수(Loss function)의 극소값을 만드는 매개 변수의 값을 찾기 위해 경사 하강법(gradient descent)을 이용하는데, 경사 하강법을 하려면 손실 함수를 매개 변수들에 대해 미분(편미분)을 해야 한다. 인공 신경망(Neural network)에서 이러한 미분의 계산량을 줄여주고 효율적으로 계산할 수 있도록 만들어 주는 것이 바로 역전파 알고리즘이다.

1. 인공 신경망의 이해(Neural Network Overview)

우선 예제를 위해 사용될 인공 신경망을 소개한다. 역전파의 이해를 위해서 여기서 사용할 인공 신경망은 입력층(Input layer), 은닉층(Hiddel layer), 출력층(Output layer) 이렇게 3개의 층을 가진다. 또한 해당 인공 신경망(예제에서 사용될 neural network)은 두 개의 입력과, 두 개의 은닉층 뉴런, 두 개의 출력층 뉴런을 사용한다. 은닉층과 출력층의 모든 뉴런은 활성화 함수로 시그모이드(Sigmoid) 함수를 사용한다.
Imgur
위의 그림은 여기서 사용할 인공 신경망의 모습을 보여준다. 은닉층과 출력층의 모든 뉴런에서 변수 zz가 존재하는데 여기서 변수 zz는 이전층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합을 의미한다. 이 값은 뉴런에서 아직 시그모이드 함수를 거치지 않은 상태이다. 즉, 활성화 함수의 입력을 의미한다. zz 우측의 |를 지나서 존재하는 변수 hh또는 oozz가 시그모이드 함수를 지난 후의 값으로 각 뉴런의 출력값을 의미한다. 이번 역전파 예제에서는 인공 신경망에 존재하는 모든 가중치 에 ww대해서 역전파를 통해 업데이트하는 것을 목표로한다. 해당 인공 신경망은 편향(bias) bb는 고려하지 않는다.

역전파 알고리즘은 순전파와 역전파를 번갈아 가면서 수행하면서 가중치 ww를 업데이트 한다.

2. 순전파(Forward propagation)

Imgur
주어진 값이 위의 그림과 같을 때 순전파를 진행해본다. 위의 그림에서 소수점 앞의 0은 생략하였다. 예를 들어 .25는 0.25를 의미한다. 파란색 숫자는 입력값을 의미하며, 빨간색 숫자는 각 가중치의 값을 의미한다. 앞으로 진행하는 계산의 결과값은 소수점 아래 여덟번째 자리까지 반올림하여 표기한다.
각 입력은 입력층에서 은닉층 방향으로 향하면서 각 입력에 해당하는 가중치와 곱해지고, 결과적으로 가중합으로 계산되어 은닉층 뉴런의 시그모이드 함수의 입력값이 된다. z1z_1z2z_2는 시그모이드 함수의 입력으로 사용되는 각각의 값에 해당된다.

z1=w1x1+w2x2=0.3×0.1+0.25×0.2=0.08z_1=w_1x_1+w_2x_2=0.3\times0.1+0.25\times0.2=0.08
z2=w3x1+w4x2=0.4×0.1+0.35×0.2=0.11z_2=w_3x_1+w_4x_2=0.4\times0.1+0.35\times0.2=0.11

z1z_1z2z_2는 각각의 은닉층 뉴런에서 시그모이드 함수를 지나게 되는데 시그모이드 함수가 리턴하는 결과값은 은닉층 뉴런의 최종 출력값이다.식에서는 각각 h1h_1h2h_2에 해당되며, 아래의 결과와 같다.

h1=sigmoid(z1)=11+ez1=0.51998934h_1=sigmoid(z_1)=\cfrac{1}{1+e^{-z_1}}=0.51998934
h2=sigmoid(z2)=11+ez2=0.52747230h_2=sigmoid(z_2)=\cfrac{1}{1+e^{-z_2}}=0.52747230

h1h_1h2h_2 이 두 값은 다시 출력층의 뉴런으로 향하게 되는데 이때 다시 각각의 값에 해당되는 가중치와 곱해지고, 다시 가중합 되어 출력층 뉴런의 시그모이드 함수의 입력값이 된다. 식에서는 각각 z3z_3z4z_4에 해당된다.

z3=w5h1+w6h2=0.45×h1+0.4×h2=0.44498412z_3=w_5h_1+w_6h_2=0.45\times h_1+0.4\times h_2=0.44498412
z4=w7h1+w8h2=0.7×h1+0.6×h2=0.68047592z_4=w_7h_1+w_8h_2=0.7\times h_1+0.6\times h_2=0.68047592

z3z_3z4z_4가 출력층 뉴런에서 시그모이드 함수를 지난 값은 이 인공 신경망이 최종적으로 계산한 출력값이다.(o1o_1, o2o_2) 제값을 예측하기 위한 값으로서 예측값이라고도 부른다.

o1=sigmoid(z3)=11+ez3=0.60944600o_1=sigmoid(z_3)=\cfrac{1}{1+e^{-z_3}}=0.60944600
o2=sigmoid(z4)=11+ez4=0.66384491o_2=sigmoid(z_4)=\cfrac{1}{1+e^{-z_4}}=0.66384491

이제 해야할 일은 예측값과 실제값의 오차를 계산하기 위한 오차 함수를 선택하는 것이다. 오차(Error)를 계산하기 위한 손실 함수(Loss function)로는 평균 제곱 오차 MSE를 사용한다. 식에서는 실제값을 target이라고 표현하였으며, 순전파를 통해 나온 예측값을 output으로 표현하였다. 그리고 각 오차를 모두 더하면 전체 오차 EtotalE_{total}이 된다.

Eo1=12(targeto1outputo1)2=0.02193381E_{o_1}=\cfrac{1}{2}(target_{o_1}-output_{o_1})^2=0.02193381
Eo2=12(targeto2outputo2)2=0.00203809E_{o_2}=\cfrac{1}{2}(target_{o_2}-output_{o_2})^2=0.00203809
Etotal=Eo1+Eo2=0.02397190E_{total}=E_{o_1}+E_{o_2}=0.02397190

3. 역전파 1단계(Backpropagation Step 1)

순전파가 입력층에서 출력층으로 향한다면 역전파는 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트해간다. 출력층 바로 이전의 은닉층을 N층이라고 하였을 때, 출력층과 N층 사이의 가중치를 업데이트하는 단계를 역전파 1단계, 그리고 N층과 N층의 이전층 사이의 가중치를 업데이트 하는 단계를 역전파 2단계라고 하고 진행하기로 한다.
Imgur
역전파 1단계에서 업데이트 해야 할 가중치는 w5,w6,w7,w8w_5,w_6,w_7,w_8총 4개이다. 각 가중치 업데이트는 경사 하강법(Gradient descent)을 사용하는데(경사하강법보다 Adam과 같이 더 나은 알고리즘이 있지만 기본이 경사 하강법에서 출발하므로 본 설명에서는 경사 하강법을 이용하기로 한다.) 먼저 w5w_5를 경사 하강법을 이용해서 업데이트 하기 위해서 Etotalw5\cfrac{\partial E_{total}}{\partial w_5}을 계산한다.

3.1 Etotalw5\mathbf{\frac{\partial E_{total}}{\partial w_5}}의 계산

Etotalw5\cfrac{\partial E_{total}}{\partial w_5}을 계산하기 위해서 미분의 연쇄 법칙(Chain rule)을 이용하여 다음과 같이 풀어 쓸 수 있다.
Etotalw5=Etotalo1×o1z3×z3w5\cfrac{\partial E_{total}}{\partial w_5}=\cfrac{\partial E_{total}}{\partial o_1}\times\cfrac{\partial o_1}{\partial z_3}\times \cfrac{\partial z_3}{\partial w_5}

Etotal=12(targeto1outputo1)2+12(targeto2outputo2)2E_{total}=\cfrac{1}{2}(target_{o_1}-output_{o_1})^2+\cfrac{1}{2}(target_{o_2}-output_{o_2})^2 이므로,
Etotalo1=(targeto1outputo1)=(0.40.60944600)=0.209446\cfrac{\partial E_{total}}{\partial o_1}=-(target_{o_1}-output_{o_1})=-(0.4-0.60944600)=0.209446
o1z3=o1×(1o1)=0.60944600×(10.60944600)=0.23802157\cfrac{\partial o_1}{\partial z_3}=o_1\times (1-o_1)=0.60944600\times (1-0.60944600)=0.23802157
(sigmoid 함수의 미분은 1ex1-e^{-x}를 g(x)로 두고, df(g(x))dx=df(g(x))dg(x)df(g(x))dx\cfrac{df(g(x))}{dx}=\cfrac{df(g(x))}{dg(x)}\cdot\cfrac{df(g(x))}{dx}를 전개하면 f(x)(1f(x))f(x)(1-f(x))의 형태로 미분이 된다.)
z3w5=h1=0.51998934\cfrac{\partial z_3}{\partial w_5}=h_1=0.51998934 (앞의 z3z_3 전개에서...)
따라서,
Etotalw5=0.209446×0.23802157×0.51998934=0.02592286\cfrac{\partial E_{total}}{\partial w_5}=0.209446\times 0.23802157 \times 0.51998934=0.02592286

3.2 Etotalw6\mathbf{\frac{\partial E_{total}}{\partial w_6}}의 계산

Etotalw6=Etotalo1×o1z3×z3w6\cfrac{\partial E_{total}}{\partial w_6}=\cfrac{\partial E_{total}}{\partial o_1}\times\cfrac{\partial o_1}{\partial z_3}\times \cfrac{\partial z_3}{\partial w_6}

Etotalo1=0.209446\cfrac{\partial E_{total}}{\partial o_1}=0.209446 (바로 앞에서 계산했었음...)
o1z3=0.23802157\cfrac{\partial o_1}{\partial z_3}=0.23802157 (바로 앞에서 계산했었음...)
z3w6=h2=0.52747230\cfrac{\partial z_3}{\partial w_6}=h_2=0.52747230 (앞의 z3z_3 전개에서...)
따라서,
Etotalw6=0.209446×0.23802157×0.52747230=0.02629590\cfrac{\partial E_{total}}{\partial w_6}=0.209446\times 0.23802157\times 0.52747230=0.02629590

3.3 Etotalw7\mathbf{\frac{\partial E_{total}}{\partial w_7}}의 계산

Etotalw7=Etotalo2×o2z4×z4w7\cfrac{\partial E_{total}}{\partial w_7}=\cfrac{\partial E_{total}}{\partial o_2}\times\cfrac{\partial o_2}{\partial z_4}\times \cfrac{\partial z_4}{\partial w_7}

Etotalo2=(targeto2outputo2)=(0.60.66384491)=0.06384491\cfrac{\partial E_{total}}{\partial o_2}=-(target_{o_2}-output_{o_2})=-(0.6-0.66384491)=0.06384491
o2z4=o2×(1o2)=0.66384491×(10.66384491)=0.22315485\cfrac{\partial o_2}{\partial z_4}=o_2\times (1-o_2)=0.66384491\times(1-0.66384491)=0.22315485
z4w7=h1=0.51998934\cfrac{\partial z_4}{\partial w_7}=h_1=0.51998934
따라서,
Etotalw7=0.06384491×0.22315485×0.51998934=0.00740844\cfrac{\partial E_{total}}{\partial w_7}=0.06384491\times 0.22315485\times 0.51998934=0.00740844

3.4 Etotalw8\mathbf{\frac{\partial E_{total}}{\partial w_8}}의 계산

Etotalw8=Etotalo2×o2z4×z4w8\cfrac{\partial E_{total}}{\partial w_8}=\cfrac{\partial E_{total}}{\partial o_2}\times\cfrac{\partial o_2}{\partial z_4}\times \cfrac{\partial z_4}{\partial w_8}

Etotalo2=0.06384491\cfrac{\partial E_{total}}{\partial o_2}=0.06384491
o2z4=0.22315485\cfrac{\partial o_2}{\partial z_4}=0.22315485
z4w8=h2=0.52747230\cfrac{\partial z_4}{\partial w_8}=h_2=0.52747230
따라서,
Etotalw8=0.06384491×0.22315485×0.52747230=0.00751506\cfrac{\partial E_{total}}{\partial w_8}=0.06384491\times 0.22315485\times 0.52747230=0.00751506

3.5 w5,w6,w7,w8\mathbf{w_5, w_6, w_7, w_8} 업데이트

경사 하강법(Gradient descent)의해 각 매개변수의 현재 값에서 편미분한 것을 빼주면 된다. 여기서 학습률(learning rate) α\alpha는 0.5로 설정하였다.
w5+=w5αEtotalw5=0.450.5×0.02592286=0.43703857w_{5}^{+}=w_5-\alpha\cfrac{\partial E_{total}}{\partial w_5}=0.45-0.5\times 0.02592286=0.43703857
w6+=w6αEtotalw6=0.40.5×0.02629590=0.38685205w_{6}^{+}=w_6-\alpha\cfrac{\partial E_{total}}{\partial w_6}=0.4-0.5\times 0.02629590=0.38685205
w7+=w7αEtotalw7=0.70.5×0.00740844=0.69629578w_{7}^{+}=w_7-\alpha\cfrac{\partial E_{total}}{\partial w_7}=0.7-0.5\times 0.00740844=0.69629578
w8+=w8αEtotalw8=0.60.5×0.00751506=0.59624247w_{8}^{+}=w_8-\alpha\cfrac{\partial E_{total}}{\partial w_8}=0.6-0.5\times 0.00751506=0.59624247

4. 역전파 2단계(Backpropagation Step 2)

역전파 1단계에서 매개변수 wkw_k를 모두 업데이트하였다면 Neural network에서 layer를 한단계 왼쪽으로 이동하여 매개변수 wkw_k를 계속 업데이트한다.
Imgur
1단계를 완료하였다면 이제 입력층 방향으로 이동하며 다시 계산을 이어간다. 위의 그림에서 빨간색 화살표는 순전파의 정반대 방향인 역전파의 방향을 보여준다. 현재 인공 신경망(Neural network)은 은닉층(Hidden layer)이 1개밖에 없으므로 이번 단계가 마지막 단계이다. 하지만 은닉층이 더 많은 경우라면 입력층 방향으로 한 단계씩 계속해서 계산해가야 한다.(입력층까지 계속 layer를 이동하면서 모든 매개변수 wkw_k를 업데이트한다.)
이번 단계에서 계산할 가중치는 w1,w2,w3,w4w_1, w_2, w_3, w_4이다. 원리는 앞에서 1단계에서 했던 것과 동일하므로 앞에서 했던 것과 동일한 방식으로 진행해 보기로 한다.

4.1 Etotalw1\mathbf{\frac{\partial E_{total}}{\partial w_1}}의 계산

Etotalw1=Etotalh1×h1z1×z1w1\cfrac{\partial E_{total}}{\partial w_1}=\cfrac{\partial E_{total}}{\partial h_1}\times\cfrac{\partial h_1}{\partial z_1}\times \cfrac{\partial z_1}{\partial w_1}

Etotalh1=Eo1h1+Eo2h1\cfrac{\partial E_{total}}{\partial h_1}=\cfrac{\partial E_{o_1}}{\partial h_1}+\cfrac{\partial E_{o_2}}{\partial h_1} (h1h_1o1,o2o_1,o_2 양쪽에 영향을 미치므로 각각에 대한 미분을 합해준다.)
Eo1h1=Eo1z3×z3h1=Eo1o1×o1z3×z3h1=(targeto1outputo1)×o1(1o1)×w5=0.209446×0.23802157×0.45=0.02243370\cfrac{\partial E_{o_1}}{\partial h_1}=\cfrac{\partial E_{o_1}}{\partial z_3}\times \cfrac{\partial z_3}{\partial h_1}=\cfrac{\partial E_{o_1}}{\partial o_1}\times \cfrac{\partial o_1}{\partial z_3}\times \cfrac{\partial z_3}{\partial h_1}=-(target_{o_1}-output_{o_1})\times o_1(1-o_1)\times w_5=0.209446\times 0.23802157\times 0.45=0.02243370 (이미 앞에서 다 계산했던 것들이다.)
Eo2h1=Eo2z4×z4h1=Eo2o2×o2z4×z4h1=(targeto2outputo2)×o2(1o2)×w7=0.06384491×0.22315485×0.7=0.00997311\cfrac{\partial E_{o_2}}{\partial h_1}=\cfrac{\partial E_{o_2}}{\partial z_4}\times \cfrac{\partial z_4}{\partial h_1}=\cfrac{\partial E_{o_2}}{\partial o_2}\times \cfrac{\partial o_2}{\partial z_4}\times \cfrac{\partial z_4}{\partial h_1}=-(target_{o_2}-output_{o_2})\times o_2(1-o_2)\times w_7=0.06384491\times 0.22315485\times 0.7=0.00997311 (마찬가지로 이미 앞에서 다 계산했던 것들이다.)

Etotalh1=0.02243370+0.00997311=0.03240681\cfrac{\partial E_{total}}{\partial h_1}=0.02243370+0.00997311=0.03240681
h1z1=h1×(1h1)=0.51998934×(10.51998934)=0.24960043\cfrac{\partial h_1}{\partial z_1}=h_1\times (1-h_1)=0.51998934\times (1-0.51998934)=0.24960043
z1w1=x1=0.1\cfrac{\partial z_1}{\partial w_1}=x_1=0.1
Etotalw1=0.03240681×0.24960043×0.1=0.00080888\cfrac{\partial E_{total}}{\partial w_1}=0.03240681\times 0.24960043\times 0.1=0.00080888

4.2 Etotalw2\mathbf{\frac{\partial E_{total}}{\partial w_2}}의 계산

Etotalw2=Etotalh1×h1z1×z1w2\cfrac{\partial E_{total}}{\partial w_2}=\cfrac{\partial E_{total}}{\partial h_1}\times\cfrac{\partial h_1}{\partial z_1}\times \cfrac{\partial z_1}{\partial w_2}

Etotalh1=0.03240681\cfrac{\partial E_{total}}{\partial h_1}=0.03240681 (바로 앞 4.1에서 이미 계산하였다.)
h1z1=0.24960043\cfrac{\partial h_1}{\partial z_1}=0.24960043
z1w2=x2=0.2\cfrac{\partial z_1}{\partial w_2}=x_2=0.2
Etotalw2=0.03240681×0.24960043×0.2=0.00161775\cfrac{\partial E_{total}}{\partial w_2}=0.03240681\times 0.24960043\times 0.2=0.00161775

4.3 Etotalw3\mathbf{\frac{\partial E_{total}}{\partial w_3}}의 계산

Etotalw3=Etotalh2×h2z2×z2w3\cfrac{\partial E_{total}}{\partial w_3}=\cfrac{\partial E_{total}}{\partial h_2}\times\cfrac{\partial h_2}{\partial z_2}\times \cfrac{\partial z_2}{\partial w_3}

Etotalh2=Eo1h2+Eo2h2\cfrac{\partial E_{total}}{\partial h_2}=\cfrac{\partial E_{o_1}}{\partial h_2}+\cfrac{\partial E_{o_2}}{\partial h_2}
Eo1h2=Eo1z3×z3h2=Eo1o1×o1z3×z3h2=(targeto1outputo1)×o1(1o1)×w6=0.209446×0.23802157×0.4=0.01994107\cfrac{\partial E_{o_1}}{\partial h_2}=\cfrac{\partial E_{o_1}}{\partial z_3}\times \cfrac{\partial z_3}{\partial h_2}=\cfrac{\partial E_{o_1}}{\partial o_1}\times \cfrac{\partial o_1}{\partial z_3}\times \cfrac{\partial z_3}{\partial h_2}=-(target_{o_1}-output_{o_1})\times o_1(1-o_1)\times w_6=0.209446\times 0.23802157\times 0.4=0.01994107
Eo2h2=Eo2z4×z4h2=Eo2o2×o2z4×z4h2=(targeto2outputo2)×o2(1o2)×w8=0.06384491×0.22315485×0.6=0.00854838\cfrac{\partial E_{o_2}}{\partial h_2}=\cfrac{\partial E_{o_2}}{\partial z_4}\times \cfrac{\partial z_4}{\partial h_2}=\cfrac{\partial E_{o_2}}{\partial o_2}\times \cfrac{\partial o_2}{\partial z_4}\times \cfrac{\partial z_4}{\partial h_2}=-(target_{o_2}-output_{o_2})\times o_2(1-o_2)\times w_8=0.06384491\times 0.22315485\times 0.6=0.00854838

Etotalh2=0.01994107+0.00854838=0.02848945\cfrac{\partial E_{total}}{\partial h_2}=0.01994107+0.00854838=0.02848945
h2z2=h2×(1h2)=0.52747230×(10.52747230)=0.24924527\cfrac{\partial h_2}{\partial z_2}=h_2\times (1-h_2)=0.52747230\times (1-0.52747230)=0.24924527
z2w3=x1=0.1\cfrac{\partial z_2}{\partial w_3}=x_1=0.1
Etotalw3=0.02848945×0.24924527×0.1=0.00071009\cfrac{\partial E_{total}}{\partial w_3}=0.02848945\times 0.24924527\times 0.1=0.00071009

4.4 Etotalw4\mathbf{\frac{\partial E_{total}}{\partial w_4}}의 계산

Etotalw4=Etotalh2×h2z2×z2w4\cfrac{\partial E_{total}}{\partial w_4}=\cfrac{\partial E_{total}}{\partial h_2}\times\cfrac{\partial h_2}{\partial z_2}\times \cfrac{\partial z_2}{\partial w_4}

앞에서 이미 계산했던 것들을 재사용한다.
Etotalh2=0.02848945\cfrac{\partial E_{total}}{\partial h_2}=0.02848945
h2z2=0.24924527\cfrac{\partial h_2}{\partial z_2}=0.24924527
z2w4=x2=0.2\cfrac{\partial z_2}{\partial w_4}=x_2=0.2
Etotalw4=0.02848945×0.24924527×0.2=0.00142017\cfrac{\partial E_{total}}{\partial w_4}=0.02848945\times 0.24924527\times 0.2=0.00142017

4.5 w1,w2,w3,w4\mathbf{w_1, w_2, w_3, w_4} 업데이트

w1+=w1αEtotalw1=0.30.5×0.00080888=0.29959556w_{1}^{+}=w_1-\alpha\cfrac{\partial E_{total}}{\partial w_1}=0.3-0.5\times 0.00080888=0.29959556
w2+=w2αEtotalw2=0.250.5×0.00161775=0.24919112w_{2}^{+}=w_2-\alpha\cfrac{\partial E_{total}}{\partial w_2}=0.25-0.5\times 0.00161775=0.24919112
w3+=w3αEtotalw3=0.40.5×0.00071009=0.39964496w_{3}^{+}=w_3-\alpha\cfrac{\partial E_{total}}{\partial w_3}=0.4-0.5\times 0.00071009=0.39964496
w4+=w4αEtotalw4=0.350.5×0.00142017=0.34928991w_{4}^{+}=w_4-\alpha\cfrac{\partial E_{total}}{\partial w_4}=0.35-0.5\times 0.00142017=0.34928991

5. 결과 확인

다시 순전파로 계산하되 update된 wkw_k를 이용하여 전체 오차가 줄어들었는지 확인해 본다.
Imgur

z1=w1x1+w2x2=0.29959556×0.1+0.24919112×0.2=0.07979778z2=w3x1+w4x2=0.39964496×0.1+0.34928991×0.2=0.10982248z_1=w_1x_1+w_2x_2=0.29959556\times0.1+0.24919112\times0.2=0.07979778 \\ z_2=w_3x_1+w_4x_2=0.39964496\times0.1+0.34928991\times0.2=0.10982248
h1=sigmoid(z1)=11+ez1=0.51993887h2=sigmoid(z2)=11+ez2=0.52742806h_1=sigmoid(z_1)=\cfrac{1}{1+e^{-z_1}}=0.51993887 \\ h_2=sigmoid(z_2)=\cfrac{1}{1+e^{-z_2}}=0.52742806

z3=w5h1+w6h2=0.43703857×0.51993887+0.38685205×0.52742806=0.43126996z4=w7h1+w8h2=0.69629578×0.51993887+0.59624247×0.52742806=0.67650625z_3=w_5h_1+w_6h_2=0.43703857\times 0.51993887+0.38685205\times 0.52742806=0.43126996 \\ z_4=w_7h_1+w_8h_2=0.69629578\times 0.51993887+0.59624247\times 0.52742806=0.67650625
o1=sigmoid(z3)=11+ez3=0.60617688o2=sigmoid(z4)=11+ez4=0.66295848o_1=sigmoid(z_3)=\cfrac{1}{1+e^{-z_3}}=0.60617688 \\ o_2=sigmoid(z_4)=\cfrac{1}{1+e^{-z_4}}=0.66295848

Eo1=12(targeto1outputo1)2=0.02125445Eo2=12(targeto2outputo2)2=0.00198189E_{o_1}=\cfrac{1}{2}(target_{o_1}-output_{o_1})^2=0.02125445 \\ E_{o_2}=\cfrac{1}{2}(target_{o_2}-output_{o_2})^2=0.00198189
Etotal=Eo1+Eo2=0.02125445+0.00198189=0.02323634E_{total}=E_{o_1}+E_{o_2}=0.02125445+0.00198189=0.02323634

최초 순전파에서 구했던 전체 오차 EtotalE_{total}이 0.02397190 이었고,
이후 역전파(Backpropagation) 알고리즘에 의해 업데이트 된 오차가 0.02323634으로 오차가 줄어든 것을 확인할 수 있다.
이렇게 순전파와 역전파를 반복하여 오차를 최소화하는 가중치(wkw_k, 매개변수)를 찾는다.
이것이 바로 인공 신경망(Neural network)의 학습 과정이다.

profile
바쁘게 부지런하게 논리적으로 살자!!!
post-custom-banner

0개의 댓글