KL Divergence - 두 확률분포의 차이 계산하기

2024. 12. 16. 12:40·AI

들어가며

변분 추론, Diffusion, AutoEncoder 등 딥러닝 모델에서 자주 등장하는 통계학적 개념 KL Divergence(Kullback-Leibler Divergence)에 대해 deep dive한 내용을 포스팅했다.

Background

KL Divergence를 이해하기 위해서는 1. 정보량, 2. 정보 entropy, 3. cross-entropy의 세 가지 용어를 미리 알아야 한다.

 

1. 정보량

  • 수식적 정의: $I(X) = -\log_bP(X)$
    • 이산 랜덤변수 $X$에 대한 정보량을 나타낸다.
    • 정보량을 더할 때, log 함수의 additive 성질을 이용하기 때문에 log를 붙여 정의한다.
    • 로그의 밑 $b$는 태스크에 따라 정의하면 된다.
  • 확률적으로 낮은 내용(놀랄만한 내용)일수록 정보량이 많다.

2. 정보 entropy

  • 통계학적 정의: 분포의 평균 정보량으로, 모든 일어날 수 있는 사건에 대한 확률 × 정보량 값을 합친 것이다.
  • 수식적 정의: $$H(X) = E[I(X)] = -\sum_{i=1}^n P(x_i) \log_b \left(P(x_i)\right)$$
    • 기댓값 $E[\cdot]$는 확률 × 정보량을 나타낸다.

3. Cross Entropy

  • 통계학적 정의: 모델의 출력값과 실제 타겟값 간의 차이, 즉 놀라움를 정보량으로 나타낸 값이다.
    • loss 함수에서 사용될 때는 기대한 실제 타겟값 $Q(x)$와 모델 출력값 $P(x)$ 간의 차이를 줄이는 방식으로 학습해 나간다.
  • 수식적 정의:$$\sum\limits_{x \in \chi} -P(x) \log Q(x)$$
    • 실제 타겟값 $Q(x)$를 기준으로 모델의 출력 분포 $P(x)$의 정보량을 나타낸다.
  • 이상적으로 생각하는 분포 P(x)와 모델 출력값 Q(x) 사이의 Cross Entropy를 계산하면 놀라움의 정도를 계산할 수 있는 것이다.

KL Divergence

  • 통계학적 정의: 두 확률분포 $P,Q$가 비슷한 정도를 정보 entropy를 이용해서 상대적으로 비교한 값이다.
  • 수식적 정의: $$D_{KL}(P||Q) = \sum\limits_{x \in \chi} P(x)log_b(\frac{P(x)}{Q(x)})$$
    • 전개하면, $-\sum\limits_{x \in \chi} P(x)log_{b}Q(x)+\sum\limits_{x \in \chi} P(x)log_{b}P(x)$를 얻을 수 있다. 이는 곧 $P$의 $Q$에 대한 Cross Entropy와 $P$의 정보 entropy 간의 차이를 의미한다.
    • KL Divergence 값이 작을수록 두 분포는 비슷하다.

KL Divergence와 Cross Entropy의 차이

  • Cross Entropy는 예측값 $P(x)$와 타겟값 $Q(x)$ 간의 차이의 평균을 정보량(entropy)으로 나타낸 것이고, KL Divergence는 두 확률분포 P(x), Q(x)의 정보 entropy를 상대적으로 비교한 값이다.
  • \frac{P(x)}{Q(x)} term이 로그함수의 additivity 성질로 (-) 변환이 된다고 이해하면 된다.

 

  • +) 나는 'variational lower bound', ELBO를 공부하다 KL Divergence 개념에 deep dive하게 되었다.
    • posterior 분포 $P(z|x)$가 다루기 힘든 분포일 때, 더 쉬운 분포인 $Q(x)$로 대신 표현하는 과정에서 $P, Q$ 간의 차이를 줄이기 위해 KL Divergence를 최소화한다.

  • ELBO는 $E_q[\log p(x,z)] - E_q[\log q(z ; \lambda)]$로 정의하고, $p(x,z)$의 entropy와 $q$의 entropy 간의 차이를 의미한다.
    • 이 때 $p(x,z)$와 $q(z; \lambda)$는 모두 tractable한 분포가 되고, ELBO를 최대화해 KL Divergence를 최소화할 수 있는 파라미터 $\lambda$를 찾는다.

https://edwardlib.org/tutorials/klqp

https://angeloyeo.github.io/2020/10/27/KL_divergence.html

https://blog.evjang.com/2016/08/variational-bayes.html

저작자표시 (새창열림)

'AI' 카테고리의 다른 글

[부스트캠프 AI Tech] RecSys Level 04 - 자영업자를 위한 가게 음악 추천 솔루션:Tune Your Shop(최종 프로젝트) 회고  (0) 2025.02.19
[부스트캠프 AI Tech] RecSys Level 02 - Movie Recommendation KPT 회고  (0) 2024.11.30
[부스트캠프 AI Tech] RecSys Level 01 KPT 회고  (0) 2024.09.29
[Python] 자연어처리 - TfidfVectorizer  (0) 2024.07.30
[RecSys] Latent Factor 알아보기  (0) 2024.03.26
'AI' 카테고리의 다른 글
  • [부스트캠프 AI Tech] RecSys Level 04 - 자영업자를 위한 가게 음악 추천 솔루션:Tune Your Shop(최종 프로젝트) 회고
  • [부스트캠프 AI Tech] RecSys Level 02 - Movie Recommendation KPT 회고
  • [부스트캠프 AI Tech] RecSys Level 01 KPT 회고
  • [Python] 자연어처리 - TfidfVectorizer
jjjaeunn
jjjaeunn
  • jjjaeunn
    eunlogツ
    jjjaeunn
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 논문 리뷰
      • AI
      • Computer Science
      • 알고리즘
  • 블로그 메뉴

    • 홈
    • papers
    • algorithm
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BERT
    보아즈
    gpu
    db
    동아리
    pytorch
    빅데이터연합동아리
    MLM
    데이터베이스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
jjjaeunn
KL Divergence - 두 확률분포의 차이 계산하기
상단으로

티스토리툴바