Salta ai contenuti

Massima verosimiglianza: fittare modelli massimizzando la probabilità

Un solo principio — scegli i parametri che rendono i dati osservati i più probabili — sta sotto ai minimi quadrati, alla regressione logistica e alla loss che ogni rete neurale minimizza durante il training. Questo capitolo costruisce quel principio dalla funzione di verosimiglianza fino alle sue proprietà asintotiche, e mostra perché “addestrare un modello” è quasi sempre, sotto la superficie, massima verosimiglianza.

Apri la documentazione di una qualsiasi libreria di machine learning e troverai una funzione chiamata loss. Per un classificatore si chiama quasi sempre cross-entropy. Per una regressione si chiama mean squared error. Sono presentate come scelte di ingegneria, oggetti da importare e minimizzare. Quasi mai la documentazione dice da dove vengono, e quasi mai chi le usa lo sa.

Vengono dallo stesso posto. La cross-entropy e l’errore quadratico medio non sono due invenzioni separate: sono due facce di un unico principio statistico, formulato negli anni Venti del Novecento, molto prima che esistesse il deep learning. Quel principio si chiama massima verosimiglianza, e l’idea è disarmante nella sua semplicità: tra tutti i valori possibili dei parametri di un modello, scegli quelli che rendono i dati che hai effettivamente osservato i più probabili. Niente di più.

Questo capitolo serve a tre cose. La prima è dare un nome e una struttura a un gesto che chi costruisce sistemi compie ogni giorno senza riconoscerlo: ogni model.fit(), ogni epoca di training, ogni step di gradient descent su una loss è, meccanicamente, un passo verso la stima di massima verosimiglianza. La seconda è chiarire una distinzione concettuale che quasi tutti i corsi saltano e che produce errori sottili: la differenza tra probabilità e verosimiglianza, due parole che il linguaggio comune tratta come sinonimi e che la statistica tiene rigorosamente separate. La terza è collocare la massima verosimiglianza in mezzo a una scala — tra i minimi quadrati che la precedono e la stima bayesiana che la estende — perché è da quella posizione centrale che si capisce davvero cosa fa, e dove smette di funzionare.

C’è anche una ragione più severa. La massima verosimiglianza è uno strumento potente ma con un difetto preciso: con pochi dati fitta il rumore, e quando il modello assunto è sbagliato produce stime sicure di sé e false. Chi minimizza una loss senza sapere che sta facendo massima verosimiglianza non ha modo di vedere arrivare quei fallimenti. Chi lo sa, sì.

C’è infine un guadagno di chiarezza che vale la pena anticipare. Una volta che si vede la massima verosimiglianza dietro le loss, una serie di scelte che nei corsi di machine learning sembrano arbitrarie smettono di esserlo. Perché un classificatore usa la cross-entropy e una regressione l’errore quadratico? Non per convenzione: perché l’una è la negative log-likelihood di un modello Bernoulliano e l’altra di un modello gaussiano. Perché la regolarizzazione L2 ha quella forma precisa? Perché corrisponde a un prior gaussiano sui pesi. La massima verosimiglianza è il filo che lega insieme queste decisioni: impararla significa smettere di memorizzare ricette e iniziare a derivarle.

Per buona parte dell’Ottocento la statistica non aveva un principio generale di stima. Aveva ricette. Per stimare l’orbita di un pianeta dai dati astronomici si usavano i minimi quadrati di Gauss e Legendre; per altri problemi si usava la probabilità inversa, una forma di ragionamento che oggi chiameremmo bayesiano, in cui si partiva da una distribuzione a priori sui parametri — spesso assunta uniforme senza dichiararlo — e la si aggiornava con i dati. Ogni classe di problemi aveva il suo argomento ad hoc. Mancava un’idea unica che dicesse, dato un modello qualsiasi, come stimarne i parametri.

Quell’idea arriva con Ronald Fisher (statistico e genetista britannico, 1890-1962, una delle figure fondanti della statistica moderna e della genetica di popolazioni). Fisher presenta la procedura numerica già nel 1912, in un articolo scritto da studente — “On an absolute criterion for fitting frequency curves”, pubblicato sul Messenger of Mathematics — dove propone di scegliere i parametri che massimizzano quello che chiama, all’epoca, la “probabilità” dei dati osservati. Ma è nel 1922, nel paper On the mathematical foundations of theoretical statistics (Philosophical Transactions of the Royal Society A, vol. 222, pp. 309-368), che il metodo prende la forma definitiva e il nome che porta ancora.

Quel paper del 1922 è uno dei documenti fondativi della disciplina. In poche decine di pagine Fisher introduce, tutti insieme: la distinzione netta tra il parametro (la quantità ignota del mondo che si vuole stimare) e la statistica (il numero calcolato dai dati per stimarlo); i concetti di consistenza, sufficienza, efficienza e informazione; e il termine likelihood, verosimiglianza. La scelta della parola è deliberata e polemica. Fisher voleva separare nettamente la sua quantità dalla “probabilità inversa”, che considerava un errore concettuale: scrive esplicitamente che propone il termine “likelihood” perché, rispetto al parametro, “it is not a probability, and does not obey the laws of probability” — non è una probabilità e non ne segue le leggi.

La rottura con la probabilità inversa non fu un dettaglio terminologico. Per oltre un secolo, da Laplace in poi, il modo standard di ragionare all’indietro dai dati ai parametri era stato bayesiano: si partiva da una distribuzione a priori — quasi sempre uniforme, e quasi sempre senza dichiararlo come un’assunzione — e la si aggiornava. Fisher trovava intollerabile che una conclusione scientifica dipendesse da un prior scelto per comodità. La verosimiglianza era la sua risposta: una quantità che misura il supporto dei dati a un parametro senza postulare nulla a priori. È utile sapere, però, che la storia non finisce con un vincitore: la statistica bayesiana è tornata, e il prossimo capitolo mostrerà che la massima verosimiglianza e l’approccio bayesiano non sono avversari ma due punti di una stessa scala. Fisher vinse la battaglia terminologica del 1922; la guerra metodologica resta aperta, ed è una delle più vive della disciplina.

La probabilità inversa non era l’unica concorrente. C’era anche il metodo dei momenti, formalizzato da Karl Pearson (matematico britannico, 1857-1936, fra i fondatori della statistica moderna) sul finire dell’Ottocento. L’idea è diretta: un modello prevede certi “momenti” — la media teorica, la varianza teorica — come funzioni dei parametri; si calcolano gli stessi momenti sui dati e si scelgono i parametri che fanno combaciare i due. È semplice da applicare e a volte dà la stessa risposta della massima verosimiglianza, ma in generale produce stime meno efficienti — sfrutta meno l’informazione contenuta nei dati. Il confronto tra il metodo dei momenti di Pearson e la massima verosimiglianza di Fisher fu, negli anni Venti, uno scontro generazionale aspro, e fu la massima verosimiglianza a prevalere come metodo di riferimento, proprio in virtù dell’efficienza asintotica che questo capitolo descriverà. Sapere che esisteva un’alternativa aiuta a non leggere la massima verosimiglianza come “l’unica cosa ovvia da fare”: era una scelta, e ha vinto per ragioni precise.

Nel grafo di questa wiki, questo è l’undicesimo capitolo della Parte V e ne è uno snodo. Poggia sulle distribuzioni comuni — Bernoulli e normale soprattutto — perché la verosimiglianza si scrive a partire da una distribuzione assunta; sulla nozione di campione, popolazione e stimatore; sulla stima puntuale, di cui la MLE è un caso particolare con proprietà sue; e sul teorema del limite centrale, che sorregge le sue proprietà asintotiche. Guarda indietro alla regressione, di cui spiega il “perché” probabilistico, e guarda avanti verso map-bayesiano (in preparazione), che la estende, e verso statistica-e-ml (in preparazione), dove il legame con il machine learning diventa il tema centrale.

Prima di qualsiasi formula, tre angoli distinti. Il primo — il principio del “miglior sospettato” — risponde alla domanda cosa stiamo facendo, e si capisce con un esempio di lanci di moneta. Il secondo — la verosimiglianza come misura di distanza tra distribuzioni — risponde alla domanda perché funziona. Il terzo — la verosimiglianza come somma di sorprese — riformula la stessa cosa nel linguaggio che la rende calcolabile, e prepara il legame diretto con la loss del deep learning.

Ti porgo una moneta e ti chiedo: qual è la probabilità che esca testa? Non lo sai. La lanci dieci volte. Esce testa sette volte, croce tre.

Adesso ragiona al contrario. Considera una moneta perfettamente equa, p=0,5p = 0{,}5. Con una moneta così, ottenere proprio sette teste su dieci è possibile, ma non particolarmente probabile. Considera ora una moneta truccata con p=0,7p = 0{,}7. Con questa, sette teste su dieci è l’esito più tipico che ti aspetteresti. E una moneta con p=0,95p = 0{,}95? Quasi sempre darebbe nove o dieci teste; sette sarebbe un risultato un po’ sfortunato.

