Machine learning

Entropy와 Cross entropy, 그리고 KL-divergence, 정보 이론 [2]

bono. 2021. 7. 27. 00:34

Entropy

  • 이전 포스트에서 엔트로피란 정보 이론에서, 정보를 정량화하는 단위라고 하였다. 정보가 클 수록 엔트로피가 크고, 정보가 작으면 엔트로피가 작다.
  • 정보량은 다음의 식으로 표현된다. $I(x) = -log_2{P(x)}$
  • 섀넌은 불확실성의 측정을 엔트로피라 하였고, 이를 H라고 표시하였으며 bit를 단위로 하였다.
  • 이를 식으로 표현하면 다음과 같다. 섀넌 엔트로피는 정보량의 기댓값이다.

$$H(P) = H(x)= E_{X\sim P}[I(x)] = E_{X\sim P}[-log_{2}P(x)] \\ = - \sum_{i}p(x) * log_{2}p(x) \\ = \sum_{i}p(x) * log_{2}{1\over p(x)}$$

  • 확률 분포가 균일 할 수록 엔트로피 H(x)가 높고 (뭐가 뽑힐지 잘 모르니까) 치우쳐져 있을 수록 엔트로피 H(x)가 낮다. (대부분 치우쳐저 있는 값이 나오게 되므로)

Entropy in Machine learning

  • 머신러닝, 딥러닝을 공부하면서 한번쯤은 cross-entropy 에 대해 들어봤을 것 이다.

Cross-entropy

$$H(P,Q) = \sum_{i=1}^k P_i* log_{2}{1\over Q_{i}} $$

  • 위의식은 Cross entropy 식이고, Q가 예측값, P가 실제값
  • 모델링을 통하여 구한 분포값인 확률 분포 Q를 이용하여 실제 확률분포 P를 예측한다.
  • 즉, 크로스 엔트로피는 두 분포 사이에 존재하는 정보량을 구하는 것 이다.
  • 이를 Loss로 사용하게 되면, 0에 가깝도록 값을 줄이는것이 목적이 되는데 정답에 해당하는 예측값이 1에 가깝게 나올때 0에 가까워진다.
  • 확률분포라고 하니까 어색할수도 있는데, 이미지에서의 분류문제라고 생각해보자
  • 이제부터 Q는 해당 이미지가 우리가 분류하고자 하는 클래스에 해당하는 확률이 된다.
  • 잘 안와닿는것 같으니 예시를 들어보겠다.

Cross-entropy example

  • A,B,C,D 네개의 클래스가 있고 네개의 클래스가 one-hot encoding 되어있다고 하자
  • 이때 C 클래스인 임의의 데이터 x는 다음과 같이 encoding 되어있을 것이다.
    • A : 0, B : 0, C : 1, D : 0
  • 우리가 위의 4클래스를 분류하는 머신러닝 모델을 만들었고 가정하자. 이 모델에 데이터 x를 넣으면 다음과 같은 값을 얻는다.
    • A : 0.1421, B : 0.2213, C : 0.62419, D : 0.012411
  • 이때의 Cross entropy는 다음과 같이 계산된다. Cross entropy loss를 사용하면 이 값을 줄이는 방향으로 학습된다.

$$H = -0log_2(0.1421) -0log_2(0.2213) -1log_2(0.62419)- 0log_2(0.012411)$$

  • 엔트로피는 정보량을 정량화 하는 단위이고, 놀람의 정도를 나타낸다고 했다.
  • 만약 $-1log_2(0.62419)$ 이 아닌 매우 낮은 수 $-1log_2(0.0062419)$ 가 나왔다면 후자의 정보량이 더 높다. 따라서 값을 더 많이 줄여야 한다.

KL-divergence

쿨백-라이블러 발산(Kullback–Leibler divergence, KLD)은 두 확률분포의 차이를 계산하는 데에 사용하는 함수로, 어떤 이상적인 분포에 대해, 그 분포를 근사하는 다른 분포를 사용해 샘플링을 한다면 발생할 수 있는 정보 엔트로피 차이를 계산한다.

  • 두 확률 분포의 차이를 계산한다. 이는 두 분포의 엔트로피 차이를 계산하는 것과 같다.
  • Cross entropy로 부터 KL-divergence를 유도해보겠다. [2]

$$H(P,Q) = -\sum_{i=1}^k P_i* log_{2}{Q_{i}} \\= -\sum_{i=1}^k P_i* log_{2}{Q_{i}} -\sum_{i=1}^k P_i* log_{2}{P_{i}} +\sum_{i=1}^k P_i* log_{2}{P_{i}}\\ H(P) = -\sum_{i=1}^k P_i* log_{2}{P_{i}}\ 이라\ 하자 \\=H(P) -\sum_{i=1}^k P_i* log_{2}{Q_{i}}+\sum_{i=1}^k P_i* log_{2}{P_{i}} \\=H(P) +\sum_{i=1}^k P_i* log_{2}{P_{i}\over Q_{i}}$$

  • P의 엔트로피값에 $\sum_{i=1}^k P_i* log_{2}{P_{i}\over Q_{i}}$ 을 더한 것이 Cross entropy가 된다.
  • $\sum_{i=1}^k P_i* log_{2}{P_{i}\over Q_{i}}$ 이 바로 두 확률 분포의 정보량 차이이고 KL-divergence 이다.

$$KL(P||Q) = H(P,Q)-H(P)$$

  • $H(P,Q) - H(P)$, 두 분포 사이에 존재하는 정보량에서 한 분포의 정보량을 뺀다는 의미가 된다.
  • 즉 Cross entropy에서 entropy를 뺀 값이다.
  • 따라서 두 분포가 유사 할 수록, 값이 작을것이며 두 분포의 차이가 클수록 KL-divergence의 값은 커진다.

Cross entropy와 KL divergence

  • 정보량과 Cross entropy, 그리고 KL-divergence의 식은 다음과 같다.

$$I(x) = -log_2{P(x)}\\H(P,Q) = KL(P||Q) + H(P) \\ KL(P||Q) = H(P,Q)-H(P)$$

  • 식을 글로 풀어보자면 다음과 같이 말 할 수 있을 것 같다.
  • Cross entropy는 두 분포 사이에 존재하는 정보량을 뜻한다. 즉, 두 분포의 사이의 차이
  • KL divergence는 두 분포 사이에 존재하는 정보량에서 하나의 정보량을 뺀것

Referene