역전파와 Loss 최적화: 간단한 예제와 원리

Bean·2025년 3월 27일
0

인공지능

목록 보기
3/123

1️⃣ 기본 개념

  • Loss (손실)
    모델의 예측값과 실제값의 차이를 수치화한 값
    예: 평균 제곱 오차 (MSE), 교차 엔트로피 (Cross-Entropy)

  • 역전파 (Backpropagation)
    손실 함수를 기준으로 각 파라미터(가중치 등)의 기울기(Gradient) 를 계산하는 과정

  • 최적화 (Optimization)
    계산된 기울기를 이용하여 파라미터를 업데이트하고, Loss를 줄여나가는 과정
    예: SGD, Adam 등


2️⃣ 간단한 예제: ( y = 2x ) 모델 학습

import torch

# 입력과 정답
x = torch.tensor([1.0, 2.0, 3.0, 4.0])
y_true = torch.tensor([2.0, 4.0, 6.0, 8.0])

# 초기 가중치
w = torch.tensor([0.5], requires_grad=True)

# 학습률
lr = 0.1

# 순전파 (Forward Pass)
y_pred = w * x
loss = ((y_pred - y_true) ** 2).mean()

# 역전파 (Backward Pass)
loss.backward()

# 최적화 (가중치 업데이트)
with torch.no_grad():
    w -= lr * w.grad
    w.grad.zero_()

print(f"Updated weight: {w.item()}")

3️⃣ 실행 과정 요약

  • 순전파 (Forward Pass)
    모델 예측: ypred=wxy_{\text{pred}} = w \cdot x
    손실 계산: L=1n(ypredytrue)2L = \frac{1}{n} \sum (y_{\text{pred}} - y_{\text{true}})^2

  • 역전파 (Backward Pass)
    loss.backward() 를 호출하면 PyTorch가 자동으로 Lw\frac{\partial L}{\partial w} 계산

  • 최적화
    w=wηLww = w - \eta \cdot \frac{\partial L}{\partial w}
    이후 w.grad.zero_()로 기울기 초기화


4️⃣ 기울기 계산의 원리: Chain Rule 적용

(1) 예측값의 Loss에 대한 미분

Lypred=2n(ypredytrue)\frac{\partial L}{\partial y_{\text{pred}}} = \frac{2}{n} (y_{\text{pred}} - y_{\text{true}})

(2) 예측값의 가중치에 대한 미분

ypredw=x\frac{\partial y_{\text{pred}}}{\partial w} = x

(3) 연쇄 법칙 (Chain Rule) 적용

Lw=2n(ypredytrue)x\frac{\partial L}{\partial w} = \frac{2}{n} (y_{\text{pred}} - y_{\text{true}}) \cdot x


5️⃣ 왜 gradient가 -15인가?

주어진 값

  • w=0.5w = 0.5
  • x=[1,2,3,4]x = [1, 2, 3, 4]
  • ytrue=[2,4,6,8]y_{\text{true}} = [2, 4, 6, 8]

예측값

ypred=wx=0.5[1,2,3,4]=[0.5,1.0,1.5,2.0]y_{\text{pred}} = w \cdot x = 0.5 \cdot [1, 2, 3, 4] = [0.5, 1.0, 1.5, 2.0]

오차

ypredytrue=[1.5,3.0,4.5,6.0]y_{\text{pred}} - y_{\text{true}} = [-1.5, -3.0, -4.5, -6.0]

기울기 계산

Lw=24((1.5)1+(3.0)2+(4.5)3+(6.0)4)=15\frac{\partial L}{\partial w} = \frac{2}{4} \cdot \left( (-1.5)\cdot1 + (-3.0)\cdot2 + (-4.5)\cdot3 + (-6.0)\cdot4 \right) = -15


6️⃣ 가중치 업데이트 예시

학습률 η=0.1\eta = 0.1일 때,

w=wη(15)=0.5+1.5=2.0w = w - \eta \cdot (-15) = 0.5 + 1.5 = 2.0

ypred=wxypred=2xy_{\text{pred}} = w \cdot x \rightarrow y_{\text{pred}} = 2 \cdot x 가 되면서, x=[1,2,3,4]x = [1, 2, 3, 4]에 대해 ypredy_{\text{pred}}ytrue=[2,4,6,8]y_{\text{true}} = [2, 4, 6, 8]와 일치하게 됨.


7️⃣ 결론 요약

✅ 역전파는 연쇄 법칙 (Chain Rule) 을 이용해 기울기를 계산함
✅ PyTorch는 .backward()로 자동 미분 수행
✅ 계산된 gradient로 파라미터 업데이트
✅ 이 과정을 반복하면 손실이 줄고, 가중치는 최적의 값으로 수렴함

profile
AI developer

0개의 댓글