Cross Entropy 이해하기

2023. 7. 4. 21:34확률·통계·분포

 

정보량과 엔트로피 포스팅과 이어집니다


Cross Entropy란?

Cross Entropy란, 엔트로피를 서로 다른 확률 분포에서 계산한 값을 의미합니다.

(이 포스팅에서 그냥 '분포'라는 용어를 사용할 때 이는 확률 분포를 지칭하는 것으로 이해하시면 됩니다.)

 

엔트로피는 특정 분포 내에서의 정보량의 기댓값을 의미한다는 것을 이전의 포스팅에서 다뤘습니다.

 

Cross Entropy는 엔트로피와 달리 정보량의 기댓값을 계산할 때 확률 부분과 정보량 부분이 서로 다른 분포에서 비롯합니다. 아래의 수식을 보시면 조금 더 명확하게 알 수 있으리라 생각합니다.

 

$$ H(P, Q) = -\sum_{i=1} p_i\log_b(q_i)$$

 

(일반적으로 머신러닝에서 로그의 밑에 해당하는 $b$는 자연 상수 $e$를 주로 사용합니다. 즉, 자연 로그 $\ln$을 많이 사용합니다.)

 

위의 식에서 $P, Q$ 는 서로 다른 두 분포를 나타내며 Cross Entropy는 결국 분포 $P$ 에 대한 엔트로피를 계산할 때 $P$ 가 아닌 $Q$ 에 대한 정보량을 사용하는 셈이 됩니다.

 

 

Cross Entropy의 의미

Cross Entropy $H(P, Q)$는  "$P$ 를 기준으로 하였을 때, $P$ 라는 분포가 존재하는 영역에 $Q$ 라는 분포가 얼마나 $P$ 와 유사하게 분포하고 있는가"를 의미한다고 볼 수 있으며, $P$ 영역에 $Q$ 가 거의 분포하지 않는 경우 이 값이 커지고 $P$ 영역에 $Q$ 가 $P$ 와 유사하게 잘 분포하는 경우 이 값이 작아집니다.

 

바로 위에서 $Q$ 가 $P$ 와 유사하게 잘 분포하는 경우 Cross Entropy가 작아진다고 하였는데, $Q$ 가 $P$ 가 가장 유사한 경우가 언제일까요? 바로 $Q$ 가 $P$ 와 정확히 일치하는, 즉 $P = Q$ 인 상황이 이에 해당합니다. 이 경우 $H(P, Q) = H(P)$ 가 되며 Cross Entropy는 Entropy와 동일해집니다. 다시 말해서, Cross Entropy는 항상 Entropy보다 크거나 같은 값을 가지게 됩니다.

 

위와 같은 문장만으로는 이해하기 어려우실 수 있을 거 같아 아래와 같은 그래프를 통해 이를 설명하도록 하겠습니다.

위와 같이 $P, Q$ 가 분포한다고 했을 때 (두 분포 모두 확률 분포에 해당하며, pdf의 면적의 합은 1이 됩니다.) $p_i$의 값이 큰 부분에서 $q_i$의 값이 매우 작은 경우 $H(P, Q)$ 는 커지게 됩니다. 다시 말해서, $p_i$를 가중치라고 생각했을 때, 큰 가중치를 가지는 영역에서 $q_i$ 의 값이 작을수록 Cross Entropy가 커지게 됩니다.

 

반대로, $p_i$의 값이 0에 가까운 부분에서는 $q_i$값이 별다른 영향을 주지 못합니다. ($p \log q$ 의 수식에서 $p$가 0으로 갈 때 상대적으로 느리게 증감하는 $\log q$ 는 큰 영향을 끼치지 못하기 때문입니다. $x \log x$ 의 그래프를 생각해보시면 직관적으로 이해하실 수 있으리라 생각됩니다.)

 