Hai appena fatto, a mente, massima verosimiglianza. Hai preso i dati come fissi — sette teste, è successo, non si discute — e hai fatto scorrere il parametro pp lungo tutti i suoi valori possibili, chiedendoti per ciascuno: quanto bene questo valore spiega ciò che ho visto? La stima di massima verosimiglianza è il valore del parametro che spiega meglio di tutti i dati osservati. È il “miglior sospettato”: tra tutti i mondi possibili — tutte le monete con tutte le probabilità di testa — quello sotto cui i dati che hai raccolto erano i meno sorprendenti.

C’è una sottigliezza che vale fissare subito, perché è la sorgente di metà delle confusioni su questo argomento. Quando facevi scorrere pp e valutavi “quanto bene spiega i dati”, non stavi calcolando la probabilità che pp valga 0,7. Quella sarebbe una domanda diversa, e per rispondere servirebbe sapere quanto credevi probabili i vari valori di pp prima di lanciare la moneta. Stavi calcolando, per ogni pp, la probabilità che quel particolare pp assegna ai dati osservati. È un numero che si legge nella direzione opposta a quella abituale: di solito i parametri sono dati e si calcola la probabilità dei dati; qui i dati sono dati e si fa variare il parametro. Quel numero, letto in questa direzione, è la verosimiglianza. Il prossimo passo del capitolo lo rende preciso.

Secondo angolo: la verosimiglianza come distanza dalla verità

Sezione intitolata “Secondo angolo: la verosimiglianza come distanza dalla verità”

Il primo angolo dice cosa si ottimizza. Il secondo dice perché ottimizzare proprio quello sia una buona idea, e lo fa cambiando completamente punto di vista.

Immagina che esista una distribuzione vera, sconosciuta, che genera i tuoi dati: chiamala pp^*. È la moneta reale, con la sua reale probabilità di testa. Tu non hai accesso a pp^*; hai accesso solo a un campione estratto da essa. La tua famiglia di modelli — tutte le monete con tutti i possibili pp — è un catalogo di distribuzioni candidate, e quasi certamente pp^* non è nel catalogo in forma esatta. Il tuo compito è scegliere, dal catalogo, la candidata più vicina a pp^*.

“Vicina” in che senso? Esiste una misura di distanza tra distribuzioni, la divergenza di Kullback-Leibler (un numero non negativo che vale zero solo quando le due distribuzioni coincidono, e cresce quanto più una distribuzione è “sorpresa” dai dati generati dall’altra). Si può dimostrare che, man mano che il campione cresce, massimizzare la verosimiglianza media equivale a minimizzare la divergenza di Kullback-Leibler tra pp^* e il modello scelto. In parole povere: la massima verosimiglianza è la procedura che cerca, nel catalogo dei modelli disponibili, quello informazionalmente più vicino alla verità.

Questo angolo regala due intuizioni che il primo non dava. La prima: se la verità è nel catalogo, con abbastanza dati la massima verosimiglianza la trova — è il contenuto della proprietà di consistenza. La seconda, più importante per capire i limiti: se la verità non è nel catalogo — il modello è “mal specificato” — la massima verosimiglianza non fallisce in modo rumoroso, fa una cosa precisa e silenziosa: converge alla candidata più vicina alla verità nel senso di Kullback-Leibler. Quella candidata può essere comunque lontana dal vero. Un modello sbagliato fittato per massima verosimiglianza dà una risposta confidente e stabile; semplicemente non è la risposta giusta. Ci torneremo nella sezione sui limiti.

Terzo angolo: la verosimiglianza come somma di sorprese

Sezione intitolata “Terzo angolo: la verosimiglianza come somma di sorprese”

Un terzo modo di vedere la stessa cosa, più vicino a come la macchina la calcola davvero. Riprendi la log-verosimiglianza nella forma che avrà tra poco: una somma, (θ)=ilogp(xiθ)\ell(\theta) = \sum_i \log p(x_i \mid \theta). Considera un singolo addendo, logp(xiθ)\log p(x_i \mid \theta).

La quantità p(xiθ)p(x_i \mid \theta) è la probabilità che il modello, con parametro θ\theta, assegna al dato xix_i. Se il modello considera xix_i molto plausibile, quella probabilità è vicina a 1 e il suo logaritmo è vicino a 0. Se il modello considera xix_i improbabile, la probabilità è piccola e il logaritmo è un numero negativo grande in valore assoluto. Il negativo di quel logaritmo, logp(xiθ)-\log p(x_i \mid \theta), è una quantità che la teoria dell’informazione chiama sorpresa: misura quanto il modello è stupito di vedere xix_i. Un dato atteso non sorprende — sorpresa vicina a zero; un dato che il modello credeva quasi impossibile sorprende moltissimo.

Allora la negative log-verosimiglianza, (θ)=i(logp(xiθ))-\ell(\theta) = \sum_i \big(-\log p(x_i \mid \theta)\big), è la sorpresa totale del modello di fronte all’intero campione. E la massima verosimiglianza, che minimizza questa quantità, è la ricerca del parametro che rende il modello meno sorpreso possibile dai dati che ha effettivamente visto. È la stessa idea del primo angolo — il miglior sospettato — letta come un bilancio: ogni dato presenta un conto di sorpresa, si sceglie il parametro che minimizza la somma dei conti. Questo framing tornerà letteralmente nella sezione sulle applicazioni, quando la “sorpresa totale” si rivelerà essere, parola per parola, la cross-entropy loss del deep learning.

I tre angoli descrivono la stessa operazione da tre lati. Il miglior sospettato dice cosa si cerca: il parametro che spiega meglio i dati. La distanza dalla verità dice perché cercarlo è sensato: quel parametro è il modello più vicino, in senso informazionale, alla realtà. La somma di sorprese dice come lo si calcola in pratica: minimizzando un bilancio additivo. Tenere insieme i tre rende intuitivi risultati che, dalla sola formula, sembrerebbero arbitrari — e prepara ogni ponte che il resto del capitolo costruirà, dalla regressione al deep learning.

Adesso il formalismo, costruito un pezzo alla volta. Niente in questa sezione va oltre la somma, il prodotto e la derivata.

Si parte sempre da un modello: una famiglia di distribuzioni indicizzata da un parametro θ\theta. Il parametro può essere un singolo numero (la probabilità di testa di una moneta) o un vettore (la media e la varianza di una gaussiana, o i milioni di pesi di una rete). Per ogni valore di θ\theta, il modello assegna a un dato xx una densità o una massa di probabilità p(xθ)p(x \mid \theta) — si legge “probabilità di xx dato θ\theta”.

Hai osservato nn dati, x1,x2,,xnx_1, x_2, \dots, x_n, che assumi indipendenti e identicamente distribuiti (i.i.d.: ognuno estratto dalla stessa distribuzione, senza influenzarsi a vicenda). La probabilità che il modello, con un certo θ\theta, assegna all’intero campione è il prodotto delle probabilità dei singoli dati — è il prodotto perché sono indipendenti:

L(θ)=p(x1,,xnθ)=i=1np(xiθ)L(\theta) = p(x_1, \dots, x_n \mid \theta) = \prod_{i=1}^n p(x_i \mid \theta)

Questa è la funzione di verosimiglianza. La formula è la stessa della probabilità congiunta del campione, ma il punto di vista è ribaltato: i dati xix_i sono numeri fissi, già osservati, e l’argomento che varia è θ\theta. LL è una funzione del parametro, non dei dati.

Vale la pena soffermarsi su questo ribaltamento, perché è la distinzione che Fisher considerava il cuore di tutto.

La stessa espressione p(xθ)p(x \mid \theta) vive due vite a seconda di cosa tieni fisso. Se fissi θ\theta e lasci variare xx, ottieni una distribuzione di probabilità: dice quanto sono probabili i diversi dati sotto un modello noto, e — essendo una distribuzione — somma o integra esattamente a 1. Se fissi xx (i dati osservati) e lasci variare θ\theta, ottieni la funzione di verosimiglianza: dice quanto bene i diversi parametri spiegano i dati osservati, e — questo è il punto — non somma né integra a 1. La verosimiglianza non è una distribuzione di probabilità sul parametro.

La conseguenza pratica è che non si può dire “c’è il 70% di probabilità che pp valga 0,7” guardando la verosimiglianza. La verosimiglianza non assegna probabilità ai valori del parametro; assegna a ogni valore del parametro la probabilità che quel valore dà ai dati. Per trasformare la verosimiglianza in una vera distribuzione di probabilità sul parametro serve un ingrediente in più — una distribuzione a priori — e quello è il passaggio alla statistica bayesiana, oggetto del prossimo capitolo. La frase di Fisher resta la formulazione più netta: della popolazione, conoscendola, esprimi la tua incertezza sul campione in termini di probabilità; del campione, conoscendolo, esprimi la tua incertezza sulla popolazione in termini di verosimiglianza.

La definizione dice: cerca il θ\theta che massimizza L(θ)L(\theta). In pratica non si massimizza mai LL direttamente. Si massimizza il suo logaritmo, la log-verosimiglianza:

