← 문제 목록/이진 교차 엔트로피 (BCE)

이진 교차 엔트로피 (BCE)

손실 함수 · easy

preview

이진 교차 엔트로피 (Binary Cross-Entropy)

이진 분류의 표준 손실. 모델이 뱉은 확률 pp 가 실제 레이블 y{0,1}y \in \{0, 1\} 에서 얼마나 떨어져 있는지를 측정:

BCE(p,y)=1Ni=1N[yilogpi+(1yi)log(1pi)]\text{BCE}(p, y) = -\frac{1}{N} \sum_{i=1}^{N} \big[ y_i \log p_i + (1 - y_i) \log(1 - p_i) \big]

  • 예측이 정답이면 log\log 의 입력이 1 → 손실 0.
  • 예측이 완전히 틀리면 log(0)\log(0) \to \infty → 손실 폭발.

수치 안정성

p=0p = 0 또는 p=1p = 1 이면 log(0) = -inf. 클리핑:

pclip(p,ϵ,1ϵ),ϵ=107p \leftarrow \text{clip}(p, \epsilon, 1 - \epsilon), \quad \epsilon = 10^{-7}

과제

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

  • 입력: p 확률 배열 (각 원소 0~1), y 라벨 배열 (각 원소 0 또는 1).
  • 반환: Python float (배치 평균).
  • 클리핑으로 수치 안정화.

테스트 케이스

#이름py기대
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])성립
Loading...

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