← 문제 목록/KL Divergence (분포 간 거리) [medium]
문제 해설

KL Divergence (분포 간 거리) [medium]

정보이론 · medium

preview

KL Divergence [medium]

v1 엔트로피단일 분포 의 불확실성. 두 분포 p,qp, q차이 를 측정하는 것이 Kullback-Leibler divergence:

DKL(pq)=ipilog2piqiD_{KL}(p \parallel q) = \sum_i p_i \log_2 \frac{p_i}{q_i}

pp = 진실 (target), qq = 근사 (model). VAE, t-SNE, RL (PPO), language model 의 구석구석에 등장.

성질

성질설명
DKL0D_{KL} \ge 0Gibbs 부등식, =0    p=q=0 \iff p = q
비대칭DKL(pq)DKL(qp)D_{KL}(p\|q) \ne D_{KL}(q\|p)
스케일 의존log2\log_2 (비트) vs ln\ln (내트) 선택에 따라 상수배
qi=0,pi>0q_i = 0, p_i > 0수학적으로 \infty — 수치적으로 qq 를 ε 로 clip
pi=0p_i = 0pilog()=0p_i \log(\cdot) = 0

Cross-Entropy 와의 관계

H(p,q)=H(p)+DKL(pq)H(p, q) = H(p) + D_{KL}(p \parallel q)

pp 가 고정이면 cross-entropy 최소화 = KL 최소화.

과제

함수 kl_divergence(p, q, epsilon=1e-12) 를 완성하세요.

  • p, q: 1D 확률 배열 (합 ≈ 1 가정).
  • epsilon: q 에 대한 clip 하한 (0 나눗셈 방지).
  • 반환: Python float, 비트 단위 (log2\log_2).
  • pi=0p_i = 0 → 해당 항 0 (by convention).
  • qiq_i 작으면 max(qi,ϵ)\max(q_i, \epsilon) 로 clip 후 계산.

테스트 케이스

#이름검증
1DKL(pp)=0D_{KL}(p \| p) = 0
2비음수: DKL0D_{KL} \ge 0 (랜덤 분포)
3비대칭: DKL(pq)DKL(qp)D_{KL}(p\|q) \ne D_{KL}(q\|p)
4p=p = one-hot: DKL=log2qhotD_{KL} = -\log_2 q_{\text{hot}}
5qq 에 0 있어도 finite (ε clip)
6cross_entropy = H(p) + D_KL(p‖q) 관계
7scipy entropy(p, q, base=2) 와 일치
코드 작성
Loading...
실행 결과

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