본문 바로가기
AI

[정보이론] Entropy, Cross Entropy, KL-divergence 이해하기

by DI_Lee 2021. 4. 19.

논문들을 읽다보니 Entropy, Cross Entropy, KL-divergence에 대한 개념이 많이 등장하는데 항상 그 개념이 헷갈려서 정확히 짚고 넘어가보려고 한다.

 

그럼 먼저 Entropy의 개념부터 천천히 살펴보도록 하자.

 


정보량 & Entropy

 

 

 Entropy를 한문장으로 정의해보자면, 바로 정보를 표현하는데 필요한 최소 평균 자원량이다.

 

자 이게 무슨말일까? 먼저 정보를 표현한다는 말을 해석해보자. 이 세상에는 수많은 정보들이 넘쳐나고 있다.

지금 이 블로글 글도 어떤 정보를 전달하고 있는 것이고, 우리 삶에서 빠질 수 없는 카카오톡, 문자 등등 인간은 매일매일 정보를 교환하며 살아가고 있다. 

 

정보량

 

정보이론이라는 학문은 이러한 시그널에 존재하는 정보의 양을 측정하는 응용수학의 한 갈래이다.

정보이론의 핵심 아이디어는 잘 일어나지 않는 사건은 자주 발생하는 사건보다 정보량이 많다는 것이다.

 

예를 들어보자. 

우리가 어떤 용의자를 수색하는데 그 용의자의 성이 '김씨'라는 것을 알게 된것과 그 용의자의 성이 '엄씨'인 것을 알게 된 두가지 경우를 생각해보자. 

 

이런 경우에 김씨는 아주 흔한 성씨인 반면에 엄씨는 드문 성씨이기 때문에 우리는 용의자가 '엄씨'인 것을 알게 되었을 때 정보를 더 많이 얻은 것이라고 말할 수 있다.

 

그렇다면 이렇게 확률과 깊은 관련이 있는 정보량을 수치화할 수 있을까? 

R. V. Hartley가 제안한 정보량 공식은 그것을 가능하게 만들어준다.

정보량 공식

 

여기서 p(x_j)는 x_j가 발생할 확률이다. 확률이기 때문에 0이상 1 이하의 어떤 실수이다. 로그의 밑 a는 어떤 정보를 측정하느냐에 따라 임의로 결정이 되는데 주로 2를 많이 이용하고, 밑이 2일 때 정보량의 단위는 bit이고, 밑이 e일 때 정보량의 단위는 nat(natural unit)이다.

 

그렇다면 왜 이러한 공식을 사용하는 것일까? 

 

위에서 우리는 흔하게 일어나는 사건일수록 정보량이 낮고, 드물게 일어나는 사건일수록 정보량이 높다는 것을 살펴보았다.

이때 밑이 2일때라고 생각하고 위의 공식을 그래프로 표현해보면 다음과 같다.

 

x축은 확률이고 y축은 정보량이다.

즉 정보량 공식이 확률이 높아질수록 정보량은 낮아진다는 뜻을 반영하고 있는 것을 확인할 수있다. 

 

 

Entropy

 

일반적으로 우리는 특정 결과와 관련된 정보량보다 가능한 모든 결과들의 평균 정보량에 더 큰 관심을 갖는다.

 

예를 들어 우리가 오늘이 무슨 요일인지 bit로 전송하고 싶다고 생각해보자.

먼저 요일은 월화수목금토일 총 7개가 있기 때문에 우리는 0과 1 두가지를 이용해서 7가지를 구분해내야한다.

이때 필요한 최소한의 bit는 몇 bit일까?

 

월: 000/ 화: 001/ 수: 010/ 목: 011/ 금: 100/ 토: 101/ 일: 110

 

이렇게 총 3bit를 이용하면 우리는 요일을 모두 구분할 수 있게 된다.

 

