본문 바로가기
IT 개발/AI

[LLM] 소프트맥스 (softmax)

by 이것 저것 모든것 2025. 3. 3.
728x90

소프트맥스(Softmax)는 딥러닝, 특히 분류 문제에서 널리 사용되는 함수입니다. 주로 모델의 출력층에서 사용되어 출력 값을 확률 분포로 변환하는 역할을 합니다. 즉, 여러 개의 클래스 중 하나를 예측해야 하는 문제에서 각 클래스에 속할 확률을 계산하는 데 사용됩니다.

소프트맥스의 작동 방식

소프트맥스 함수는 입력으로 받은 숫자들을 0과 1 사이의 값으로 변환하고, 그 값들의 합이 1이 되도록 정규화합니다. 이렇게 변환된 값들은 확률로 해석될 수 있습니다.

소프트맥스 함수의 수식은 다음과 같습니다:

content_copy 
P(i) = exp(z_i) / sum(exp(z_j) for j in range(K))
Use code with caution
  • P(i): i번째 클래스에 속할 확률
  • z_i: i번째 클래스에 대한 모델의 출력 값
  • K: 클래스의 개수

즉, 각 클래스에 대한 출력 값을 지수 함수(exp)에 넣어 양수로 만들고, 모든 클래스에 대한 지수 함수 값의 합으로 나누어 정규화합니다.

소프트맥스의 특징

  • 출력 값이 확률 분포: 소프트맥스 함수의 출력 값은 0과 1 사이의 값이며, 모든 출력 값의 합은 1입니다. 따라서 출력 값을 확률로 해석할 수 있습니다.
  • 입력 값의 차이를 강조: 지수 함수를 사용하기 때문에 입력 값의 차이가 출력 값에서 더욱 강조됩니다. 즉, 입력 값이 조금만 달라도 출력 값에서 큰 차이가 발생할 수 있습니다.
  • 다중 클래스 분류에 적합: 여러 개의 클래스 중 하나를 예측해야 하는 다중 클래스 분류 문제에 적합합니다.

소프트맥스의 활용

소프트맥스는 딥러닝에서 다양한 분류 문제에 활용되고 있습니다.

  • 이미지 분류: 이미지가 어떤 클래스에 속하는지 예측하는 문제 (예: 고양이, 강아지, 자동차)
  • 자연어 처리: 텍스트가 어떤 감정을 표현하는지 예측하는 문제 (예: 긍정, 부정, 중립)
  • 음성 인식: 음성 신호가 어떤 단어를 나타내는지 예측하는 문제

소프트맥스의 예시

모델의 출력 값이 [2.0, 1.0, 0.1]이라고 가정해 보겠습니다. 이 값들을 소프트맥스 함수에 넣으면 다음과 같은 확률 분포를 얻을 수 있습니다.

content_copy 
P(1) = exp(2.0) / (exp(2.0) + exp(1.0) + exp(0.1)) ≈ 0.6577
P(2) = exp(1.0) / (exp(2.0) + exp(1.0) + exp(0.1)) ≈ 0.2424
P(3) = exp(0.1) / (exp(2.0) + exp(1.0) + exp(0.1)) ≈ 0.0998
Use code with caution

즉, 첫 번째 클래스에 속할 확률이 가장 높고 (약 65.77%), 세 번째 클래스에 속할 확률이 가장 낮습니다 (약 9.98%).

소프트맥스는 딥러닝 모델의 출력을 확률 분포로 변환하여 다중 클래스 분류 문제를 해결하는 데 중요한 역할을 하는 함수입니다.

728x90

'IT 개발 > AI' 카테고리의 다른 글

[LLM] 텐서플로우(TensorFlow)란  (44) 2025.03.03
[LLM] 텐서 (tensor)란?  (15) 2025.03.03
[LLM] 어텐션  (18) 2025.03.03
[LLM] 임베딩과 위치 인코딩 생성하기  (24) 2025.03.03
[LLM] 트랜스포머  (19) 2025.03.02