EDUCATION/DSS Online 6기

DAY38 - 교차엔트로피, 쿨백 라이블러 발산

Kululu_ 2021. 3. 8. 19:58

교차엔트로피

- 분류 문제의 성능을 평가하는 데에 유용한 지표로 두 확률분포의 교차엔트로피는 다음과 같이 정의합니다.

$$ H[p,q] = - \sum_{k=1}^K p(y_k) \log_2 q(y_k) $$

$$ H[p,q] = -\int_{y} p(y) \log_2 q(y) \,dy  $$

 

 

교차 엔트로피가 어떻게 분류 문제의 성능을 측정하는 지표가 될 수 있을까요?

Y가 0 또는 1이라는 값만 가지는 이진분류 문제를 예로 생각해보겠습니다.

 

우선 첫 번째 확률분포인 $p$는 "X가 정해졌을 때 실제 정답인 Y의 확률분포" 입니다. 우리가 가진 데이터에서 이미 특정 $X$값에 따라 $Y$는 정해져있기 때문에 만약 정답이 $ Y = 1 $ 이라면 $p$는 다음과 같아집니다.

$$ p(Y=0) = 0,\ p(Y=1) = 1 $$

 

만약 또 다른 $X$값에 대해서 정답이 $ Y = 0 $이라면 $p$는 다음과 같아집니다.

$$ p(Y=0) = 1,\ p(Y=1) = 0 $$

 

그리고 두 번째 확률분포인 $q$는 "X가 정해졌을 때 예측값의 확률분포"입니다. 예측값은 1 또는 0으로만 나오므로 모수가 $\mu$인 베르누이 확률분포라고 할 수 있습니다.

$$ p(Y=0) = 1 - \mu,\ p(Y=1) = \mu $$

 

이를 종합해보면 $p$와 $q$의 교차엔트로피는 정답이 $Y = 1$일 때는

$$ H[p,q] = - \log_2 \mu $$

 

정답이 $Y = 0$일 때는

$$ H[p,q] = - \log_2 (1-\mu) $$

가 됩니다.

 

이를 종합해보면 어떤 임의의 데이터 $X$가 있을 때 $p$와 $q$의 교차엔트로피는

$$ H[p,q] = -(y\log_2 \mu + (1-y)\log_2(1-\mu)) $$

가 되는데 이 값은 정답이 1인 데이터에 대해서는 $\mu$를 높게 잡을 수록, 정답이 0인 데이터에 대해서는 $\mu$를 낮게 잡을수록 작아지는 성질이 있습니다.

 

따라서 예측을 잘 할 수록 교차엔트로피값이 작아지게 되는 것이고, 교차엔트로피가 분류 예측을 얼마나 잘 하였는가를 나타낼 수 있는 지표가 되는 것입니다.

 

이를 가지고 있는 데이터 $N$개에 대해 평균을 계산하게되면

$$ -\frac{1}{N} \sum_{i=1}^N y_i\log_2 \mu_i + (1-y_i) \log_2 (1-\mu_i) $$

고 이를 "Log Loss"라고도 합니다.

 

이진분류가 아니라 카테고리가 더 많이 있을 경우 "categorial log loss"값을 통해 분류 성능을 파악합니다.

$$ \text{categorical log loss} = -\dfrac{1}{N} \sum_{i=1}^N \sum_{k=1}^K \left( \mathbb{I}(y_i=k) \log_2 p(y_i=k) \right) $$

$ \mathbb{I}(y_i = k) $는 $y_i$가 $k$인 경우에만 1이고 그렇지 않으면 0이 되는 지시함수입니다.

 

파이썬에서는 sklearn.metrics의 log_loss함수로 계산할 수 있습니다.

 

쿨백 라이블러 발산

- 교차엔트로피를 이용해 두 확률분포의 분포 모양이 얼마나 다른지를 숫자로 계산한 값입니다.

$$ \begin{split} \begin{align} \begin{aligned} KL(p||q) &= H[p,q] - H[p] \\ &= \sum_{i=1}^{K} p(y_i) \log_2 \left(\dfrac{p(y_i)}{q(y_i)}\right) \end{aligned} \end{align} \end{split} $$

 

$$ \begin{split} \begin{align} \begin{aligned} KL(p || q) &= H[p, q] - H[p] \\ &= \int p(y) \log_2 \left(\dfrac{p(y)}{q(y)}\right) dy \end{aligned} \end{align} \end{split} $$

 

- 다음과 같은 관계가 성립합니다.

$$ KL(p || q) = 0 \; \leftrightarrow \; p = q $$

$$ KL(p || q) \neq KL(q || p) $$