역전파 — 오차를 거슬러 올라가다
체인 룰로 출력→입력 방향으로 기울기를 전파. PyTorch의 loss.backward()가 이를 자동화한다.
96개의 층으로 이루어진 GPT-3. 출력에서 생긴 오차가 어떻게 첫 번째 층의 파라미터까지 전달되어 업데이트될까? 역전파(Backpropagation) — 체인 룰로 출력에서 입력 방향으로 기울기를 전달하는 알고리즘이다.
겹겹이 쌓인 함수의 미분은 '체인'처럼 연결됩니다
| 용어 | 설명 |
|---|---|
| 역전파 | 출력→입력 방향으로 오차를 전파하며 기울기를 계산 |
| 오토그래드 | PyTorch의 자동 미분 엔진 |
d/dx f(g(x)) = f'(g(x)) × g'(x) 합성함수 f(g(x))의 미분은 바깥 함수의 미분 × 안쪽 함수의 미분입니다. 이를 여러 층에 확장하면 역전파가 됩니다.
| 역전파 순서 | 설명 |
|---|---|
| 1. 순전파 (Forward) | 입력 → [층1] → [층2] → ... → [층96] → 출력 |
| 2. 손실 계산 | 출력과 정답 비교 → Cross-Entropy 손실 |
| 3. 역전파 시작 | ∂L/∂출력 계산 (손실의 미분) |
| 4. 체인 룰 적용 | ∂L/∂W₁ = ∂L/∂출력 × ∂출력/∂층96 × ... × ∂층1/∂W₁ |
| 5. 파라미터 업데이트 | GPT-3: 96개의 층을 거슬러 올라가며 기울기 계산! |
간단한 네트워크에서 역전파를 직접 실행합니다
순전파로 output을 계산하고, 역전파로 체인 룰을 적용하여 w1, w2의 기울기를 구한 뒤, 학습률 0.01로 파라미터를 업데이트한다.
PyTorch의 loss.backward()가 역전파를 자동으로 해줍니다
수동 역전파 vs PyTorch: 수동 (우리가 한 것): dL_doutput = 2 * (output - target) dL_dw2 = dL_doutput * a1 dL_dw1 = dL_dz1 * x PyTorch (한 줄): loss.backward() # 자동으로 모든 기울기 계산! → GPT-3의 1750억 파라미터에 대해 자동 실행
| 핵심 개념 | 설명 |
|---|---|
| 체인 룰 | 합성함수 f(g(x))의 미분 = f'(g(x)) × g'(x) |
| 역전파 | 출력→입력 방향으로 체인 룰을 반복 적용하여 기울기 계산 |
| 오토그래드 | PyTorch가 loss.backward() 한 줄로 역전파를 자동 실행 |
| 역전파 순서 | 설명 |
|---|---|
| 1단계 | 순전파: 입력 → 층1 → 층2 → ... → 출력 |
| 2단계 | 손실 계산: 출력과 정답 비교 → Cross-Entropy |
| 3단계 | 역전파: ∂L/∂출력에서 시작하여 역방향으로 기울기 전파 |
| 4단계 | 업데이트: 계산된 기울기로 모든 파라미터 조정 |
GPT-3는 96개 층을 거슬러 올라가며 1750억 개 파라미터의 기울기를 자동 계산한다
역전파에서 기울기를 계산하는 순서는?
PyTorch에서 loss.backward()를 호출하면 모든 파라미터의 기울기가 오토그래드로 계산된다.
체인 룰에서 합성함수 f(g(x))의 미분은 어떻게 계산하나요?
PyTorch 코드의 빈칸: loss.___() — 역전파 시작
역전파에서 기울기 소실(vanishing gradient) 문제는 층이 깊어질수록 심해진다.