위키득계정 ↗
기술

소프트맥스

소프트맥스기술
영문명
Softmax
정의
pⱼ = exp(zⱼ)/Σexp(zₖ)
출력 합
정규화하는 축을 따라 1
수치 계산
공통 상수를 빼는 이동 사용 가능
소프트맥스는 여러 실수 점수를 지수함수로 변환하고 그 합으로 나누어 합이 1인 벡터를 만드는 함수다. 각 성분은 exp(zⱼ)/Σexp(zₖ)로 정의한다. 같은 벡터의 다른 점수도 분모에 들어가므로 각 성분을 서로 독립적으로 변환하는 연산은 아니다.

간단한 로그 점수 예제

점수가 (ln 2, ln 3, ln 5)이면 지수값은 (2,3,5)다. 합이 10이므로 출력은 (1/5,3/10,1/2)다. 가장 큰 점수의 성분이 가장 크지만 반드시 1이 되는 것은 아니다.

같은 상수를 더해도 결과는 같다

모든 점수에 c를 더하면 각 지수값에 exp(c)가 곱해져 분자와 분모에서 약분된다. 큰 점수들을 계산할 때 최댓값을 먼저 빼는 방법은 이 성질을 이용한다. 예제에 1000을 더하더라도 수학적인 출력은 같지만 원래 지수값을 직접 계산하면 수치 범위를 넘을 수 있다.

배율을 바꾸면 결과가 달라진다

점수 (0,ln 3)의 출력은 (1/4,3/4)다. 점수를 두 배로 하면 (0,ln 9)가 되어 출력은 (1/10,9/10)이다. 공통 상수를 더하는 것과 점수 차이를 배율로 늘리는 것은 다르다.

어느 축을 정규화하는가

여러 관측값의 점수를 행렬에 모았다면 각 행을 따로 변환하는지 전체 원소를 함께 변환하는지 정해야 한다. 두 행이 모두 (0,0)일 때 행별 출력은 각 행 (1/2,1/2)지만 전체 네 원소를 한꺼번에 정규화하면 모두 1/4이다. 합이 1이라는 말에는 정규화 범위가 포함된다.

관련 문서

로지스틱 회귀 / 지수함수 / 자연로그 / 확률 / 벡터 / 행렬 / 로그 손실