(θ)=logL(θ)=logi=1np(xiθ)=i=1nlogp(xiθ)\ell(\theta) = \log L(\theta) = \log \prod_{i=1}^n p(x_i \mid \theta) = \sum_{i=1}^n \log p(x_i \mid \theta)

Il passaggio chiave è la seconda uguaglianza: il logaritmo di un prodotto è la somma dei logaritmi. Un prodotto diventa una somma. Le ragioni per fare questo cambio sono tre, e conviene tenerle distinte.

La prima è numerica. L(θ)L(\theta) è un prodotto di nn numeri ciascuno compreso tra 0 e 1. Per nn grande — e in machine learning nn è facilmente milioni — quel prodotto diventa minuscolo: collassa sotto il più piccolo numero rappresentabile in virgola mobile e l’aritmetica del calcolatore lo arrotonda a zero secco. Si chiama underflow. La log-verosimiglianza, essendo una somma, non soffre di questo: somma numeri negativi di taglia ragionevole, e resta rappresentabile.

La seconda è analitica. Per trovare il massimo di una funzione liscia si calcola la sua derivata e la si pone a zero. La derivata di una somma è la somma delle derivate — facile. La derivata di un prodotto di nn fattori è un’espressione che esplode. Trasformare il prodotto in somma rende il calcolo del massimo trattabile a mano.

La terza è statistica, e la vedremo nella sezione asintotica: la log-verosimiglianza, e in particolare la sua curvatura, è la quantità che compare naturalmente nei teoremi che descrivono quanto è precisa una stima.

Resta un dubbio legittimo: massimizzare logL\log L invece di LL non cambia il risultato? No, e la ragione è che il logaritmo è una funzione monotona crescente — se a>ba > b allora loga>logb\log a > \log b. Una trasformazione monotona può cambiare la forma di una funzione, alzarla o abbassarla, ma non sposta la posizione del suo massimo: il punto θ\theta più alto resta il più alto anche dopo il logaritmo. Si massimizza una funzione diversa, con lo stesso massimizzatore.

Un’ultima convenzione, onnipresente nel codice. Gli ottimizzatori sono scritti per minimizzare. Quindi invece di massimizzare (θ)\ell(\theta) si minimizza il suo negativo, la negative log-likelihood (NLL), (θ)-\ell(\theta). Massimizzare la verosimiglianza, massimizzare la log-verosimiglianza, minimizzare la negative log-likelihood: sono tre modi di dire la stessa operazione. La NLL, per costruzione, è una loss function — un numero da rendere piccolo.

Messa in procedura, la massima verosimiglianza per un modello generico è questa:

funzione mle(dati, modello):
# ell(theta) = somma dei log p(x_i | theta)
funzione neg_log_lik(theta):
totale = 0
per ogni x in dati:
totale = totale - log(modello.densita(x, theta))
ritorna totale
# trova theta che minimizza la negative log-likelihood
theta_hat = minimizza(neg_log_lik, valore_iniziale)
ritorna theta_hat

In due casi su tre, in pratica, minimizza non è una chiamata numerica: per modelli semplici la derivata di neg_log_lik si annulla in un punto che si scrive in forma chiusa, e quel punto è la stima. I prossimi esempi mostrano entrambe le situazioni.

Vale la pena dare un nome alla derivata della log-verosimiglianza, perché è l’oggetto attorno a cui ruota tutta la meccanica. La derivata di (θ)\ell(\theta) rispetto a θ\theta si chiama score function, o funzione punteggio:

U(θ)=θ=i=1nθlogp(xiθ)U(\theta) = \frac{\partial \ell}{\partial \theta} = \sum_{i=1}^n \frac{\partial}{\partial\theta}\log p(x_i \mid \theta)

La score misura la pendenza della log-verosimiglianza in ogni punto: dice in quale direzione e quanto ripidamente \ell sta salendo. La stima di massima verosimiglianza è, per i modelli lisci, il punto dove la score si annulla — U(θ^)=0U(\hat\theta) = 0 — perché in cima a una collina la pendenza è zero. Risolvere derivata = 0 significa, detto in modo preciso, risolvere U(θ)=0U(\theta) = 0.

Due fatti rendono la score più di una notazione comoda. Il primo: nel punto vero θ0\theta_0, il valore atteso della score è esattamente zero — in media, sui campioni che la natura genera davvero, la log-verosimiglianza è già “in pari” al parametro vero. Il secondo: la varianza della score, sempre valutata al vero, è proprio l’informazione di Fisher I(θ)I(\theta) che incontreremo nella sezione asintotica. La score ha media zero e varianza pari all’informazione: è da queste due proprietà che discendono, con qualche passaggio, la consistenza e la normalità asintotica della massima verosimiglianza. Per gli scopi di questo capitolo basta tenere l’immagine: la score è la bussola che punta verso il massimo, e quanto è “agitata” attorno al vero misura quanta informazione i dati contengono.

Vale la pena fare una volta, per intero e lentamente, il passaggio dalla verosimiglianza alla log-verosimiglianza su un caso, perché è la manipolazione che si ripete identica in ogni modello. Prendi la moneta: ogni lancio è Bernoulli, p(xip)p(x_i\mid p) vale pp se xix_i è testa e 1p1-p se è croce. La verosimiglianza dell’intero campione è il prodotto sui lanci, L(p)=ip(xip)L(p) = \prod_i p(x_i\mid p).

Se nel campione ci sono ss teste e nsn-s croci, quel prodotto raggruppa ss fattori uguali a pp e nsn-s fattori uguali a 1p1-p: L(p)=ps(1p)nsL(p) = p^s (1-p)^{n-s}. Ora applica il logaritmo. Due regole elementari fanno tutto il lavoro: il logaritmo di un prodotto è la somma dei logaritmi, log(ab)=loga+logb\log(ab) = \log a + \log b; e il logaritmo di una potenza porta giù l’esponente, log(ak)=kloga\log(a^k) = k\log a. La prima trasforma log(ps(1p)ns)\log\big(p^s (1-p)^{n-s}\big) in log(ps)+log((1p)ns)\log(p^s) + \log\big((1-p)^{n-s}\big); la seconda trasforma quei due termini in slogp+(ns)log(1p)s\log p + (n-s)\log(1-p). Il prodotto di nn fattori è diventato una somma di due termini.

Questo è il motivo concreto per cui il logaritmo è il primo gesto in ogni problema di massima verosimiglianza: trasforma un prodotto — difficile da derivare, soggetto a underflow — in una somma su cui la derivata si distribuisce termine per termine. La stessa coppia di regole, applicata alla densità della gaussiana o alla massa della Poisson, fa collassare l’esponenziale e i fattoriali e lascia espressioni polinomiali maneggevoli. La meccanica della massima verosimiglianza è, in larga parte, l’algebra elementare dei logaritmi applicata con metodo.

Quando la score U(θ)=0U(\theta) = 0 si risolve con carta e penna, si ottiene una formula esplicita per θ^\hat\theta: si dice che la stima ha forma chiusa. È il caso della moneta e della gaussiana, nei prossimi esempi. Quando l’equazione non è risolvibile in forma esplicita — la regressione logistica, le misture, le reti neurali — si ricorre a un metodo iterativo: si parte da un valore θ\theta qualsiasi e lo si aggiorna ripetutamente seguendo la score, finché la pendenza non si annulla. Il gradient descent del deep learning è esattamente questo: un’ottimizzazione numerica della (negative) log-verosimiglianza, un passo dopo l’altro, perché per una rete neurale la forma chiusa non esiste. La differenza tra “fittare una gaussiana” e “addestrare un modello da un miliardo di parametri” non è nel principio — è massima verosimiglianza in entrambi i casi — ma solo nel fatto che nel primo caso la score si annulla in un punto scrivibile, nel secondo no.

Quattro esempi eterogenei: due analitici risolti a mano — la moneta e la gaussiana, quest’ultima con una sorpresa sulla varianza — uno in codice che mostra cosa accade quando la forma chiusa non c’è, e uno breve sulla Poisson che svela un pattern comune a tutti. Ogni esempio applica la stessa ricetta: scrivi la verosimiglianza come prodotto, passa al logaritmo, derivata a zero o ottimizzazione numerica.

Una nota sul perché la massima verosimiglianza, da sola, non si ferma

Sezione intitolata “Una nota sul perché la massima verosimiglianza, da sola, non si ferma”

Prima degli esempi vale fissare un punto strutturale, perché spiega in anticipo metà della sezione sui limiti. La massima verosimiglianza ha un solo obiettivo: rendere i dati osservati il più probabili possibile. Non ha, dentro di sé, alcun termine che la dissuada dal seguire i dati ovunque vadano, rumore compreso. Se aumenti il numero di parametri del modello — più coefficienti nella regressione, più strati nella rete — la massima verosimiglianza li userà tutti per aderire ancora meglio ai dati di training, e la verosimiglianza sul training crescerà sempre, monotonamente. Un modello con tanti parametri quanti i dati può raggiungere una verosimiglianza perfetta passando esattamente per ogni punto.

