역전파(Backpropagation)는 신경망의 그래디언트를 출력층에서 입력층으로 효율적으로 계산하는 알고리즘이다. 체인 룰(Chain Rule)을 적용해 각 파라미터에 대한 손실의 편미분을 계산한다.
체인 룰 (Chain Rule)
L = f(g(h(x)))이면:
∂L/∂x = ∂L/∂f * ∂f/∂g * ∂g/∂h * ∂h/∂x
신경망에서:
∂L/∂W1 = ∂L/∂y * ∂y/∂a2 * ∂a2/∂z2 * ∂z2/∂a1 * ∂a1/∂z1 * ∂z1/∂W1
순전파 → 역전파
python
# 순전파
z1 = X @ W1 + b1
a1 = relu(z1)
z2 = a1 @ W2 + b2
L = MSE(z2, y)
# 역전파 (수동 계산)
dL_dz2 = 2 * (z2 - y)
dL_dW2 = a1.T @ dL_dz2
dL_da1 = dL_dz2 @ W2.T
dL_dz1 = dL_da1 * relu_grad(z1)
dL_dW1 = X.T @ dL_dz1
# PyTorch에서는 자동으로 처리
loss.backward() # 자동 미분!
기울기 소실/폭발
| 문제 | 원인 | 해결 |
|---|
| 기울기 소실 | sigmoid 레이어 깊어질수록 0에 수렴 | ReLU, Batch Norm, ResNet |
| 기울기 폭발 | 가중치가 1보다 크면 지수적 증가 | Gradient Clipping |
관련 개념
- •경사하강법 — 역전파로 계산된 그래디언트 활용
- •신경망 — 역전파의 적용 대상
- •활성화 함수 — 역전파의 미분에 영향
참고문헌
- •Rumelhart et al. (1986). Learning representations by back-propagating errors