Mathematics/Statistics

[Statisctics] entropy, cross entropy, KL-Divergence

언킴 2022. 3. 11. 13:03
반응형

entropy의 개념은 정보이론(Information theroy)에서 사용하는 단어이다. entropy를 다루기 이전 다음의 경우를 생각해보자. 예를 들어 '주사위에서 3보다 큰 수가 나왔다.'라는 것과 '주사위에서 5가 나왔다'가 있을 때 어떤 것이 더 많은 정보를 전달할 수 있을까? 당연히 '주사위에서 5가 나왔다'라는 정보가 더 많은 정보를 전달한다고 할 수 있다. 주사위에서 3보다 큰 수가 나왔다는 사실보다 주사위에서 5가 나온다는 정보가 더 많은 정보를 전달하기 때문이다. 

 

self-information

어떤 사건에 대해 일어날 확률을 추정할 수 있다면 사건에 대한 정보량을 측정할 수 있게 된다. 우리는 확률변수(probability variable)를 $x$라고 하고 $x$의 정의역을 $\{e_1, e_2, ..., e_n\}$이라고 하자 그렇다면 사건 $e_1$의 정보량 $h(e_1)$을 측정할 수 있다. 이 정보량을 self-information라고 한다.

 

예를 들어 주사위에서 5가 나올 정보는 $h(5) = -\log_2\frac{1}{6} = 1 + \log_23$이다. 주사위에서 3보다 큰 수가 나올 정보는 $h(4) + h(5) + h(6) = -log_2\frac{1}{2} = 1$이다. self information를 통해 주사위에서 5가 나올 self information이 3보다 큰 수가 나올 self information보다 높은 것을 수식으로 이해할 수 있다. 예시를 일반화한 수식은 다음과 같다. 

\[ h(e_i) = -\log_2P(e_i) \ \ or \ \  h(e_i) = -log_e P(e_i) \]

로그함수의 밑을 2로 사용할 때도 있고, 밑을 $e$로 자연로그를 사용하는 경우도 존재한다. 밑이 2인 로그함수를 사용하는 경우 self information의 단위는 비트$^{\mathsf{bit}}$라고 부르며, 밑이 $e$인 자연로그를 사용하는 경우 self information의 단위는 나츠$^{\mathsf{nat}}$라고 한다. 주사위에서 5가 나올 자기 정보는 2.5849비트이며, 2.0986나츠다.

 

entropy

위에서의 self information은 특정 사건($e_i$)의 정보량을 측정하는 반면, entropy는 확률분포의 불확실성(uncertainty)을 측정한다. 우리는 다음과 같이 이산확률분포와 연속확률분포에 대해 각각 entropy를 정의할 수 있다. 

 

\[ H(x) = -\sum_{i=1,k}P(e_i)\log_2P(e_i) \ \ or \ \ -\sum_{i=1,k} P(e_i)\log_eP(e_i) \] 

\[ H(x) = -\int_{\mathbb{R}} P(x)\log_2P(x) \ \ or \ \ -\int_{\mathbb{R}} P(x)\log_eP(x) \] 

모든 사건에 대해 동일한 확률 값을 가진다면 이때의 무질서도는 최대가 된다. 그러나 하나의 사건에 확률값이 치우쳐져 있다면 무질서도는 낮아진다. [0, 0, 1, 0] 이라면 무질서도는 0 이 되며 순수하다고 부른다. 

 

cross entropy, KL-Divergence

entropy는 한 확률분포의 무질서도 혹은 불순도를 측정한다. 그러나 기계학습(Machine Learning)에서는 실제 데이터의 확률분포와 우리의 모델이 예측한 확률분포 간의 엔트로피를 측정하여 근사하는 방향으로 접근한다. 그렇게 하기 위해서는 서로 다른 확률분포간의 엔트로피를 측정하는 '도구'가 있어야 한다. 이때 사용하는 것이 바로 cross entropy이다. cross entropy의 수식은 다음과 같이 정의된다.

\[ H(P, Q) = -\sum_x P(x)\log_2Q(x) = -\sum_{i=1,k}P(e_i)\log_2Q(e_i) \] 

우리는 cross entropy의 수식을 통해 다음의 수식을 유도할 수 있다. 

 

\[ \begin{equation} \begin{split} & H(P,Q) = -\sum_xP(x)\log_2(Q(x) \\ & = -\sum_xP(x)\log_2P(x) + \sum_x P(x)\log_2P(x) - \sum_x P(x)\log_2Q(x) \\ & = H(P) + \sum_xP(x)\log_2\frac{P(x)}{Q(x)} \end{split} \end{equation} \]

 

위 식에서의 $\sum P(x)\log_2\frac{P(x)}{Q(x)} $를 KL-Divergence(Kullback-Leibler Divergence)라고 부른다. cross entropy는 entropy와 KL-Divergence의 합으로 계산할 수 있다. 하지만 우리가 조절할 수 있는 변수는 실제 데이터가 아니라 모델이 예측한 분포이다. 그렇기에 조절가능한 변수는 $Q(x)$이기에 KL-Divergence를 최소화하는 것이 cross entropy를 최소화하는 것이라 할 수 있다. 두 분포 간의 거리가 가까워질 수록 cross entropy의 값은 작아지며, 표현을 거리라고 하였지만 $KL(P || Q) \neq KL(Q || P)$이기에 엄밀한 수학적 정의에 따르면 거리가 아니다.