본문 바로가기
경제학/경제통계학

섀넌 엔트로피, Cross Entropy, K-L Divergence

by 고우 2023. 9. 14.
반응형

계량경제학은 선형회귀 때리는 법이나 알려주는 줄 알았더니, 정보이론부터 시작하더라. 
정보란 무엇인가에 대한 섀넌의 정의에서부터, Cross Entropy, K-L Divergence 의 개념까지 간단하게 살펴보자.

섀넌 엔트로피 (정보 엔트로피)

정보의 양은 어떻게 정의할 수 있을까?
섀넌은 불확실성의 존재로 인하여 정보를 필요로 한다는 점에 주목한다.

1년 내내 100%의 확률로 날씨가 '맑음'인 곳에서 어딘가로 그 날의 날씨를 전달한다고 해보자.
사실 매일 '맑음'이라고 적어서 보내는 것은 아무런 의미가 없다. 애초에 그곳의 날씨는 100% 확률로 맑음이므로, '맑음' 메시지가 전달되든, 그렇지 않든 메시지 수신자는 이미 맑다는 사실을 알고 있다.
즉, 정보의 양이라는 것을 불확실성의 정도로 환원해 생각할 수 있다는 것이다.
이는 경제학의 전통적 관점이 뒤집어진 것으로도 볼 수 있다. 전통 경제학에선 정보라는 것이 있음으로 해서 불확실성이 해소되는데, 애초에 불확실성이 있기 때문에 정보가 존재한다는 것이다. 섀넌 정보이론의 핵심은 발생 확률이 낮은 사건일수록 그 정보의 가치가 크다는데에 있다. 즉, 정보량은 그 사건이 발생할 확률의 역수로 설명된다. 그걸 비트 수로 표현한다 치면, 결국 거기에 $log_2$를 씌우면 되는 것.

이제 상황을 좀 더 복잡하게 만들어보자. 날씨의 불포가 다음과 같다면, 날씨를 가장 효율적으로 전달하려면 어떻게 해야 할까?

날씨 확률: {맑음: 1/2, 흐림: 1/4, 비: 1/4}

결론부터 말하자면, 맑은 날엔 비트 하나 (예컨대 0), 그렇지 않은 날엔 비트 두 개로 전달하면 된다 (예컨대 흐림은 10, 비는 11).

사실 위에서 말했던 것과 같다. 맑을 날일 확률은 1/2 이므로, $log_2 2 = 1, log_2 4 = 2$인 것이다.

물론 날씨를 전달하는 방법은 엄청 많다. '맑음'이라는 텍스트를 그대로 전달할 수도 있다. 맑은 날에 '똥마려워'라는 메시지를 보내기로 약속할 수도 있는 거다. 그런데 여기에선 가장 효율적인 코딩을 생각하는 거니까, 최소한의 비트로 표현한 셈이다.
왜 맑은 날에 비트 하나를 줬을까? 그건 맑은 날일 확률이 가장 높기 때문이다. 가장 송신 확률이 높은 사건을 가장 작은 양의 정보로 표현할 수 있는 것. 그 다음 두 개는 각 확률이 1/4로 같으니, 첫 번쨰 비트로 '맑은 날이 아님'을 표현하고, 그 다음 0 또는 1로 흐린 날인지, 비 오는 날인지를 표현하게 된다. 
이렇게 하면 평균적으로 몇 비트의 정보를 전달하게 될까? 맑은 날은 1비트, 그렇지 않은 날은 2비트이므로, 다음과 같은 평균 비트 수가 결정된다.

$$1bit * 1/2 + 2bit * 1/4 + 2bit * 1/4 = 1.5bit $$

이걸 일반화해보자. 섀넌 엔트로피는 우리가 0과 1의 비트로 정보를 전달하는 상황을 가정하고, 각 메시지에 포함된 정보의 기댓값(평균)을 표현한다. 그럼 어떤 사건이 발생할 확률을 P라 했을 때, 

$$ E(-log_2 P) \\ = -\Sigma_{j=1}^mP_jlog_2P_j \\  = -\int log_2p dp$$