이를 바탕으로 위의 그래프에서 $H(P, Q)$ 와 $H(Q, P)$ 의 값을 비교하면 어떻게 될까요? 당연히 $H(Q, P)$ 가 더 큰 값을 가질 겁니다. $P$ 의 가중치가 큰 부분에서 $Q$ 의 값은 그리 작지 않지만, $Q$ 의 가중치가 큰 부분에서 $P$ 의 값은 매우 작기 때문입니다.

 

실제로 $H(P, Q)$ 와 $H(Q, P)$ 의 값을 계산한 결과를 보면 아래와 같습니다.

 

 

 

 

위에서 $P$ 의 가중치가 큰 상황에서 $Q$ 의 값이 작은 경우 Cross Entropy $H(P, Q)$ 가 커진다는 것을 확인하였습니다.

 

그렇다면 $P$ 의 가중치가 큰 상황에서 $Q$ 의 값이 오히려 $P$ 보다 더 큰 아래와 같은 상황은 어떨까요? 이 경우에는 Cross Entropy의 값이 혹시라도 Entropy보다 작아질 수 있지 않을까요?

 

 

결론부터 말씀드리면, 적어도 두 분포가 모두 확률 분포인 경우에서는 Cross Entropy가 Entropy보다 작아질 수 없습니다.

$P$ 의 가중치가 큰 상황에서 $Q$ 의 값이 $P$ 보다 더 큰 경우, 다른 부분에서 $P$ 보다 $Q$ 의 값이 더 작은 경우가 생길 수밖에 없기 때문입니다. 실제로 이 경우 두 분포의 Cross Entropy를 계산해보면 아래와 같습니다.

 

이 값은 $H(P, P)$ 인 70.8759.. 보다 큽니다.

 

 

 

Cross Entropy Error

딥러닝에서는 위와 같은 Cross Entropy를 Loss function으로 사용하기도 하는데 이 경우 Cross Entropy Error라는 용어를 사용합니다. 간단한 예제를 들어보고 그 의미를 가볍게 짚어보겠습니다.

 

단순하게, 고양이와 강아지 이미지로 구성된 데이터셋을 가지고 학습한 모델이 존재하고, 이 모델은 어떤 이미지를 입력받아 주어진 이미지가 고양이인지 강아지인지를 예측하는 분류(Classification) 모델이라고 생각하겠습니다. 이런 분류 모델의 경우, 일반적으로 고차원의 이미지를 입력받아 레이블의 수에 맞는 차원의 벡터를 출력합니다. (여기서는 레이블이 고양이, 강아지 2가지이므로 2차원 벡터 [a, b] 형태, a와 b는 각각 고양이일 확률과 강아지일 확률을 의미합니다.)

 

위와 같은 상황에서, $P$ 를 2차원 상에서 실제 레이블에 대한 확률 분포라고 하고 (이 경우 실제 레이블은 고양이 or 강아지 둘 중 하나이므로 고양이 이미지인 경우 [1,0], 강아지 이미지인 경우 [0,1]과 같이 2가지 형태의 분포만 가집니다.), $Q$ 를 2차원 상에서 모델이 예측한 레이블에 대한 확률 분포라고 하겠습니다. ($Q$ 는 $P$ 와 달리 모델이 예측한 확률값이므로 [0.98, 0.02], [0.79, 0.21], [0.15, 0.85] 등 다양한 형태의 분포를 가질 수 있습니다.)

 

이런 경우, Loss function인 Cross Entropy $H(P, Q)$ 를 최소화 한다는 것의 의미는 우리가 설계한 모델이 예측한 확률을 실제 레이블의 확률과 최대한 일치시킨다는 것이 되며, 모델의 출력값이 실제 레이블에 대한 확률 분포를 완벽히 따르는 경우 고양이/강아지 이미지에 대해 모델은 항상 각각 [1, 0]/[0, 1] 이라는 값을 출력하게 되고 이 때 Loss function인 Cross Entropy는 최소가 됩니다. 

 

 

 

'확률·통계·분포' 카테고리의 다른 글

정보량과 정보 엔트로피  (0) 2023.06.27
Probability Terminology (확률 용어)  (0) 2022.11.12