Quella verosimiglianza perfetta non è una buona notizia: è overfitting. La massima verosimiglianza ottimizza la probabilità dei dati che ha visto, non di quelli che vedrà. Da sola, non possiede un freno. Il freno va aggiunto da fuori — limitando la complessità del modello, tenendo da parte dati di validazione, oppure, come mostrerà l’ultima sezione, incorporando un prior che penalizza i parametri estremi. Tenere a mente questa assenza di freno è il modo giusto di leggere sia gli esempi che seguono sia i loro fallimenti.

Riprendi la moneta. Modello: ogni lancio è una prova Bernoulli con parametro pp, la probabilità di testa. Hai osservato nn lanci, di cui ss teste. La probabilità di una singola testa è pp, di una singola croce è 1p1-p. La verosimiglianza dell’intero campione, prodotto sulle prove indipendenti, è:

L(p)=ps(1p)nsL(p) = p^s \,(1-p)^{n-s}

La log-verosimiglianza trasforma le potenze in prodotti:

(p)=slogp+(ns)log(1p)\ell(p) = s \log p + (n-s)\log(1-p)

Adesso si deriva rispetto a pp e si pone a zero. La derivata di logp\log p è 1/p1/p, quella di log(1p)\log(1-p) è 1/(1p)-1/(1-p):

ddp=spns1p=0\frac{d\ell}{dp} = \frac{s}{p} - \frac{n-s}{1-p} = 0

Risolvendo per pp — moltiplica in croce, s(1p)=(ns)ps(1-p) = (n-s)p, da cui s=nps = np — si ottiene:

p^MLE=sn\hat p_{\text{MLE}} = \frac{s}{n}

La stima di massima verosimiglianza della probabilità di testa è la frequenza osservata di teste. Per i sette su dieci dell’esempio iniziale, p^=0,7\hat p = 0{,}7: esattamente il “miglior sospettato” trovato a intuito. Il risultato sembra ovvio — certo che si stima una probabilità con una frequenza — ma non era affatto garantito: è un teorema, e la massima verosimiglianza lo dimostra invece di assumerlo.

Per dare consistenza ai numeri: con s=7s = 7 e n=10n = 10, la verosimiglianza valutata in tre punti vale L(0,5)=0,570,530,00098L(0{,}5) = 0{,}5^7 \cdot 0{,}5^3 \approx 0{,}00098, L(0,7)=0,770,330,00222L(0{,}7) = 0{,}7^7 \cdot 0{,}3^3 \approx 0{,}00222, L(0,95)=0,9570,0530,0000087L(0{,}95) = 0{,}95^7 \cdot 0{,}05^3 \approx 0{,}0000087. Il valore 0,70{,}7 rende i dati osservati più di due volte più probabili del valore 0,50{,}5, e oltre duecento volte più probabili del valore 0,950{,}95. La curva di verosimiglianza, valutata punto per punto, conferma l’intuizione: ha il suo massimo proprio in 0,70{,}7.

Una sottigliezza che vale chiarire, perché ricorre: se si modella il numero totale di teste con una distribuzione binomiale invece dei singoli lanci con nn Bernoulli, la verosimiglianza guadagna un fattore (ns)\binom{n}{s} — il coefficiente binomiale che conta in quanti ordini diversi le ss teste possono cadere. Quel fattore dipende solo dai dati, non da pp. Nel logaritmo diventa una costante additiva, e una costante additiva non sposta il punto di massimo. La stima è la stessa, p^=s/n\hat p = s/n, che si parta dai singoli lanci o dal conteggio aggregato: i termini che non dipendono dal parametro sono zavorra che la massima verosimiglianza ignora. È un’osservazione piccola ma generale — riconoscere e scartare i termini costanti in θ\theta semplifica quasi ogni derivazione.

Esempio 2: la gaussiana, e una sorpresa sulla varianza

Sezione intitolata “Esempio 2: la gaussiana, e una sorpresa sulla varianza”

Modello: i dati sono i.i.d. da una distribuzione normale con media μ\mu e varianza σ2\sigma^2, entrambe ignote. La densità della normale per un singolo dato è p(xiμ,σ2)=12πσ2e(xiμ)2/(2σ2)p(x_i\mid\mu,\sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}}\,e^{-(x_i-\mu)^2/(2\sigma^2)}. Vale la pena vedere come l’esponenziale, che renderebbe il prodotto un incubo, si dissolve sotto il logaritmo.

Il logaritmo del singolo fattore è logp(xiμ,σ2)=12log(2πσ2)(xiμ)22σ2\log p(x_i\mid\mu,\sigma^2) = -\frac12\log(2\pi\sigma^2) - \frac{(x_i-\mu)^2}{2\sigma^2} — il logaritmo dell’esponenziale è semplicemente il suo esponente, e l’esponenziale sparisce. Sommando su tutti gli nn dati, la log-verosimiglianza dell’intero campione è:

(μ,σ2)=i=1nlogp(xiμ,σ2)=n2log(2πσ2)    12σ2i=1n(xiμ)2\ell(\mu, \sigma^2) = \sum_{i=1}^n \log p(x_i\mid\mu,\sigma^2) = -\frac{n}{2}\log(2\pi\sigma^2) \;-\; \frac{1}{2\sigma^2}\sum_{i=1}^n (x_i - \mu)^2

Guarda il secondo termine, l’unico che dipende da μ\mu. È una somma di quadrati di scarti, con un segno meno davanti. Massimizzare \ell rispetto a μ\mu significa rendere quel termine negativo il più grande possibile, cioè rendere la somma (xiμ)2\sum (x_i-\mu)^2 il più piccola possibile. La media che minimizza la somma dei quadrati degli scarti è la media aritmetica del campione:

μ^MLE=xˉ=1ni=1nxi\hat\mu_{\text{MLE}} = \bar x = \frac{1}{n}\sum_{i=1}^n x_i

Qui è già visibile, in miniatura, il legame con i minimi quadrati: massimizzare una verosimiglianza gaussiana è minimizzare una somma di quadrati. La prossima sezione lo generalizza.

Massimizzando ora rispetto a σ2\sigma^2 — si deriva \ell rispetto a σ2\sigma^2, si pone a zero, si risolve — esce:

σ^MLE2=1ni=1n(xixˉ)2\hat\sigma^2_{\text{MLE}} = \frac{1}{n}\sum_{i=1}^n (x_i - \bar x)^2

Qui c’è la sorpresa. Questa formula divide per nn. Ma il capitolo sulla stima puntuale ha mostrato che lo stimatore non distorto della varianza divide per n1n-1 — la correzione di Bessel. I due non coincidono. La massima verosimiglianza, per la varianza di una gaussiana, produce uno stimatore distorto: sottostima sistematicamente la varianza vera.

La ragione intuitiva: la formula MLE misura gli scarti rispetto a xˉ\bar x, che è la media stimata dagli stessi dati. E xˉ\bar x è, per costruzione, il punto che rende la somma dei quadrati degli scarti minima possibile. Misurare la dispersione attorno al punto che minimizza quella dispersione la fa apparire un po’ più piccola di quanto sia attorno alla media vera. Dividere per n1n-1 invece che per nn è la correzione esatta di quel piccolo sconto sistematico.

La lezione è importante e va contro un’aspettativa diffusa: la massima verosimiglianza non garantisce stime non distorte su campioni finiti. Le sue garanzie, come vedremo, sono asintotiche — valgono nel limite di tanti dati. Per nn grande lo sconto nn contro n1n-1 è irrilevante; per nn piccolo no.

Un caso numerico rende visibile lo sconto. Supponi cinque misure di latenza, in secondi: 0,8, 1,2, 0,5, 2,1, 0,90{,}8,\ 1{,}2,\ 0{,}5,\ 2{,}1,\ 0{,}9. La media campionaria è μ^=xˉ=1,1\hat\mu = \bar x = 1{,}1. La somma degli scarti al quadrato vale (xi1,1)2=0,09+0,01+0,36+1,00+0,04=1,50\sum (x_i - 1{,}1)^2 = 0{,}09 + 0{,}01 + 0{,}36 + 1{,}00 + 0{,}04 = 1{,}50. La stima MLE della varianza divide per n=5n = 5: σ^MLE2=1,50/5=0,30\hat\sigma^2_{\text{MLE}} = 1{,}50 / 5 = 0{,}30. La stima non distorta divide per n1=4n - 1 = 4: 1,50/4=0,3751{,}50 / 4 = 0{,}375. Con cinque soli dati lo scarto è del venticinque per cento — tutt’altro che trascurabile. Con cinquecento dati lo stesso rapporto nn contro n1n-1 produce uno scarto dello 0,2 per cento, e a quel punto la distinzione è solo accademica.

Esempio 3: quando non c’è forma chiusa — fit di una distribuzione esponenziale e di un caso scomodo

Sezione intitolata “Esempio 3: quando non c’è forma chiusa — fit di una distribuzione esponenziale e di un caso scomodo”

