Adventure Time - Finn 3
본문 바로가기
AI/ML

Softmax Classifier : 여러 클래스를 분류하기

by hyun9_9 2026. 3. 10.

지금까지 배운 Logistic Regression은 0과 1, 두 가지 중 하나를 분류했습니다.
이번엔 세 가지 이상의 클래스를 분류할 수 있는 Softmax Classifier를 알아보겠습니다.


Softmax 함수란?

예측된 값들을 0과 1 사이의 값으로 변환하고, 그 합이 1이 되도록 만들어 확률로 해석할 수 있게 하는 함수입니다.

아래 예시를 보면:

입력값       Softmax 적용      argmax     One-Hot Encoding
 2.0    →      0.7        →     1         [1]
 1.0           0.2                        [0]
 0.1           0.1                        [0]
                                          
합계 = 1.0
  • 입력값들을 확률로 변환 → 모두 더하면 반드시 1.0
  • 가장 높은 확률(0.7)을 가진 클래스가 최종 예측

One-Hot Encoding

가장 높은 확률을 가진 클래스를 1로, 나머지는 0으로 만들어 최종 예측을 표현하는 방식입니다.

예측 확률 : [0.7, 0.2, 0.1]
One-Hot   : [1,   0,   0  ]  ← 가장 높은 확률 위치만 1

Cost Function : Cross-Entropy

Softmax Classifier에서는 Cross-Entropy Cost Function 을 사용합니다.

cost = -∑ L * log(S) = -∑ L * log(y)
  • L : 실제 정답 (One-Hot 벡터)
  • S : Softmax를 통과한 예측값

왜 log를 사용할까?

1 | │
  |  \
  |    \
0 |      \
  --------\-------->
  0         1
  • y = 1 에 가까울수록 → cost → 0 (잘 예측했으니 패널티 없음)
  • y = 0 에 가까울수록 → cost → ∞ (틀렸으니 패널티 매우 큼)

직접 계산으로 이해하기

실제 정답이 B 클래스라면:

L (실제 정답)  =  [0]  A
                  [1]  B  ← 정답

① 예측이 맞았을 때 (예측도 B)

예측 Y = [0]
         [1]  ← 맞음 ✅
[0]          [0]     [0]   [∞]   [0]
[1]  ο -log  [1]  =  [1] ο [0] = [0]  → 합계 = 0

cost = 0 → 잘 예측했으니 패널티 없음!

② 예측이 틀렸을 때 (예측이 A)

예측 Y = [1]  ← 틀림 ❌
         [0]
[0]          [1]     [0]   [0]   [0]
[1]  ο -log  [0]  =  [1] ο [∞] = [∞]  → 합계 = ∞

cost = ∞ → 틀렸으니 엄청난 패널티!

ο 는 Element-wise 곱 (같은 위치의 값끼리 곱하는 것)입니다.


궁극적인 목표

예측이 맞을 경우에는 cost가 작은 값이,
틀릴 경우에는 cost가 엄청 크게 되어서 벌을 주도록 하는 것!


최종 Cost 수식

L = 1/n * ∑ D(S(WX + b), L)
  • WX + b : Linear 연산
  • S(...) : Softmax 함수 적용
  • D(...) : Cross-Entropy 거리 계산
  • 1/n * ∑ : 전체 데이터 평균

전체 흐름 정리

입력 X
  ↓
WX + b                  → Linear 연산
  ↓
Softmax 함수            → 각 클래스의 확률로 변환 (합 = 1)
  ↓
Cross-Entropy Cost      → 예측이 맞으면 0, 틀리면 ∞
  ↓
Gradient Descent        → cost 최소화
  ↓
argmax → One-Hot        → 최종 클래스 분류

Logistic vs Softmax 비교

Logistic Regression Softmax Classifier

분류 수 2개 (0 또는 1) 3개 이상
출력 함수 Sigmoid Softmax
Cost 함수 Binary Cross-Entropy Cross-Entropy
출력 0.0 ~ 1.0 각 클래스의 확률 (합 = 1)

정리

개념 설명

Softmax 예측값을 확률로 변환, 합이 항상 1
One-Hot Encoding 가장 높은 확률 클래스를 1, 나머지를 0으로 표현
Cross-Entropy 예측이 맞으면 cost = 0, 틀리면 cost = ∞
Element-wise 곱 (ο) 같은 위치의 값끼리 곱하는 연산

다음 포스트에서는 Softmax Classifier를 실제 TensorFlow 코드로 구현해보겠습니다! 🚀