본문 바로가기
딥러닝 기초

5-1. Softmax (Multinomial classification)

by demi-an 2023. 8. 15.

이번 글에서는 여러 개의 Category(class)에 대해 각 category가 일어날 가능성을 예측하는 Multinomial classification에 주로 사용되는 Algorithm인 Softmax에 대해 다뤄보도록 하겠습니다. Multinomial classification이 필요한 상황은 아래와 같이, 공부 시간과 출석 횟수를 알 때 (input 2가지) 성적이 어떻게 나올지 예측하는 경우(category 3가지(A, B, C))를 예로 들 수 있습니다.

x1 (공부 시간) x2 (출석 횟수) y (성적)
15 11 A
13 8 A
10 6 B
7 7 B
9 1 C

먼저 Binary classification에 사용되는 Logistic regression에서는, 아래의 식을 통해 어떤 한 가지 상황이 발생할지, 발생하지 않을지에 대한 확률을 output으로 출력했습니다. (https://alifestudy.tistory.com/56에서 표시했던 Transpose는 편의상 생략했습니다). 이해를 돕기 위해 그림과 행렬을 추가하였습니다. (Ῡ(Y hat) 은 실제값 Y의 예측값임을 의미합니다)

Logistic regression(Binary classification)의 Hypothesis, process 그림 및 행렬 표현

한 가지 상황에 대해 예측하려고 할 때 위처럼 한 개의 process가 필요하다면, 여러 Category (예를 들어 3가지)에 대해 각 상황이 일어날 확률을 예측하려면 아래 그림처럼 위의 process 여러 개를 합쳐서 표현하면 될 것 같습니다.

이 경우, 각 Category Y_1, Y_2, Y_3 에 대해 Binary classification을 적용한 것으로 볼 수 있습니다. (사실 Softmax는 이렇게 적용되지 않습니다.) 이와 같은 경우는, Y_1, Y_2, Y_3 category가 모두 아닌 상황도 예측 가능하도록 하기 위한 경우 사용할 수 있습니다. (Y_1 hat, Y_2 hat, Y_3 hat 모두 0에 가까운 값이 나오는(총 합이 1이 되지 않는) 경우도 표현 가능)

Multinomial classification의 예시

 

하지만 위와 같은 경우가 아닌, 어떤 한 Category에 반드시 분류되어야 하는 경우를 예측하려고 한다면 아래와 같이 Softmax를 사용할 수 있습니다. (Sigmoid를 적용하지 않은 y_1 hat에 Softmax를 적용한 것이 차이점입니다.)

위 식과 같이 Y_1 hat에 대한 Softmax를 표현할 수 있으며, Softmax를 식으로 정의하면 아래와 같이 표현할 수 있습니다. (이해를 돕기 위해 계산 예시 그림을 함께 추가했습니다)

Softmax 식과 적용 예시

이처럼 Softmax를 적용하면, 각 Y_k hat 값은 전체 중 특정 k category에 속할 확률을 나타내게 됩니다 (각 Y_k hat 값의 총 합은 1이 됩니다).

 

다음 글에서는, Softmax의 Cost function(Cross entropy)에 대해 다뤄보도록 하겠습니다.

 

참고한 자료1: https://hunkim.github.io/ml/

 

모두를 위한 머신러닝/딥러닝 강의

 

hunkim.github.io

참고한 자료2: https://velog.io/@francomoon7/%EC%98%88%EC%B8%A1%EC%97%90-Softmax%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

예측에 Softmax를 사용하면 안되는 이유

속해 있는 머신러닝 스터디 오픈카톡방에서 이런 카톡이 올라왔다.학습을 할 때는 소프트맥수 함수를 쓰지만 추론을 할 때는 안 쓴다는 말 혹시 누가 좀 더 설명해주실 분ㅠ

velog.io