Nei due esempi precedenti la derivata si annullava in un punto scrivibile con carta e penna. Non è sempre così. Per la regressione logistica, per le misture, per le reti neurali, l’equazione derivata = 0 non ha soluzione esplicita e il massimo si cerca numericamente. Il codice seguente mostra entrambe le facce: un caso che ha forma chiusa (l’esponenziale) e la struttura generale dell’ottimizzazione numerica.

import numpy as np
from scipy.optimize import minimize
# dati: tempi di latenza (secondi) di 6 richieste a un servizio
latenze = np.array([0.8, 1.2, 0.5, 2.1, 0.9, 1.5])
# modello 1: esponenziale, parametro lambda (tasso).
# negative log-likelihood: -sum(log(lambda) - lambda * x)
def nll_esponenziale(lam):
return -np.sum(np.log(lam) - lam * latenze)
# l'esponenziale HA forma chiusa: lambda_hat = 1 / media
lambda_chiuso = 1.0 / latenze.mean()
# verifica per via numerica: stesso risultato
ris = minimize(nll_esponenziale, x0=[1.0], bounds=[(1e-6, None)])
lambda_numerico = ris.x[0]
print(lambda_chiuso, lambda_numerico) # ~0.857, ~0.857 -- coincidono

Per l’esponenziale la forma chiusa esiste (λ^=1/xˉ\hat\lambda = 1/\bar x, il reciproco della latenza media) e l’ottimizzatore numerico la riproduce: utile come controllo. Il valore aggiunto di minimize si vede quando la forma chiusa non esiste — basta cambiare nll_esponenziale con la negative log-likelihood di un modello qualsiasi, anche di una rete con milioni di parametri, e la struttura del codice non cambia: si scrive la NLL, si chiama un ottimizzatore.

Lo stesso schema rende visibile, in poche righe, la fragilità agli outlier che la sezione “Dove si rompe” discuterà. Fitta una gaussiana alle stesse latenze e poi rifittala dopo aver inserito un singolo valore anomalo:

# fit gaussiano: la MLE della media coincide con la media campionaria
mu_pulito = latenze.mean() # ~1.17
# una sola richiesta patologica entra nel campione
latenze_outlier = np.append(latenze, 40.0) # un timeout da 40 secondi
mu_sporco = latenze_outlier.mean() # ~6.70
print(mu_pulito, mu_sporco) # ~1.17 -> ~6.70: un solo dato sposta la stima di 6 volte

Un’unica osservazione anomala porta la stima della latenza tipica da circa 1,2 secondi a circa 6,7. La massima verosimiglianza sotto modello gaussiano non “ignora” l’outlier: lo prende sul serio, perché la gaussiana che ha assunto dichiara gli scarti grandi quasi impossibili, e l’unico modo di accomodare il timeout da 40 secondi senza violare quell’assunzione è spostare l’intera stima. Cambiare la distribuzione assunta — un modello a code pesanti, o la mediana al posto della media — cambierebbe radicalmente la robustezza. È un promemoria concreto che la stima dipende dal modello quanto dai dati.

C’è anche un caso che merita una riga, perché smonta l’idea che “massima verosimiglianza = derivare e porre a zero”. Per il modello uniforme U[0,θ]U[0,\theta] — dati estratti uniformemente tra 0 e un estremo ignoto θ\theta — la verosimiglianza è 1/θn1/\theta^n per ogni θ\theta abbastanza grande da contenere tutti i dati, e zero per θ\theta troppo piccolo. È una funzione che cresce avvicinandosi da destra al massimo dei dati osservati e poi cade di colpo a zero. Il suo massimo è θ^=maxixi\hat\theta = \max_i x_i, e si trova non derivando: la verosimiglianza non è nemmeno differenziabile nel punto di massimo. La derivata posta a zero è la scorciatoia per i casi lisci, non la definizione del metodo.

Un quarto esempio, breve, perché mette in luce un pattern. Modello: i dati sono conteggi i.i.d. da una distribuzione di Poisson con parametro λ\lambda — il numero di richieste che arrivano a un servizio in una finestra di un minuto, dieci minuti di osservazione. La massa di probabilità della Poisson per un conteggio kk è p(kλ)=eλλk/k!p(k\mid\lambda) = e^{-\lambda}\lambda^k / k!. La log-verosimiglianza, sommata sui dati, è (λ)=i(λ+kilogλlogki!)\ell(\lambda) = \sum_i (-\lambda + k_i\log\lambda - \log k_i!). Derivando rispetto a λ\lambda e ponendo a zero — il termine logki!\log k_i! non dipende da λ\lambda e scompare — si ottiene n+(iki)/λ=0-n + (\sum_i k_i)/\lambda = 0, da cui:

λ^MLE=1ni=1nki=kˉ\hat\lambda_{\text{MLE}} = \frac{1}{n}\sum_{i=1}^n k_i = \bar k

La stima del tasso medio di arrivi è la media dei conteggi osservati. A questo punto il pattern è inequivocabile: per la Bernoulli la MLE era la frequenza, per la gaussiana la media campionaria, per l’esponenziale il reciproco della media, per la Poisson di nuovo la media. Non è una coincidenza. Per un’intera classe di distribuzioni — la cosiddetta famiglia esponenziale, che include tutte quelle citate — la massima verosimiglianza si riduce a eguagliare una media empirica calcolata sui dati a una media teorica prevista dal modello. La massima verosimiglianza, su questa famiglia, è “il metodo dei momenti fatto bene”: una conferma che il principio, pur generale, su molti modelli concreti collassa nell’operazione più naturale possibile.

Conviene fissare il quadro che i quattro esempi disegnano insieme. Su modelli semplici la massima verosimiglianza dà esattamente la stima che il buon senso suggerirebbe — la frequenza, la media — e in questo non aggiunge nulla di sorprendente. Il suo valore non è nell’ingegnosità del risultato sui casi facili, ma in tre cose: dimostra che quelle stime di buon senso sono ottime invece di assumerlo; si applica meccanicamente anche ai modelli dove il buon senso non ha intuizioni — la regressione logistica, una rete neurale — dove l’unica guida è la procedura; e arriva con un corredo di proprietà asintotiche, oggetto della prossima sezione, che dicono quanto fidarsi della stima. È un principio che vale poco quando hai già la risposta e moltissimo quando non ce l’hai.

La massima verosimiglianza ha un difetto su campioni finiti — l’esempio 2 lo ha mostrato — ma una collezione di virtù nel limite di tanti dati. Sono queste virtù asintotiche a giustificare il suo ruolo centrale: il motivo per cui, tra i tanti modi possibili di stimare un parametro, è la massima verosimiglianza quella che si insegna per prima e che le librerie implementano di default. Non è la più semplice da calcolare né la più robusta; è quella con le migliori garanzie teoriche quando i dati abbondano. Le proprietà sono tre, e valgono sotto condizioni di regolarità — il modello è ben specificato, la verosimiglianza è liscia, il parametro vero non sta sul bordo dello spazio dei parametri. Ognuna di queste condizioni, quando salta, è una crepa: la sezione “Dove si rompe” le riprenderà una per una.

Consistenza. Man mano che nn cresce, θ^MLE\hat\theta_{\text{MLE}} converge in probabilità al parametro vero θ0\theta_0. Detto altrimenti: con abbastanza dati, la massima verosimiglianza colpisce il bersaglio. Non è scontato — uno stimatore mal costruito può convergere a un valore sbagliato — ed è la traduzione, dal lato dello stimatore, della stessa idea della legge dei grandi numeri.

Normalità asintotica. Non solo θ^\hat\theta tende al valore vero: la sua distribuzione campionaria — il modo in cui la stima oscilla da un campione all’altro — diventa, per nn grande, una gaussiana centrata sul vero. Formalmente, n(θ^θ0)\sqrt{n}\,(\hat\theta - \theta_0) tende in distribuzione a una normale. È questo risultato che permette di costruire intervalli di confidenza attorno a una stima di massima verosimiglianza: si sa che forma ha l’errore.

Efficienza asintotica. Tra tutti gli stimatori ragionevoli, la massima verosimiglianza è asintoticamente il più preciso possibile: la sua varianza raggiunge un limite inferiore teorico — il limite di Cramér-Rao — sotto il quale nessuno stimatore non distorto può scendere. La massima verosimiglianza non spreca informazione.

Per capire l’efficienza serve un’ultima nozione, l’informazione di Fisher, I(θ)I(\theta). L’idea è geometrica e si legge sulla curva della log-verosimiglianza. Considera la forma del picco. Un picco aguzzo — la log-verosimiglianza sale ripida, raggiunge il massimo, scende ripida — significa che i valori del parametro appena diversi da θ^\hat\theta spiegano i dati molto peggio: i dati discriminano nettamente, sono informativi, la stima è precisa. Un picco piatto — un altopiano largo attorno al massimo — significa che molti valori diversi del parametro spiegano i dati quasi altrettanto bene: i dati discriminano poco, la stima è incerta.

