출처
역전파(BackPropagation) 이해하기
인공 신경망이 순전파 과정을 진행하여 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법(Gradient Descent)을 사용하여 가중치를 업데이트하는지 직접 계산을 통해 이해해봅시다.
1. 인공 신경망의 이해(Neural Network Overview)

이번 예제에서 사용할 인공 신경망은 다음과 같습니다.
-
층 구성: 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)
-
뉴런 수: 입력층 2개, 은닉층 2개, 출력층 2개
-
활성화 함수: 시그모이드(Sigmoid) 함수
-
편향(Bias): 고려하지 않음
- 각 뉴런의 입력값(가중합)은 이전 층의 모든 출력값에 해당 가중치를 곱한 후 더한 값입니다.
- 이 값은 시그모이드 함수를 거치기 전의 상태이며, 활성화 함수의 입력값이라고 부릅니다.
- 시그모이드 함수를 통과한 값은 뉴런의 최종 출력값입니다.
이번 목표: 모든 가중치 w를 역전파로 업데이트
2. 순전파(Forward Propagation)

순전파는 입력값이 각 층을 거쳐 출력층까지 전달되는 과정입니다.
-
입력층 → 은닉층
-
각 입력값 x에 해당 가중치 w를 곱하고, 은닉층 뉴런별로 합산하여 z1,z2 계산
-
h1=σ(z1), h2=σ(z2)
-
은닉층 → 출력층
-
은닉층 출력값 h1,h2에 해당 가중치 w를 곱하고 합산하여 z3,z4 계산
-
o1=σ(z3), o2=σ(z4)
-
오차 계산
-
손실 함수: 평균 제곱 오차(MSE)
-
Eo1=21(targeto1−outputo1)2
-
Eo2=21(targeto2−outputo2)2
-
Etotal=Eo1+Eo2
3. 역전파 1단계(BackPropagation Step 1)

-
출력층과 은닉층 사이의 가중치를 업데이트하는 단계입니다.
-
업데이트 대상: w5,w6,w7,w8
예시: w5 업데이트
연쇄 법칙(Chain Rule) 적용
- 연쇄 법칙(Chain Rule)은 합성 함수의 미분을 구하는 규칙으로, 한 변수의 변화가 중간 변수를 거쳐 다른 변수에 영향을 줄 때 각 단계의 변화율(미분값)을 곱해 최종 변화율을 계산하는 방법입니다.
- 신경망에서는 출력 오차가 여러 층을 거쳐 가중치에 연결되므로, 가중치가 오차에 미치는 영향을 구할 때 연쇄 법칙을 적용해
오차 → 활성화 함수 출력 → 가중합 → 가중치 순으로 각 단계의 미분을 곱해 최종 기울기(gradient)를 얻고, 이를 경사 하강법으로 가중치를 업데이트합니다.
∂w5∂Etotal=∂o1∂Etotal×∂z3∂o1×∂w5∂z3
1. 첫 번째 항
∂o1∂Etotal=−(targeto1−outputo1)=0.20944600
2. 두 번째 항 (시그모이드 미분)
∂z3∂o1=o1(1−o1)=0.23802157
3. 세 번째 항
∂w5∂z3=h1=0.51998934
4. 곱
∂w5∂Etotal=0.02592286
5. 가중치 업데이트 (α=0.5)
w5new=0.45−0.5×0.02592286=0.43703857
4. 역전파 2단계(BackPropagation Step 2)

-
은닉층과 입력층 사이의 가중치를 업데이트하는 단계입니다.
-
업데이트 대상: w1,w2,w3,w4
예시: w1 업데이트
∂w1∂Etotal=∂h1∂Etotal×∂z1∂h1×∂w1∂z1
1. h1의 오차 기여도
∂h1∂Etotal=0.03240681
2. 시그모이드 미분
∂z1∂h1=0.24960043
3. 입력값
∂w1∂z1=x1=0.1
4. 곱
∂w1∂Etotal=0.00080888
5. 가중치 업데이트
w1new=0.3−0.5×0.00080888=0.29959556
5. 결과 확인

-
업데이트된 가중치로 다시 순전파를 수행하여 오차 감소 여부를 확인합니다.
-
은닉층 입력: z1=0.07979778, z2=0.10988248
-
은닉층 출력: h1=0.51993887, h2=0.52742806
-
출력층 입력: z3=0.43126996, z4=0.67650625
-
출력층 출력: o1=0.60617688, o2=0.66296548
-
오차: Eo1=0.02125445, Eo2=0.00198189
-
전체 오차: Etotal=0.02323634
기존 오차 0.02397190 → 업데이트 후 오차 0.02323634
⇒ 오차 감소 확인 ✅
참고
1. 시그모이드 함수
- 인라인: h=σ(z)=1+e−z1
2. 순전파(Forward Propagation) 계산
-
입력에서 은닉층으로
z1h=w1,1x1+w2,1x2
z2h=w1,2x1+w2,2x2
-
활성화 값
h1=σ(z1h)
h2=σ(z2h)
3. 은닉층에서 출력층으로
-
z1o=w1,1oh1+w2,1oh2
-
o1=σ(z1o)
4. 손실함수(예: MSE)
- Loss=21∑i=12(ti−oi)2
5. 역전파 계산 예시
-
경사하강법에 의한 가중치 업데이트
-
목표: 계산된 기울기를 이용해 가중치를 조정
-
이 단계에서야 비로소 가중치 값이 변경됨
w←w−η∂w∂Loss
-
연쇄법칙(chain rule) 사용
-
목표: 가중치가 손실(Loss)에 얼마나 영향을 주는지를 계산
-
이 단계에서는 아직 가중치를 바꾸지 않고, 오직 "변화율"만 구함
-
여기서 o는 뉴런의 출력, z는 가중합(활성화 함수 입력)
∂w∂Loss=∂o∂Loss⋅∂z∂o⋅∂w∂z