[AI] Loss function

JAsmine_log·2025년 9월 6일
0

Loss function

정리

개념

  • 모델이 예측한 값과 실제 정답 사이의 차이를 수치고 계산하는 함수
  • 값이 작을수록 모델이 예측을 잘 했다는 의미이며,
  • 이 값을 최소화하도록 학습하는 것을 최적화(=optimization)라고 함

카테고리별 Loss function

카테고리별 Loss function 요약

  • 회귀: MSE, MAE, Huber, Log-Cosh
  • 분류: Cross Entropy, NLL, Hinge, Focal, Label Smoothing
  • 임베딩: Cosine, Contrastive, Triplet, InfoNCE
  • 검출·세그멘테이션: IoU, Dice, Tversky, GIoU/DIoU/CIoU

1. 회귀 (Regression)

(1) Mean Squared Error (MSE)

LMSE=1ni=1n(yiy^i)2L_{\text{MSE}} = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2
  • 연속값 예측 기본 손실, 이상치에 민감.

(2) Mean Absolute Error (MAE)

LMAE=1ni=1nyiy^iL_{\text{MAE}} = \frac{1}{n}\sum_{i=1}^n |y_i - \hat{y}_i|
  • 이상치에 강건, gradient 일정.

(3) Huber Loss (Smooth L1)

Lδ(y,y^)={12(yy^)2,yy^δδyy^12δ2,otherwiseL_\delta(y, \hat{y}) = \begin{cases} \frac{1}{2}(y-\hat{y})^2, & |y-\hat{y}| \leq \delta \\ \delta |y-\hat{y}| - \tfrac{1}{2}\delta^2, & \text{otherwise} \end{cases}
  • 작은 오차는 MSE, 큰 오차는 MAE처럼 동작.

(4) Log-Cosh Loss

L(y,y^)=i=1nlog(cosh(y^iyi))L(y, \hat{y}) = \sum_{i=1}^n \log\left(\cosh(\hat{y}_i - y_i)\right)
  • MSE와 비슷하지만 이상치에 덜 민감.

2. 분류 (Classification)

(1) Cross Entropy Loss

LCE=i=1Cyilog(p^i)L_{\text{CE}} = - \sum_{i=1}^C y_i \log(\hat{p}_i)
  • 가장 널리 쓰이는 분류 손실. Softmax와 함께 사용.

(2) Negative Log Likelihood (NLL)

LNLL=logp^(y)L_{\text{NLL}} = - \log \hat{p}(y)
  • 단일 정답 클래스의 확률을 직접 penalize. (Softmax+NLL = CE)

(3) Hinge Loss

Lhinge=i=1nmax(0,1yiy^i)L_{\text{hinge}} = \sum_{i=1}^n \max(0, 1 - y_i \hat{y}_i)
  • 마진 기반 학습 (SVM에서 사용).

(4) Focal Loss

LFL=α(1p^t)γlog(p^t)L_{\text{FL}} = - \alpha (1 - \hat{p}_t)^\gamma \log(\hat{p}_t)
  • 어려운 샘플에 집중, 클래스 불균형 대응.
  • pt=p^(y)p_t = \hat{p}(y).

(5) Label Smoothing Cross Entropy

L=i=1C((1ϵ)yi+ϵC)log(p^i)L = - \sum_{i=1}^C \big( (1-\epsilon) y_i + \tfrac{\epsilon}{C} \big) \log(\hat{p}_i)
  • 모델의 과도한 확신 방지.

3. 임베딩 / Metric Learning

(1) Cosine Embedding Loss

L={1cos(x1,x2),y=1max(0,cos(x1,x2)m),y=1L = \begin{cases} 1 - \cos(x_1, x_2), & y = 1 \\ \max(0, \cos(x_1, x_2) - m), & y = -1 \end{cases}
  • 같은 쌍(positive)은 가깝게, 다른 쌍(negative)은 멀게.

(2) Contrastive Loss

L=(1y)12D2+y12max(0,mD)2L = (1-y) \frac{1}{2} D^2 + y \frac{1}{2} \max(0, m-D)^2
  • D=x1x2D = \|x_1 - x_2\|, y=0y=0 같은 클래스, y=1y=1 다른 클래스.

(3) Triplet Loss

L=max(0,d(a,p)d(a,n)+α)L = \max(0, d(a,p) - d(a,n) + \alpha)
  • Anchor–Positive는 가깝게, Anchor–Negative는 멀게.

(4) InfoNCE Loss

L=logexp(sim(x,x+)/τ)j=1Nexp(sim(x,xj)/τ)L = - \log \frac{\exp(\text{sim}(x, x^+)/\tau)}{\sum_{j=1}^N \exp(\text{sim}(x, x_j)/\tau)}
  • Contrastive Learning에서 자주 사용, 여러 negative 대비 positive를 구분.

4. 객체 검출 · 세그멘테이션 (Detection & Segmentation)

(1) IoU Loss (Jaccard Loss)

LIoU=1yy^yy^L_{\text{IoU}} = 1 - \frac{|y \cap \hat{y}|}{|y \cup \hat{y}|}
  • 박스/영역 겹침을 최적화.

(2) Dice Loss

LDice=12yy^y+y^L_{\text{Dice}} = 1 - \frac{2|y \cap \hat{y}|}{|y| + |\hat{y}|}
  • class imbalance에 강건.

(3) Tversky Loss

L=1yy^yy^+αyy^+βy^yL = 1 - \frac{|y \cap \hat{y}|}{|y \cap \hat{y}| + \alpha |y \setminus \hat{y}| + \beta |\hat{y} \setminus y|}
  • FP/ FN 비중 조절 가능 (Dice의 일반화).

(4) GIoU / DIoU / CIoU Loss

(Detection bounding box 용 개선된 IoU)

LGIoU=1IoU+C(AB)CL_{\text{GIoU}} = 1 - IoU + \frac{|C - (A \cup B)|}{|C|}
  • CC: 두 박스를 포함하는 최소 영역.
  • 위치 정렬과 수렴 속도를 개선.
profile
Everyday Research & Development

0개의 댓글