L’informazione di Fisher è la misura matematica di quanto è aguzzo quel picco: è, in media, la curvatura (la derivata seconda, cambiata di segno) della log-verosimiglianza al massimo. Tanta curvatura, tanta informazione, stima precisa. Il limite di Cramér-Rao lo dice in formula: la varianza di qualsiasi stimatore non distorto è almeno 1/(nI(θ))1/(n\,I(\theta)). L’informazione di Fisher è il pavimento dell’incertezza, e la massima verosimiglianza è lo stimatore che, nel limite, ci si appoggia sopra.

Un numero rende tangibile la catena. Per la moneta, l’informazione di Fisher di un singolo lancio vale I(p)=1/(p(1p))I(p) = 1/\big(p(1-p)\big). Con pp vicino a 0,50{,}5 l’informazione è bassa — circa 44 — e la varianza minima della stima è p(1p)/np(1-p)/n: la moneta più equa è, paradossalmente, la più difficile da stimare con precisione, perché ogni lancio dice poco. Con pp vicino a 00 o 11 l’informazione esplode: una moneta quasi sempre testa rivela il suo pp in pochi lanci. La formula 1/(nI(p))=p(1p)/n1/(n\,I(p)) = p(1-p)/n dice anche, in un colpo, che per dimezzare l’errore standard di una stima — che va come la radice della varianza — bisogna quadruplicare il numero di osservazioni. È la stessa legge della radice di nn che governa tutta la statistica campionaria: la massima verosimiglianza non la aggira, la eredita.

Conviene essere onesti sul perimetro di queste garanzie. “Asintotico” significa nel limite di nn che tende a infinito, e nessun dataset reale è infinito. Le proprietà asintotiche sono una bussola, non un certificato: dicono che con dati abbondanti la massima verosimiglianza si comporta in modo eccellente, ma non dicono quanti dati bastino in un caso concreto — quella soglia dipende dal modello e va verificata, non assunta. La sezione che segue è dedicata proprio a cosa succede quando quella soglia non è raggiunta, o quando le condizioni di regolarità che fanno funzionare i teoremi semplicemente non valgono.

Il motivo per cui questo capitolo è centrale e non un esercizio di storia: tre delle operazioni più comuni nel lavoro con i modelli sono massima verosimiglianza, anche quando nessuno la nomina.

La loss della regressione: minimi quadrati come massima verosimiglianza. Prendi il modello di regressione lineare, yi=β0+β1xi+εiy_i = \beta_0 + \beta_1 x_i + \varepsilon_i, e assumi che gli errori εi\varepsilon_i siano i.i.d. da una gaussiana di media zero e varianza costante σ2\sigma^2. Sotto questa assunzione, ogni yiy_i è una gaussiana centrata sul valore predetto y^i\hat y_i. La log-verosimiglianza dell’intero dataset, per l’esempio 2, contiene il termine 12σ2i(yiy^i)2-\frac{1}{2\sigma^2}\sum_i (y_i - \hat y_i)^2. Massimizzarla rispetto ai coefficienti β\beta significa minimizzare i(yiy^i)2\sum_i (y_i - \hat y_i)^2 — esattamente i minimi quadrati ordinari (OLS).

Questa non è un’analogia: è un’equivalenza dimostrabile, un teorema. OLS è la massima verosimiglianza sotto l’ipotesi di errori gaussiani omoschedastici. La conseguenza è illuminante: la scelta di elevare al quadrato lo scarto, in OLS, non è una comodità di calcolo né una preferenza estetica. È imposta dalla forma della gaussiana. Se assumessi errori distribuiti secondo una Laplace invece che una gaussiana, la massima verosimiglianza ti direbbe di minimizzare la somma dei valori assoluti degli scarti, non dei quadrati — una regressione diversa, più robusta agli outlier. La loss non è una scelta libera: è una conseguenza dell’assunzione sul rumore.

La loss del deep learning: cross-entropy come negative log-likelihood. Un classificatore neurale, dato un input xx, produce una distribuzione di probabilità pθ(yx)p_\theta(y \mid x) sulle classi possibili. Durante il training si minimizza la cross-entropy loss. Scrivila per esteso: per ogni esempio è logpθ(yixi)-\log p_\theta(y_i \mid x_i), il logaritmo negativo della probabilità che il modello assegna alla classe vera. Sommata sul dataset:

cross-entropy=i=1nlogpθ(yixi)=(θ)\text{cross-entropy} = -\sum_{i=1}^n \log p_\theta(y_i \mid x_i) = -\ell(\theta)

Il termine a destra è la negative log-likelihood. La cross-entropy loss è la negative log-likelihood del modello sui dati di training. Minimizzarla è massimizzare la verosimiglianza. La loss che ogni framework di deep learning chiama CrossEntropyLoss non è un’invenzione dell’era delle reti: è il principio di Fisher del 1922, riscritto. Ogni step di gradient descent su quella loss è un passo verso la stima di massima verosimiglianza dei pesi. Anche l’addestramento di un modello di linguaggio rientra qui: l’obiettivo di next-token prediction è la negative log-likelihood del token corretto data la sequenza precedente, sommata su un corpus enorme. Pre-addestrare un LLM è massima verosimiglianza su scala industriale.

Vale la pena vedere il legame su numeri concreti, perché chiude il cerchio con il terzo angolo dell’intuizione. Supponi un classificatore a tre classi e tre esempi di training. Per ognuno, il modello assegna alla classe vera una probabilità: 0,90{,}9 per il primo esempio, 0,60{,}6 per il secondo, 0,20{,}2 per il terzo — un modello che azzecca il primo, è incerto sul secondo, sbaglia il terzo. La cross-entropy totale è la somma delle sorprese: log0,9log0,6log0,20,105+0,511+1,609=2,225-\log 0{,}9 - \log 0{,}6 - \log 0{,}2 \approx 0{,}105 + 0{,}511 + 1{,}609 = 2{,}225. Il terzo esempio, quello che il modello considerava improbabile, contribuisce da solo per il settantadue per cento della loss. Il training muove i pesi nella direzione che abbassa questa somma — cioè che alza le probabilità assegnate alle classi vere, cioè che rende il modello meno sorpreso dai dati. È, parola per parola, la massima verosimiglianza dei pesi. Il “fitting” di una rete e il “fitting” della moneta dell’esempio 1 sono lo stesso gesto a scale diverse.

La regressione logistica. A metà strada tra i due casi precedenti c’è la regressione logistica, il modello standard per predire un esito binario — convertirà o no, è spam o no, il test passerà o no. Il modello produce, per ogni input, una probabilità tramite la funzione sigmoide, e i suoi coefficienti si stimano per massima verosimiglianza: si scrive la verosimiglianza Bernoulliana degli esiti osservati e la si massimizza. A differenza della moneta, qui la score U(θ)=0U(\theta) = 0 non ha soluzione in forma chiusa — i coefficienti compaiono dentro la sigmoide in modo non lineare — e si ricorre a un metodo iterativo (Newton-Raphson, o la sua variante chiamata IRLS). La loss che si minimizza è la negative log-likelihood Bernoulliana, che ha anche un nome suo: log loss, o cross-entropy binaria. La regressione logistica è quindi insieme un modello statistico classico e il “neurone con sigmoide” del deep learning: in entrambe le letture, addestrarla è massima verosimiglianza.

Fittare distribuzioni a dati di sistema. Fuori dal machine learning, la massima verosimiglianza è lo strumento standard per calibrare un modello probabilistico a dei dati osservati: una distribuzione di Poisson sul numero di richieste al minuto a un’API, un’esponenziale sui tempi di latenza (come nell’esempio 3), una gaussiana sugli errori di misura di un sensore. In tutti questi casi fit() chiama, sotto il cofano, una stima di massima verosimiglianza. Lo stesso vale per la stima dei parametri di una distribuzione usata per generare dati sintetici, o per il fitting di un modello di sopravvivenza ai tempi di guasto di un componente: ovunque ci sia un modello probabilistico e dei dati, la massima verosimiglianza è il modo di default per legarli.

La massima verosimiglianza è il principio di stima più usato al mondo, ma è uno strumento con bordi affilati. Conoscere i modi in cui si rompe vale quanto conoscere come funziona.

Un filo comune attraversa quasi tutti i fallimenti che seguono: la massima verosimiglianza ottimizza una cosa sola — la probabilità dei dati osservati — e non ha, dentro di sé, alcun meccanismo che la avverta quando quell’obiettivo la sta portando fuori strada. Non sa se i dati sono pochi, non sa se il modello assunto è sbagliato, non sa se le osservazioni sono correlate. Esegue il suo compito alla lettera e restituisce un numero. La responsabilità di sapere quando quel numero è affidabile resta interamente di chi lo usa. Le voci che seguono sono i casi in cui quel numero, pur essendo il massimo della verosimiglianza, non è una buona stima.

