← 문제 목록/소프트맥스 함수

소프트맥스 함수

분류 기초 · easy

preview

소프트맥스 함수

여러 logit 값을 확률 분포로 바꿔주는 함수. 다중 클래스 분류의 출력층에서 씁니다.

softmax(x)i=exijexj\text{softmax}(x)_i = \frac{e^{x_i}}{\sum_j e^{x_j}}

큰 값은 더 크게, 작은 값은 더 작게 — 차이가 강조됩니다. 결과는 모두 양수이고 합이 1.

수치 안정성

e1000e^{1000} 은 오버플로우. 표준 트릭은 최댓값을 빼주기:

softmax(x)=eximax(x)jexjmax(x)\text{softmax}(x) = \frac{e^{x_i - \max(x)}}{\sum_j e^{x_j - \max(x)}}

수학적으로 동일하지만 지수가 항상 ≤ 0 이라 안전합니다.

과제

함수 softmax(x)를 완성하세요. 입력은 1D 배열.

  • 반환: 같은 길이의 확률 벡터 (합이 1).
  • 수치 안정 버전으로 구현.

테스트 케이스

#이름입력기대
1균등 → 균등 확률[0, 0, 0][1/3, 1/3, 1/3]
2합이 1임의sum(softmax(x)) == 1
3단조성 보존[1, 2, 3]argmax는 여전히 마지막
4큰 값 안정성[1000, 1001]오버플로우 없이 [0.269, 0.731]
Loading...

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