선택분류는 몇 가지 선택지가 주어지고 그 가운데 하나를 고르는 문제이다. object detection도 여러 물체 중 어떤 것인지 분류한다는 점에서 선택분류라고 할 수 있다. 이진분류에서는 시그모이드가 주요한 기준이었다면 선택분류에서는 소프트맥스가 사용된다. 소프트맥스는 시그모이드의 확장이라 할 수 있다.

소프트맥스 함수

소프트맥스 함수는 로짓값 벡터를 확률 분포 벡터로 변환해주는 비선형 함수이다. 일반식을 구하면 아래와 같다.

\[y_{i} = \frac{e^{x_{i}}}{e^{x_{1}}+\cdots +e^{x_{n}}}\]

하지만 이 식은 코드를 통한 계산 과정에서 오류를 일으킬 수 있으므로 아래와 같이 변형된 식을 사용한다.

\[y_{i} = \frac{e^{x_{i} - x_{k}}}{e^{x_{1}- x_{k}}+\cdots +e^{x_{n}- x_{k}}}\]

($x_{k}$는 $x_{i}$ 중 최댓값이다. 이 방법을 사용하면 모든 항이 0에서 1사이의 값을 가지므로 분자와 분모의 어느 항도 지나치게 커질 수 없어 오버플로가 방지된다.)

소프트맥수 함수 유도 1

이진분류(시그모이드) 유도를 일반화하여 유도한 것이 선택분류이다.

먼저, 이진분류의 유도부터 살펴보자. 수많은 데이터들 중 데이터 $X$가 선택되었다고 생각하자. 참인 사건을 $Y_{1}$, 거짓인 사건을 $Y_{2}$라고 한다면, 아래 식에서 첫 번째 식은 $X$라는 데이터가 선택되었을 때 사건이 참일 확률이다.

