역전파 (Backpropagation)
학습 목표
- 역전파(Backpropagation) 알고리즘의 핵심인 연쇄 법칙(Chain Rule)을 이해한다
- 계산 그래프(Computational Graph)를 통해 기울기 흐름을 추적할 수 있다
- PyTorch의 Autograd가 역전파를 자동으로 수행하는 원리를 이해한다
- 기울기 소실과 폭주 문제를 인식하고 대응 방법을 안다
왜 중요한가
역전파는 신경망의 학습을 가능하게 하는 핵심 알고리즘입니다. 손실 함수의 값을 줄이기 위해 각 가중치가 어느 방향으로, 얼마만큼 변해야 하는지를 계산합니다. 1986년 Rumelhart, Hinton, Williams가 재발견한 이후 모든 딥러닝 학습의 근간이 되었습니다.연쇄 법칙 (Chain Rule)
합성 함수의 미분은 각 구성 함수의 미분의 곱으로 계산됩니다. 예를 들어, , , 일 때:계산 그래프
계산 그래프는 수식의 각 연산을 노드로 표현한 방향 그래프입니다. 순전파(Forward Pass)에서는 입력에서 출력 방향으로, 역전파(Backward Pass)에서는 출력에서 입력 방향으로 기울기가 흐릅니다.구체적 예제
, 정답 에서: 순전파:다층 네트워크에서의 역전파
2층 MLP에서의 역전파를 단계별로 추적합니다.기울기 소실과 폭주
기울기 소실 (Gradient Vanishing)
깊은 네트워크에서 기울기가 역전파되면서 점점 작아져 0에 가까워지는 현상입니다. Sigmoid나 Tanh는 최대 기울기가 0.25(Sigmoid) 또는 1(Tanh)이므로, 층이 깊어질수록 기울기가 지수적으로 감소합니다. Sigmoid의 최대 미분값이 0.25이므로, 10층 네트워크에서는 으로 기울기가 거의 사라집니다.기울기 폭주 (Gradient Exploding)
반대로 기울기가 지수적으로 커지는 현상입니다. RNN에서 특히 빈번하며, 가중치 행렬의 최대 고유값이 1보다 크면 발생합니다.해결 방법
| 문제 | 해결 방법 | 설명 |
|---|---|---|
| 기울기 소실 | ReLU 계열 활성화 함수 | 양수 영역 기울기 = 1 |
| 기울기 소실 | 스킵 연결 (Skip Connection) | ResNet의 핵심 아이디어 |
| 기울기 소실 | 적절한 가중치 초기화 | He/Xavier 초기화 |
| 기울기 폭주 | Gradient Clipping | 기울기 크기 제한 |
| 기울기 폭주 | BatchNorm/LayerNorm | 활성화 값 정규화 |
가중치 초기화
적절한 가중치 초기화는 기울기 소실/폭주를 예방하는 첫 번째 방어선입니다.| 초기화 방법 | 적합한 활성화 함수 | 분산 |
|---|---|---|
| Xavier (Glorot) | Sigmoid, Tanh | |
| He (Kaiming) | ReLU, Leaky ReLU |
nn.Linear는 기본적으로 Kaiming Uniform 초기화를 사용합니다.
PyTorch는 역전파를 어떻게 자동으로 처리하나요?
PyTorch는 역전파를 어떻게 자동으로 처리하나요?
PyTorch의 Autograd 엔진은 텐서 연산을 수행할 때마다 동적으로 계산 그래프를 구성합니다.
requires_grad=True인 텐서에 대한 모든 연산이 기록되며, .backward() 호출 시 이 그래프를 역순으로 순회하며 연쇄 법칙을 적용합니다. 자세한 내용은 Autograd 문서에서 다룹니다.역전파와 수치 미분의 차이는?
역전파와 수치 미분의 차이는?
수치 미분(Numerical Differentiation)은 로 근사하는 방법입니다. 정확하지만 파라미터마다 별도 계산이 필요해 매우 느립니다. 역전파는 한 번의 역방향 패스로 모든 파라미터의 기울기를 동시에 계산하므로 효율적입니다. 수치 미분은 역전파 구현의 정확성을 검증하는 용도(gradient checking)로 사용됩니다.
체크리스트
- 연쇄 법칙이 역전파에서 어떻게 적용되는지 설명할 수 있다
- 계산 그래프에서 순전파와 역전파 방향을 구분할 수 있다
- 기울기 소실과 폭주의 원인과 해결책을 설명할 수 있다
- He 초기화와 Xavier 초기화의 차이를 안다

