
이진 교차 엔트로피 (Binary Cross-Entropy)
이진 분류의 표준 손실. 모델이 뱉은 확률 p 가 실제 레이블 y∈{0,1} 에서 얼마나 떨어져 있는지를 측정:
BCE(p,y)=−N1∑i=1N[yilogpi+(1−yi)log(1−pi)]
- 예측이 정답이면 log 의 입력이 1 → 손실 0.
- 예측이 완전히 틀리면 log(0)→∞ → 손실 폭발.
수치 안정성
p=0 또는 p=1 이면 log(0) = -inf. 클리핑:
p←clip(p,ϵ,1−ϵ),ϵ=10−7
과제
함수 bce(p, y) 를 완성하세요.
- 입력:
p 확률 배열 (각 원소 0~1), y 라벨 배열 (각 원소 0 또는 1).
- 반환: Python
float (배치 평균).
- 클리핑으로 수치 안정화.
테스트 케이스
| # | 이름 | p | y | 기대 |
|---|
| 1 | 완벽한 예측 → 작은 손실 | [0.99, 0.01] | [1, 0] | ≈ 0.01 |
| 2 | 동전던지기 (p=0.5) | [0.5, 0.5] | [1, 0] | log(2) ≈ 0.693 |
| 3 | 완전히 틀림 (클리핑) | [0.0, 1.0] | [1, 0] | 유한, 큰 값 |
| 4 | 대칭 | bce([p], [0]) == bce([1-p], [1]) | | 성립 |