Loss Functions (손실 함수)

Created: 2025-12-29

모델 예측과 실제 값의 차이를 정량화. 학습 목표를 정의하는 핵심 요소.


MSE (Mean Squared Error)

회귀 문제에 사용.

MSE = (1/n) × Σ(y_pred - y_true)²
 
loss_fn = nn.MSELoss()

특징:

  • 오차의 제곱 → 큰 오차에 더 큰 패널티
  • Gaussian 분포 가정한 Maximum Likelihood와 동일

단점: 이상치(Outlier)에 민감

대안:

nn.L1Loss()  # MAE, 이상치에 덜 민감
nn.HuberLoss()  # MSE + MAE 조합

Cross-Entropy Loss

분류 문제에 사용. 확률 분포 간 차이를 측정.

Binary Cross-Entropy (이진 분류)

BCE = -(y·log(p) + (1-y)·log(1-p))
 
loss_fn = nn.BCELoss()
# 입력: Sigmoid 적용된 확률

Categorical Cross-Entropy (다중 분류)

CE = -Σ(y_i × log(p_i))
 
loss_fn = nn.CrossEntropyLoss()  # Softmax 포함
# 입력: Raw logits (Softmax 미적용)

왜 log?

  1. 수치 안정성
  2. gradient가 선형적
  3. “놀라움(surprise)“의 척도

MSE vs Cross-Entropy

특성MSECross-Entropy
용도회귀분류
출력 범위제한 없음확률 (0~1)
Gradient선형지수적 (큰 오차에 강함)
이론Gaussian MLEMultinomial MLE

PyTorch 예제

# 분류
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(logits, labels)  # logits: [batch, classes], labels: [batch]
 
# 회귀
loss_fn = nn.MSELoss()
loss = loss_fn(predictions, targets)

Connections

deeplearning ai