위 식에서 두 번째는 확률이 discrete할때, 세 번째는 확률이 continuous 할 때이다.

아무튼 섀넌 엔트로피 개념은 여기서 끝!

 

정보 엔트로피 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 2 섀넌의 엔트로피: 2 개의 공정한 동전을 던질 때 정보 엔트로피는 발생 가능한 모든 결과의 개수에 밑이 2 인 로그를 취한 것과 같다. 2 개의 동전을 던지면 4

ko.wikipedia.org

크로스 엔트로피 (Cross-Entropy)

얼마전에 머신러닝 공부할 때 나왔던 개념인데, 정보이론을 전혀 몰라서 그냥 그런갑다 하고 넘어갔던 계산이었다. 

아무튼, 위의 날씨 예시를 가져와보자. 
날씨를 전달할 때의 핵심은 자주 일어나는 사건(맑음)을 전달할 때 적은 비트 수를 사용했다는 것이다. 자주 일어나는 사건은 그 정보량이 적다는 섀넌의 정보이론에 기초하여 정보량을 확률의 역수, 정확히는 $log_2 \frac{1}{P}$이 되게끔 맞춰준?것.

자 이제 이렇게 하지 않는다고 가정해보자. 맑은 날과 흐린 날을 2비트로, 비오는 날을 4비트로 코딩하면 평균 정보량은 얼마가 될까? 
아마 다음과 같을 거다.

$$1bit * 1/4 + 2bit * 1/4 + 2bit * 1/2 = 1.75bit $$

이건 분명 '비효율적인' 코딩이다. 맑은 날이 가장 많음에도 불구하고, 이걸 2비트짜리 정보로 전송하는 것이기 때문이다. 
이처럼 실제 확률은 두고, 다른 확률을 사용했을 때의 엔트로피를 크로스 엔트로피라 한다. 

$$ E(-log_2 Q) $$

위 식에서 Q는 실제 확률이 아닌 다른 확률을 사용했을 때의 확률을 뜻한다.

여기서 크로스는 실제 확률은 두고, 다른 확률을 사용해 발생하는 비효율성의 정도를 뜻한다.

쿨백-라이블러 발산(Kullback-Leibler Divergence)

크로스 엔트로피 개념이 나오면, 여기에서 '얼마나 비효율적인지'를 측정해야 할 필요성이 대두된다.

KL Divergence는 크로스 엔트로피와 엔트로피 간의 차이이다.

(Cross Entropy) = (Entropy) + (KL Divergence)
(KL Divergence) = (Cross Entropy) - (Entropy)

좀 더 자세히 적어보면,

$$ KL = -E[log q] - (-E[log p]) \\ = E[log p - log q] = E[log \frac{p}{q}] $$

정의상 K-L Divergence는 최솟값이 0일 수밖에 없다. 정확한 증명은 아래와 같다.

$$ -KL = E[log \frac{q}{p}] \\ by\quad Jensens' inequality, \quad E[log \frac{q}{p}] \leq logE[\frac{q}{p}] \\ E[\frac{q}{p}] = \int \frac{q(x)}{p(x)}p(x)dx = \int q(x)dx = 1 \\ E[log \frac{q}{p}] \leq log E[\frac{q}{p}] = log 1 = 0 \quad Q.E.D$$

참고로 여기서 E는 P(=실제 확률)를 기준으로 한 평균이다.

정리

섀넌의 정보이론의 핵심은 '일어나기 힘든 일이 일어날 때 그 정보량이 더 크다'라는 생각에 기초해 있다.
그걸 수식화해서 비트 수로 표현해 전체 사건에 대해 평균 낸 것이 엔트로피인 셈이다. 

이걸 기초로 생각하면, 우리가 어떤 정보를 교환할 때의 효율성, 나아가 예컨대 어떤 모델의 적합도를 측정할 때에까지 활용할 수 있을 것이다. 여기에 동원되는게 크로스 엔트로피와 K-L Divergence 개념이다. 나도 머신러닝 공부할 때 크로스 엔트로피 함수를 손실함수로 사용했었는데, 거기엔 이런 맥락들이 숨어있던 셈이다.

 

반응형

댓글