Entropy, Cross-Entropy, KL Divergence, and Mutual Information: Information Theory's Life in LLMs
Shannon entropy, the true meaning of cross-entropy as LLM loss, KL divergence asymmetry and forward vs reverse KL (mode covering vs mode seeking), the role of KL constraint in RLHF/DPO, JS and Wasserstein, mutual information, knowledge distillation math.
Şükrü Yusuf KAYA
42 min read
Intermediate📊 Bilgi teorisi LLM'in her köşesinde
Cross-entropy = pretrain loss. KL divergence = RLHF/DPO regularization, knowledge distillation, variational inference. Mutual information = self-supervised learning'in temeli. Bu kavramların matematiksel köklerini bilmek, paper okumayı 'çevirme'den 'akıcı dil'e taşır. 42 dakika sonra DeepSeek-R1 paper'ında geçen "KL term"i çözecek seviyeye geleceksin.
Ders Haritası#
- Shannon entropisi — belirsizliğin matematiksel ölçüsü
- Joint, conditional, mutual entropy ilişkileri
- Cross-entropy — LLM loss'un anatomisi
- KL divergence — iki dağılım arasındaki "uzaklık"
- Forward KL vs Reverse KL — mode covering vs mode seeking
- KL'in LLM'deki 3 hayatı: RLHF, distillation, variational inference
- Jensen-Shannon divergence — symmetric alternatif
- Wasserstein — geometric alternatif
- Mutual information ve self-supervised bağlantı
- Maximum entropy principle
1. Shannon Entropisi — Belirsizliğin Ölçüsü#
Bir dağılımın ne kadar "belirsiz" olduğunu sayısallaştırmak için Shannon (1948):
Birim:
- log₂ ile → bit
- ln ile → nat
- log₁₀ ile → hartley
Sezgi#
- Düşük entropi = dağılım belirgin (örn. P=(0.99, 0.01)): "neredeyse her zaman A"
- Yüksek entropi = dağılım belirsiz (örn. uniform): "hiçbir şey diğerinden öne çıkmıyor"
- Maks entropi k sınıflı uniform'da: log(k)
Niye -log P?#
Bilgi teorisi şu sezgi üzerine kurulu: bir olayın bilgi içeriği, olasılığına ters orantılı. Çok olası olayın bilgisi az ("güneş doğdu" — 0 bit), nadir olayın bilgisi çok ("Mars'ta su" — yüksek bit).
Self-information: . Entropi = expected self-information: .
I(x) = -log P(x)H = E[I(X)]Karakter LLM'de#
Bir İngilizce karakterin entropisi yaklaşık 1.0-1.5 bit (Shannon 1951). Yani teorik olarak bir LLM'in İngilizce için perplexity 2^1 = 2 ile 2^1.5 = 2.83 arasında olması alt sınırı. GPT-5 sınıfı modeller PPL ~2.0 — pratik olarak alt sınıra dayanıyor.
Türkçe için entropi daha yüksek (~1.5-2.0 bit/char) — morfoloji ve daha az pretrain verisi.
python
import torchimport math def entropy(p, base=2): """Discrete entropy. p: tensor of probabilities.""" p = p[p > 0] # log(0) sorununu önle return -(p * torch.log(p) / math.log(base)).sum() # Düşük entropip1 = torch.tensor([0.99, 0.005, 0.005])print(f"H(p1) = {entropy(p1):.4f} bit") # ~0.081 # Yüksek (uniform)p2 = torch.tensor([0.333, 0.333, 0.334])print(f"H(p2) = {entropy(p2):.4f} bit") # ~1.585 (= log2(3)) # Maks entropi N-uniform için: log2(N)print(f"log2(3) = {math.log2(3):.4f}") # 1.585 ✓ # Bir LLM'in tahmin distribution'unun entropisini hesaplaimport torch.nn.functional as Flogits = torch.randn(50000) # tüm vocab üzerinde tahminprobs = F.softmax(logits, dim=-1)H = entropy(probs)print(f"LLM tahmin entropisi: {H:.2f} bit (max: {math.log2(50000):.2f})")# Daha keskin tahmin = düşük entropiDiscrete entropy hesabı + LLM tahmin entropisi.
2. Joint, Conditional, ve Mutual Entropy#
İki random variable X, Y için:
Joint entropy:
Conditional entropy:
X biliniyorken Y'de ne kadar belirsizlik kaldığını ölçer.
İlişkiler (chain rule)#
Mutual information#
X ve Y arasında "ne kadar bilgi paylaşılıyor"ı ölçer. X ve Y bağımsızsa I = 0.
Sezgi#
Mutual information = "Y'yi bilince X hakkında ne kadar belirsizlik düşer". Yüksek MI = güçlü ilişki.
Modern self-supervised learning (CLIP, SimCLR, MoCo) bunu maksimize ediyor: positive pair'lerin (matched image-text veya iki view) MI'ı yüksek olmalı.
3. Cross-Entropy — Tek Aile, İki Yorum#
Cross-entropy'yi Ders 1.3'te tanıştık. Şimdi bilgi teorisi bakış açısıyla derinleştirelim.
İki dağılım: gerçek (true) ve tahmin (predicted) . Cross-entropy:
qpİki yorum#
Yorum 1 (NLL): Daha önce gördük — true label'ın model olasılığının -log'u. One-hot için: .
q-log p(target)Yorum 2 (coding): Eğer mesajları 'ye göre optimal kodluyorsan ama gerçek dağılımındalar, ortalama kod uzunluğun . Yani: model dağılımıyla gerçek dağılım arasındaki uyumsuzluğun maliyeti.
pqH(q, p)Cross-entropy ≥ Entropi (lower bound)#
Eşitlik sadece p = q olduğunda. Yani modelin gerçek dağılımı tam yakalaması en iyi durum; ondan ne kadar uzaklaşırsa cross-entropy o kadar büyük.
Aradaki fark:
İşte KL divergence buradan geliyor!
4. KL Divergence — İki Dağılım Arasındaki "Uzaklık"#
Tanım:
Özellikler#
- Non-negative: (Gibbs inequality)
D_KL ≥ 0 - Zero iff equal: ⟺
D_KL(q || p) = 0(her noktada)q = p - Asymmetric: genellikle (bu yüzden tam "distance" değil)
D_KL(q || p) ≠ D_KL(p || q) - No triangle inequality: matematiksel olarak metric değil
"Uzaklık" değil ama benzer#
Asimetri yüzünden technical olarak distance değil, ama informally "iki dağılım arasındaki bilgi uzaklığı" diye anılır.
Yararlı dekompozisyon#
qH(q)Reverse KL#
Forward () ile karıştırma! Optimization açısından çok farklı davranışlar verir.
q||ppython
import torchimport torch.nn.functional as Fimport math def kl_div(q, p, eps=1e-12): """D_KL(q || p) — discrete probabilities.""" return (q * (q.add(eps).log() - p.add(eps).log())).sum() # Aynı dağılım: KL = 0p1 = torch.tensor([0.3, 0.4, 0.3])print(f"D_KL(p1 || p1) = {kl_div(p1, p1):.6f}") # ~0 # Farklı dağılımlar — asymmetricp = torch.tensor([0.5, 0.3, 0.2])q = torch.tensor([0.1, 0.7, 0.2]) print(f"D_KL(p || q) = {kl_div(p, q):.4f}")print(f"D_KL(q || p) = {kl_div(q, p):.4f}")# Farklı değerler — bu asymmetric # PyTorch native# F.kl_div: KL(target || input) = Σ target * (log target - log input)# input: log probabilities!log_q = q.log()print(f"PyTorch KL(q || p) = {F.kl_div(p.log(), q, reduction='sum'):.4f}")# Karşılaştır: yukarıdaki kl_div(q, p) # H(p) ≤ H(p, q) — entropy is lower bound of cross-entropydef entropy(p): p_pos = p[p > 0] return -(p_pos * p_pos.log()).sum() def cross_entropy(q, p): return -(q * (p + 1e-12).log()).sum() print(f"H(p) = {entropy(p):.4f}")print(f"H(p, q) = {cross_entropy(p, q):.4f}")print(f"H(p,q) - H(p) = {cross_entropy(p,q) - entropy(p):.4f}")print(f"D_KL(p || q) = {kl_div(p, q):.4f}")# Son ikisi eşit — KL decomposition'u doğruluyorKL divergence + asimetri + decomposition.
5. Forward KL vs Reverse KL — Mode Covering vs Mode Seeking#
Hangi yönü kullanırsan çok farklı bir optimization davranışı:
Forward KL: D_KL(p_data || q_model) — "mode covering"#
D_KL(p_data || q_model)Eğer iken ise → KL = ∞.
p_data(x) > 0q_model(x) = 0Sonuç: model her gerçek mode'a olasılık atamak zorunda → wide, blurry dağılım. Gerçek dağılımın tüm modlarını "covers".
LLM pretrain bu objective'i optimize ediyor (cross-entropy = forward KL up to constant). Bu yüzden çıktılar bazen "vasat ortalama" — tüm seçenekleri kapsayan biraz boğuk tahmin.
Reverse KL: D_KL(q_model || p_data) — "mode seeking"#
D_KL(q_model || p_data)Eğer iken ise → KL = ∞.
q_model(x) > 0p_data(x) = 0Sonuç: model güvenli olduğu region'larda kalır, riskli yerlere girmez → sharp, peaked dağılım. Bir mode'a yapışır, diğer modları yok sayar.
RLHF reverse KL ile çalışır (varyasyonlu): . Bu, model'in reference policy'e yakın kalmasını ama belirli iyi yönlerde gitmesini sağlıyor.
D_KL(π_RL || π_ref)Hangi durumda hangisi?#
| Durum | Doğru KL yönü |
|---|---|
| Veri dağılımını öğrenmek (pretrain) | Forward (cross-entropy) |
| Bir reference policy'e yakın kalmak | Reverse (RLHF) |
| Knowledge distillation (teacher → student) | Forward |
| Variational inference (q ≈ posterior) | Reverse (ELBO) |
| Diffusion models | Mix (DDPM forward + reverse) |
6. KL'in LLM'deki 3 Hayatı#
Hayat 1: RLHF / DPO Constraint#
PPO-based RLHF objective:
r(x)βDPO bunu daha güzel paketleyip reward model'i ortadan kaldırıyor (Modül 24'te detayda).
Hayat 2: Knowledge Distillation#
Teacher (büyük model) → Student (küçük model). Loss:
Soft target'lar (teacher'ın probability distribution'u) tek hot label'dan daha çok bilgi taşır — student daha hızlı öğreniyor.
Modern örnek: DeepSeek-R1-Distill — büyük R1 modelin reasoning'ini küçük Llama/Qwen'a distille ediyor.
Hayat 3: Variational Inference (VAE)#
Posterior 'i intractable. Onun yerine bir parametric family'den öğreniyoruz, KL'i minimize ediyoruz:
p(z|x)q_φ(z|x)VAE, diffusion models, latent variable models — hepsi bu çerçeveyi kullanıyor.
python
import torchimport torch.nn.functional as F # RLHF-style: policy π_θ ile reference π_ref arasında KL# Toy setup: vocab=5, batch=1torch.manual_seed(0) # Reference model logits (pretrain edilmiş)ref_logits = torch.tensor([2.0, 1.0, 0.5, -0.5, -1.0]) # Policy model logits (RLHF sırasında değişiyor)policy_logits = torch.tensor([3.0, 0.5, 0.0, -1.0, -2.0], requires_grad=True) # Reward (faraza, dış reward modelden)reward = torch.tensor(1.5) # Reverse KL: D_KL(π_θ || π_ref)log_ref = F.log_softmax(ref_logits, dim=-1)log_pol = F.log_softmax(policy_logits, dim=-1)prob_pol = log_pol.exp()kl = (prob_pol * (log_pol - log_ref)).sum() # Objective: maksimize reward - β·KLbeta = 0.1loss = -(reward - beta * kl)loss.backward() print(f"KL(π_θ || π_ref) = {kl.item():.4f}")print(f"Reward: {reward.item()}, KL penalty: {(beta*kl).item():.4f}")print(f"Gradient on policy logits: {policy_logits.grad}") # Eğer β büyürse → policy ref'e yakın kalır# Eğer β küçük olursa → policy reward'a doğru özgürce gider (reward hacking riski)RLHF tarzı KL constraint — toy örnek.
7. Jensen-Shannon Divergence — Symmetric Alternatif#
KL asimetrik. Bazı uygulamalarda symmetric "uzaklık" gerek. JS divergence:
Özellikler#
- Symmetric:
D_JS(p||q) = D_JS(q||p) - Bounded: log₂ kullanırsak [0, 1] aralığında
- Square root metric: gerçek bir metric (üçgen eşitsizliği sağlar)
√D_JS
Kullanım#
- GAN training (orijinal GAN paper'ı JS minimize ediyor)
- Topic similarity measurements
- Distribution shift detection — drift monitoring
8. Wasserstein Distance — Geometric Alternatif#
KL ve JS divergence iki dağılımı "bağımsız" olarak görüyor. Wasserstein (Earth-Mover's Distance) dağılımları fiziksel olarak karşılaştırıyor: bir dağılımı diğerine "götürmek" için ne kadar kütle×mesafe gerekli.
Niye önemli?#
KL/JS, örtüşmeyen dağılımlarda saçma sonuçlar verir (∞ veya sabit). Wasserstein smooth gradient verir — generative modelleme için kritik.
LLM'de#
Doğrudan az kullanılır ama:
- WGAN-style training (eski generative work)
- Distribution shift evaluation
- Fairness metrics (demographic groups arası)
Pratik#
scipy.stats.wasserstein_distancePOT9. Mutual Information ve Self-Supervised Bağlantı#
I(X; Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)İki RV arasında bağlılık miktarı.
Self-supervised learning'in temeli#
InfoNCE loss (van den Oord 2018, CLIP'in temeli):
f(x, y^+)f(x, y)Bu objective, X ve Y^+ arasındaki mutual information'a lower bound'dur. Mutual info'yu maksimize ediyoruz: matched pair'ler aynı semantik bilgiyi paylaşmalı.
CLIP'te uygulama#
Image-text pair'leri: image embedding ile text embedding'in MI'ı maksimize. Bu CLIP'in arkasındaki temel — kontrastif öğrenme.
Modern LLM bağlantısı#
- BERT MLM: bir pozisyondaki masked token ile context arasındaki MI maksimize
- SimCSE: iki dropout view arasındaki MI maksimize
- Self-distillation (DINO, DINO-v2): student-teacher MI maksimize
10. Maximum Entropy Principle#
"Bilmediğin şey hakkında en az varsayım yap" → ön bilgi olmadan en yüksek entropili dağılımı seç.
Klasik sonuçlar#
- Hiç kısıt yok: uniform dağılım
- Mean μ kısıtı (continuous): exponential
- Mean μ, variance σ² kısıtı: Gaussian
- Categorical (sum=1): uniform on categories
LLM bağlamı#
- Entropy regularization (RL'de): policy entropi'sini cezalandırma → explore et, mode collapse'a düşme
- Temperature scaling: yüksek T = yüksek entropi = daha çeşitli sampling
- Label smoothing: one-hot yerine soft label kullan → düşük confidence, kalibre
Label smoothing matematiği#
One-hot yerine:
tCross-entropy + label smoothing = cross-entropy + (1/K, ..., 1/K)'ya KL term. Düşük confidence, daha kalibre çıktılar. Llama 3 pretrain'inde kullanılıyor.
11. Mini Egzersizler#
-
Maks entropi: 4 sınıflı dağılımdave uniform
P=(0.4, 0.3, 0.2, 0.1). Hangisi daha entropili? Hesapla.P=(0.25, 0.25, 0.25, 0.25) -
KL asymmetry:,
p=(0.9, 0.1).q=(0.5, 0.5)veD_KL(p||q)hesapla. Hangisi büyük? Neden?D_KL(q||p) -
RLHF KL effect: β=0 ile β=1 arasında farkı açıkla. Hangisinde model reference'a daha yakın kalır?
-
Distillation: 1000 vocab'lı teacher, hot label student'a aktarsa ne kadar bilgi kaybı? Soft target'la fark?
-
Mutual info:(deterministically).
X = Ynedir? EğerI(X; Y)?X = Y + noise
Bu Derste Neler Öğrendik?#
✓ Shannon entropi = belirsizliğin matematik ölçüsü, -E[log P]
✓ Cross-entropy = H(q) + KL(q||p) — neden CE ≥ entropi
✓ KL divergence — asimetrik, ≥0, distance değil ama benzer
✓ Forward KL = mode covering (LLM pretrain)
✓ Reverse KL = mode seeking (RLHF, VAE)
✓ KL'in 3 hayatı: RLHF constraint, knowledge distillation, variational inference
✓ JS divergence: symmetric KL alternatifi
✓ Wasserstein: geometric "earth-mover" distance
✓ Mutual information ve self-supervised learning bağlantısı
✓ Maximum entropy principle ve label smoothing
Sıradaki Ders#
1.8 — Convex/Non-Convex Optimization: Gradient Descent Ailesi
SGD'den AdamW'a, momentum, Nesterov, RMSProp, Adam, AdamW, Lion, Muon — modern LLM eğitiminin tüm optimizer'ları. Learning rate schedules, warmup, cosine decay. Loss landscape sezgisi: sharp vs flat minima.
Frequently Asked Questions
Because when approximating the posterior with a tractable distribution (\(q_\phi\)), we minimize the KL between the **true posterior** and our **approximation**. This underlies the ELBO (Evidence Lower BOund) objective. KL = 0 → perfect approximation. Large KL → poor. VAEs, normalizing flows, diffusion models all use this framework.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
Module 0: Course Framework & Workshop Setup
Who Is an LLM Engineer? The AI Engineering Career Ladder from Junior to Staff
Start LearningModule 0: Course Framework & Workshop Setup
Course Philosophy: Why This Path, Why This Order — The Skeleton of an 8-Month Curriculum
Start LearningModule 0: Course Framework & Workshop Setup