Machine Learning/Statistics

Entropy, Cross Entropy, KL-divergence

고슴군 2020. 3. 10. 11:26

Entropy

엔트로피란 확률적으로 발생하는 사건에 대한 정보량의 평균을 의미한다. 정보량은 다음과 같이 정의되며 놀람의 정도를 나타낸다고 볼 수 있다. 

 

정보량 : 

‘놀람의 정도’란 어떤 의미일까? 예를 들어, 가까운 지인이 길을 걷다가 벼락에 맞았다고 해보자. 벼락에 맞을 확률은 약 1/28만으로 굉장히 낮은 확률이며, 이 사건이 주변에서 실제로 일어났다면 놀라지 않을 수 없을 것이다. 반면, 동전을 던져서 앞면이 나왔다고 가정해보자. 동전의 앞면이 나올 확률은 대략 1/2이고 빈번히 발생할 수 있는 사건이므로 그다지 대수롭지 않게 여겨질 것이다. 즉, 사건의 발생 확률이 낮을수록 놀람의 정도는 높아지고, 이러한 사건은 높은 정보량을 갖고있는 것으로 여겨진다.

그렇다면 단순히 확률의 역수(1/p(x))로 정보량을 표현하는 것이 아니라 이에 log함수를 취하는 것에는 어떤 의미가 있을까? 바로 log함수를 취함으로써 놀람의 정도를 표현하는데 필요한 최소한의 자원을 나타낼 수 있게된다. 가령, 1/8로 발생하는 어떤 사건을 2진수로 표현한다면 밑이 2인 로그함수를 이용하여 (log2(1/8)=3) 최소 3개의 비트가 필요함을 알 수 있다.

 

즉, 엔트로피는 정보량에 대한 기댓값이며 동시에 사건을 표현하기 위해 요구되는 평균 자원이라고도 할 수 있다. (참고원문: The entropy provides an absolute limit on the shortest possible average length of a lossless compression encoding of the data produced by a source.)

 

 

엔트로피 : 

엔트로피는 불확실성(uncertainty)과도 같은 개념이다. 예측이 어려울수록 정보의 양은 더 많아지고 엔트로피는 더 커진다.

 

 

 

 

Cross Entropy

Entropy란 어떤 정보가 주어졌을 때, 최적으로 압축했을 때의 bit 수

Cross Entropy란 잘못된 정보 q 가 주어졌을 때, 약간 더 높은 값으로 얻어지는 것

따라서 Cross Entropy와 Entropy의 차이를 구할 수 있는데 그게 K-L Divergence

 

 

 

Cross Entropy는 두 개의 확률분포 p q에 대해 하나의 사건 X가 갖는 정보량으로 정의된다. 즉, 서로 다른 두 확률분포에 대해 같은 사건이 가지는 정보량을 계산한 것이다. 이는 q에 대한 정보량을 p에 대해서 평균낸 것으로 볼 수 있다.

 

Cross Entropy는 기계학습에서 손실함수(loss function)을 정의하는데 사용되곤 한다. 이때, p는 true probability로써 true label에 대한 분포를, q는 현재 예측모델의 추정값에 대한 분포를 나타낸다.

Binary cross entropy는 두 개의 class 중 하나를 예측하는 task에 대한 cross entropy의 special case이다.

 

Binary Classification Task에서의 Cross Entropy : 

 

Note: Cross Entropy는 Entropy보다 항상 크거나 같다.

 

 

Kullback-Leibler (KL) Divergence

KL Divergence를 통해 두 확률분포 p q가 얼마나 다른지를 측정할 수 있다.

 

KL Divergence는 정보량의 차이에 대한 기댓값이다. 만약 q p를 근사하는 확률분포라면 KL Divergence는 확률분포의 근사를 통해 얼마나 많은 정보를 잃게 되는지 시사한다.

 

참고로 p q의 분포가 동일할 경우, 두 정보량의 차는 0이 되므로 이때 KL Divergence는 0을 반환한다.

  • Note: KL Divergence는 p q의 순서가 바뀌면 다른 값을 반환한다. 즉, symmetric하지 않다. 따라서 거리함수로는 사용할 수 없다.

 

Kullback-Leibler (KL) Divergence 와 Cross Entropy

이산변수(discrete variable)에 대한 크로스 엔트로피(cross entropy)는 다음과 같이 정의됩니다. 보시다시피 H(P,Q) P의 엔트로피인 H(P)와 유사한 꼴이나 로그 바깥에 곱해지는 확률이 P(x)이고, 로그 안에 들어가는 것이 Q(x)인 것을 확인할 수 있습니다. 엔트로피는 엔트로피이되 두 확률분포가 교차로 곱해진다는 의미로 크로스(cross) 엔트로피라는 이름이 붙은 것 같습니다.

 

이산변수에 대한 KLD를 풀어쓰면 다음과 같습니다. 

 

이를 크로스 엔트로피를 기준으로 다시 정리하면 아래와 같습니다.

 

위 식을 보면 KLD는 딥러닝 모델의 손실함수(loss function)로 자주 쓰이는 크로스 엔트로피와 깊은 관련을 맺고 있다는 걸 알 수 있습니다. 딥러닝 모델을 학습할 때 크로스 엔트로피를 최소화하는 방향으로 파라메터(가중치)들을 업데이트 합니다. 위 식에서 P(x)를 우리가 가지고 있는 데이터의 분포, Q(x)를 모델이 추정한 데이터의 분포라고 본다면, 크로스 엔트로피 H(P,Q)를 최소화한다는 것은 KLD를 최소화하는 것과 그 의미가 완전히 같습니다(equivalent). 왜냐하면 데이터 분포 P(x)는 학습 과정에서 바뀌지 않기 때문입니다. 결과적으로 크로스 엔트로피 최소화는 우리가 가지고 있는 데이터의 분포 P(x)와 모델이 추정한 데이터의 분포 Q(x) 간에 차이를 최소화한다는 정도로 이해하면 좋을 것 같습니다. 

 즉, cross entropy를 최소화하는 것은 KL Divergence를 최소화하는 것과도 같다. 그럼으로써 p를 근사하는 q의 확률분포가 최대한 p와 같아질 수 있도록 예측모델의 파라미터를 조정하게된다.

 

 

[참조]

https://curt-park.github.io/2018-09-19/loss-cross-entropy/

https://www.youtube.com/watch?v=zJmbkp9TCXY

https://www.youtube.com/watch?v=uMYhthKw1PU

https://www.youtube.com/watch?v=Jt5BS71uVfI

https://ratsgo.github.io/statistics/2017/09/22/information/

를 정리한 것 입니다.

반응형