Ch.6 미적분 — AI가 스스로 배우는 원리
역전파 — 오차를 거슬러 올라가다
오차가 '거꾸로' 전파된다고?
96개의 층으로 이루어진 GPT-3. 출력에서 생긴 오차가 어떻게 첫 번째 층의 파라미터까지 전달되어 업데이트될까요?
수십 개의 층을 거슬러 올라가며 각 파라미터의 기울기를 어떻게 계산하는가?
역전파(Backpropagation) — 체인 룰로 출력에서 입력 방향으로 기울기를 전달하는 알고리즘입니다.
핵심 개념
역전파
출력→입력 방향으로 오차를 전파하며 기울기를 계산
오토그래드
PyTorch의 자동 미분 엔진
핵심 내용
겹겹이 쌓인 함수의 미분은 '체인'처럼 연결됩니다
합성함수 f(g(x))의 미분은 바깥 함수의 미분 × 안쪽 함수의 미분입니다. 이를 여러 층에 확장하면 역전파가 됩니다.
순전파 (Forward): 입력 → [층1] → [층2] → ... → [층96] → 출력
손실 계산: 출력과 정답 비교 → Cross-Entropy 손실
역전파 시작: ∂L/∂출력 계산 (손실의 미분)
체인 룰 적용: ∂L/∂W₁ = ∂L/∂출력 × ∂출력/∂층96 × ... × ∂층1/∂W₁
파라미터 업데이트: GPT-3: 96개의 층을 거슬러 올라가며 기울기 계산!
간단한 네트워크에서 역전파를 직접 실행합니다
import numpy as np
# === 간단한 2층 네트워크에서 역전파 체험 ===
# 순전파 (Forward Pass)
x = 2.0 # 입력
w1 = 0.5 # 층1 가중치
w2 = -1.0 # 층2 가중치
target = 1.0 # 정답
# 층1: z1 = x * w1
z1 = x * w1 # z1 = 1.0
a1 = max(0, z1) # ReLU 활성화: a1 = 1.0
output = a1 * w2 # 층2: output = -1.0
loss = (output - target) ** 2 # 손실 = 4.0
print("=== 순전파 ===")
print(f"x={x} → z1={z1} → a1={a1} → output={output}")
print(f"손실 = ({output} - {target})² = {loss}")
# 역전파 (Backward Pass) — 체인 룰 적용
print("\n=== 역전파 (체인 룰) ===")
dL_doutput = 2 * (output - target) # ∂L/∂output = -4.0
print(f"∂L/∂output = {dL_doutput}")
dL_dw2 = dL_doutput * a1 # ∂L/∂w2 = -4.0
print(f"∂L/∂w2 = {dL_doutput} × {a1} = {dL_dw2}")
dL_da1 = dL_doutput * w2 # = 4.0
dL_dz1 = dL_da1 * (1 if z1 > 0 else 0) # ReLU 미분
dL_dw1 = dL_dz1 * x # = 8.0
print(f"∂L/∂w1 = {dL_dw1} (체인: {dL_doutput} × {w2} × 1 × {x})")
# 파라미터 업데이트
lr = 0.01
w1_new = w1 - lr * dL_dw1
w2_new = w2 - lr * dL_dw2
print(f"\n=== 업데이트 (lr={lr}) ===")
print(f"w1: {w1} → {w1_new}")
print(f"w2: {w2} → {w2_new}")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억 파라미터에 대해 자동 실행
역전파에서 기울기를 계산하는 순서는?
PyTorch에서 loss.backward()를 호출하면 모든 파라미터의 기울기가 오토그래드로 계산된다.
체인 룰에서 합성함수 f(g(x))의 미분은 어떻게 계산하나요?
다음 PyTorch 코드의 빈칸을 채우세요. loss = criterion(output, target) loss.___() # 기울기 계산 시작
loss.___() (역전파 시작)
역전파에서 기울기 소실(vanishing gradient) 문제는 층이 깊어질수록 심해진다.
미적분과 역전파
핵심 용어
역전파
출력→입력 방향으로 오차를 전파하며 기울기를 계산
오토그래드
PyTorch의 자동 미분 엔진
정리 노트
역전파 — 오차를 거슬러 올라가는 알고리즘
핵심 개념
- 체인 룰
- 합성함수 f(g(x))의 미분 = f'(g(x)) × g'(x)
- 역전파
- 출력→입력 방향으로 체인 룰을 반복 적용하여 기울기 계산
- 오토그래드
- PyTorch가 loss.backward() 한 줄로 역전파를 자동 실행
역전파 순서
- 1단계
- 순전파: 입력 → 층1 → 층2 → ... → 출력
- 2단계
- 손실 계산: 출력과 정답 비교 → Cross-Entropy
- 3단계
- 역전파: ∂L/∂출력에서 시작하여 역방향으로 기울기 전파
- 4단계
- 업데이트: 계산된 기울기로 모든 파라미터 조정
GPT-3는 96개 층을 거슬러 올라가며 1750억 개 파라미터의 기울기를 자동 계산한다
시각 자료
핵심 정리
- 1미분 = 함수의 변화율(기울기) 계산
- 2경사하강법: w = w - lr × gradient로 손실 최소화
- 3역전파: 체인 룰로 출력→입력 방향으로 기울기 전파
- 4PyTorch의 loss.backward()가 이 모든 것을 자동화
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작