본문 바로가기
지식공학/공학수학

KL Divergence/JSD

by Eric87 2021. 5. 27.
반응형

Intro...

우리가 데이터의 분포를 추정했을 때 얼마나 잘 추정한 것인지 측정하는 방법은 없을까? 오늘 소개해 드릴 Kullback-Leibler Divergence  Jensen-Shannon Divergence는 서로 다른 확률 분포의 차이를 즉정하는 척도이다. 우리가 추정한 확률 분포와 실제 확률 분포 사이의 차이가 작다면 좋은 추정이라고 할 수 있다. 또한 기계학습에서는 복잡한 함수나 분포를 단순화 하여 하나의 간단한 함수로 나타내려는 노력을 많이 한다. 예를 들어 실제 측정 결과 얻은 복잡한 확률 분포를 비교적 적은 파라미터를 갖는 Gaussian Distribution 등으로 근사한다면 약간의 오차는 있겠지만 정보를 저장하는 데 드는 비용을 크게 절감할 수 있을 것이다. 이 때도 역시 가장 오차가 적은 Model로 근사하기 위해 위와 같은 척도들을 이용한다. 이번 포스팅에서는 두 확률 분포 간의 차이를 나타내는 척도인 Kullback-Leibler Divergence  Jensen-Shannon Divergence에 대하여 알아보도록 하자.

Kullback-Leibler Divergence

Kullback-Leibler Divergence는 앞에서 살펴봤듯이 두 모델이 얼마나 비슷하게 생겼는지를 알기 위한 척도인데, 제시한 모델이 실제 모델의 각 item들의 정보량을 얼마나 잘 보존하는지를 측정한다. 즉, 원본 데이터가 가지고 있는 정보량을 잘 보존할 수록 원본 데이터와 비슷한 모델이라는 것이다. 먼저 item $p_i$가 갖는 정보량은 다음과 같이 계산하였다.

$$I_{i}=-log(p_{i})$$

그리고 원본 확률 분포 $p$와 근사된 분포 $q$에 대하여 $i$번째 item이 가진 정보량의 차이(정보 손실량)는 다음과 같을 것이다.

$$\Delta I_{i}=-log(p_{i})+log(q_{i})$$

$p$에 대하여 이러한 상대적 정보 손실량의 기댓값을 구한 것이 바로 KL-Divergence이다.

$$D_{KL}(p||q)=E[log(p_{i})-log(q_{i})]=\sum_{i}p_{i}log\frac{p_i}{q_i}$$

간단히 말하면, KL-Divergence는 근사시 발생하는 정보 손실량의 기댓값이다. 이 값이 작을 수록 더 가깝게 근사한 것이라고 할 수 있다.

Jensen-Shannon Divergence

당연하게도, KL-Divergence는 근사된 확률 분포가 얼마나 원본과 비슷한지를 측정하는 척도 이외에도, 단순히 두 대등한 확률 분포가 얼마나 닮았는지를 측정하는 척도로 쓰일 수 있다. 하지만 포스트를 읽으면서 눈치 채신 분들도 있겠지만, KL-Divergence는 Symmetric하지 않다. 즉 $D_{KL}(p||q)\neq D_{KL}(q||p)$이다. 그렇기 때문에 KL-Divergence를 Symmetric하게끔 개량한 Jensen-Shannon Divergence를 쓴다.

$$JSD(p,q)=\frac{1}{2}D_{KL}(p||\frac{p+q}{2})+\frac{1}{2}D_{KL}(q||\frac{p+q}{2})$$

그러면 $JSD(p,q)=JSD(q,p)$가 되어, 두 확률 분포 사이의 distance로서의 역할을 할 수 있게 된다.

반응형

댓글