← 문제 목록/Softmax 교차엔트로피 손실
문제 해설

Softmax 교차엔트로피 손실

손실 함수 · easy

preview

Softmax 교차엔트로피 손실

다중 클래스 분류의 표준 손실. softmax-v1(07) + cross-entropy-v1(37) 의 결합이지만, 둘을 따로 계산하면 log(0)\log(0) 문제가 생겨요. 한 번에 하는 게 안정적입니다.

공식 (nats, 자연로그)

로짓 zRK\mathbf{z} \in \mathbb{R}^K, 정답 레이블 y{0,,K1}y \in \{0, \dots, K-1\} 에 대해:

L(z,y)=log ⁣(ezyjezj)=zy+log ⁣jezj\mathcal{L}(\mathbf{z}, y) = -\log\!\left( \frac{e^{z_y}}{\sum_j e^{z_j}} \right) = -z_y + \log\!\sum_j e^{z_j}

배치 평균:

L=1Ni=1N(zi,yi+log ⁣jezi,j)\mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \left( -z_{i, y_i} + \log\!\sum_j e^{z_{i, j}} \right)

LogSumExp 안정화

logjezj\log \sum_j e^{z_j} 은 큰 값에서 오버플로우. max 빼기 트릭:

logjezj=m+logjezjm,m=maxjzj\log \sum_j e^{z_j} = m + \log \sum_j e^{z_j - m}, \quad m = \max_j z_j

수학적으로 같지만 지수가 항상 ≤ 0 이라 안전.

과제

함수 softmax-v1_cross_entropy-v1(logits, y_true) 를 완성하세요.

  • logits shape (N, K), y_true shape (N,) 정수 레이블.
  • 반환: Python float (배치 평균, nats 단위).
  • LogSumExp 트릭으로 안정화.

테스트 케이스

#이름검증
1완벽 예측 → 매우 작음정답 클래스 로짓이 다른 것보다 훨씬 크면 0에 수렴
2균등 로짓 → log(K)K=3 일 때 log(3) ≈ 1.0986
3큰 로짓도 유한[1000, 1001] 에서 NaN 없음
4sklearn log_loss 일치softmax-v1 적용 후 비교
코드 작성
Loading...
실행 결과

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