코딩하는 애옹😸

[예제] BackPropagation 본문

부스트캠프 AI Tech 3기/Study

[예제] BackPropagation

DevYe 2022. 1. 23. 22:54
728x90
반응형

계산 과정

  1. 순전파 과정을 통해 예측값과 실제값의 오차 구하기
  2. 오차를 구한 후, 역전파를 이용하여 가중치(wn)업데이트
  3. 업데이트된 가중치를 이용하며 다시 순전파 계산
  4. 업데이트된 오차 확인

주어진 조건

  • x1 = 0.1, x2 = 0.2
  • {w1,w2,...,w8} = {0.3, 0.25, 0.4, 0.35, 0.45, 0.4, 0.7, 0.6}
  • 실제 값 : 0.4 , 0.6
  • 활성화 함수 σ : sigmoid함수 sigmoid(x)=11+ex

1. 순전파

z1=x1w1+x2w2
z2=x1w3+x2w4

이때, h1h2z1z2를 은닉층의 활성화함수에 계산하여 출력된다.

h1=σ(z1)=sigmoid(z1)
h2=σ(z2)=sigmoid(z2)

z3z4는 각각 h1h2에 가중치를 곱하고 다시 활성화함수를 이용하면 예측값 o1, o2를 구할 수 있다.

z3=h1w5+h2w6
z4=h1w7+h2w8

o1=σ(z3)=sigmoid(z3)
o2=σ(z4)=sigmoid(z4)

여기서 예측값과 실제값의 오차(E)를 구하기 위해서 오차제곱합의 평균(MSE, L2 loss)을 이용한다.

Eo1=12(0.4o1)2
Eo2=12(0.6o2)2
E=Eo1+Eo2


2. 역전파 (BackPropagation)

먼저, 4개의 가중치 (w5,w6,w7,w8)를 미분의 연쇄법칙을 이용하여 업데이트한다.

Ew5=Eo1×o1z3×z3w5=(0.4o1)×sigmoid(z3)(1sigmoid(z3))×h1w+5
위와 같은 방법으로 w6,w7,w8도 업데이트한다.

Ew6=Eo1×o1z3×z3w6w+6
Ew7=Eo2×o2z4×z4w7w+7
Ew8=Eo2×o2z4×z4w8w+8

이제 w1,w2,w3,w4를 업데이트한다.

w1를 업데이트하기 위해서는 Ew1 를 계산해야한다.

Ew1=Eh1×h1z1×z1w1w+1

여기서 Eh1=Eo1h1+Eo2h1 와 같이 풀어쓸 수 있다.

Eo1h1=Eo1z3×z3h1=Eo1o1×o1z3×z3h1
Eo2h1=Eo2z4×z4h1=Eo2o2×o2z4×z4h1

위와 같은 방법으로 w+2,w+3,w+4를 모두 구할 수 있다.

Ew2=Eh1×h1z1×z1w2w+2
Ew3=Eh2×h2z2×z2w3w+3
Ew4=Eh2×h2z2×z2w4w+4


3. 순전파

업데이트된 가중치 w+n로 다시 예측값을 구해서 오차를 계산한다.
[1. 순전파]와 같은 방법 이용한다.

편의를 위해 숫자를 대입한 계산을 생략하였다.
숫자를 대입하여 계산하면 역전파를 이용한 오차값이 더 작아졌다는 것을 알아 낼 수 있다.

끝.

(오타 지적 환영)

반응형

'부스트캠프 AI Tech 3기 > Study' 카테고리의 다른 글

[PyTorch] AutoGrad  (0) 2022.01.25
[PyTorch] Basics  (0) 2022.01.25
(AI Math 10강) RNN  (0) 2022.01.21
(AI Math 9강) CNN  (0) 2022.01.21
(AI Math 8강) 베이즈 통계학  (0) 2022.01.20
Comments