소프트맥스 함수 (Softmax Function)
쉽게 풀면
사진 속 동물이 "고양이일까, 개일까, 토끼일까"를 맞히는 인공지능을 상상해봅시다. 신경망 내부에서는 각 동물에 대해 5.2, 3.1, 0.7 같은 점수(로짓)를 뽑아내는데, 이 숫자만으로는 "고양이일 확률이 몇 %인지" 바로 알기 어렵습니다. 소프트맥스 함수는 이런 점수들을 지수함수로 부풀린 뒤 전체 합으로 나누어, "고양이 83%, 개 15%, 토끼 2%"처럼 합이 100%(1)가 되는 확률로 바꿔줍니다. 점수 차이가 클수록 확률 차이도 더 극적으로 벌어지기 때문에, 가장 그럴듯한 답을 도드라지게 강조하는 효과도 있습니다.
왜 중요한가
소프트맥스 함수는 분류 신경망의 마지막 단계에서 출력을 사람이 해석할 수 있는 확률로 바꿔주기 때문에, 이미지 분류부터 언어 모델의 다음 단어 예측, 강화학습의 행동 선택에 이르기까지 거의 모든 다중 클래스 예측 모델에서 표준적으로 쓰입니다. 또한 학습 과정에서 손실함수와 결합되어 모델의 오차를 계산하고 역전파하는 데 핵심 역할을 하기 때문에, 딥러닝 논문에서 모델 구조를 설명할 때 빠지지 않고 등장합니다. 최근에는 어텐션 메커니즘에서 가중치를 분배하는 데도 소프트맥스가 활용되면서 그 중요성이 더욱 커졌습니다.
논문에서는 이렇게 쓰입니다
이 문장은 "신경망이 내놓은 원점수를 소프트맥스로 변환해, 사람이 해석할 수 있는 확률값(예: 고양이일 확률 83%)으로 만들었다"는 뜻입니다.
트랜스포머 기반 언어모델에서 각 단어가 다른 단어에 얼마나 주목해야 하는지를 소프트맥스로 정규화된 가중치로 표현했다는 뜻입니다.
에이전트가 다음에 취할 행동들 중 어느 것을 선택할지를, 소프트맥스로 만든 확률 분포에서 샘플링해 결정했다는 의미입니다.
조금 더 깊게 보면
소프트맥스에는 온도(temperature) 파라미터를 곱해 확률 분포의 뾰족함을 조절하는 변형이 자주 쓰이는데, 온도가 낮을수록 가장 높은 점수에 확률이 몰리고 온도가 높을수록 분포가 고르게 퍼집니다. 또한 소프트맥스 계산에는 지수함수가 포함되어 큰 로짓 값에서 수치적으로 불안정해질 수 있어, 실제 구현에서는 최댓값을 빼주는 안정화 기법을 함께 사용하는 경우가 많습니다. 클래스 수가 매우 많을 때는 계산 비용을 줄이기 위해 계층적 소프트맥스나 네거티브 샘플링 같은 근사 기법이 대안으로 제안되기도 합니다.
주의할 점
소프트맥스가 내놓은 숫자는 "확률처럼 보이는 값"일 뿐, 모델이 실제로 얼마나 확신하는지를 정확히 반영하지 못할 수 있습니다(과신 문제). 또한 학습 과정에서는 보통 소프트맥스 출력과 정답 사이의 차이를 교차엔트로피 손실로 계산해 모델을 개선합니다.