← 문제 목록/KL 발산

KL 발산

정보이론 · easy

preview

KL 발산 (Kullback–Leibler Divergence)

두 분포가 얼마나 다른지 측정. 교차엔트로피엔트로피의 차이 (36번, 37번):

DKL(pq)=ipilog2piqi=H(p,q)H(p)D_{\mathrm{KL}}(p \,\|\, q) = \sum_i p_i \log_2 \frac{p_i}{q_i} = H(p, q) - H(p)

주요 성질

  • 비음수: DKL0D_{\mathrm{KL}} \ge 0, 같으면 0 (Gibbs 부등식).
  • 비대칭: DKL(pq)DKL(qp)D_{\mathrm{KL}}(p\,\|\,q) \ne D_{\mathrm{KL}}(q\,\|\,p) 일반적으로. 그래서 "거리"가 아니라 "발산".
  • q_i = 0 이지만 p_i > 0 인 경우 \infty → 실무에선 클리핑.

머신러닝에서

  • VAE의 인코더 정규화 (prior와 posterior 비교)
  • 강화학습 policy update 제약
  • 일반화의 cross entropy loss 해석

과제

함수 kl_divergence(p, q) 를 완성하세요.

  • 반환: Python float, bits.
  • p_i > 0 인 항만 계산, q 는 클리핑.

테스트 케이스

#이름pq기대
1p == q → 0[0.3, 0.7][0.3, 0.7]0
2단순[0.5, 0.5][0.25, 0.75]≈ 0.208
3비음수무작위 p, q>= 0
4비대칭임의 다른 분포KL(p,q) != KL(q,p)
5H(p,q) - H(p) 관계임의성립
Loading...

코드를 작성하고 Run 을 눌러보세요.