← 문제 목록/log-softmax (수치 안정)
문제 해설

log-softmax (수치 안정)

신경망 · easy

preview

log-softmax-v1

log(softmax-v1(x))직접 계산하지 않고 (underflow 위험) 다음 항등식을 씀:

logsoftmax-v1(x)i=xilogsumexp(x)\log \text{softmax-v1}(x)_i = x_i - \text{logsumexp}(x)

여기서 logsumexp(x)=m+logjexp(xjm), m=maxx\text{logsumexp}(x) = m + \log \sum_j \exp(x_j - m),\ m = \max x — 오버플로 방지 표준 기법.

왜 log-softmax-v1 인가

  • NLL loss 의 내부 항: logpy=logsoftmax-v1(x)y-\log p_y = -\text{logsoftmax-v1}(x)_y.
  • log(softmax-v1(x)) 는 확률이 매우 작을 때 log(0) = -inf 로 새기 쉬움 → 합쳐서 한 번에 계산.

과제

함수 log_softmax-v1(x) 를 완성하세요.

  • 입력: shape (N,).
  • 출력: shape (N,), log-softmax-v1 값.
  • logsumexp 트릭 필수 (큰 로짓에서도 inf/nan 금지).

테스트 케이스

#이름검증
1합 exp(ls) = 1sum(exp(out)) == 1
2out ≤ 0모두 non-positive
3log(softmax-v1) 와 동일naive 와 allclose
4큰 로짓 안정성[1000, 1001] 에서 finite
5shift 불변x + c 동일 결과
코드 작성
Loading...
실행 결과

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