Overfitting con pochi dati. Le proprietà asintotiche — consistenza, efficienza — sono garanzie nel limite di tanti dati. Con nn piccolo non valgono, e la massima verosimiglianza fitta avidamente il rumore del campione. Il caso estremo è istruttivo: lanci una moneta una volta sola, esce testa. La massima verosimiglianza, fedele alla sua definizione, sceglie il pp che meglio spiega “una testa su un lancio”: p^=1/1=1\hat p = 1/1 = 1. Il modello stimato dichiara la croce impossibile. Con due lanci e due teste, ancora p^=1\hat p = 1. La massima verosimiglianza non ha alcun meccanismo interno che la trattenga da conclusioni così estreme: prende i dati alla lettera, e con pochi dati la lettera è rumore. Questo è esattamente il fallimento che il capitolo sulla stima puntuale chiama varianza alta dello stimatore.

Il caso non è accademico. Chi misura il tasso di successo di un agente su un piccolo set di task adversariali — dieci, venti casi — e ottiene “dieci su dieci” è tentato di riportare un’affidabilità del 100%. La massima verosimiglianza, presa alla lettera, lo autorizza: p^=1\hat p = 1. Ma con dieci osservazioni il vero pp potrebbe tranquillamente essere 0,8, e una sequenza di dieci successi su una moneta a p=0,8p = 0{,}8 ha comunque oltre il 10% di probabilità. Lo stimatore di massima verosimiglianza non sbaglia il calcolo: è la sua natura puntuale a non comunicare quanto poco quel numero sia vincolato dai dati. L’antidoto è la coppia stima-più-intervallo del capitolo sugli intervalli di confidenza, non un numero solo.

Misspecificazione del modello. La massima verosimiglianza cerca il parametro migliore dentro la famiglia di modelli che le hai dato. Se la verità non è in quella famiglia — hai assunto errori gaussiani ma sono a code pesanti, hai assunto una relazione lineare ma è curva — la massima verosimiglianza non protesta. Come anticipato nel secondo angolo dell’intuizione, converge silenziosamente alla “pseudo-verità”: il membro della tua famiglia più vicino al vero nel senso di Kullback-Leibler. Quel membro può essere arbitrariamente lontano dalla verità reale. Il pericolo è doppio: la stima è sbagliata, e gli intervalli di confidenza costruiti con l’informazione di Fisher nominale sono troppo stretti — il modello è confidente e in errore allo stesso tempo. Un modello mal specificato fittato per massima verosimiglianza è un bugiardo sicuro di sé.

Il fallimento si tocca con mano. Genera dati da una distribuzione a code pesanti e poi insisti a fittarci una gaussiana:

import numpy as np
rng = np.random.default_rng(0)
# distribuzione vera: Student con code pesanti, media 0
dati = rng.standard_t(df=2, size=500)
# il modello assunto, gaussiano: la MLE della media resta la media campionaria
mu_mle = dati.mean() # oscilla parecchio attorno a 0, campione dopo campione
sigma_mle = dati.std() # gonfiata dalle code, non descrive il "grosso" dei dati

La media campionaria resta uno stimatore consistente della media vera, ma la sua varianza è enormemente più alta di quella che la formula gaussiana 1/(nI)1/(nI) predirebbe — la gaussiana assunta non sa che le code pesanti producono valori estremi frequenti, e ogni intervallo di confidenza costruito su quell’assunzione è troppo stretto. La massima verosimiglianza non ha segnalato nulla: ha restituito due numeri puliti. È il modello assunto, non il metodo, ad aver mentito, ma il metodo non offre alcun avvertimento. Diagnosticare la misspecificazione richiede di guardare i residui, non l’output della stima.

Verosimiglianza illimitata. In certi modelli la verosimiglianza non ha un massimo finito: può crescere senza limite. L’esempio classico è la mistura di gaussiane. Si può piazzare il centro di una componente esattamente su un punto dei dati e far tendere la sua varianza a zero: la densità in quel punto esplode a infinito, e con essa la verosimiglianza. Il “massimo” globale è una soluzione degenere e priva di senso — una componente collassata su un singolo dato. La massima verosimiglianza pura, lì, va sorvegliata: si vincola lo spazio dei parametri, o si aggiunge una penalizzazione.

Massimi locali. Per modelli semplici la log-verosimiglianza ha un solo picco e l’ottimo globale è raggiungibile. Per modelli complessi — le reti neurali in primis — la log-verosimiglianza è un paesaggio accidentato, pieno di massimi locali. Il gradient descent ne raggiunge uno, e quale dipende da dove è partito. La “stima di massima verosimiglianza” che si ottiene addestrando una rete è quasi sempre un massimo locale, non il globale. In pratica funziona comunque ragionevolmente, ma è bene sapere che la garanzia teorica di trovare il massimo non si applica.

Sensibilità agli outlier. È un caso particolare di misspecificazione, ma così frequente da meritare una voce sua. Sotto assunzione di errori gaussiani la massima verosimiglianza diventa, come si è visto, minimizzazione di una somma di quadrati. Il quadrato amplifica gli scarti grandi: un singolo dato anomalo, lontano dagli altri, contribuisce alla loss in modo sproporzionato e tira la stima verso di sé. La massima verosimiglianza gaussiana è fragile agli outlier non per un difetto del metodo, ma perché l’assunzione gaussiana dice che gli scarti grandi sono quasi impossibili — e quando ne arriva uno, il modello “non ci crede” e si distorce per accomodarlo.

L’assunzione i.i.d. che salta. La verosimiglianza si scrive come prodotto delle densità dei singoli dati perché si assumono indipendenti. Quando i dati non lo sono — osservazioni correlate nel tempo, esempi di valutazione che condividono lo stesso prompt di base, log di richieste raggruppate per utente — quel prodotto non è più la probabilità congiunta corretta. La massima verosimiglianza ingenua, applicata lo stesso, sopravvaluta la quantità di informazione: tratta dati ridondanti come se fossero indipendenti, e dichiara una precisione che non ha. Riconoscere la struttura di dipendenza e scrivere la verosimiglianza giusta è spesso la parte difficile di un problema reale; ignorarla è uno dei modi più comuni di sovrastimare la propria certezza.

Parametro sul bordo dello spazio. I teoremi asintotici richiedono che il parametro vero stia all’interno dello spazio dei parametri, non sul suo bordo. Se il valore vero è proprio un estremo — una varianza che è davvero zero, una probabilità che è davvero 00 o 11 — la normalità asintotica salta: la distribuzione della stima si schiaccia contro il bordo e non diventa gaussiana. È il caso del modello uniforme dell’esempio 3, dove la MLE è il massimo dei dati e la sua distribuzione non è affatto normale. Le regole pratiche costruite sull’assunzione di normalità — intervalli di confidenza simmetrici, test standard — in questi casi danno risultati sbagliati senza preavviso.

Nessuna incertezza sulle predizioni. La massima verosimiglianza restituisce un singolo valore del parametro, una stima puntuale. Non dice quanto quel valore è affidabile, e soprattutto non propaga l’incertezza sul parametro nelle predizioni del modello. Un modello fittato per massima verosimiglianza fa predizioni con la stessa sicurezza che il campione sia stato di dieci dati o di dieci milioni. Nelle situazioni dove la coda della distribuzione conta — valutazione del rischio, eventi rari — questa sottostima dell’incertezza è pericolosa. È il limite che la statistica bayesiana, tenendo l’intera distribuzione del parametro invece del solo massimo, è costruita per superare.

Diversi di questi fallimenti — overfitting con pochi dati, sensibilità a modelli estremi — hanno un rimedio comune, e non è una toppa: è l’estensione naturale del metodo. Si chiama stima MAP.

La massima verosimiglianza guarda solo i dati. Risponde alla domanda “quale parametro spiega meglio ciò che ho visto?” e nient’altro. Ma spesso qualcosa sul parametro lo sai già, prima di vedere i dati. Sai che la probabilità di testa di una moneta presa a caso da un portafoglio è plausibilmente vicina a 0,5. Sai che i pesi di una rete ben addestrata tendono a non essere enormi. La massima verosimiglianza, per costruzione, ignora questa conoscenza.

La stima MAP (maximum a posteriori) la incorpora. Invece di massimizzare la sola verosimiglianza, massimizza la verosimiglianza moltiplicata per una distribuzione a priori p(θ)p(\theta), che codifica cosa credevi del parametro prima dei dati:

θ^MAP=argmaxθ    p(datiθ)verosimiglianza    p(θ)prior\hat\theta_{\text{MAP}} = \arg\max_\theta \;\; \underbrace{p(\text{dati}\mid\theta)}_{\text{verosimiglianza}} \;\cdot\; \underbrace{p(\theta)}_{\text{prior}}

Passando al logaritmo, il prodotto diventa somma: si massimizza (θ)+logp(θ)\ell(\theta) + \log p(\theta). Il termine logp(θ)\log p(\theta) è un addendo che premia o penalizza certi valori del parametro indipendentemente dai dati — è, letteralmente, un termine di regolarizzazione.

