Cross Entropy


1. Entropy

Entropy는 확률분포에 대한 정보량의 기댓값을 의미합니다.

entropy-01.png

연속확률분포에서 Entropy는 정보량을 의미하는 $\log {1 \over f(x;\theta)}$과 확률분포의 값 $f(x;\theta)$의 곱을 의미합니다. 여기서 $\theta$는 확률분포의 파라미터로 정규분포의 경우는 평균 $\mu$과 표준편차 $\sigma$를 의미합니다. Entropy를 수식으로 표현하면 다음과 같습니다.

$$H(X)=\int_x f(x;\theta) \ \log {1 \over f(x;\theta)} dx$$

entropy-02.png

이산확률분포에서 Entropy는 정보량을 의미하는 $\log {1 \over p(x;\theta)}$과 확률값 $p(x;\theta)$의 곱을 의미합니다. 여기서 $\theta$는 확률분포의 파라미터 입니다. Entropy를 수식으로 표현하면 다음과 같습니다.

$$H(X)=\sum_x p(x;\theta) \ \log {1 \over p(x;\theta)}$$


1.1. 정보량

정보량이란 하나의 사건의 발생했을 때 그 사건의 가치라고 할 수 있습니다. 예들 다음과 같은 두 개의 사건과 발생 확률이 있다고 가정하겠습니다.

  • 내일은 해가 동쪽에서 뜬다: $p = 0.99999999$
  • 내일은 해가 서쪽에서 뜬다: $p = 0.00000001$

'내일은 해가 동쪽에서 뜬다'라는 사건은 너무 당연한 사건으로 아무런 정보로서의 가치가 없다고 볼 수 있습니다. 만일 포털에 '내일은 해가 동쪽에서 뜬다'라는 기사가 떠 있다면 아무도 신경 쓰지 않을 것입니다. '내일은 해가 동쪽에서 뜬다'라는 사건의 정보량은 아래와 같습니다.

$$I(p) = \log {1 \over p}={1 \over 0.99999999} \simeq 0$$

정보량을 표현할 때 $\log$의 밑이 자연상수 $e$ 일 때의 단위는 내트(nat) 이고 $\log$의 밑이 $2$ 일 때의 단위는 비트(bit) 입니다.

반면 두 번째 사건 '내일은 해가 서쪽에서 뜬다' 정보량이 아주 많다고 볼 수 있습니다. 만일 포털에 '내일은 해가 서쪽에서 뜬다'라는 기사가 떠 있다면 엄청난 사회적 반응을 불러올 것입니다. '내일은 해가 서쪽에서 뜬다'라는 사건의 정보량은 아래와 같습니다.

$$I(q) = \log {1 \over q}={1 \over 0.00000001} \simeq 18.42068074$$


1.2. Entropy 예

간단하게 'A', 'B', 'C', 'D' 4개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다.


entropy-03.png

첫 번째의 경우는 $p(A)=0.25, p(B)=0.25, p(C)=0.25, p(D)=0.25$ 모두 발생 확률이 모두 동일한 경우입니다. 이경우 'A', 'B', 'C', 'D'의 정보량은 다음과 같습니다.

$$I(A)=I(B)=I(C)=I(D)=\log_2{1 \over 0.25}=2$$

이 정보량을 기반으로 Entropy를 계산하면 다음과 같습니다.

$$H(p) = 0.25 \times 2 + 0.25 \times 2 + 0.25 \times 2 + 0.25 \times 2 = 2$$

'A', 'B', 'C', 'D' 네 글자의 정보의 기댓값은 2이고 네 글자를 표현하는데 평균 2bits로 표현이 가능하다는 의미입니다.


entropy-04.png

두 번째의 경우는 $p(A)=0.5, p(B)=0.25, p(C)=0.125, p(D)=0.125$로 발생 확률이 각각 다른 경우입니다. 이경우 'A', 'B', 'C', 'D'의 정보량은 다음과 같습니다.