\[P(Y_{i}\mid X) = \left\{\begin{matrix} P(Y_{1}\mid X) = \frac{P(X\mid Y_{1})P(Y_{1})}{P(X)} = \frac{P(X\mid Y_{1})P(Y_{1})}{P(X\mid Y_{1})P(Y_{1})+P(X\mid Y_{2})P(Y_{2})}\\ P(Y_{2}\mid X) = \frac{P(X\mid Y_{2})P(Y_{2})}{P(X)} = \frac{P(X\mid Y_{2})P(Y_{2})}{P(X\mid Y_{1})P(Y_{1})+P(X\mid Y_{2})P(Y_{2})} \end{matrix}\right.\]

$a_{i} = logP(X\mid Y_{i})P(Y_{i})$를 정의하여 위의 식에 대입하면

\[P(Y_{1}\mid X) = \frac{e^{a_{1}}} {e^{a_{1}}+e^{a_{2}}} = \frac {1} {1+e^{a_{2} - a_{1}}} = \frac{1}{1+e^{-a}}\]

로 표현할 수 있다.

$a$는 $a_{i}$를 정의한 식을 사용하여 정리하면,

\[a = a_{1} - a_{2} = log\frac{P(X\mid Y_{1})P(Y_{1})}{P(X\mid Y_{2})P(Y_{2})} = log\frac{P(Y_{1}\mid X)P(X)}{P(Y_{2}\mid X)P(X)} = log\frac{P(Y_{1}\mid X)}{P(Y_{2}\mid X)} = log\frac{P(Y_{1} \mid X)}{1-P(Y_{1}\mid X)} = logOdds(Y_{1}\mid X)\]


이것을 두 가지 분류에서 n개의 분류로 확장하면 소프트 맥스 함수가 된다.

\[P(Y_{i}\mid X) = \left\{\begin{matrix} P(Y_{1}\mid X) = \frac{P(X\mid Y_{1})P(Y_{1})}{P(X)} = \frac{P(X\mid Y_{1})P(Y_{1})}{\sum_{i=1}^{n}P(X\mid Y_{i})P(Y_{i})}\\ P(Y_{2}\mid X) = \frac{P(X\mid Y_{2})P(Y_{2})}{P(X)} = \frac{P(X\mid Y_{2})P(Y_{2})}{\sum_{i=1}^{n}P(X\mid Y_{i})P(Y_{i})}\\ \vdots\\ P(Y_{n}\mid X) = \frac{P(X\mid Y_{n})P(Y_{n})}{P(X)} = \frac{P(X\mid Y_{n})P(Y_{n})}{\sum_{i=1}^{n}P(X\mid Y_{i})P(Y_{i})} \end{matrix}\right.\]

시그모이드과 같이 $a_{i} = logP(X\mid Y_{i})P(Y_{i})$를 정의하면

\[P(Y_{1}\mid X) = \frac{e^{a_{1}}} {e^{a_{1}}+ \cdots +e^{a_{n}}} = \frac {e^{a_{1}}} {\sum^{n}_{i=0} e^{a_{i}}}\]

와 같이 표현 할 수 있다.

소프트맥수 함수 유도 2

(유도 1과 같이 수많은 데이터 중 데이터 $X$를 선택했다 가정하자.) 이 방법은 우선 $\frac{y} {1-y} = e^a$의 확장이 $\frac{P(C_{i}\mid X)} {P(C_{k}\mid X)} = e^{a_{i}}$라는 것을 이해해야 한다.

위의 식들은 각각 클래스가 2개일 때, 클래스가 K개 일 때 odds를 나타낸 것이다. 두 번째 식이 클래스가 K개 일 때 odds가 될 수 있는 이유는 K를 기준으로 그 외의 경우의 수들이 독립적인 이진 경우의 수라고 볼 수 있기 때문이다. 이것은 independence of irrelevant alternatives(IIA)라고 하는 가정에 기반하고 있다. 이 가정은 사회과학에 나오 것으로 간단하게 설명하면 A,B만 존재하는 상황과 A,B,C라는 세 가지 선택지가 존재는 상황에서 A와 B에 대한 선호는 동일하다는 것이다.

$K$를 기준으로 하므로 $K$를 제외한 모든 클래스에 대한 odds를 더하면 아래의 식이 된다.

\[\sum^{K-1}_{i=1} \frac{P(C_{i}\mid X)} {P(C_{k}\mid X)} = \sum^{K-1}_{i=1} e^{a_{i}}\]

좌변을 정리하면,

\[\sum^{K-1}_{i=1} \frac{P(C_{i}\mid X)} {P(C_{k}\mid X)} = \frac{\sum^{K-1}_{i=1} P(C_{i}\mid X)} {P(C_{k}\mid X)} = \frac{1-P(C_{K}\mid X)}{P(C_{K}\mid X)}\]

이 된다. 위 식을 다시 쓰면,

\[\frac{1-P(C_{K}\mid X)} {P(C_{K}\mid X)} = \sum^{K-1}_{i=1} e^{a_{i}}\]

이 되고, $P(C_{K}\mid x)$ 기준으로 정리하면 다음과 같다.

\[P(C_{K}\mid X) = \frac{1} {1+\sum^{K-1}_{i=1}e^{a_{i}}}\]

$\frac{P(C_{i}\mid X)} {P(C_{k}\mid X)} = e^{a_{i}}$을 변형하면

\[P(C_{K}\mid X) = \frac {P(C_{i}\mid X)}{e^{a_{i}}}\]

이고, 이전 식과 같음을 이용하여 정리하면

\[\frac{e^{a_{i}}} {1+\sum^{K-1}_{i=1}e^{a_{i}}} = \frac{e^{a_{i}}} {e^{a_{K}}+\sum^{K-1}_{i=1}e^{a_{i}}} = \frac{e^{a_{i}}} {\sum^{K}_{i=1}e^{a_{i}}}\]

가 되어 소프트맥스 함수가 된다.



Cross Entropy (교차 엔트로피)

교차 엔트로피의 정의는 다음과 같다.

\[H(P,Q) = -\sum p_{i}\log q_{i}\]

일반적으로 정답벡터를 확률분포 $P$로 삼고, 로짓 벡터에 소프트맥스 함수를 적용하여 얻은 확률분포를 $Q$로 삼는다. 이렇게 정하는 이유는 많은 데이터셋에서 정답벡터는 1 또는 0의 값을 주로 가지므로 $log$ 연산에 이용되면 $-\infty$를 결과로 하는 오류가 발생하기 때문이다.

교차 엔트로피 식을 해석해보면 예측 확률의 정보량을 정답 확률을 이용해 구한 기댓값이다. 따라서 정답 확률의 기댓값과 예측 확률의 기댓값을 통해 loss를 구하고 parameter를 업데이트 함으로써 예측 확률 분포가 정답 확률 분포와 유사하도록 학습하게 되는 것이다.



관련 코드는 스터디 깃허브에서 확인 가능하다.




reference: