Ch.6 미적분 — AI가 스스로 배우는 원리

역전파 — 오차를 거슬러 올라가다

체인 룰(Chain Rule)의 개념과 역할을 이해한다역전파(Backpropagation)가 기울기를 계산하는 과정을 추적한다간단한 2층 네트워크에서 역전파를 직접 실행한다

오차가 '거꾸로' 전파된다고?

96개의 층으로 이루어진 GPT-3. 출력에서 생긴 오차가 어떻게 첫 번째 층의 파라미터까지 전달되어 업데이트될까요?

수십 개의 층을 거슬러 올라가며 각 파라미터의 기울기를 어떻게 계산하는가?

역전파(Backpropagation) — 체인 룰로 출력에서 입력 방향으로 기울기를 전달하는 알고리즘입니다.

lightbulb

핵심 개념

역전파

출력→입력 방향으로 오차를 전파하며 기울기를 계산

오토그래드

PyTorch의 자동 미분 엔진


article

핵심 내용

겹겹이 쌓인 함수의 미분은 '체인'처럼 연결됩니다

d/dxf(g(x)) = f'(g(x)) × g'(x)

합성함수 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) 문제는 층이 깊어질수록 심해진다.

미적분과 역전파

key

핵심 용어

🔙

역전파

출력→입력 방향으로 오차를 전파하며 기울기를 계산

오토그래드

PyTorch의 자동 미분 엔진

edit_note

정리 노트

역전파 — 오차를 거슬러 올라가는 알고리즘

핵심 개념

체인 룰
합성함수 f(g(x))의 미분 = f'(g(x)) × g'(x)
역전파
출력→입력 방향으로 체인 룰을 반복 적용하여 기울기 계산
오토그래드
PyTorch가 loss.backward() 한 줄로 역전파를 자동 실행

역전파 순서

1단계
순전파: 입력 → 층1 → 층2 → ... → 출력
2단계
손실 계산: 출력과 정답 비교 → Cross-Entropy
3단계
역전파: ∂L/∂출력에서 시작하여 역방향으로 기울기 전파
4단계
업데이트: 계산된 기울기로 모든 파라미터 조정

GPT-3는 96개 층을 거슬러 올라가며 1750억 개 파라미터의 기울기를 자동 계산한다

image

시각 자료

다이어그램: py-scene-backprop
다이어그램: backprop-flow
check_circle

핵심 정리

  • 1미분 = 함수의 변화율(기울기) 계산
  • 2경사하강법: w = w - lr × gradient로 손실 최소화
  • 3역전파: 체인 룰로 출력→입력 방향으로 기울기 전파
  • 4PyTorch의 loss.backward()가 이 모든 것을 자동화

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작