소프트맥스(Softmax)는 다중 클래스 분류 문제에서 자주 사용되는 함수로, 실수값 벡터를 입력받아 각 원소를 0과 1 사이의 확률값으로 변환하고 전체 합이 1이 되도록 정규화한다. 일반적으로 신경망의 마지막 층에 적용되어 각 클래스에 대한 사후 확률을 추정한다.
정의
입력 벡터 $\mathbf{z} = (z_1, z_2, \dots, z_K)$에 대해 소프트맥스 함수 $ \sigma : \mathbb{R}^K \rightarrow [0,1]^K $는 다음과 같이 정의된다.
$$ \sigma(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \quad (i = 1,\dots,K) $$
각 $ \sigma(z_i) $는 $0 \le \sigma(z_i) \le 1$이며, $\sum_{i=1}^{K} \sigma(z_i) = 1$을 만족한다.
주요 특징
- 정규화: 입력값을 지수 함수를 거쳐 전체 합으로 나누어 확률 분포를 만든다.
- 미분 가능: 연속적이며 미분 가능하므로 역전파(Back‑Propagation) 과정에서 손쉽게 활용된다.
- 다중 클래스: 이진 분류에서 로그-시그모이드(log‑sigmoid)와 달리, 세 개 이상의 클래스를 동시에 다룰 수 있다.
활용 사례
- 신경망 출력층: 이미지 분류(CNN), 자연어 처리(RNN, Transformer) 등에서 최종 클래스 확률을 산출한다.
- 손실 함수와 결합: 교차 엔트로피(Cross‑Entropy) 손실과 함께 사용되어 모델 학습을 최적화한다.
- 강화 학습: 정책 네트워크에서 행동 선택 확률을 정의하는 데 이용될 수 있다.
어원 및 용어 형성
‘Softmax’는 영어 단어 soft(부드러운)와 max(maximum)의 합성어이다. ‘max’는 최대값을 의미하는 ‘maximum’에서 따왔으며, ‘soft’는 지수 함수를 적용해 ‘hard max’(단순히 가장 큰 값만 선택)보다 부드러운(연속적인) 선택을 제공한다는 의미를 담고 있다.
수학적/계산적 고려사항
- 수치 안정성: 큰 값이 입력될 경우 지수 연산으로 인한 오버플로우를 방지하기 위해, 보통 입력 벡터 전체에서 최대값을 빼는 방식 $\sigma(z_i) = \frac{e^{z_i - \max(\mathbf{z})}}{\sum_j e^{z_j - \max(\mathbf{z})}}$을 사용한다.
- 시간·공간 복잡도: 입력 차원 $K$에 비례하는 연산량과 메모리를 요구한다.
관련 함수
- 시그모이드(Sigmoid): 이진 분류에 사용되는 1차원 확률 변환 함수.
- 스파스맥스(Sparsemax): 소프트맥스와 유사하지만 일부 출력이 정확히 0이 되도록 하는 변형 형태가 존재한다.
소프트맥스는 머신러닝·딥러닝 분야에서 표준적인 확률 변환 함수로 널리 채택되고 있으며, 다양한 모델 구조와 손실 함수와의 조합을 통해 효과적인 학습을 지원한다.