
11번 BCE 의 실전 응용. 보통 파이프라인은:
p = sigmoid-v1(z) # logits → 확률
loss = bce(p, y) # 확률 → 손실 ← 이 단계에서 log(0) 주의
두 단계를 한 수식으로 합치면 중간에 확률로 변환할 필요 없이 수치적으로 안정됩니다:
이 식은 PyTorch BCEWithLogitsLoss·TF sigmoid-v1_cross_entropy-v1_with_logits 의 핵심. 가 ±∞ 로 가도 log(1+exp(-|z|)) 는 0 으로 수렴해 클리핑·NaN 없음.
함수 bce_with_logits(z, y) 를 완성하세요.
z: 로짓 배열 (shape (N,)), y: 레이블 {0, 1} 배열.float (평균).| # | 이름 | 검증 |
|---|---|---|
| 1 | z=0, y=0 → log(2) | 0.693 |
| 2 | z=0, y=1 → log(2) | 0.693 |
| 3 | 정상 영역 | sigmoid-v1 + BCE 결과와 일치 |
| 4 | 극단 양수 z, y=1 | 0 에 가까움 (잘 맞춘 예측) |
| 5 | 극단 음수 z, y=0 | 0 에 가까움 |
| 6 | 극단값에 유한 | z = ±1000 에도 np.isfinite |
코드를 작성하고 Run 을 눌러보세요.