소프트맥스 함수 (Softmax Function)
소프트맥스 함수(Softmax function)는 다중 클래스 분류 문제에서 확률 분포를 계산하는 데 사용되는 함수다. 소프트맥스는 각 클래스의 점수를 확률 값으로 변환하는 함수로, 주어진 입력 벡터의 원소들을 실수 값에서 0과 1 사이의 확률 값으로 매핑한다. 이 함수는 다음과 같은 수학적 형태로 정의된다:
여기서, $ z_i $는 입력 벡터 $ \mathbf{z} $의 i번째 원소를 의미하며, $ K $는 클래스의 총 개수를 나타낸다. $ \sigma(\mathbf{z})_i $는 i번째 클래스에 속할 확률로 해석된다.
소프트맥스 함수의 특성
확률 분포 생성: 소프트맥스 함수의 가장 중요한 특성은 각 클래스 점수를 확률로 변환한다는 점이다. 출력 확률의 합은 항상 1이다. 이는 모델이 각 클래스에 대한 확신을 나타내도록 한다.
지수 함수 사용: 소프트맥스 함수는 지수 함수(Exponential Function)를 사용하여 입력 값을 변환한다. 이는 입력 값이 상대적으로 작은 경우에도 출력 확률이 명확히 구분될 수 있도록 도와준다.
미분 가능성: 소프트맥스 함수는 연속적이고 미분 가능한 함수이다. 이는 역전파(Backpropagation) 알고리즘을 통해 모델을 학습하는 데 유리한다. 특히, 손실 함수로 크로스 엔트로피(Cross-Entropy)를 사용하면 미분이 더욱 간단해진다.
소프트맥스 함수의 수학적 성질
입력 벡터의 스케일 불변성: 소프트맥스 함수는 입력 벡터의 모든 원소에 동일한 값을 더하더라도 출력에 영향을 미치지 않는다. 이는 모델의 출력이 상대적인 차이에만 의존하기 때문에 발생한다. 예를 들어, $ \mathbf{z} $의 모든 원소에 상수 $ c $를 더하더라도 소프트맥스 출력은 동일한다.
출력 벡터의 합은 항상 1: 소프트맥스 함수의 출력 벡터는 확률 분포를 나타내므로, 모든 원소의 합은 항상 1이다.
순서 보존성: 입력 벡터의 원소 순서가 유지되면, 출력 벡터의 원소 순서도 유지된다. 이는 입력 벡터의 상대적 크기가 출력 확률에 그대로 반영됨을 의미한다.
소프트맥스 함수와 크로스 엔트로피 손실 함수
소프트맥스 함수는 크로스 엔트로피(Cross-Entropy) 손실 함수와 자주 결합된다. 크로스 엔트로피 손실 함수는 실제 클래스 레이블과 예측된 확률 분포 간의 차이를 측정하는 데 사용된다. 이는 분류 문제에서 매우 중요한 손실 함수다.
크로스 엔트로피 손실 함수는 다음과 같이 정의된다:
여기서 $ y_i $는 실제 클래스의 원-핫 인코딩 벡터이고, $ \hat{y}_i $는 소프트맥스 함수의 출력이다. 이 함수는 예측 확률이 실제 클래스에 가까울수록 낮은 값을 가지며, 이는 모델이 보다 정확하게 예측할 수 있도록 도와준다.
소프트맥스 함수의 계산 효율성
소프트맥스 함수의 계산은 다소 복잡할 수 있지만, 벡터화(Vectorization)를 통해 효율성을 높일 수 있다. 모든 지수 계산과 나눗셈이 벡터화된 연산으로 이루어지며, 이는 병렬 처리를 통해 성능을 최적화할 수 있다. 또한, 수치적으로 안정적인 계산을 위해 입력 벡터에서 최대값을 빼는 기법이 종종 사용된다. 이는 지수 함수 계산에서 발생할 수 있는 오버플로우 문제를 방지하기 위함이다.
관련 자료:
Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
Last updated