$$ \begin{equation} \begin{split} & I(A)=\log_2{1 \over 0.5}=1 \\ & I(B)=\log_2{1 \over 0.25}=2 \\ & I(C)=\log_2{1 \over 0.125}=3 \\ & I(D)=\log_2{1 \over 0.125}=3 \end{split} \end{equation} $$

이 정보량을 기반으로 Entropy를 계산하면 다음과 같습니다.

$$H(p) =0.5 \times 1 + 0.25 \times 2 + 0.125 \times 3 + 0.125 \times 3 = 1.75$$

'A', 'B', 'C', 'D' 네 글자의 정보의 기댓값은 1.75이고 네 글자를 표현하는데 평균 1.75bits로 표현이 가능하다는 의미입니다.


위 두 경우 중 경우 발생 확률이 모두 동일한 첫 번째 경우의 Entropy가 두 번째 경우보다 더 큽니다. 즉 확률분포의 불확실성이 큰 첫 번째 경우가 두 번째 경우보다 Entropy 역시 큽니다.

더 간단하게 'A', 'B' 2개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다. 글자 'A'의 발생 확률을 $p(A)$라 할 때 글자 'B'의 발생 확률 $p(B)$는 다음과 같습니다.

$$p(B)=1 - p(A)$$

$p(A)$를 $(0,1)$ 사이에서 변화를 주면서 Entropy를 구해보면 결과는 다음과 같습니다.

entropy-05.png

$p(A)=p(B)=0.5$에서 Entropy가 가장 큼을 확인할 수 있습니다. 결과적으로 확률분포의 불확실성이 높을수록 Entropy가 커진다고 할 수 있습니다.


2. Cross Entropy

Cross Entropy는 두개의 확률분포에 대한 정보량의 기댓값을 의미합니다. 확률분포는 $p$를 사용하고 정보량 $\log{1 \over q}$은 다른 확률분포$q$를 사용한 경우입니다.

cross-entropy-01.png

연속확률분포에서 Cross Entropy를 수식으로 표현하면 다음과 같습니다.

$$H(p, q)=\int_x p(x) \ \log {1 \over q(x)} dx$$


cross-entropy-02.png

이산확률분포에서 Cross Entropy를 수식으로 표현하면 다음과 같습니다.

$$H(p, q)=\sum_x p(x) \ \log {1 \over q(x)}$$


2.1. Cross Entropy 예

이전에 사용했던 'A', 'B', 'C', 'D' 4개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다.


cross-entropy-03.png

첫 번째의 경우는 확률분포 $p$와 확률분포 $q$가 다른 경우입니다. 이경우 'A', 'B', 'C', 'D'의 정보량은 확률분포 $q$에 대해서 계산하면 다음과 같습니다.

$$I(A)=I(B)=I(C)=I(D)=\log_2{1 \over 0.25}=2$$

이 정보량을 기반으로 확률분포 $p$에 대해서 Cross Entropy를 계산하면 다음과 같습니다.

$$H(p, q) = 0.5 \times 2 + 0.25 \times 2 + 0.125 \times 2 + 0.125 \times 2 = 2$$


cross-entropy-04.png

두 번째의 경우는 확률분포 $p$와 확률분포 $q$가 다른 경우입니다. 이경우 'A', 'B', 'C', 'D'의 정보량은 확률분포 $q$에 대해서 계산하면 다음과 같습니다.

$$ \begin{equation} \begin{split} & I(A)=\log_2{1 \over 0.5}=1 \\ & I(B)=\log_2{1 \over 0.25}=2 \\ & I(C)=\log_2{1 \over 0.125}=3 \\ & I(D)=\log_2{1 \over 0.125}=3 \end{split} \end{equation} $$

이 정보량을 기반으로 확률분포 $p$에 대해서 Cross Entropy를 계산하면 다음과 같습니다.

