← 문제 목록/BCE with Logits (수치 안정)
문제 해설

BCE with Logits (수치 안정)

손실 함수 · easy

preview

BCE with Logits — 수치 안정 버전

11번 BCE 의 실전 응용. 보통 파이프라인은:

p = sigmoid-v1(z)   # logits → 확률
loss = bce(p, y) # 확률 → 손실  ← 이 단계에서 log(0) 주의

두 단계를 한 수식으로 합치면 중간에 확률로 변환할 필요 없이 수치적으로 안정됩니다:

BCE_logits(z,y)=max(z,0)    zy  +  log(1+ez)\text{BCE\_logits}(z, y) = \max(z, 0) \;-\; z \cdot y \;+\; \log(1 + e^{-|z|})

이 식은 PyTorch BCEWithLogitsLoss·TF sigmoid-v1_cross_entropy-v1_with_logits 의 핵심. zz 가 ±∞ 로 가도 log(1+exp(-|z|)) 는 0 으로 수렴해 클리핑·NaN 없음.

과제

함수 bce_with_logits(z, y) 를 완성하세요.

  • z: 로짓 배열 (shape (N,)), y: 레이블 {0, 1} 배열.
  • 반환: Python float (평균).
  • 한 줄 수식으로 벡터 연산.

테스트 케이스

#이름검증
1z=0, y=0 → log(2)0.693
2z=0, y=1 → log(2)0.693
3정상 영역sigmoid-v1 + BCE 결과와 일치
4극단 양수 z, y=10 에 가까움 (잘 맞춘 예측)
5극단 음수 z, y=00 에 가까움
6극단값에 유한z = ±1000 에도 np.isfinite
코드 작성
Loading...
실행 결과

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