Da qui si vede la relazione esatta tra i due metodi, ed è una relazione di caso particolare, non di opposizione. Se la distribuzione a priori è uniforme — non sai nulla, ogni valore del parametro è a priori equiprobabile — allora logp(θ)\log p(\theta) è una costante, non influenza la posizione del massimo, e la stima MAP coincide esattamente con la massima verosimiglianza. La massima verosimiglianza è la stima MAP con prior piatto. Non sono il metodo frequentista contro il metodo bayesiano: sono due punti su una stessa scala. A un estremo, prior piatto, niente conoscenza pregressa: massima verosimiglianza pura. Spostandosi lungo la scala, prior via via più informativi, e la stima viene tirata sempre più verso ciò che il prior suggerisce.

Per riprendere la moneta con cui il capitolo è iniziato: la massima verosimiglianza, vista una sola testa, conclude p^=1\hat p = 1. La stima MAP con un prior che dice “le monete sono di solito eque” non lo permette: il prior tira la stima lontano dall’estremo, verso valori più moderati, e con un solo dato è il prior a dominare. Man mano che i dati si accumulano, però, la verosimiglianza diventa molto più informativa del prior e lo sopravanza: con diecimila lanci, qualunque prior ragionevole produce praticamente la stessa stima della massima verosimiglianza pura. Questo è il comportamento desiderabile — il prior conta quando i dati scarseggiano, svanisce quando i dati abbondano — ed è il motivo per cui la stima MAP è il rimedio naturale, non una toppa, ai fallimenti di overfitting visti nella sezione precedente.

Questa scala spiega anche, in un colpo, da dove vengono le regolarizzazioni del machine learning. Un prior gaussiano centrato in zero sui pesi di un modello aggiunge alla loss un termine proporzionale a θ2\|\theta\|^2: è la regolarizzazione L2, la ridge. Un prior di Laplace aggiunge un termine proporzionale a θ1\|\theta\|_1: è la regolarizzazione L1, il lasso. La penalizzazione che impedisce a un modello di overfittare non è un trucco ingegneristico aggiunto a parte — è la traduzione, nel linguaggio della massima verosimiglianza, di una credenza a priori sui parametri. Il capitolo map-bayesiano (in preparazione) sviluppa questa scala per intero; qui basta aver fissato che la massima verosimiglianza ne occupa un estremo, e che i suoi fallimenti con pochi dati sono esattamente ciò che gli altri punti della scala correggono.

Resta una distinzione che vale chiarire, perché la stima MAP non è il punto di arrivo. Anche MAP, come la massima verosimiglianza, restituisce un singolo numero: prende la moda della distribuzione posterior, il suo punto più alto, e butta via il resto. La stima bayesiana completa non collassa sul massimo: conserva l’intera distribuzione posterior del parametro, e con essa una misura onesta di quanto il parametro resta incerto dopo aver visto i dati. MAP è a metà strada — incorpora la conoscenza a priori ma rinuncia ancora alla distribuzione completa. Massima verosimiglianza, MAP, stima bayesiana piena: tre tappe di una stessa salita, dal “solo i dati, un solo numero” al “dati più credenze, l’intera incertezza”. Questo capitolo ha trattato la prima tappa; il prossimo affronta le altre due.

La massima verosimiglianza è semplice da enunciare e facile da fraintendere. Cinque fraintendimenti ricorrono più degli altri, e vale la pena nominarli esplicitamente.

Il primo: “la verosimiglianza è la probabilità che il parametro valga θ\theta. È il fraintendimento centrale, quello che Fisher coniò una parola apposta per evitare. La verosimiglianza è la probabilità dei dati, vista come funzione del parametro; non è una distribuzione di probabilità sul parametro, non integra a 1, e non autorizza frasi come “c’è il 70% di probabilità che pp valga 0,7”. Quella frase richiede un prior, e diventa lecita solo nel quadro bayesiano del prossimo capitolo.

Il secondo: “la massima verosimiglianza dà sempre stime non distorte”. No. La stima MLE della varianza di una gaussiana è distorta — divide per nn invece che per n1n-1 — e questo non è un’eccezione bizzarra ma il caso più comune che si incontra. Le buone proprietà della massima verosimiglianza sono asintotiche: emergono nel limite di tanti dati, non sono garantite su campioni finiti.

Il terzo: “passare al logaritmo cambia il risultato”. No. Il logaritmo è una funzione monotona crescente: cambia la forma della funzione da ottimizzare, la rende una somma invece di un prodotto, ma lascia esattamente dov’era la posizione del massimo. Si massimizza una funzione diversa con lo stesso massimizzatore. Lo stesso vale per il segno meno della negative log-likelihood: ribalta la curva, trasforma un massimo in un minimo, ma non sposta l’ascissa.

Il quarto: “la cross-entropy è una loss inventata dal deep learning”. No. La cross-entropy loss è, riga per riga, la negative log-likelihood del modello sui dati di training. Minimizzarla è fare massima verosimiglianza. Quello che i framework chiamano CrossEntropyLoss è il principio statistico di Fisher del 1922, ribattezzato. Lo stesso vale per l’errore quadratico medio, che è la negative log-likelihood sotto assunzione di rumore gaussiano.

Il quinto: “massima verosimiglianza e statistica bayesiana sono metodi rivali, l’uno frequentista, l’altro bayesiano”. È più produttivo vederli sulla stessa scala. La massima verosimiglianza è la stima MAP con prior uniforme; la stima MAP aggiunge un prior e diventa regolarizzazione; la stima bayesiana piena conserva l’intera distribuzione posterior. Non tre fazioni in lotta, ma tre tappe lungo un unico asse, con la massima verosimiglianza a un estremo.

Le cinque confusioni hanno una radice comune, e nominarla è il modo migliore di chiudere. La massima verosimiglianza è una procedura precisa con un perimetro preciso: trova il parametro che rende i dati osservati più probabili, e nulla di più. Tutti i fraintendimenti nascono dall’attribuirle qualcosa che non promette — una probabilità sul parametro, una garanzia di non-distorsione, una protezione dall’overfitting. Chi tiene a mente cosa la massima verosimiglianza fa e cosa non fa ha già la mappa per usarla bene e per sapere quando serve qualcos’altro.

  • Regressione: la retta come modello statistico — i minimi quadrati ordinari sono la massima verosimiglianza sotto l’ipotesi di errori gaussiani omoschedastici. La regressione fornisce il primo esempio concreto e completo del legame loss-verosimiglianza.
  • Stima puntuale: dare un numero al parametro ignoto — la massima verosimiglianza è uno stimatore, e va giudicata con i criteri di quel capitolo: bias, varianza, consistenza, efficienza. La varianza MLE della gaussiana è l’esempio canonico di stimatore distorto.
  • Le distribuzioni comuni — la verosimiglianza si scrive sempre a partire da una distribuzione assunta: Bernoulli, normale, Poisson, esponenziale sono le famiglie che si fittano per massima verosimiglianza.
  • Legge dei grandi numeri e teorema del limite centrale — la consistenza della massima verosimiglianza è la legge dei grandi numeri vista dallo stimatore; la normalità asintotica poggia sul teorema del limite centrale.
  • Intervalli di confidenza — la normalità asintotica e l’informazione di Fisher forniscono gli standard error con cui si costruiscono gli intervalli attorno a una stima di massima verosimiglianza.
  • map-bayesiano (in preparazione) — la stima MAP estende la massima verosimiglianza aggiungendo un prior; la massima verosimiglianza è il caso limite con prior uniforme, e le regolarizzazioni L1/L2 sono prior di Laplace e gaussiani.
  • statistica-e-ml (in preparazione) — la loss minimizzata nel machine learning è una negative log-likelihood; capire la massima verosimiglianza è capire perché un modello fittato senza attenzione produce overclaim.
  • Popolazione, campione, stimatore: la logica dell’incertezza — la distinzione parametro/statistica, introdotta proprio da Fisher nel 1922, è il vocabolario di base su cui la massima verosimiglianza è definita.
  • Fisher, R. A. (1922), “On the mathematical foundations of theoretical statistics”, Philosophical Transactions of the Royal Society A, vol. 222, pp. 309-368. Il paper fondante: introduce il termine “likelihood”, la distinzione parametro/statistica, consistenza, sufficienza, efficienza, informazione. Denso, ma storicamente decisivo.
  • Aldrich, J. (1997), “R. A. Fisher and the Making of Maximum Likelihood 1912-1922”, Statistical Science, 12(3), pp. 162-176. Ricostruzione storica accessibile di come Fisher arrivò al metodo, partendo dall’articolo del 1912 e rompendo con la probabilità inversa di Gauss e Laplace.
  • Voce “Maximum likelihood estimation” di Wikipedia — buon punto di partenza tecnico: forme chiuse per i modelli standard, enunciati delle proprietà asintotiche, limiti del metodo, riferimenti.
  • Raschka, S. (2022), “Losses Learned” (sebastianraschka.com) — espone con chiarezza l’equivalenza tra negative log-likelihood e cross-entropy loss, e perché minimizzare la cross-entropy in un classificatore neurale è fare massima verosimiglianza.
  • Voce “Cramér–Rao bound” di Wikipedia — per chi vuole vedere in dettaglio l’informazione di Fisher e il limite inferiore di varianza che la massima verosimiglianza raggiunge asintoticamente.