Softmax 함수란?
ML 에서 multiclass classification을 수행하는 모델의 최종 output을 출력하는 activation함수로 사용되는 함수.
- Softmax regression (=multinomial logistic regression)에서 사용됨.
- Logistic Function의 Generalization임.
2022.06.06 - [Computer] - [ML] Logit에서 Logistic Function.
다른 이름으로는 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조합이 이용됨.