즉 아래의 식에서 N에 구분하길 원하는 갯수를 넣어주면 우리가 필요한 bit의 최소 개수를 계산할 수 있게 된다. 

이번에는 조금 다른 경우를 생각해보자.

만약 사건 각각의 발생확률이 다르다면?

 

즉, 예를들어 우리가 어떤 40개의 문자(A,B,C,D,...,X,1,2,3,...,14)를 bit로 전송하고자 한다고 하자.

그런데 만약 위의 40개의 문자 중에서 A,B,C,D가 22.5%씩 전체의 90% 확률로 발생한다면? 

 

이때는 위의 공식대로 bit를 계산하는 것이 조금 비효율적일 것이다.

대신 많이 발생하는 확률에 대해서는 bit의 길이를 짧게 주고, 적게 발생하는 확률에 대해서는 bit의 길이를 길게 주는 것이 효율적일 것이다. 예외적으로 발생하는 것을 약간 비싸게 처리하더라도 많이 발생하는 것의 cost를 줄이는 것이 효율적이라는 것이다!!

 

그러니까 A,B,C,D를 구분하는 bit길이를 짧게 하고, 나머지를 길게해보자!!

 

따라서 우리는 필요한  bit의 개수를 최소한으로 만들기 위해서 이러한 방식으로 진행해 볼 수 있다.

 

먼저 첫번째 비트는 A,B,C,D인지 아닌지를 구분하는 비트로 설정하는 것이다.

그런다음 YES라면, 추가로 A,B,C,D를 구분하는 2bit만 더 필요하게 될 것이고, NO라면 추가로 6bit가 더 필요할 것이다.

 

따라서 필요한 bit 수의 평균은 0.9*3 + 0.1* 7=3.4 bit가 된다.

 

이것은 처음에 생각한 6bit보다 훨씬 적은 것을 확인할 수 있고, 따라서 정보량이라는 것이 단순하게 가지수에 따른 것이 아니라 각 이벤트의 발생확률이 중요한 역할을 한다는 것을 알 수 있다.

 

즉 엔트로피가 바로 이러한 정보량의 기댓값(평균)을 의미한다.

따라서 Entropy는 각 label들의 확률분포의 함수이기 때문에 아래와 같은 수식으로 나타나게 된다. 

 

Entropy 수식

 

이렇게 계산된 엔트로피는 정보를 최적으로 인코딩하기 위해 필요한 bit수라고 해석할 수도 있다. 


Cross-Entropy

 

위에서 살펴보았듯이 Entropy는  정보를 표현하는데 필요한 최소 평균 자원량이었다.

하지만, 우리는 신이 아니기 때문에 항상 그 사건이 발생할 확률을 미리 알수는 없다.

즉, 어떤 사건의 확률이 높고 낮은지를 미리 정확히 알수는 없다. 

따라서 우리는 우리가 예상하는 확률을 실제 확률 대신 넣어주게 된다.

 

무슨 말이냐면, 위의 예시를 다시 가져와서 생각해보자. 

위에서는 40개의 문자(A,B,C,D,...,X,1,2,3,...,14)를 bit로 전송하고자 하는데, 이때 A,B,C,D가 22.5%씩 전체의 90% 확률로 발생한다는사건이었다.

 

이때 우리가 약간 멍청해졌다고 생각해보자(ㅋㅋㅋ)

그래서 40개의 문자 중에서 A,B,C,D가 발생할 확률이 가장 큼에도 불구하고 그냥 다 같은 길이의 bit를 이용해서 문자를 나타내자고 생각하는것이다. 그렇게 되면 logN(밑은 2) 공식에 따라 필요한 bit는 약 6bit가 될 것이다. 

즉, 실제 확률인 0.9와 0.1은 바뀌지 않으므로 그대로고 정보량의 기댓값을 내보면 공식에 따라서  0.9*6 + 0.1*6 = 6bit라는 결과가 나오게 된다. 

 

