MLE, MAP, Posterior: Modelleme Dilinin Grameri — Pretrain Loss'un Matematiksel Kökü
LLM pretrain loss'unun bir Maximum Likelihood Estimation (MLE) objective olduğunu, fine-tuning'in matematiksel olarak Bayesian güncelleme olduğunu, regularization'ın MAP'a karşılık geldiğini gözden geçir. Cross-entropy = NLL ilişkisi, prior seçimi, conjugate priors.
Şükrü Yusuf KAYA
40 dakikalık okuma
Orta🎓 Modelleme'nin gramerini öğreniyoruz
Bu derste şu denklemi tek bir cümlede özetleyeceğiz: 'LLM pretrain loss = -log likelihood = cross-entropy = NLL'. Bunu kavradığında, paper okumak çok daha kolay olur. Sıklıkla göreceksin: 'biz şu objective'i optimize ediyoruz' ve sen 'aha, bu MLE' diyebileceksin.
Ders Haritası#
- Likelihood: parametre verildiğinde verinin olasılığı
- MLE: parametre nasıl seçilir
- MLE → Cross-entropy → NLL denklikleri
- MAP: prior eklenince ne değişir
- MAP = MLE + regularization denkliği (LLM weight decay!)
- Posterior: tam Bayesian sonuç
- Conjugate priors: matematik kolaylığı
- LLM bağlamında: pretrain = MLE, fine-tuning = Bayes update
- Bayesian Deep Learning (kısa) — niye yaygın değil
- Pratik: PyTorch ile MLE, regularization eklemek
1. Likelihood — Verinin Parametreye Göre Olasılığı#
Olasılık: parametre sabit, veriyi öğrenmiyoruz → (D = veri, θ = parametre).
Likelihood: aynı şey, ama bu sefer θ'yı bilmediğimiz, veri elimizde olduğu durum → .
P(D | θ)L(θ | D) = P(D | θ)Aynı matematiksel ifade — sadece farklı yorum. Likelihood fonksiyonu parametre uzayında gezer.
IID veri için#
D = {x_1, x_2, ..., x_N} bağımsız ve özdeş dağılımlı (i.i.d.):
Çarpım, çoğu sayısal işlemde underflow verir (çok küçük sayıların çarpımı). Bu yüzden log-likelihood kullanırız:
Log toplamı toplam log → çarpımdan toplamaya geçtik, sayısal olarak çok daha stabil.
2. MLE — Maximum Likelihood Estimation#
"En iyi parametre, gözlemlenen veriyi en olası kılan parametredir." — istatistiksel öğrenmenin atası.
Örnek 1: Coin flip#
Veri: 10 atış, 7 yazı (1), 3 tura (0). Hangi p (yazı olasılığı) en iyi?
P(D | p) = p^7 * (1-p)^3 log L(p) = 7 log p + 3 log(1-p) d/dp log L = 7/p - 3/(1-p) = 0 => 7(1-p) = 3p => p = 7/10 = 0.7
Şaşırtıcı değil: MLE coin için deneysel sıklık. Frekansçı yorumu doğal olarak verir.
Örnek 2: Gaussian mean#
N örnek (σ biliniyor). MLE for μ?
x_1, ..., x_N ~ N(μ, σ²)log L(μ) = -N/2 log(2πσ²) - Σ(x_i - μ)² / (2σ²) d/dμ log L = Σ(x_i - μ) / σ² = 0 => μ_MLE = (1/N) Σ x_i (örnek ortalaması)
Yine doğal: MLE for Gaussian mean = sample mean.
3. MLE → Cross-Entropy → NLL Denklikleri#
LLM pretrain loss'un kalbi. Sırayla göstereceğiz.
Categorical model için#
Bir token üzerinden olasılık dağılımı: = (z = logits).
x_tP(x_t | x_{<t}; θ)softmax(z)Likelihood (tek örnek):
Log-likelihood:
Negative log-likelihood (NLL):
Şimdi cross-entropy ile karşılaştır. True dağılım (one-hot, target'ta 1) ile model dağılımı arasında cross-entropy:
qpÇünkü one-hot olduğu için yalnızca target index'inde 1, gerisi 0. Yani:
qCümle olarak: cross-entropy loss = NLL = -log likelihood.
Tüm sequence için#
Pretrain loss:
Bu, autoregressive language modelin NLL objective'idir. Aynı zamanda MLE çünkü onu minimize etmek log-likelihood'ı maksimize etmekle eşdeğer. PyTorch'un fonksiyonu tam olarak bunu hesaplıyor (her token için).
F.cross_entropySonuç (göz alıcı denklik)#
LLM pretrain loss = NLL = -log P(D | θ) = MLE objective × (-1)
Demek ki "modeli pretrain et" demek matematiksel olarak "MLE ile parametre fit et" demektir.
python
import torchimport torch.nn.functional as F # Sentetik: 1 batch, 5 token, vocab=10torch.manual_seed(0)B, T, V = 1, 5, 10logits = torch.randn(B, T, V, requires_grad=True)targets = torch.tensor([[2, 5, 1, 9, 0]]) # Yol 1: cross_entropyloss_ce = F.cross_entropy(logits.view(-1, V), targets.view(-1))print("Cross-entropy:", loss_ce.item()) # Yol 2: log_softmax + NLLlog_probs = F.log_softmax(logits, dim=-1)loss_nll = F.nll_loss(log_probs.view(-1, V), targets.view(-1))print("NLL:", loss_nll.item()) # Yol 3: manuel — log p(target)manual = 0.0for b in range(B): for t in range(T): tok = targets[b, t] manual += -log_probs[b, t, tok]manual /= (B * T)print("Manual -log p(target):", manual.item()) # Hepsi aynı!# Cross-entropy: 2.4502# NLL: 2.4502# Manual -log p(target): 2.4502Cross-entropy = NLL = -log p(target) — üç yol, tek sonuç.
4. MAP — Maximum A Posteriori#
MLE sadece veriye bakar, ön bilgi yok. Eğer parametre üzerinde bir prior varsa, Bayes:
P(θ)Bunu maksimize eden θ:
MAP ≠ MLE çünkü prior var#
Eğer uniform (özel bir tercih yok) → MAP = MLE.
Eğer informative ise → MAP, MLE'den farklı bir θ verir.
P(θ)P(θ)Örnek: Gaussian prior + MLE#
θ ~ N(0, σ_prior²)MAP objective:
İlk terim NLL; ikinci terim (with ). Bu L2 regularization (weight decay)!
λ ||θ||²λ = 1/(2σ²)Sonuç (kritik)#
MAP with Gaussian prior = MLE + L2 regularization (weight decay).
Weight decay kullanıyorsan, örtük olarak Bayesian'sın — modelin küçük weight'lere prior atıyorsun.
Benzer şekilde:
- Laplace (double-exponential) prior → L1 regularization (sparsity)
- Spike-and-slab prior → variable selection
- Cauchy prior → robust regularization
python
import torchimport torch.nn as nn # Standart eğitim: cross-entropy + L2 regularizationmodel = nn.Linear(10, 5)opt = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=0.01)# weight_decay = λ (Gaussian prior strength)# AdamW: ∇L = ∇NLL + λθ# Bayesian yorumda: θ_t+1 = θ_t - η(∇NLL + λθ)# Yani her step'te θ'yı sıfıra doğru biraz çekiyoruz (prior etkisi) # Bu eşdeğerdir: arg max [log P(D|θ) + log N(θ | 0, 1/λ)] # Eğer fine-tuning yapıyorsan:# Prior = pretrain edilmiş weights (θ₀)# log P(θ) = -||θ - θ₀||² / (2σ²)# Bu "L2-SP" (L2 starting point) regularization# Otomatik catastrophic forgetting'i engellerWeight decay'in Bayesian yorumu.
5. Posterior — Tam Bayesian Sonuç#
MAP "posterior'un modu"nu verir (tek nokta tahmini). Ama posterior aslında bir dağılımdır:
Niye sadece mod değil tam dağılım?#
- Uncertainty quantification: parametremiz hakkında ne kadar emin?
- Predictive distribution: gelecek tahminlerinde belirsizlik
- Bayesian model averaging: tek model değil, posterior'a göre ağırlıklı ensemble
Pratikte zor: P(D) hesabı#
P(D) = ∫ P(D | θ) P(θ) dθÇözümler:
- Conjugate priors (sonraki bölüm)
- MCMC (Markov Chain Monte Carlo) — sample from posterior
- Variational Inference — posterior'a parametrik bir yaklaşım fit et (VI, VAE'nin temeli)
- Laplace approximation — posterior'u MAP etrafında Gaussian olarak yaklaş
6. Conjugate Priors — Matematik Kolaylığı#
Eğer prior ve likelihood çarpıldığında posterior aynı aile dağılım çıkıyorsa, prior conjugate denir. Bu, hesabı çok kolaylaştırır.
P(θ)P(D | θ)Önemli conjugate pair'ler#
| Likelihood | Conjugate Prior | Posterior |
|---|---|---|
| Bernoulli | Beta | Beta (sayım güncellemesi) |
| Categorical | Dirichlet | Dirichlet |
| Gaussian (μ known σ) | Gaussian on μ | Gaussian on μ |
| Gaussian (σ known μ) | Inverse-Gamma on σ | Inverse-Gamma on σ |
| Poisson | Gamma | Gamma |
| Exponential | Gamma | Gamma |
Örnek: Beta-Bernoulli güncellemesi#
Yazı atış: .
Prior: .
x_i ~ Bernoulli(p)p ~ Beta(α, β)n_y yazı, n_t tura görüldükten sonra:
Yorum: prior "pseudo-counts" (α-1 yazı, β-1 tura) gibi davranıyor. Gerçek veriyle topluyoruz, posterior çıkıyor.
Bu online Bayesian güncelleme'nin temelini oluşturur — her yeni veriyle posterior'u kolayca güncellersin.
python
import torchimport torch.distributions as dist # Prior: Beta(2, 2) — hafifçe coin'in dengeli olduğuna inanıyoruzalpha_prior, beta_prior = 2.0, 2.0 # Veri: 7 yazı, 3 turan_y, n_t = 7, 3 # Posterior (conjugate): Beta(α + n_y, β + n_t)alpha_post = alpha_prior + n_ybeta_post = beta_prior + n_t # Posterior'un istatistikleripost = dist.Beta(alpha_post, beta_post)print(f"Posterior mean: {post.mean.item():.4f}")# = (α+n_y) / (α+β+N) = 9/14 = 0.643# MLE'de p = 7/10 = 0.7'ye karşı # 95% credible intervalsamples = post.sample((10000,))print(f"95% CI: [{samples.quantile(0.025).item():.3f}, {samples.quantile(0.975).item():.3f}]")# Yaklaşık: [0.38, 0.88] # Uncertainty bilgisi — MLE point estimate (0.7) bu nüansı kaybederBeta-Bernoulli conjugate güncelleme + uncertainty quantification.
7. LLM Bağlamında — Pretrain = MLE, Fine-tune = Bayes Update#
Pretrain: pure MLE#
Pretrain hedefi:
= MLE on pretrain corpus. Prior yok (random initialization).
Fine-tune: Bayes update (örtük)#
Fine-tuning sırasında:
- Prior: (pretrain weight'leri)
θ_pre - Likelihood: fine-tuning verisi üzerinde NLL
- Posterior: fine-tune sonrası weight'ler
Matematiksel olarak: pretrain'i prior gibi davran ve fine-tuning verisiyle güncelle.
Catastrophic forgetting'i önlemek#
Fine-tuning'de model pretrain bilgisini unutabilir. Bunu önlemek için L2-SP (L2 around starting point):
Bu Bayesian yorumda: prior P(θ) = N(θ_pre, σ²I). Model θ_pre'den çok uzaklaşmamaya cezalandırılıyor.
LoRA: prior'un en zeki biçimi#
LoRA, fine-tuning'i ile sınırlıyor — yani parameter güncellemesini düşük-rank uzayda zorluyor. Bu çok kuvvetli bir prior: "ΔW düşük-rank olmalı" (bkz. Ders 1.2).
θ = θ_pre + BASonuç#
Pretrain, fine-tuning, regularization, LoRA — hepsi Bayesian framework'te uyumlu olarak yorumlanabilir.
Bu kavrayış sana paper okurken, fine-tuning kararları verirken, yeni teknikleri sezgisel olarak değerlendirme gücü verir.
8. Mini Egzersizler#
-
MLE for Gaussian σ²:.
x_i ~ N(0, σ²)için MLE'yi bul.σ² -
NLL vs MLE: "Loss'u minimize etmek, log-likelihood'u maksimize etmektir" — bunun matematiksel olarak neden eşit olduğunu 2 cümlede açıkla.
-
Weight decay = MAP: AdamW'da. Bunu Bayesian olarak yorumla: parametre üzerindeki prior'un standard deviation'ı ne?
weight_decay=0.1 -
Catastrophic forgetting: Pretrain edilmiş Llama 3 8B'i 10K Türkçe örnek ile fine-tune ediyorsun. L2-SP olmadan model İngilizce'yi unutuyor. Hangi prior eklersen unutmaz?
-
Conjugate analiz: Beta(1,1) (uniform prior) ile 100 atış 50 yazı 50 tura. Posterior'un mean ve mode'u ne? MLE ile karşılaştır.
9. Bayesian Deep Learning — Niye Yaygın Değil?#
Tam Bayesian inference büyük NN'lerde pratik olarak imkânsız:
- 10B parametreli model için posterior 10B-dimensional dağılım
- MCMC: milyonlarca sample gerekiyor
- Variational Inference: posterior approximation'ı bile büyük
Yaklaşımlar:
- MC Dropout (Gal & Ghahramani 2016): dropout'u inference'da da kullan, multiple forward → uncertainty
- Deep Ensembles: farklı seed'lerle eğitilmiş modeller → ensemble = approximate posterior
- Bayesian last layer: sadece son katmana Bayesian
- Laplace approximation: trained model + posterior'u MAP'ta Gaussian olarak yaklaş
LLM'lerde bunlar çok az kullanılıyor — pratikte point estimate (MLE/MAP) yeterli, uncertainty için başka mekanizmalar (logprobs, temperature, sampling) var.
Bu Derste Neler Öğrendik?#
✓ Likelihood = P(D | θ), data fixed, parameter free
✓ MLE = θ that maximizes likelihood (∝ minimize NLL)
✓ Cross-entropy = NLL = -log P(target) — tek aile, üç isim
✓ LLM pretrain loss = MLE objective — autoregressive language modeling
✓ MAP = MLE + log prior — Bayes'in mode'u
✓ Weight decay (L2) = MAP with Gaussian prior — örtük Bayesian
✓ Posterior = full distribution over θ, not just mode
✓ Conjugate priors: Beta-Bernoulli, Dirichlet-Categorical, etc.
✓ Fine-tuning = Bayesian update: pretrain prior + fine-tune likelihood → posterior
✓ LoRA = strong prior: ΔW low-rank
Modül 1 yarısı tamamlandı 🎉#
Modül 1'de buraya kadar:
- 1.1 Lineer cebir
- 1.2 Matris ayrıştırmaları (SVD, PCA, LoRA)
- 1.3 Türev, gradient, matrix calculus
- 1.4 Chain rule + mini-autograd
- 1.5 Olasılık temelleri
- 1.6 MLE, MAP, posterior
Sıradaki Ders#
1.7 — Entropi, Cross-Entropy, KL Divergence, Mutual Information
Bilgi teorisinin temelleri. KL divergence neden symmetric değil, neden RLHF'in arka planında, neden VAE'lerin loss'unda. Mutual information ve maksimum entropi prensibi.
Sık Sorulan Sorular
Var, birkaç: (1) **Overfitting**: küçük veride MLE veriye fazla fit eder (regularization gerek). (2) **Singular solutions**: tek bir Gaussian'da N=1 veriye fit edersek σ²=0 → infinite likelihood (saçma sonuç). (3) **No uncertainty**: tek nokta tahmini, parametre belirsizliği yok. (4) **Sensitive to outliers**: bir aykırı değer MLE'yi sürükler. Bu yüzden modern ML: MLE + regularization = MAP, ya da Bayesian deep learning'in approximate versiyonları (MC Dropout, ensembles).
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Modül 0: Kurs Çerçevesi ve Atölye Kurulumu
LLM Engineer Kimdir? Junior'dan Staff'a Yapay Zekâ Mühendisliği Kariyer Haritası
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu
Kurs Felsefesi: Neden Bu Yol, Neden Bu Sıra — 8 Aylık Müfredatın İskeleti
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu