Softmax 함수란?

ML 에서 multiclass classification을 수행하는 모델의 최종 output을 출력하는 activation함수로 사용되는 함수.

  • Softmax regression (=multinomial logistic regression)에서 사용됨.
  • Logistic Function의 Generalization임.

2022.06.06 - [Computer] - [ML] Logit에서 Logistic Function.

 

[ML] Logit에서 Logistic Function.

다음이 바로 logistic function임. $$\text{logistic}(t)=\sigma(t)=\frac{1}{1+e^{-t}}$$ Sigmoid functions 중에서 가장 유명한 것이다보니 sigmoid라고도 불림. MLP에서 back-propagation이 적용되면서 activation function으로 사용

dsaint31.tistory.com

다른 이름으로는 softargmax 함수, 또는 normalized exponential 함수라고도 불림.

  • $-\infty ~+\infty$ 를 range로 하는 regression score 들을 element로 하는 vector를 입력으로 받음.
  • 출력은 $0~1$의 range로 하는 probability들을 element가지는 vector 임.
  • 입력 vector와 출력 vector는 같은 dimension임 (=element의 수가 같음).


정의식은 다음과 같음.

$$\boldsymbol{\sigma}: R^n \rightarrow [0,1]^n$$

$$\displaystyle \sigma(\vec{x})_i=\displaystyle {\dfrac{e^{x_i}}{\sum_{i=1}^n e^{x_i}}}$$

where

  • $[0,1]$ 은 0~1사이의 closed iterval (즉, 0이상 1이하실수들)을 의미.
  • $R^n$ : Real number를 element로 가지는 $n$-dimensional vector들의 vector space.
  • $[0,1]^n$ : 0~1 사이의 실수를 element로 가지는 $n$-dimensional vector들의 vector space.
  • $n$ : input vector $\vec{x}$의 element수.
  • $x_i$ : input vector $\vec{x}$의 $i$-th element.
  • $\sigma(\vec{x})_i$ : output vector $\sigma$의 $i$-th element.

softmax regression의 경우,

  • $\vec{x}$의 각 element는
  • 해당하는 class에 속할 확률에 대한 logit score (or logits, log-odds, unnormalized log-odds)임.

 

softmax는 모든 클래스에 대한 logit score의 exponential들을 합하고 이로 나누어주는 normalization을 수행하는 형태로써, multi-class classification에 사용가능함.

 

주의할 건, softmax function의 출력 vector는
exclusive한 multi-class classificaton에서 사용가능하다는 점임.

 

즉, 여러 class 중 하나의 클래스에만 속하는 형태의 task만 가능하지,

multi-output classification(multi label classificatino 포함)처럼

하나의 case가 동시에 2개의 클래스가 되는 형태의 task에선 사용할 수 없음.

(이 같은 경우엔, 여러 출력단을 각 class여부를 판정하고 각 출력단의 output을 독립된 logistic function으로 처리해주어야 함.)

 

즉, 최종 class에 대한 estimation은 다음과 같다.

$$\hat{y}= \displaystyle \underset{k}{\operatorname{arg max}} \sigma(\textbf{x})_k$$

  • $\displaystyle \underset{k}{\operatorname{argmax}}$ operator(연산자)는 뒤의 함수(위의 식에서는 softmax $\sigma$)를 최대화하는 변수 $k$의 값을 반환함.
  • 즉 $k$가 각 클래스에 나타내는 값이므로 $\hat{y}$는 softmax로 나오는 출력 벡터에서 가장 큰 element에 해당하는 class를 나타내는 숫자를 값으로 가짐.

 

softmax를 출력으로 가지는 경우, cost function은 cross entropy임.

TensorFlow에서

  • binary classification의 경우엔 logistic function과 binary cross entropy조합이 이용되고,
  • multi-class classification의 경우엔 softmax와 categorical cross entropy조합이 이용됨.

 

2022.05.12 - [.../Math] - [Math] Cross Entropy

 

[Math] Cross Entropy

Cross Entropy란 두 probability distribution $p$, $q$ 사이의 dissimilarity(차이)를 정량화하는 지표 로 사용됨. 엄밀하게는 dissimilarity는 KL-Divergence로 구해야 하나, Cross entropy로 해도 큰 문제없기..

dsaint31.tistory.com

반응형

+ Recent posts