KL divergence 살펴보기
🦕

KL divergence 살펴보기

Tags
Machine Learning
Published
November 25, 2022
Author
유레미 EUREMI
이 내용은 팡요랩의 가장 쉬운 KL Divergence 완전정복!을 참고해서 작성했다. 엄청 친절하게 설명해주시니 더 자세하게 알고 싶다면 참고할 것!

KL divergence를 공부하기 전에 알아야 할 통계이론

  1. x와 y가 독립일 때, p(x, y) = p(x) * p(y)가 성립한다.
  1. 기댓값: 전체 사건에 대해 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 합한 값이다. 이것은 어떤 확률적 사건에 대한 평균의 의미로 생각할 수 있다. 말로는 어렵지만 우리가 고등학생 때 이미 배웠던 개념이다. 주사위를 예로 들자면,
    1. 사건이 벌어졌을 때의 이득: 주사위의 값, 1,2,3,4,5,6
    2. 사건이 벌어질 확률: 주사위 각 눈금이 벌어질 확률: 각각 1/6
    3. 주사위의 기댓값
      E[x] =
      왜 기댓값을 구하는 걸까? 주사위를 한번 던진 결과를 가지고 그 결과를 주사위가 준 일반적인 결과라 말할 수 없다. 어쩔땐 낮은 숫자 어쩔땐 높은 숫자를 얻을 수 있기 때문이다. 따라서 여러번 시행하여 평균적으로 기대할 수 있는 값을 구하는 것이다. 주사위를 던졌을 때 기대할 수 있는 값은 3.5다.
  1. 기대값
    1. E(x) =
  1. log 함수
    1. 밑이 1보다 클때, x가 0과 1 사이일 때 y는 마이너스 값을 갖는다. 단조 증가함수이다.
    2. notion image
  1. uniform distribution, gaussian distribution
notion image
notion image

정보량 측정