$$0.5 \times 1 + 0.25 \times 2 + 0.125 \times 3 + 0.125 \times 3 = 1.75$$


위 두 경우 중 경우 확률분포 $p$와 $q$가 같은 경우가 Cross Entropy가 작습니다.

더 간단하게 'A', 'B' 2개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다.


두개의 확률분포 $p$, $q$에서 글자 'A'의 발생확률 $p(A)$와 $q(B)를 $(0,1)$ 사이에서 변화를 주면서 Cross Entropy를 구해보면 결과는 다음과 같습니다.

cross-entropy-05.png


$p(A)$와 $q(A)$가 같은 경우 Cross Entropy가 가장 작음을 확인할 수 있습니다. 결과적으로 두 개의 확률분포가 비슷해질수록 Cross Entropy가 작아진다고 할 수 있습니다.


3. Cross Entropy Loss

Cross Entropy Loss는 정답 확률분포와 예측 확률분포의 Cross Entropy의 평균을 의미합니다. 통상 정답 확률분포를 알 수 없는 경우에 수집된(샘플링) 데이터의 확률분포를 $y$로 하고 예측된 확률분포를 $\hat{y}$으로 해서 Cross Entropy Loss를 측정합니다. 위에서 봤듯이 두 확률분포가 비슷해지면 Cross Entropy Loss가 줄어들게 됩니다.

Cross Entropy Loss는 주로 분류 문제에서 이산 확률분포를 구하는 데 사용되며 수식은 아래와 같습니다.

$$CE = {1 \over N} \sum_{i=1}^N\sum_{j=1}^C y_{ij} \ \log {1 \over \hat{y}_{ij}} = -{1 \over N} \sum_{i=1}^N\sum_{j=1}^C y_{ij} \ \log \hat{y}_{ij}$$

위 수식에서 $N$은 샘플링 데이터의 개수 입니다. $C$는 예측할 class의 개수 입니다.

3.1. Cross Entropy Loss 예

이전에 사용했던 'A', 'B', 'C', 'D' 4개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다. 그런데 실제 확률분포를 알 수 없기 때문에 10개를 랜덤 샘플링 했더니 아래와 같은 결과가 나왔습니다. 이제 이 샘플들을 이용해 Cross Entropy Loss를 계산해 보겠습니다.

celoss-01.png

위 그림 좌측은 10개 샘플에 대한 확률 분포입니다. 순서대로 ['A', 'B', 'C', 'D'] 확률을 표현한 것으로 아래와 같습니다.

  • A: [1, 0, 0, 0]
  • B: [0, 1, 0, 0]
  • C: [0, 0, 1, 0]
  • D: [0, 0, 0, 1]

첫 번째의 경우는 아래 그림과 같이 $p(A)=p(B)=p(C)=p(D)=0.25$로 모두 동일하게 예측한 경우입니다.

celoss-02.png

예측한 값에 대해서 Cross Entropy Loss를 계산하면 다음과 같습니다. 아래 수식 중 샘플링 개수는 $N=10$입니다. 클래스 개수는 $C=4$입니다.

$$CE=-{1 \over N} \sum_{i=1}^N\sum_{j=1}^C y_{ij} \ \log \hat{y}_{ij}=1.3862943611198906$$

두 번째의 경우는 아래 그림과 같이 $p(A)=0.4, p(B)=03, p(C)=0.2, p(D)=0.1$로 각각 예측한 경우입니다.

celoss-03.png

예측한 값에 대해서 Cross Entropy Loss를 계산하면 다음과 같습니다.

$$CE=-{1 \over N} \sum_{i=1}^N\sum_{j=1}^C y_{ij} \ \log \hat{y}_{ij}=1.2798542258336674$$

위 두 가지 경우에서 두 번째 경우가 정답의 확률분포와 비슷하게 때문에 Cross Entropy Loss가 작다고 볼 수 있습니다.