쿨백-라이블러 발산 (Kullback-Leibler divergence, KL-divergence)

  • 두 개의 확률분포의 차이를 계산하는데 사용하는 함수이다. 
  • 어떤 이상적인 분포에 대해 그 분포를 근사하는 다른 분포를 이용해서 샘플링을 했을때 발생할 수 있는 엔트로피의 차이를 계산한다. 
  • 상대 엔트로피 (relative entropy), 정보 획득량 (information gain) 혹은 정보 발산 (information divergence)라고도 한다. 
  • KL-divergence는 비대칭으로, 두 값의 위치를 바꾸면 함수값도 달라진다. 따라서 거리 함수가 아니다. 

 

정의

Cross entropy를 계산하는 수식으로부터 KL-divergenc를 다음과 같이 유도할 수 있다. 

 

$$ \begin{aligned} H(p,q) & = -\sum_i p_i \log q_i \\ & = -\sum_i p_i \log q_i -\sum_i p_i \log p_i + \sum_i p_i \log p_i \\ & = \color{blue}{H(p)} + \sum_i p_i \log p_i - \sum_i p_i \log q_i \\ & = \color{blue}{H(p)} + \color{red}{\sum_i p_i \log \frac{p_i}{q_i}} \\ & =\color{blue}{H(p)}+\color{red}{KL(p||q)}   \end{aligned} $$

 

즉, $p$의 엔트로피에 $ \color{red}{\sum_i p_i \log \frac{p_i}{q_i} }$가 더해진 것이 Cross entropy를 의미합니다.

그리고 이 때 더해지는 텀이 바로 $p$의 분포와 $q$의 분포의 정보량의 차이를 (KL-divergence)를 의미합니다. 

 

다시 한 번 정리하면, KL-divergence는 $p$와 $q$의 cross entropy에서 $p$의 엔트로피를 뺀 값이 됩니다. 

이를 식으로 표현하면 다음과 같습니다. 

$$KL(p||q)=H(p,q)-H(p)$$

 

따라서 cross entropy를 최소화(minimize)하는 것은 결과적으로 KL-divergence를 최소화 하는 것과 동일합니다. 

($H(p)$는 고정된 하나의 상수값이기 때문에)

 

 

특징

  • $KL(p||q) \geq 0$
  • $KL(p||q) \neq KL(q||p)$
    $ \begin{aligned} KL(p||q) & =H(p,q)-H(p) \\ & \neq H(q,p) -H(q) = KL(q||p) \end{aligned}$
  • KL-divergence는 어떠한 확률 분포 $P$가 있을때, 샘플링 과정에서 그 분포를 근사적으로 표현하는 확률분포 $Q$를 $P$대신 사용할 경우 엔트로피 변화를 의미한다. 

+ Recent posts