← 문제 목록/Weighted BCE with pos_weight [medium]
문제 해설

Weighted BCE with pos_weight [medium]

손실 함수 · medium

preview

Weighted BCE with pos_weight [medium]

v1 BCE 는 양/음성 샘플을 동등 취급. 클래스 불균형 (ex. 이상 탐지: 양성 1%) 에서는 양성을 놓치는 비용이 훨씬 큼. pos_weight ww 로 양성 항을 증폭:

L=1Ni[wyilogpi+(1yi)log(1pi)]L = -\frac{1}{N} \sum_i \big[ w \cdot y_i \log p_i + (1 - y_i) \log(1 - p_i) \big]

  • w=1w = 1 → 일반 BCE (v1).
  • w=N/N+w = N_-/N_+ → 이론적으로 양/음 loss 가 균형 (PyTorch 관례).

언제 쓰이나

  • 의료 영상 (segmentation): 병변 픽셀이 소수.
  • 이상 탐지, 스팸 분류.
  • PyTorch BCEWithLogitsLoss(pos_weight=...) 내장.

수치 안정 + 가중치 적용

기본 BCE 처럼 clip 필요 (log(0) 방지):

p = np.clip(p, eps, 1 - eps)
bce_per_sample = -(w * y * np.log(p) + (1 - y) * np.log(1 - p))
return bce_per_sample.mean()

과제

함수 weighted_bce(p, y, pos_weight) 를 완성하세요.

  • p, y shape (N,), 스칼라 pos_weight.
  • 반환: Python float.
  • eps = 1e-7 로 clip.

테스트 케이스

#이름검증
1float 반환
2pos_weight=1 → v1 BCE 와 동일
3완벽 예측 → ~0
4pos_weight 클수록 양성 오분류 페널티 ↑
5pos_weight 는 음성 loss 는 안 건드림
6clip → log(0) 방지p=0, y=1 이어도 finite
코드 작성
Loading...
실행 결과

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