즉 이건 최적의 결과가 아니다!!!!!! 이 최적이 아닌 결과가 바로 cross entropy가 되는것이다

 

즉 , 위의 Entropy 수식에서 log에 들어가는 pi를 즉, bit의 길이를 구하는 식에 우리가 예상하는 확률 qi를 넣어주게 되면 그것이 바로 cross entropy 식이 된다!

(즉 완벽한 entropy와 완벽하지 못한 cross entropy)

 

cross-entropy 수식

 


KL-divergence(Kullback-Leibler divergence)

 

지금까지 Entropy와 Cross-Entropy의 개념에 대해 살펴보았는데, KL-divergence란, 바로 이 둘의 차이를 의미한다. 

즉 최적이 아닌 인코딩과 최적의 인코딩간의 차이를 말한다는 것이다.

 

수식으로 살펴보자.

 

KL-divergence 수식

 

즉 KL-divergence는 cross entropy와 entropy의 차이= 정보량의 차이 라고 할 수 있다.

 

그런데 object 함수를 정할 때를 한번 생각해보면, cross entropy를 minimize하나 KL-divergence를 minimize하나 똑같은 결과가 나오게 된다. 왜 그런지는 수식을 잘 살펴보면 알 수 있는데, 우리가 지금 하고싶은 것은 Q를 P에 가깝게끔 가져가는 optimization을 하는 것인데, KL-divergence에서 H(P)는 Q에 관한 함수가 아니다. 즉 H(P)는 optimization을 할 때 아무런 역할을 하지 못하기 때문에 우리는 cross entropy를 object로 하던, KL-divergence를 object로 하던 아무 상관이 없다.

 

 

이제 KL-divergence가 가지고 있는 두가지 특성에 대해 살펴보자.

 

 

먼저 첫번째로, 0 이상이다라는 것입니다.

이건 어떻게 보면 아주 당연한 것인데, KL-divergence는 계속 언급했듯이 cross entropy에서 entropy를 뺀 값이다. 하지만 이때 cross entropy가 아무리 낮아져봤자, 그 Lower bound는 entropy이기 때문에 결국 항상 0 이상이 될 수밖에 없다.

(이것을 증명할 때는 Jensen's Inequality 젠슨 부등식을 이용하는데 여기서는 언급하지 않겠다)

 

두번째 특성은 바로 KL-divergence는 거리개념이 아니라는 것이다. 

이 말은 KL-divergence를 찾아보다보면 정말 많이 볼 수, 들을 수 있는말이다. 그리고 대게 KL-divergence는 asymmetric하다는 말도 뒤따라온다. 즉 비대칭적이라는 것인데, KL-divergence에서 p와 q를 바꾼 값과 원래의 값이 다르다는 점이 비대칭적이라는 것을 의미한다. 

 

수식을 살펴보면 더욱 직관적으로 이해할 수 있다.

 

하지만 이러한 KL-divergence를 거리 개념처럼 쓸 수 있는 방법이 존재하는데, 바로 Jensen-Shannon divergence이다.

 

 

 

Jensen-Shannon divergence

 

JSD

방법은 아주 간단한데,  위의 수식에서 볼 수 있듯이 그냥 KL-divergence를 2가지 구하고 평균을 내는 방식이다.

 

 

 

 

이렇게 Entropy, cross-entropy, KL-divergence에 대해서 간단하게나마 개념을 살펴보았다.

정보이론에 대해서는 공부해본 적이 없어서 자료를 많이 참고했는데, 다 많은 도움이 되었다.

 

 

 

<참고자료>

 

hyunw.kim님의 블로그 : hyunw.kim/blog/2017/10/27/KL_divergence.html

terry taewoong um님의 유투브 강의 : youtu.be/uMYhthKw1PU

 

'AI' 카테고리의 다른 글

[RNN/LSTM/GRU] Recurrent Neural Network 순환신경망  (0) 2021.11.10
[CNN] Convolution Neural Network 정리  (0) 2021.09.20