← 문제 목록/Binary α-balanced Focal Loss [medium]
문제 해설

Binary α-balanced Focal Loss [medium]

손실 함수 · medium

preview

Binary α-balanced Focal Loss [medium]

v1 Focal (softmax) 는 다중 클래스 버전. 실무 객체 탐지 (RetinaNet) 에서 더 자주 쓰이는 것은 binary (sigmoid) 형태 — 각 anchor 에 대해 양성/음성 이진 예측에 적용.

공식

p=σ(z)p = \sigma(z), y{0,1}y \in \{0, 1\} 일 때:

pt={py=11py=0,αt={αy=11αy=0p_t = \begin{cases} p & y = 1 \\ 1 - p & y = 0 \end{cases}, \quad \alpha_t = \begin{cases} \alpha & y = 1 \\ 1 - \alpha & y = 0 \end{cases}

Lfocal=αt(1pt)γlogpt\mathcal{L}_\text{focal} = -\alpha_t (1 - p_t)^\gamma \log p_t

  • γ\gamma (focusing): 쉬운 음성 (p_t ≈ 1) 의 기여를 γ\gamma 승으로 감쇠.
  • α\alpha (balancing): 양성이 희귀할 때 α<0.5\alpha < 0.5 로 양성/음성 균형.
  • 전형값: γ=2,α=0.25\gamma = 2, \alpha = 0.25 (RetinaNet 논문).

수치적 안정성

  • p=σ(z)p = \sigma(z) 직접 계산 후 log 하면 큰 z|z| 에서 underflow → log p, log(1-p)logsigmoid 로 계산:
    • logσ(z)=softplus(z)\log \sigma(z) = -\text{softplus}(-z)
    • log(1σ(z))=softplus(z)\log(1 - \sigma(z)) = -\text{softplus}(z)
  • softplus(x) = log(1 + exp(x)), 안정 구현: max(0, x) + log(1 + exp(-|x|)).

과제

함수 binary_focal_loss(logits, y_true, alpha=0.25, gamma=2.0) 를 완성하세요.

  • logits shape (N,), y_true shape (N,) with 0/1.
  • 반환: Python float (배치 평균).
  • 극단 logit (z>100|z| > 100) 에서 NaN/inf 없이.

테스트 케이스

#이름검증
1γ=0, α=0.5 → 일반 BCE (scale 1/2)
2완벽 예측 → 0
3γ 증가 → 쉬운 예제 loss 감소
4α < 0.5: 양성 loss 비중 낮음
5큰 logit (z
6torchvision.ops.sigmoid_focal_loss 일치 (있으면)
7per-sample loss 비음수
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.