들어가며
변분 추론, 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
'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 |