MCP로 연결 →

계산 입력

K개의 실수를 쉼표, 공백 또는 줄바꿈으로 구분하여 입력하세요.

공식

광고

결과

Softmax σ(z)
0.0900305732, 0.2447284711, 0.6652409558
확률 분포 (합계 1)
벡터 길이 K 3
출력값의 합 1
Argmax (1부터 시작하는 인덱스) 3
최대 확률 0.6652409558

소프트맥스 함수란?

소프트맥스(softmax) 함수는 K개의 실수로 이루어진 벡터를 확률 분포로 변환합니다. 변환된 각 출력값은 0과 1 사이의 값을 가지며, K개 출력값을 모두 더하면 정확히 1이 됩니다. 소프트맥스는 신경망 분류 모델의 출력층에서 표준적으로 사용되는 활성화 함수로, 모델이 산출한 원시 점수(로짓, logit)를 각 클래스에 대한 확률로 바꿔 줍니다. 또한 무차원(dimensionless) 함수이기 때문에 입력값은 단위가 없는 순수한 숫자입니다.

세 개의 실수 벡터가 합이 1인 세 개의 확률 막대로 변환되는 플랫 다이어그램
Softmax는 실수 벡터를 합이 1이 되는 확률 분포로 변환합니다.

계산기 사용 방법

입력란에 벡터를 쉼표, 공백, 또는 줄바꿈으로 구분된 숫자 목록 형태로 입력하세요(예: 1, 2, 3). 숫자는 양수, 음수, 0, 소수 모두 가능합니다. 계산 버튼을 누르면 각 성분의 소프트맥스 확률값, 출력값의 합계(1이 되어야 합니다), 그리고 가장 큰 확률을 가진 성분의 위치를 나타내는 argmax(1부터 시작하는 인덱스)를 확인할 수 있습니다.

공식 자세히 알아보기

각 성분 \(j\)에 대한 소프트맥스는 $$\sigma(z)_j = \frac{e^{z_j}}{\sum_{k} e^{z_k}}$$ 로 정의됩니다. 지수 함수를 취하면 모든 항이 양수가 되고, 전체 합으로 나누어 정규화하면 합계가 1이 됩니다. 이 계산기는 수치적 안정성을 위해 지수를 취하기 전에 모든 원소에서 최댓값 \(m\)을 먼저 뺍니다: $$\sigma(z)_j = \frac{e^{z_j - m}}{\sum_{k} e^{z_k - m}}.$$ 공통 인수인 \(e^{-m}\)이 약분되므로 결과는 동일하게 유지되면서, 큰 입력값에서 발생할 수 있는 오버플로(overflow)를 방지할 수 있습니다.

광고
지수 합 위에 지수를 둔 softmax 공식 구조를 보여주는 플랫 다이어그램
각 출력은 한 원소의 지수를 모든 원소의 지수 합으로 나눈 값입니다.

계산 예시

\(z = (1, 2, 3)\)인 경우: \(e^{1} = 2.71828\), \(e^{2} = 7.38906\), \(e^{3} = 20.08554\)이며, 이들의 합은 \(30.19287\)입니다. 각 항을 합으로 나누면 \(\sigma = (0.09003, 0.24473, 0.66524)\)가 되고, 이 값들의 합은 \(1\)입니다. argmax는 가장 큰 입력값에 해당하는 인덱스 \(3\)이며, 그 확률은 \(0.66524\)입니다.

자주 묻는 질문

출력값의 합은 왜 항상 1이 되나요? 각 지수값을 모든 지수값의 합으로 나누어 정규화하기 때문에, 합계는 반드시 1이 됩니다.

모든 입력값이 같으면 어떻게 되나요? 결과는 균등 분포가 되어, 모든 출력값이 \(1/K\)로 동일해집니다.

모든 입력값에 같은 상수를 더하면 결과가 달라지나요? 아니요. 소프트맥스는 평행 이동 불변(shift-invariant)이라서, 모든 입력값에 같은 상수 \(c\)를 더해도 출력값은 변하지 않습니다. 바로 이 성질 덕분에 최댓값을 빼는 처리가 안전하게 적용될 수 있습니다.

최종 업데이트: