KL(Kullback–Leibler) divergence


1. KLD(Kullback–Leibler) divergence

KL divergence는 두 개의 확률분포의 차이를 의미합니다.

kl-divergence-01.png

연속확률분포에서 KL divergence를 수식으로 표현하면 다음과 같습니다.

$$ \begin{equation} \begin{split} D_{KL}(p \parallel q)&=\int_x p(x) \ \log {p(x) \over q(x)} dx \\ &=- \int_x p(x) \log q(x) dx + \int_x p(x) \log p(x) dx \\ &=H(p, q) - H(p) \end{split} \end{equation} $$

위 수식에서 알 수 있듯이 두 확률분포 $p, q$의 KL divergence는 $p, q$의 Cross Entropy에서 $p$의 Entropy를 뺀것과 같습니다.
(참고 Cross Entropy)
그리고 $p, q$ 두 확률분포가 같을 경우 Entropy와 Cross Entropy가 같아지기 때문에 KL divergence는 0이 됩니다.

그리고 KL divergence는 교환법칙이 성립하지 않습니다.

$$ D_{KL}(p \parallel q) \ne D_{KL}(q \parallel p) $$


kl-divergence-02.png

이산확률분포에서 KL divergence를 수식으로 표현하면 다음과 같습니다.

$$ \begin{equation} \begin{split} D_{KL}(p \parallel q)&=\sum_x p(x) \ \log {p(x) \over q(x)} dx \\ &=- \sum_x p(x) \log q(x) dx + \sum_x p(x) \log p(x) dx \\ &=H(p, q) - H(p) \end{split} \end{equation} $$


1.1. KL divergence 예

'A', 'B', 'C', 'D' 4개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다.


kl-divergence-03.png

첫 번째의 경우는 확률분포 $p$와 확률분포 $q$가 다른 경우입니다.

Cross Entropy 계산을 위한 'A', 'B', 'C', 'D'의 정보량을 확률분포 $q$에 대해서 계산하면 다음과 같습니다.

$$I(A)=I(B)=I(C)=I(D)=\log_2{1 \over 0.25}=2$$

이 정보량을 기반으로 확률분포 $p$에 대해서 Cross Entropy를 계산하면 다음과 같습니다.

$$H(p, q) = 0.5 \times 2 + 0.25 \times 2 + 0.125 \times 2 + 0.125 \times 2 = 2$$

Entropy 계산을 위한 'A', 'B', 'C', 'D'의 정보량을 확률분포 $p$에 대해서 계산하면 다음과 같습니다.

$$ \begin{equation} \begin{split} & I(A)=\log_2{1 \over 0.5}=1 \\ & I(B)=\log_2{1 \over 0.25}=2 \\ & I(C)=\log_2{1 \over 0.125}=3 \\ & I(D)=\log_2{1 \over 0.125}=3 \end{split} \end{equation} $$

이 정보량을 기반으로 확률분포 $p$에 대해서 Entropy를 계산하면 다음과 같습니다.

$$H(p) = 0.5 \times 1 + 0.25 \times 2 + 0.125 \times 3 + 0.125 \times 3 = 1.75$$

이제 KL-divergence를 계산하면 다음과 같습니다.

$$ D_{KL}(p \parallel q) = H(p, q) - H(p) = 2 - 1.75 = 0.125 $$


kl-divergence-04.png

두 번째의 경우는 확률분포 $p$와 확률분포 $q$가 같은 경우입니다.

Cross Entropy 계산을 위한 'A', 'B', 'C', 'D'의 정보량을 확률분포 $q$에 대해서 계산하면 다음과 같습니다.

$$ \begin{equation} \begin{split} & I(A)=\log_2{1 \over 0.5}=1 \\ & I(B)=\log_2{1 \over 0.25}=2 \\ & I(C)=\log_2{1 \over 0.125}=3 \\ & I(D)=\log_2{1 \over 0.125}=3 \end{split} \end{equation} $$

이 정보량을 기반으로 확률분포 $p$에 대해서 Cross Entropy를 계산하면 다음과 같습니다.

$$H(p) = 0.5 \times 1 + 0.25 \times 2 + 0.125 \times 3 + 0.125 \times 3 = 1.75$$

Entropy는 확률분포 $p$가 동일하기 때문에 이전에 계산했던 값을 그대로 사용합니다.

이제 KL-divergence를 계산하면 다음과 같습니다.

$$ D_{KL}(p \parallel q) = H(p, q) - H(p) =1.75 - 1.75 = 0 $$

더 간단하게 'A', 'B' 2개의 글자로만 구성된 문장을 컴퓨터의 비트로 표현할 경우를 가정해 보겠습니다.

두개의 확률분포 $p$, $q$에서 글자 'A'의 발생확률 $p(A)$와 $q(A)를 $(0,1)$ 사이에서 변화를 주면서 KL-divergence를 구해보면 결과는 다음과 같습니다.

kl-divergence-05.png


$p(A)$와 $q(A)$가 같은 경우 KL-divergence가 0으로 가장 작음을 확인할 수 있습니다. 결과적으로 두 개의 확률분포가 비슷해질수록KL-divergence가 작아진다고 할 수 있습니다.

위의 예에서 $p$는 정답 확률분포를 의미하고 대체로 고정된 값을 가지게 됩니다. $q$는 예측 확률분포로 $q$를 변화시켜 KL-divergence가 줄어들도록 합니다.

확률분포 $p$가 고정되면 Entropy $H(p)$는 일정합니다. 확률분포 $q$를 $p$와 비슷하게 만들수록 Cross Entropy $H(p, q)$가 최솟값이 되고 KL-divergence가 0에 가까워집니다.