AI/잡지식

KL divergence(Kullback–Leibler)

슈퍼짱짱 2018. 9. 21. 13:31
반응형

Kullback–Leibler divergence


- 두 확률분포의 차이를 계산하는 데에 사용하는 함수

- 두 확률변수에 대한 확률분포 가 있을 때, 두 분포의 KL divergence는 다음과 같이 정의


D_{{{\mathrm  {KL}}}}(P\|Q)=\sum _{i}P(i)\log {\frac  {P(i)}{Q(i)}}

<식 1>


- KL divergence는 어떠한 확률분포 가 있을 때, 그 분포를 근사적으로 표현하는 확률분포   대신 사용할 경우 엔트로피 변화를 의미

즉, 의 분포를 사용하고 싶은데 모를 때, 분포로 추정하기 위해 사용


결국, ( 대신 를 사용할 때의 cross entropy)와 (원래의 분포가 가지는 entropy)의 차이는 다음과 같으며, 이는 <식 1>과 동일

 
<식 2>





예를 들어, 다음 세 분포가 있을 때,



파란선은 평균 0, 분산 0.1인 정규분포,

주황선은 평균 0.05, 분산 0.1인 정규분포,

초록선은 평균 1, 분산 0.5인 정규분포이다.


그림으로 확인해봐도 파란선과 주황선이 파란선과 초록선보다 비슷한 분포임을 알 수 있다.


실제 위 식에 의한 KL divergence를 계산해 보았을 때,

파란선 분포와 주황선 분포의 값은 -1.0344597768494548,

파란선 분포와 초록선 분포의 값은 82.41610796643755로 계산되었다.


python code


def KL(p,q):

return(sum(p*np.log(p/q)))



반응형