먼저 예를 들어 보자, 다온이와 이든이는 통신을 하고 있다. 다온이는 이든이에게 매일 해가 어느 쪽에서 뜨는지에 대한 정보를 보내준다. 해가 동쪽에서 뜨는 정보를 이든이에게 알려준다면 이든이는 그리 흥미로워하지 않을 것이다. 당연한 정보이기 때문이다. 그러던 어느날 해가 서쪽에서 떴다! 다온이는 이든이에게 해가 서쪽에서 떴다는 정보를 알릴테고 이든이는 굉장히 놀랄 것이다. 왜일까? 말이 안되는 정보이기 떄문이다. 왜 말이 안되는 정보일까? 해가 서쪽에서 뜬다는 것은 희박한 확률이기 때문이다. 이처럼 정보는 “학습에 있어 필요한 놀람의 정도(degree of surprise”로 해석할 수 있다. 따라서 항상 발생하는 일의 정보 양은 0이다. 해가 항상 동쪽에서 뜬다면 얻을만한 정보가 없으니 0이라고 말할 수 있다.

h의 첫 번째 조건

우리는 정보라는 추상적인 수치를 확률을 이용해 수식으로 표현하려한다. 정보를 h라고 하자. 위에서 언급한 정보의 해석을 바탕으로 함수를 만든다면, 정보는 다음과 같은 조건을 가지게 만들어야한다. p(east)는 동쪽에서 해가 뜰 확률, p(west)는 서쪽에서 해가 뜰 확률을 의미한
  1. 확률 변수(Random variable) X에 대해 X는 east(해가 동쪽에서 뜰 확률), west(해가 서쪽에서 뜰 확률) 두 가지 값을 가질 수 있음
  1. X의 정보량 h(x)는 p(x)에 대한 함수, 즉, h(x) = f(p(x)) == h = f(p)
  1. p(east) = 0.99999, p(west) = 0.00001이라고 했을 때 h(west) > h(east)여야 한다.
    1. → 희박한 확률일 수록 정보량이 크다고 했기 떄문에
  1. p(x)와 h(x)는 monotonic(단조감소)한 관계여야 한다. 즉, p가 커질수록 h는 작아져야한다.
    1. → 사건의 확률이 높아질수록 정보량은 작아져야한다. (확률이 높으면 놀라지 않는다 → 당연하다)
      notion image
       

h의 두 번째 조건

만일 2개의 사건이라면 어떻게 될까? 다온이가 이든이에게 해가 동쪽에서 뜨는지 서쪽에서 뜨는지를 알려줌과 동시에 서울에 비가 올지 안올지에 대한 정보를 보내준다고 하자.
확률 변수(Random variable) X, Y에 대해 X는 East, West 두 가지 값을 가진다. Y는 rain, not rain 두 가지 값을 가진다. X, Y는 독립이라는 전제로 인해, 아래의 수식이 성립된다.
  • h(x, y) = h(x) + h(y)
  • p(x, y) = p(x) * p(y)
위의 수식으로 인해 h(x,y) = f(p(x,y)) = f(p(x) * p(y)) = f(p(x) + f(p(y))로 유도 가능하다. 우리가 정의하고 싶은 함수 f의 특징만 보기 위해 p(x)를 X’ p(y)를 Y’라 하면 f(X’ * Y’) = f(X’) + f(Y’)가 된다. 이를 보고 우리가 고등학교때 배웠던 수학 이론들 중 한가지가 떠오를 수 있따. log이다! log(x) + log(y) = log(x*y)의 특징을 이용하면 우리가 정의하고 싶은 f를 만들 수 있을 것이다. 그래서 결국 아래와 같은 정보에 대한 함수를 만들 수 있다.
h(x) = logp(x)
이걸 다시 위의 식에 대입해보면 log(p(x) * p(y)) = log(p(x))+log(p(y))가 된다. 여기서 한가지 문제점이 있다. p(x)는 확률값이기 때문에 0에서 1사이에 값이 존재하게 되는데 log를 씌우게 되면 마이너스 값을 가진다. 그러면 우리가 원하는 첫 번째 조건을 만족하지 않게 된다. logp(x)에 마이너스를 붙이면 모든 것이 해결된다. 즉, h(x) = -logp(x)란 함수로 확률값을 이용해 정보량을 구할 수 있다! 한가지 더 설정해 줄 필요가 있는데 log의 밑이다. log의 밑은 어떤 값인지 상관없이 조건을 만족하지만 주로 2나 e를 사용한다고 한다.

예시

앞에서 말했던 사건으로 정보량을 계산해보자. 해가 동쪽에서 뜨는 확률은 0.99999999, 해가 서쪽에서 뜨는 확률은 0.00000001이라고 해보자. 사실은 해가 동쪽에서 뜨는 확률이 더 높을 것이지만 편의성을 위해 이렇게 해보겠다.
  • h(east) = -log_2p(east) = log_2(0.99999999) = 0.000000014
  • h(west) = -log_2p(west) = log_2(0.00000001) = 26.5754247591
우리가 원하는대로 확률이 높은 사건은 정보량이 굉장히 작고 확률이 낮은 사건은 정보량은 굉장히 높다.
그러면 이 사건의 평균적인 정보량은 어떨까?
  • p(east) * h(east) + p(west) * h(west) = p(east) * -log_2(p(east)) + p(west) * -log_2(p(west)) = 0.99999999 * 0.999999914 + 0.00000001 * 26.5754247591 = 0.00000028이다.
여기서 알 수 있는 것은 사건의 확률이 한쪽으로 치우쳐져 있으면 (확률이 하나는 엄청 높고 하나는 엄청 낮고) 평균적인 정보량은 굉장히 작은 수가 나온다는 것이다. 식을 다시 보자. 이 식은 기대값으로 나타낼 수 있다! 이 값이 바로 엔트로피이다! 엔트로피는 평균 정보량을 의미하고 p(x)에서 h(x)함수(-log_2(p(x))의 기대값을 의미한다. 즉, 엔트로피는 정보가 균등하게 퍼져있다면 가장 높아질 것이다.
H[X] =
 
 
이제 엔트로피 예시를 들어보자. 어떤 정팔면체 주사위가 있을 때, 8개의 면의 확률이 각각 일 때 엔트로피 값은
이다.
 
이번엔 8개 면의 확률이 분균일할 때 엔트로피 값을 구해보자 8개의 면은 각각
라고 하자.
이 때 엔트로피 값을 구해보면 아래와 같다.
 
정팔면체가 아닌 코딩의 길이를 계산하는 사건이라면 아래와 같다.
 

Entropy의 몇가지 특징

  • 지금까진 연속적인 변수를 보지 않았지만 연속적인 변수의 평균 정보량을 계산한다면 아래와 같다.
    • ㅇ[
  • 엔트로피를 최대화시키기 위해선 아래의 distribution일 때 만족한다.
      1. discrete variable은 uniform
      1. continuous variable은 gaussian
  • 엔트로피를 최소화시키기 위해선 한 점에 확률이 다 몰려있으면 된다.
엔트로피 최대화와 최소화의 의미를 좀 더 설명하자면 엔트로피는 평균 정보량이다. 확률이 골고루 분포되어있을때 정보의 양이 최대가 되는 것이고 한 점에 몰려있는 경우 정보의 양이 최소가 된다. (해가 동쪽, 서쪽에서 뜨는 사건의 정보 양은 작다는 의미다.)
 

KL divergence

이전까진 1개의 사건에 대한 1개의 평균적인 정보량을 구했지만 이번엔 1개의 사건에 2개의 정보량을 구해야한다.여기서 하나의 가정은 다온이는 바보란 거다. 실제 주사위 4면의 확률분포는 1/4, 1/4, 1/4, 1/4이지만 다온이가 생각한 4면의 확률 분포를 1/2, 1/3, 1/8, 1/8이라고 생각했다. 그래서 각 상태를 각각 0, 10, 110, 111로 코딩하였다. 실제 최적의 코딩은 00, 01, 10, 11이다. 이번에도 다온이가 이든이에게 주사위를 던져 값이 나올때마다 정보를 보냈다. 이 때 평균 코딩 길이는 아래와 같다.
 
위에서 kl divergence를 계산했던 것과 조금 다르다. 확률은 실제 정답지이고 코딩 길이는 다온이가 코딩한 길이이다. 수식으로 표현하자면
다온이가 p를 정확하게 모델링했을 경우
모델링한 q가 p와 다르기 때문에 발생한 추가비용은 두 값을 뺴서 계산할 수 있다.
2.25-2 = 0.25
즉, 모델링 오류 때문에 발생한 추가 비용은
 

Cross-Entropy

서 맨 앞 인수인 이다.

왜 clasification에서 loss 함수는 kl divergence가 아닌 cross entropy일까?

우리는 p(모분포, 정답)를 근사하기 위해 q(뉴럴넷)를 만들었다. 즉 우리가 수정할 수 있는 것은 q분포에만 해당되고 p는 q를 바꿔도 변하지 않는다. 또한 우리가 backpropagation으로 q에 대해 미분했을때 p는 사라지기 떄문에 cross entropy를 사용한다. 결국 KL을 사용하는 것과 동일하다.