Deep Learning/AI수학

Information Theory 이해하기 - KL Divergence, JSD

미미수 2021. 7. 14. 17:58

오늘은 cross entropy에 이어 KL Divergence에 대해 설명하겠습니다. 

참고로 여기서 Divergence의 의미는 벡터장의 발산 같은 개념이 아니라, “차이”를 다른 말로 쓴 것일 뿐입니다.

처음 공부할때 이걸 몰라서 삽질을 했던 멍청한 경험이 있습니다. ㅎㅎ 저말고 그런사람이 또 있을까요?

 


어떤 두 좌표 $x_1$,$x_2$가 가까운지를 판단할때, 어떤 방법을 사용할 수 있을까요? 

 

 

 

두 좌표값의 절댓값 차이를 구해서 나타낼수도 있고, (Manhattan Distance)

 

 

 

 

 

 

공식을 사용해  두 좌표 사이의 직선 거리를 구해서 판단 할 수도 있죠.

(Euclidean Distance)

 

 

 

 

그 외에도 수없이 많은 방법들이 있습니다.

 

분포도 마찬가지입니다. 두 확률분포의  '근사한정도', '서로 닮았는지 안닮았는지를' 측정할때, 기준이 되는 척도는 여러가지입니다. 

대표적으로 오늘 다룰 KL - Divergence 가 있습니다. 다음글에서 다룰 JSD도 한 종류고요.

 

 

Kullback - Leibler Divergence

 

KL Divergence두 확률분포간의 차이를 나타내는 척도입니다.

GAN과 같이 존재하는 분포 P를 근사하는 새로운 분포Q 를 생성해야할때는 이런 divergence(차이)를 최소화 하는 방향으로 모델을 짜야 하기때문에 척도는 중요한 역할을 합니다.

 

여기 어떤 확률분포 $P$, $Q$가 있습니다.

$P$분포에서 택한 $p_i$는 아래와 같은 정보량을 갖습니다.

 

$$I(p_i) = -logp_i$$

$Q$분포에서 택한 $q_i$도 아래와 같은 정보량을 가집니다.

$$I(q_i) = -logq_i$$

 

 

q를 p에 근사하고 싶다면, q와 p의 정보량 차이 , 정보량의 손실이 최대한 작아야 합니다.

$$\Delta I_i = -logq_i - (-logp_i)$$

 

이때 $I_i$는 i번째 item에 관한 정보량 차이이고 전체 분포에 대해 확장하면,

$$ = E_P[logp_i - logq_i] = \sum p_i\times log\frac{p_i}{q_i}$$

 

 

위와같이 두 분포 $P$,$Q$의 정보량 차이의 평균이 구해집니다. 이때 데이터가 실제로 따르는 분포는 $P$이기 때문에 p에 대한 평균이 구해집니다.

 

$$KL(P||Q) = \sum p_ilog\frac{p_i}{q_i}$$

 

 

  • 여기서 한가지 짚고 넘어갈 점은 KL-Divergence이 정확히 말하자면 거리는 아니라는 점입니다.

거리가 되기 위해서는 a에서 b까지의 거리 = b에서 a까지의 거리여야 하는데 KLD는 대칭적이지 않습니다. 

 

  • P=Q일때만 $KL(P||Q) = KL(Q||P) = 0$으로 최소값을 가집니다.

 

 

KL의 비대칭적인 특성을 보완해주기 위해 나온게 JSD (Jensen-Shannon divergence)입니다.

 

Jensen-Shannon divergence

 

JSD는 사실상 KL에 대칭성을 추가해준 개념인데, KL만큼 자주 사용되지는 않습니다.

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

 

KL(p||q)와 KL(q||p)의 평균을 구한 값이기때문에

$JSD(p||q)==JSD(q||p)$, 대칭성이 있습니다. 마찬지지로,

only and only if p=q, JSD=0을 만족합니다.