📖 একটি ছোট গল্প
দুটি distribution কতটুকু "আলাদা" — তার সবচেয়ে বিখ্যাত পরিমাপ হলো KL Divergence। VAE, RLHF (ChatGPT alignment), Diffusion model — সব জায়গায় এই একটিই সূত্র।
Definition
KL(P ‖ Q) = Σ P(x) log [ P(x) / Q(x) ]
- P = true distribution, Q = approximate distribution
- সর্বদা ≥ 0; P = Q হলে 0
- Asymmetric: KL(P‖Q) ≠ KL(Q‖P)
⚠️ সতর্কতা
KL একটি "distance" নয় — কারণ এটি asymmetric এবং triangle inequality মানে না। Symmetric লাগলে Jensen-Shannon Divergence ব্যবহার করুন।
Forward vs Reverse KL
- Forward KL(P‖Q) — "mean-seeking", Q সব P-mode কে cover করতে চায় (MLE)।
- Reverse KL(Q‖P) — "mode-seeking", Q একটি mode-এ লেপটে যায় (VAE, RLHF)।
AI-তে প্রয়োগ
- VAE: latent posterior q(z|x) ও prior p(z)-এর মধ্যে KL।
- RLHF (ChatGPT): fine-tuned policy যেন base model থেকে বেশি দূরে না যায় — KL penalty।
- Diffusion: forward ও reverse process-এর KL minimize → ELBO।
- Knowledge Distillation: teacher ও student-এর softmax distribution-এ KL।
Python Implementation
pythonPython · NumPy
import numpy as np
def kl_divergence(p, q, eps=1e-12):
p, q = np.asarray(p), np.asarray(q)
return np.sum(p * np.log((p + eps) / (q + eps)))
p = [0.1, 0.4, 0.5]
q = [0.2, 0.3, 0.5]
print(kl_divergence(p, q)) # forward
print(kl_divergence(q, p)) # reverse (different!)Summary · সারসংক্ষেপ
- KL = দুটি distribution-এর মধ্যে "তথ্যগত দূরত্ব"।
- Asymmetric — forward ও reverse আলাদা optimization behavior দেয়।
- Generative AI-এর প্রায় সব objective-এর মূলে KL।