Maximum likelihood
Kunna härleda ML-skattningar och förklara att minimera cross-entropy är att maximera likelihood.
Förkunskaper
Intuition
Maximum likelihood svarar på frågan: vilka parametervärden gör den data jag faktiskt observerade mest sannolik?
Du singlar slant 10 gånger och får 7 krona. Vilket är mest troligt?
| Sannolikheten för just 7 av 10 | |
|---|---|
| 0,3 | 0,009 |
| 0,5 | 0,117 |
| 0,7 | 0,267 |
| 0,9 | 0,057 |
Svaret är 0,7 — andelen i datan. Det känns självklart, men det följer av principen snarare än att antas.
Och principen är allmän. Nästan varje förlustfunktion i maskininlärning är en maximum likelihood-skattning under något antagande om bruset. Det är inte en samling knep — det är en princip med olika specialfall.
Härledning
Likelihood är sannolikheten för datan, sedd som en funktion av parametrarna:
Vi maximerar i stället log-likelihood, av två skäl: produkten blir en summa (deriverbar term för term), och underflödet försvinner. Logaritmen är växande, så maximum ligger på samma ställe.
Exempel 1 — myntet. Med krona av :
Exempel 2 — normalfördelningens medelvärde.
Att maximera detta är att minimera summan av kvadrerade avvikelser. Alltså:
Minsta kvadratmetoden är maximum likelihood under antagandet att bruset är normalfördelat.
Deriverar man får man — stickprovsmedelvärdet.
Exempel 3 — klassificering. Med och modellen :
Det negativa av detta är binär korsentropi. Alltså:
Att minimera korsentropi är att maximera likelihood under en Bernoulli-modell.
Tabellen som knyter ihop allt:
| Antagande om bruset | ML ger förlusten |
|---|---|
| Normalfördelat | MSE |
| Laplace-fördelat | MAE (absolut fel) |
| Bernoulli | binär korsentropi |
| Kategoriskt | korsentropi |
| Poisson | Poisson-deviance |
Och regularisering har samma ursprung. Lägger man till en prior och maximerar posteriorn i stället (MAP) blir en gaussisk prior exakt L2-regularisering, och en Laplace-prior exakt L1. De är alltså inte påklistrade straff utan följden av en antagen fördelning på parametrarna.
ML:s egenskaper: konsistent (konvergerar mot sanningen med mer data) och asymptotiskt effektiv (ingen skattare är bättre i gränsen). Men inte alltid väntevärdesriktig — ML-skattningen av normalfördelningens varians delar med , inte , och underskattar därför systematiskt.
Kod
import numpy as np
from scipy.optimize import minimize_scalar
# 1. Myntet: log-likelihood och dess maximum
k, n = 7, 10
def neg_ll(p):
if not 0 < p < 1:
return np.inf
return -(k * np.log(p) + (n - k) * np.log(1 - p))
for p in (0.3, 0.5, 0.7, 0.9):
print(f" p={p} L={np.exp(-neg_ll(p)):.4f}")
print("ML-skattning:", round(minimize_scalar(neg_ll, bounds=(1e-6, 1-1e-6),
method="bounded").x, 4)) # 0.7
# 2. Normalfördelning: ML ger medelvärdet, och variansen med n (inte n-1)
rng = np.random.default_rng(0)
x = rng.normal(loc=5.0, scale=2.0, size=50)
print(round(x.mean(), 4), round(float(x.var(ddof=0)), 4), round(float(x.var(ddof=1)), 4))
# ML-medel ML-varians (/n) väntevärdesriktig (/n-1)
# ML-variansen underskattar systematiskt — visa med upprepning
bias = [rng.normal(5, 2, 20).var(ddof=0) for _ in range(20000)]
print(round(float(np.mean(bias)), 3), "mot sant värde 4.0") # ~3.80
# 3. Minsta kvadrat ÄR maximum likelihood under normalt brus
xs = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
ys = np.array([2.1, 3.9, 6.2, 7.8, 10.1])
def neg_ll_linjar(params, sigma=1.0):
k_, m_ = params
res = ys - (k_ * xs + m_)
return 0.5 * np.sum(res**2) / sigma**2 + len(xs) * np.log(sigma)
from scipy.optimize import minimize
ml = minimize(neg_ll_linjar, [0.0, 0.0]).x
mk = np.polyfit(xs, ys, 1)
print(np.round(ml, 4), np.round(mk, 4)) # [1.99 0.03] [1.99 0.03] — identiska
# 4. Korsentropi ÄR negativ log-likelihood
y = np.array([1, 0, 1, 1])
phat = np.array([0.9, 0.2, 0.8, 0.6])
bce = -np.mean(y * np.log(phat) + (1 - y) * np.log(1 - phat))
ll = np.sum(y * np.log(phat) + (1 - y) * np.log(1 - phat))
print(round(float(bce), 4), round(float(-ll / len(y)), 4)) # samma tal
Behärskning innebär
- Härleder en ML-skattning
- Använder log-likelihood och vet varför
- Kopplar ML till korsentropi och MSE
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Mathematics for Machine Learning (Deisenroth m.fl.) — fri att läsa online (författarnas utgåva)
- scikit-learn User Guide (BSD-3) — BSD-3-Clause
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0