신경망·연습 문제

log-softmax (수치 안정)

문제 설명PROBLEM

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 동일 결과
개념 노트와 실수 포인트

신경망

  • 순전파 → 손실 → 역전파(연쇄법칙) → 갱신.
  • ⚠️ 행렬곱 차원: A(m×n) @ B(n×p) — 안쪽 차원이 같아야 함.
  • 비선형 활성화가 없으면 층을 쌓아도 선형. 가중치 초기화 중요.