소프트맥스(softmax) 함수는 여러개의 값이 있을 때, 각 값이 상대적으로 얼마나 중요한지를 확률 분포로 나타내는 함수이다.
예를들어, 어떤 요소가 여러개 주어졌을 때 이 중에서 가장 중요한 것을 찾아내야 하는 상황에서 주로 쓰인다.
헉습이 다 끝난 모델에서 softmax는 다음과 같은 상황에서도 유용히 쓰인다.
예를 들어, 문장 "오늘 날씨가 정말 좋다"에서 각 단어의 중요도를 계산하고 싶다고 하자. 여기서 '날씨'와 '좋다'라는 단어가 상대적으로 중요하다고 Softmax가 판단하게된다면, 각 단어가 문장에서 차지하는 중요도를 확률로 나타낼 수 있다. 날씨:0.6, 좋다:0.3, 오늘:0.1 처럼 softmax를 통해 확률이 높은 순서로 단어의 중요도를 매길 수있다.
Python에서는 numpy 라이브러리를 통해 Softmax를 쉽게 구현할 수 있다.
간단한 예제 :
import numpy as np
def softmax(x):
exp_x = bo,exo( x- np.exp(x)) # overflow 방지를 위해 입력 값에서 최대값을 뺌.
return exp_x / exp_x.sum(axis = 0)
예를 들어, 우리가 '차', '오토바이', '대중교통'라는 세 가지 요소의 중요도를 점수로 0~10점까지 계산해 이 중 어떤 것이 가장 중요한지 알고 싶다고 할 때, 각각의 중요도를 8,5,2로 평가했다면 softmax를 통해 다음과 같이 각 요소의 상대적 중요도를 계산할 수 있다.
scores = np.array([8, 5, 2])
softmax_scores = softmax(scores)
print("차:", softmax_scores[0] )
print("대중교통:", softmax_scores[1])
print("오토바이:", softmax_scores[2])
이렇게 계산하면 각 요소의 중요도가 확률로 표현되고, 이 확률을 바탕으로 가장 중요한 요소를 순위로 정할 수 있다.
8, 이름이 5, 과거가 2일 때 각 값이 중요한 정도를 0~1 사이의 확률로 나타내면, 점수만 비교하는 것보다 직관적으로 중요도를 해석하기 쉬워진다. 특히, 여러 값 중에서 가장 중요한 것이 무엇인지 확률로 나타낼 때 사용자나 시스템이 이해하기에 더 용이해 진다. 따라서 LLM이 점수를 계산할 수 잇는 상황에서도 확률로 변환하여 해석을 쉽게하고, 상대적 차이를 강조하여 명확하게 중요도를 구분하고자 할 때 Softmax가 추가로 쓰인다. LLM의 단순 점수만으로 충분한 상황이 많지만, 결과를 더 직관적으로 해석하고 정확한 확률 기반의 결정을 내리기 위해 Softmax를 함께 사용하는 경우가 있다.
Softmax는 주로 모델 학습 시 다중 클래스 분류를 위해 사용되지만, 학습 이후에도 출력값을 확률로 해석하거나 후처리할 때 유용하게 활용된다. 학습과정에서는 주로 예측과 손실 계산에 사용되지만, 학습된 모델으 ㅣ결과 해석에서도 Softmax가 많은 도움을 준다고 볼 수 있다.