예측은 앞으로, 오차 수정은 뒤로
신경망 학습은 두 단계를 반복한다. 입력을 층층이 통과시켜 예측값을 계산하는 순전파(Forward Propagation)와, 예측값과 실제값의 오차를 뒤에서부터 앞으로 되짚어가며 각 가중치를 얼마나 조정해야 할지 계산하는 역전파(Backpropagation)다.
숫자로 직접 순전파 계산하기
입력층 2개(X1=2, X2=3), 은닉층 2개(H1, H2), 출력층 1개(O)로 이뤄진 아주 작은 신경망을 예로 든다. 실제값(정답)은 1이다.
X1, X2 = 2.0, 3.0
W1, W2, W3, W4, W5, W6 = 0.11, 0.12, 0.21, 0.08, 0.14, 0.15
actual = 1.0
# 순전파: 입력 -> 은닉층
H1 = X1 * W1 + X2 * W3
H2 = X1 * W2 + X2 * W4
# 순전파: 은닉층 -> 출력층
prediction = H1 * W5 + H2 * W6
# 오차(제곱오차의 절반 — 미분했을 때 계수를 깔끔하게 만들기 위한 관례)
error = 0.5 * (prediction - actual) ** 2
print(f"H1={H1}, H2={H2}")
print(f"prediction={prediction:.3f}")
print(f"error={error:.3f}")
H1=0.85, H2=0.48
prediction=0.191
error=0.327
예측값 0.191은 실제값 1과 꽤 차이가 크다. 이 오차를 줄이려면 W1~W6을 어떻게 조정해야 할지를 역전파로 계산해야 한다.
역전파: 체인 룰로 거꾸로 계산하기
역전파의 핵심은 미적분의 연쇄 법칙(Chain Rule)이다. 가중치 W6이 오차(E)에 미치는 영향은, W6이 예측값(prediction)에 미치는 영향과, 예측값이 오차에 미치는 영향을 곱해서 구한다.
∂E/∂W6 = ∂E/∂prediction × ∂prediction/∂W6
∂E/∂prediction — 오차식 E = ½(prediction − actual)²을 미분하면 (prediction − actual)이 된다.
∂prediction/∂W6 — prediction = H1·W5 + H2·W6을 W6에 대해 미분하면 H2만 남는다(H1·W5 항은 W6과 무관해 사라진다).
두 결과를 곱하면 ∂E/∂W6 = (prediction − actual) × H2 가 된다.
이 식을 그대로 코드로 옮겨 W6에 대한 기울기를 구하고, 경사하강법 공식으로 새 가중치를 계산해본다.
grad_W6 = (prediction - actual) * H2
learning_rate = 0.5
new_W6 = W6 - learning_rate * grad_W6
print(f"dE/dW6={grad_W6:.5f}")
print(f"new_W6={new_W6:.5f}")
dE/dW6=-0.38832
new_W6=0.34416
기울기가 음수라는 것은 “W6을 늘리면 오차가 줄어든다”는 뜻이다. 경사하강법 공식이 이를 반영해 W6을 0.15에서 0.344로 늘렸다 — 다음 순전파에서는 예측값이 실제값 1에 더 가까워질 것이다. 실제 학습에서는 W1~W5에도 같은 방식(체인 룰)으로 기울기를 구해 동시에 업데이트한다.
등산 비유로 정리하면
단계 | 설명 | 등산 비유 |
|---|---|---|
오차 계산 | 실제값과 예측값을 비교해 오차를 계산한다 | 산 아래 도착했는데 목표 지점과 다르다 |
오차 전파(역전파) | 오차가 어디서부터 커졌는지 거꾸로 따라 올라간다 | 길을 되짚어 올라가기 시작한다 |
기울기 계산 | 각 가중치 지점에서 방향과 조정 정도를 확인한다 | 어디서부터 길이 꼬였는지 파악한다 |
가중치 업데이트 | 계산한 기울기 방향으로 가중치를 조금씩 수정한다 | 다음엔 더 나은 길로 내려간다 |
정리
순전파는 입력을 출력까지 흘려보내 예측값을 만들고, 역전파는 그 예측값의 오차를 체인 룰로 각 가중치까지 거꾸로 전달해 “이 가중치를 얼마나, 어느 방향으로 바꿔야 하는지”를 계산한다. 이렇게 구한 기울기를 경사하강법 공식에 대입해 가중치를 갱신하는 과정을 반복하는 것이 신경망 학습의 본체다.
참고 자료
Backpropagation Step by Step — hmkcode — 이 글에서 쓴 것과 같은 구조의 순전파·역전파 수치 예제 (2026-08-07 확인)
댓글 0
댓글을 불러오는 중…