Calibrazione: quando un 70% vale davvero 70%
Un modello che dichiara probabilità 0.7 è calibrato solo se, su tutte le volte che dice 0.7, ha ragione esattamente sette volte su dieci. Questo capitolo costruisce la calibrazione dall’intuizione del meteorologo onesto fino al fenomeno per cui le reti neurali moderne, e gli LLM dopo RLHF, mentono con apparente precisione.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”Un classificatore non restituisce solo una decisione. Restituisce un numero: 0.93. Quel numero si presenta come una probabilità, ha la forma di una probabilità, vive nell’intervallo . Ma è davvero una probabilità?
La domanda non è pedanteria. Appena quel numero esce dal modello ed entra in una decisione viene trattato come probabilità: una soglia oltre la quale l’agente risponde da solo e sotto la quale chiama un umano, un costo atteso da minimizzare, un triage che ordina i pazienti per rischio. Se quel numero non è una probabilità, ogni calcolo a valle è sbagliato.
E lo è in modo silenzioso. Il modello non lancia eccezioni: continua a produrre numeri ben formattati che semplicemente non corrispondono alla realtà. Un errore che non si annuncia è peggiore di un errore che si schianta, perché nessuno lo va a cercare.
La calibrazione è la proprietà che distingue un numero di confidenza onesto da uno gonfiato. Un modello è calibrato se, raccolte tutte le predizioni a cui ha assegnato confidenza 0.7, esattamente il 70% di esse risulta corretto. È una promessa verificabile a posteriori, contando. Senza questa proprietà, “il modello è sicuro al 90%” è una frase vuota: non si sa se vale 0.9, 0.6 o 0.99.
C’è un motivo per cui questo capitolo arriva dopo maximum-likelihood e bootstrap e prima di statistica-e-ml (in preparazione). La calibrazione è l’anello che collega l’inferenza statistica al machine learning applicato: è l’esame con cui si verifica se le probabilità prodotte da un modello meritano di essere usate come probabilità.
Un risultato controintuitivo è al centro del capitolo. I modelli più accurati degli ultimi dieci anni - le reti neurali profonde, e in particolare gli LLM dopo l’allineamento - sono spesso peggio calibrati dei modelli piccoli e meno accurati che hanno sostituito. Accuratezza e onestà non vanno insieme da sole.
Contesto
Sezione intitolata “Contesto”La calibrazione nasce fuori dal machine learning, nella meteorologia. Glenn Brier, statistico dello U.S. Weather Bureau, pubblica nel 1950 sul Monthly Weather Review l’articolo Verification of Forecasts Expressed in Terms of Probability.
Il problema che affronta è concreto: come si valuta un previsore che, invece di dire “domani piove”, dice “domani piove con probabilità 0.3”? Non basta contare quante volte ha indovinato, perché una previsione probabilistica non viene mai esattamente “smentita” da un singolo giorno. Brier propone un punteggio - oggi noto come Brier score - che premia chi dichiara probabilità oneste e penalizza chi le gonfia. È la prima metrica costruita apposta per l’onestà probabilistica, non per l’accuratezza.
Per mezzo secolo la calibrazione resta materia di previsori del tempo e di scommettitori. Entra nel machine learning con i classificatori probabilistici classici. Nel 2005 Alexandru Niculescu-Mizil e Rich Caruana, ricercatori di Cornell, pubblicano Predicting Good Probabilities With Supervised Learning (ICML 2005).
Il loro contributo è una mappa delle distorsioni: metodi diversi sbagliano la calibrazione in forme diverse e caratteristiche. Le support vector machine schiacciano le probabilità verso il centro; il classificatore Naive Bayes le spinge verso gli estremi. E mostrano che queste distorsioni si possono correggere con tecniche di post-processing, senza riaddestrare il modello.
Il colpo di scena moderno arriva nel 2017. Chuan Guo, Geoff Pleiss, Yu Sun e Kilian Weinberger, della Cornell University, pubblicano On Calibration of Modern Neural Networks (ICML 2017). La scoperta: le reti neurali piccole degli anni ‘90 erano quasi perfettamente calibrate, ma le reti profonde moderne, molto più accurate, sono sistematicamente overconfident.
Il progresso in accuratezza ha portato con sé un regresso in onestà. Da quel paper la calibrazione diventa un sotto-campo attivo del deep learning. Con la diffusione degli LLM dal 2023 si riapre su un terreno nuovo: cosa significa “confidenza” per un modello che genera testo, e perché l’allineamento tramite RLHF sembra peggiorarla.
Nel grafo di questa wiki, il capitolo poggia su probabilità di base e softmax e sigmoid per la forma delle uscite di un classificatore, e su entropia e cross-entropy per le metriche. Guarda avanti verso la valutazione dei modelli e verso il decision-making sotto incertezza.
L’intuizione
Sezione intitolata “L’intuizione”Primo angolo: il meteorologo onesto
Sezione intitolata “Primo angolo: il meteorologo onesto”Un previsore del tempo dice ogni giorno una frase del tipo “30% di pioggia”. A fine anno prendi un foglio e fai una cosa semplice. Raccogli tutti i giorni in cui ha detto esattamente “30%”, li conti, e conti in quanti di quei giorni ha effettivamente piovuto.
Se ha detto “30%” in cento giorni e ha piovuto in trenta, quel previsore è calibrato sul livello 0.3. Ripeti per “70%”, per “10%”, per ogni livello che usa. Se la frazione di pioggia osservata coincide con la probabilità dichiarata a ogni livello, il previsore è calibrato.
Questa definizione operativa porta con sé due osservazioni che vale la pena fissare subito.
La prima: la calibrazione è una proprietà di gruppi di predizioni, non di singole predizioni. Un previsore che dice “30%” e poi non piove non ha sbagliato. Ha sbagliato solo se, su tutti i suoi “30%”, piove molto più o molto meno del 30% delle volte. La singola previsione probabilistica non è falsificabile; lo è la media su un gruppo. È lo stesso motivo per cui un giocatore d’azzardo non si giudica da una mano, ma da mille.
La seconda osservazione è più sottile: un previsore può essere perfettamente calibrato e completamente inutile. Immagina una città dove piove esattamente metà dei giorni dell’anno. Un previsore che dice “50%” ogni singolo giorno è calibrato in modo impeccabile - sui suoi “50%”, che sono tutti i giorni, piove davvero il 50% delle volte.
Ma non ha mai detto niente di utile: non distingue il giorno di sole dal giorno di temporale. Gli manca quella che si chiama risoluzione: la capacità di separare i casi, di dire numeri diversi quando le situazioni sono diverse.
Calibrazione e risoluzione sono due assi distinti. La calibrazione dice se i numeri sono onesti; la risoluzione dice se sono informativi. Il previsore ideale è onesto e informativo insieme. Tenere separati i due assi è la chiave per non confondere la calibrazione con la qualità complessiva di un modello.
Secondo angolo: il diagramma di affidabilità
Sezione intitolata “Secondo angolo: il diagramma di affidabilità”Lo stesso concetto diventa geometria. Disegna un piano cartesiano. Sull’asse orizzontale metti la confidenza che il modello dichiara; sull’asse verticale l’accuratezza che osservi davvero.
La calibrazione perfetta è una singola linea: la diagonale . Quando il modello dice 0.7, l’accuratezza osservata è 0.7; quando dice 0.9, è 0.9. Ogni punto sulla diagonale, nessuno fuori.
Per costruire il diagramma reale prendi tutte le predizioni del modello su un insieme di dati di cui conosci le risposte, e raggruppale in fasce di confidenza - dette bin. Per esempio dieci bin: le predizioni con confidenza tra 0 e 0.1, quelle tra 0.1 e 0.2, e così via fino a quelle tra 0.9 e 1.
Per ogni bin disegni un punto: l’ascissa è la confidenza media nel bin, l’ordinata è la frazione di predizioni corrette nel bin. Unendo i punti ottieni la curva di calibrazione, o reliability diagram.
Se la curva sta sulla diagonale, il modello è calibrato. Se sta sotto la diagonale, il modello è overconfident: per ogni livello di confidenza dichiarato, l’accuratezza reale è più bassa di quanto promesso - quando dice 0.9 ha ragione solo l’80% delle volte. Se sta sopra, è underconfident: è più bravo di quanto ammetta.
La distanza verticale tra la curva e la diagonale, bin per bin, è la miscalibrazione, e si legge a occhio. Il diagramma di affidabilità trasforma una proprietà statistica astratta in qualcosa che si guarda. È lo strumento diagnostico di base: prima di calcolare qualsiasi metrica scalare, conviene guardare la curva.
Terzo angolo: la scommessa equa
Sezione intitolata “Terzo angolo: la scommessa equa”C’è un terzo modo di vedere la calibrazione, ed è quello che spiega perché un numero mal calibrato fa perdere soldi. Immagina di scommettere usando le confidenze del modello come quote.
Il modello dice “0.8 che questa transazione è una frode”. Una scommessa è equa se la posta riflette esattamente la probabilità: chi punta sull’evento dovrebbe ricevere un guadagno proporzionale a quando ha ragione. Se il modello è calibrato, scommettere alle sue quote dà in media un guadagno nullo - nessuno dei due lati del banco viene derubato.
Ma se il modello è overconfident - dice 0.8 quando la frequenza reale è 0.6 - chiunque scommetta contro il modello vince sistematicamente. La miscalibrazione è una falla che un avversario può sfruttare, transazione dopo transazione, finché il banco non è svuotato.
Questo angolo non è solo retorica. La teoria delle decisioni costruisce le soglie ottimali proprio come scommesse: la scelta che minimizza il costo atteso è una scommessa alle quote date dalle probabilità del modello. Se le quote sono sbagliate, la soglia ottimale calcolata è la soglia ottimale di un gioco diverso da quello reale. La calibrazione è la condizione perché la matematica della decisione punti al bersaglio giusto.
Calibrazione non è accuratezza
Sezione intitolata “Calibrazione non è accuratezza”Questo è il fraintendimento da disinnescare prima di ogni formula. Accuratezza e calibrazione misurano due cose diverse e indipendenti.
L’accuratezza misura quante volte la classe scelta dal modello è quella giusta. Guarda solo la decisione: corretta o no.
La calibrazione misura se il numero di confidenza che accompagna la decisione è onesto. Non guarda se la decisione è giusta, ma se la sicurezza dichiarata corrisponde alla frequenza reale di successo.
Che siano indipendenti si vede con tre casi.
Un modello accurato ma mal calibrato: una rete che classifica correttamente il 95% delle immagini di un dataset, ma a ogni immagine assegna confidenza media 0.99. È bravissima a decidere e bugiarda a dichiarare: promette 0.99, mantiene 0.95. Accurata, overconfident.
Un modello calibrato ma poco accurato: un classificatore binario su un problema realmente 50/50 - una moneta equa - che dice sempre “0.5”. La sua accuratezza è quella del caso, miserabile. Ma è calibrato in modo perfetto: sui suoi “0.5” ha ragione davvero la metà delle volte.
Il caso degenere che chiude il discorso: il modello che dice sempre 0.5 su dati bilanciati è calibrato. Calibrato e inutile. Per questo la calibrazione, da sola, non è un obiettivo: va letta sempre insieme alla risoluzione o all’accuratezza. Un modello buono è accurato e calibrato.
C’è una conseguenza pratica forte. Ottimizzare un modello per l’accuratezza - la metrica standard di quasi tutti i benchmark - non fa nulla per la sua calibrazione. Le due proprietà si possono e si devono trattare separatamente.
Prima si addestra il modello più accurato possibile; poi, in un passo distinto di post-processing, lo si calibra. Come si vedrà, la tecnica principale di ricalibrazione (temperature scaling) è costruita apposta per non toccare l’accuratezza di un solo punto. Questo disaccoppiamento è il filo che attraversa tutto il resto del capitolo.
La meccanica
Sezione intitolata “La meccanica”Definizione formale
Sezione intitolata “Definizione formale”Sia la classe vera di un esempio, la classe predetta dal modello, e la confidenza associata. Per un classificatore con uscita softmax, è il valore più alto del vettore di probabilità prodotto.
Il modello è perfettamente calibrato se vale, per ogni livello di confidenza :
In parole povere: condizionando sull’evento “il modello ha dichiarato confidenza ”, la probabilità che la sua predizione sia corretta è esattamente .
Il simbolo è la probabilità condizionata (vedi probabilità di base): la probabilità di una volta saputo che è vero. La definizione di calibrazione è dunque, letteralmente, una probabilità condizionata posta uguale alla confidenza dichiarata. Questo è il modo più compatto di dire “il numero significa quello che dice di significare”.
Due dettagli che la formula nasconde. Primo: è una condizione in aspettazione, sulla popolazione di tutte le predizioni con confidenza . Non dice niente sulla singola predizione - coerente con l’osservazione del meteorologo.
Secondo: così scritta, la definizione riguarda solo la classe vincente e la sua probabilità. Si chiama confidence calibration, o calibrazione del top-label.
Una richiesta più forte è che sia calibrato l’intero vettore softmax, non solo il massimo: la calibrazione multiclasse completa. La pratica corrente, e la metrica della prossima sezione, misurano quasi sempre la versione top-label, perché è quella che conta quando la decisione è la classe vincente.
Expected Calibration Error
Sezione intitolata “Expected Calibration Error”La definizione formale chiede una verifica per ogni valore di , ma con dati finiti nessuna confidenza esatta si ripete abbastanza spesso. La soluzione è binnare, esattamente come nel reliability diagram.
Si dividono le predizioni in bin per livello di confidenza. Per ogni bin si calcolano due quantità: l’accuratezza media , cioè la frazione di predizioni corrette nel bin, e la confidenza media , cioè la media delle confidenze dichiarate nel bin. La distanza tra le due è la miscalibrazione del bin.
L’Expected Calibration Error è la media di queste distanze, pesata per quanto è popoloso ogni bin:
Riga per riga. è il numero di predizioni nel bin . Il rapporto è quindi la frazione di tutte le predizioni che cadono in quel bin, ed è il peso. Il termine è il valore assoluto della distanza tra accuratezza e confidenza nel bin - la distanza verticale dalla diagonale nel reliability diagram.
La somma su tutti i bin produce un singolo numero tra 0 e 1. ECE significa calibrazione perfetta; più alto è ECE, peggiore è la calibrazione. In parole povere, ECE è la distanza media dalla diagonale, dove “media” pesa di più i bin dove finiscono più predizioni.
ECE è diventato la metrica scalare più citata, perché è intuitivo e si lega direttamente al diagramma. Ma ha limiti che il capitolo riprende più avanti: il suo valore dipende da quanti bin si scelgono e da come si posizionano, ignora tutto il vettore tranne il massimo, e - punto delicato - non è una proper scoring rule.
Esistono varianti. Il Maximum Calibration Error (MCE) prende il bin peggiore invece della media, ed è la metrica da guardare quando un singolo errore grave conta più della miscalibrazione media. L’adaptive ECE usa bin con uguale numero di predizioni invece che uguale larghezza, per evitare bin quasi vuoti che producono stime rumorose.
Brier score e log-loss
Sezione intitolata “Brier score e log-loss”Il Brier score affronta lo stesso problema senza binnare. Per la classificazione binaria, con esito reale e probabilità predetta per la classe positiva:
È l’errore quadratico medio tra la probabilità dichiarata e l’esito osservato (0 o 1). In parole povere, il Brier score misura quanto, in media, la probabilità ha “mancato” la realtà. Più basso è meglio.
La proprietà che lo rende speciale: il Brier score è una strictly proper scoring rule. Una scoring rule è proper se il punteggio atteso è ottimizzato esattamente quando si dichiarano le vere probabilità; strictly proper se quello è l’unico modo di ottimizzarlo.
Tradotto: con il Brier score non si può barare. Gonfiare la confidenza per sembrare più sicuri peggiora il punteggio atteso; spegnerla per cautela lo peggiora ugualmente. L’unica strategia ottimale è l’onestà. ECE, invece, si può ingannare: un modello che dice sempre il tasso base è calibrato e ha ECE basso pur non avendo risoluzione.
Il Brier score si decompone (David Murphy, A New Vector Partition of the Probability Score, 1973) in tre termini additivi:
Il termine Reliability misura la miscalibrazione: più basso è meglio. Resolution misura quanto le predizioni si discostano dal tasso base, premiando chi distingue i casi: più alto è meglio, e per questo ha il segno meno. Uncertainty è l’entropia intrinseca del problema, fissa e indipendente dal modello.
La decomposizione dice in formula ciò che il meteorologo onesto diceva a parole: un buon punteggio richiede sia onestà (reliability bassa) sia capacità di distinguere (resolution alta). I due assi della prima intuizione ricompaiono qui come due termini di una somma.
L’altra proper scoring rule onnipresente è la log-loss, o negative log-likelihood:
dove è la probabilità che il modello ha assegnato alla classe vera dell’esempio . La differenza pratica rispetto al Brier score sta nel comportamento agli estremi.
Quando il modello assegna probabilità vicina a zero alla classe corretta, tende a meno infinito e la NLL esplode. La log-loss punisce ferocemente l’overconfidence sbagliata: dire “0.999” e poi sbagliare costa enormemente. Questa è la stessa quantità della cross-entropy con cui si addestrano quasi tutte le reti.
E qui c’è un’ironia che la prossima sezione spiega: la loss che le reti minimizzano è una proper scoring rule, eppure le reti finiscono mal calibrate. Una metrica onesta, ottimizzata male, non garantisce un risultato onesto.
Quale metrica usare
Sezione intitolata “Quale metrica usare”Le tre metriche non sono intercambiabili e rispondono a domande diverse.
ECE risponde a “quanto, in media, la confidenza dichiarata si discosta dalla frequenza reale?”. È la più leggibile, si lega direttamente al reliability diagram, ed è la prima da riportare quando si comunica a un pubblico non specialista. Ma misura solo la calibrazione, è cieca alla risoluzione, e dipende dal binning.
Il Brier score risponde a “quanto sono buone le probabilità nel complesso, onestà e capacità di distinguere insieme?”. È una proper scoring rule, non si può ingannare, e la sua decomposizione di Murphy permette di separare il contributo della miscalibrazione da quello della risoluzione quando serve.
La log-loss risponde alla stessa domanda del Brier score, ma con una sensibilità estrema agli errori confidenti: un singolo “0.999 ma sbagliato” la fa schizzare. È la metrica da usare quando l’overconfidence catastrofica è il rischio principale - per esempio in un sistema dove una risposta sicura e errata costa moltissimo.
La regola pratica: riportare sempre almeno una proper scoring rule (Brier o log-loss) accanto a ECE. ECE da solo è una diagnostica, non un verdetto.
Le reti neurali moderne sono overconfident
Sezione intitolata “Le reti neurali moderne sono overconfident”Il paper di Guo et al. del 2017 è il riferimento. L’esperimento centrale è un confronto diretto.
Una rete piccola e datata - LeNet, l’architettura convoluzionale di Yann LeCun del 1998 - su un compito di classificazione di immagini produce un reliability diagram quasi perfettamente sulla diagonale. Una rete profonda moderna - una ResNet - sullo stesso identico compito ha accuratezza molto più alta, ma il suo reliability diagram è nettamente sotto la diagonale: è gravemente overconfident.
La rete che sbaglia di meno è anche quella che mente di più su quanto è sicura. È il risultato che dà il titolo al capitolo: l’accuratezza è salita, l’onestà è scesa.
Guo et al. identificano empiricamente i fattori che peggiorano la calibrazione. Sono, in modo quasi imbarazzante, le stesse scelte che hanno reso le reti più accurate.
Maggiore profondità e maggiore larghezza della rete peggiorano la calibrazione. Meno regolarizzazione tramite weight decay la peggiora - e le reti moderne ne usano poca. La presenza della batch normalization, una tecnica che stabilizza il training normalizzando le attivazioni, la peggiora ulteriormente. Le architetture che hanno vinto i benchmark dell’accuratezza sono le stesse che hanno perso la calibrazione.
La causa di fondo è istruttiva. Le reti si addestrano minimizzando la cross-entropy, cioè la NLL. A un certo punto del training la rete classifica già correttamente tutto il training set: l’accuratezza non può più salire.
Ma la NLL può ancora scendere. Come? Spingendo le probabilità già corrette ancora più vicino a 1 - gonfiando i logit, i numeri grezzi prima del softmax. La rete continua a “guadagnare loss” diventando sempre più sicura di sé su esempi che già azzeccava.
È un overfitting non sull’accuratezza ma sulla confidenza. Il modello finisce overconfident perché l’ottimizzazione non aveva motivo di fermarsi quando l’accuratezza si è fermata. La proper scoring rule fa il suo dovere, ma su un training set finito la sua spinta verso gli estremi non corrisponde più alla realtà del test set.
Temperature scaling
Sezione intitolata “Temperature scaling”La soluzione proposta da Guo et al. è sorprendente per la sua semplicità. Si introduce un solo numero, uno scalare detto temperatura, e si dividono i logit per prima di applicare il softmax:
Il comportamento dipende da . Con non cambia nulla: è il modello originale. Con i logit si avvicinano tra loro, il softmax diventa più piatto, e la confidenza scende - questo cura l’overconfidence. Con la distribuzione si fa più piccata e la confidenza sale.
Il valore di si stima su un insieme di validazione tenuto da parte, scegliendo il che minimizza la NLL su quei dati. È un problema di massima verosimiglianza a un solo parametro: si cerca il numero che rende i dati di validazione più probabili sotto il modello ricalibrato.
La proprietà che rende temperature scaling speciale: dividere tutti i logit per la stessa costante positiva non cambia il loro ordinamento. Il logit più grande resta il più grande. Quindi la classe predetta - l’argmax - non cambia mai, e l’accuratezza top-1 resta identica al punto percentuale.
Temperature scaling calibra “gratis”: aggiusta i numeri di confidenza senza toccare le decisioni. Con un solo parametro non c’è praticamente rischio di overfitting sul validation set. Guo et al. mostrano che, su quasi tutti i dataset di classificazione di immagini e documenti che testano, questa tecnica a un parametro batte alternative più complesse.
Metodi di ricalibrazione
Sezione intitolata “Metodi di ricalibrazione”Temperature scaling appartiene a una famiglia più ampia di metodi di ricalibrazione post-hoc. Tutti operano dopo il training, su un validation set separato, e imparano una mappa che trasforma la confidenza grezza del modello in una confidenza calibrata. Il modello non si ritocca; si ritocca solo il suo numero finale.
Platt scaling. Introdotto da John Platt nel 1999 per le support vector machine, fitta una sigmoide sui punteggi grezzi del modello: , dove è la funzione sigmoide e i due parametri si stimano per massima verosimiglianza sul validation set. Funziona bene quando la distorsione della confidenza ha forma sigmoidale - tipico delle SVM e dei modelli a boosting. Temperature scaling è essenzialmente la variante a un parametro di Platt scaling, applicata ai logit invece che a un punteggio scalare.
Isotonic regression. Fitta una funzione monotona crescente a gradini, senza imporre nessuna forma parametrica: l’unico vincolo è che la mappa non decresca mai. È più flessibile di Platt - può correggere qualsiasi distorsione purché monotona - ma proprio per questa flessibilità è più incline all’overfitting su pochi dati. La regola pratica è che servano almeno qualche migliaio di esempi di validazione perché isotonic regression sia affidabile.
Beta calibration. Proposta da Meelis Kull, Telmo Silva Filho e Peter Flach (AISTATS 2017), usa una mappa parametrica a tre parametri ispirata alla distribuzione Beta. Si colloca tra i due estremi: più espressiva di Platt scaling, più robusta di isotonic regression su dataset piccoli perché, essendo parametrica, ha pochi gradi di libertà. Include temperature scaling e Platt scaling come casi particolari.
Histogram binning. Il metodo più semplice di tutti: si binnano le confidenze e si rimpiazza la confidenza di ogni bin con l’accuratezza osservata in quel bin. Non assume nessuna forma, ma produce una mappa a gradini grossolana e dipende dal numero di bin.
Il trade-off di fondo è lo stesso che attraversa tutta la statistica, ed è il compromesso bias-varianza.
Pochi parametri - temperature scaling - significa un metodo robusto, che non overfitta, ma rigido: se la miscalibrazione non ha la forma giusta, non la corregge bene. Molti gradi di libertà - isotonic regression - significa un metodo espressivo, capace di correggere distorsioni complesse, ma affamato di dati e a rischio di overfitting. La scelta dipende da quanto validation set si ha e da che forma ha la miscalibrazione.
Un dettaglio operativo che vale per tutti: la mappa di calibrazione va appresa su dati diversi sia da quelli di training sia da quelli di test finale. Riusare il test set per calibrare e poi per valutare la calibrazione è un classico modo di ingannarsi.
Esempio numerico: calcolare l’ECE a mano
Sezione intitolata “Esempio numerico: calcolare l’ECE a mano”Un servizio meteo fa previsioni di pioggia. Per semplicità raggruppiamo le sue previsioni in tre bin di confidenza. Il bin “bassa” raccoglie le previsioni intorno a 0.2, il bin “media” quelle intorno a 0.5, il bin “alta” quelle intorno a 0.8. Su una stagione raccogliamo i dati:
| Bin | Confidenza media | Numero previsioni | Giorni con pioggia | Accuratezza osservata |
|---|---|---|---|---|
| bassa | 0.20 | 100 | 18 | 0.18 |
| media | 0.50 | 200 | 130 | 0.65 |
| alta | 0.80 | 100 | 84 | 0.84 |
Totale previsioni. Per ogni bin la miscalibrazione è la distanza assoluta tra accuratezza e confidenza.
Bin bassa: . Bin media: . Bin alta: .
L’ECE pesa ogni bin per la sua frazione di previsioni:
L’ECE complessivo è 0.09. Il numero da solo dice “miscalibrazione media del 9%”, ma il dettaglio per bin dice di più: il bin “media” è il colpevole.
Quando il servizio dice “50%” piove in realtà il 65% delle volte: è underconfident nella fascia centrale, sottostima la pioggia nei giorni incerti. I bin “bassa” e “alta” sono quasi a posto. Un singolo scalare nasconde dove sta il problema; il reliability diagram lo mostra. È la ragione pratica per cui non ci si ferma mai all’ECE: si guarda anche la curva.
Esempio in codice: ricalibrare un classificatore con scikit-learn
Sezione intitolata “Esempio in codice: ricalibrare un classificatore con scikit-learn”In Python, la libreria scikit-learn fornisce gli strumenti per misurare e correggere la calibrazione. Lo schema tipico:
from sklearn.calibration import CalibratedClassifierCV, calibration_curvefrom sklearn.metrics import brier_score_loss
# clf: un classificatore addestrato (es. un gradient boosting)# X_valid, y_valid: il validation set tenuto da parte
# confidenze grezze del modello non calibratop_raw = clf.predict_proba(X_valid)[:, 1]brier_raw = brier_score_loss(y_valid, p_raw)
# ricalibrazione post-hoc:# 'sigmoid' = Platt scaling, 'isotonic' = isotonicacalibrato = CalibratedClassifierCV(clf, method="sigmoid", cv="prefit")calibrato.fit(X_valid, y_valid)p_cal = calibrato.predict_proba(X_valid)[:, 1]brier_cal = brier_score_loss(y_valid, p_cal)
# reliability diagram: accuratezza osservata per binacc, conf = calibration_curve(y_valid, p_cal, n_bins=10)Riga per riga. predict_proba restituisce le probabilità grezze del modello. brier_score_loss calcola il Brier score: confrontando brier_raw e brier_cal si verifica se la ricalibrazione ha davvero migliorato l’onestà delle probabilità.
CalibratedClassifierCV con cv="prefit" impara la mappa di calibrazione sul validation set senza riaddestrare il modello. Il parametro method="sigmoid" seleziona Platt scaling, "isotonic" la regressione isotonica. calibration_curve restituisce le coppie (accuratezza, confidenza) per bin, i punti da cui si disegna il reliability diagram.
Il punto da non perdere: la calibrazione si misura e si corregge su dati diversi da quelli di training, altrimenti il modello sembra calibrato solo perché li ha memorizzati. Un Brier score basso calcolato sul training set non dice niente.
Esempio scenario reale: il router di un agente
Sezione intitolata “Esempio scenario reale: il router di un agente”Un agente conversazionale risponde a domande su una base di conoscenza aziendale. La regola di prodotto è: se l’agente è sicuro, risponde da solo; se non lo è, passa la conversazione a un operatore umano. La soglia è fissata a 0.85: sopra, l’agente risponde; sotto, scala.
Tutto il meccanismo poggia su un’assunzione: che il numero di confidenza sia calibrato.
Se l’agente è basato su un LLM overconfident, la maggior parte delle risposte arriva con confidenza dichiarata sopra 0.95 - anche quelle sbagliate. Il router non passa quasi mai la palla all’umano, e gli errori arrivano diritti all’utente con l’aria di risposte sicure.
Il sistema non genera nessun allarme. La pipeline gira, i log sono puliti, semplicemente la soglia non sta filtrando niente perché il segnale su cui agisce è gonfiato. È esattamente il “fallimento silenzioso” annunciato all’inizio del capitolo.
La diagnosi è un reliability diagram costruito su un campione di conversazioni etichettate: si scopre che a confidenza dichiarata 0.95 l’accuratezza reale è 0.70. La correzione è ricalibrare - temperature scaling se i logit sono accessibili - in modo che la confidenza 0.85 corrisponda davvero a un’accuratezza dell’85%.
Solo dopo la ricalibrazione la soglia del router torna a significare quello che il product manager pensava significasse. Senza calibrazione, una soglia su una confidenza è una decisione presa su un numero inventato.
Applicazioni pratiche
Sezione intitolata “Applicazioni pratiche”La calibrazione entra in gioco ovunque un numero di confidenza diventa un input di una decisione.
Astensione e routing. Qualunque sistema che decide “rispondo io o passo a qualcun altro” applica una soglia a una confidenza: un agente che scala a un umano, un classificatore medico che segnala i casi incerti per una seconda lettura, un sistema di moderazione che manda in revisione manuale i contenuti dubbi. La soglia ha senso solo se la confidenza è calibrata. Su un modello mal calibrato la soglia o lascia passare troppo o blocca troppo.
Decisioni a costo asimmetrico. Quando sbagliare in un verso costa più che sbagliare nell’altro - un falso negativo in diagnostica, una frode non intercettata - la decisione ottimale si calcola minimizzando il costo atteso, che è una somma pesata dalle probabilità. Se le probabilità sono sbagliate, la soglia ottimale calcolata è sbagliata. La calibrazione è la precondizione perché la teoria della decisione produca la soglia giusta.
Valutazione dei modelli. Un benchmark che riporta solo l’accuratezza nasconde la calibrazione. Due modelli con la stessa accuratezza possono avere onestà probabilistica molto diversa, e in produzione si comportano in modo diverso appena le loro probabilità vengono usate. Una valutazione seria di un modello probabilistico riporta accuratezza e ECE e Brier score, perché misurano cose diverse.
Ensemble e fusione di modelli. Quando si combinano le uscite di più modelli - media, voto pesato, stacking - si stanno sommando probabilità. Se i modelli sono mal calibrati in modo diverso, la fusione amplifica le distorsioni invece di mediarle. Calibrare ogni modello prima di combinarlo è una precondizione perché la media abbia senso.
Monitoraggio in produzione. Dato che la calibrazione si degrada sotto distribution shift, non basta misurarla una volta al lancio. Un sistema serio ricostruisce periodicamente il reliability diagram su un campione fresco di dati di produzione etichettati, e fa scattare un allarme quando l’ECE supera una soglia. La ricalibrazione diventa un’operazione di manutenzione ricorrente, come la riaddestrabilità di un modello.
LLM e confidenza verbalizzata. Per un LLM dietro un’API, la confidenza grezza dei token spesso non è accessibile, e per una risposta lunga non esiste un singolo “token-risposta” da cui leggerla. Resta la confidenza verbalizzata: si chiede al modello di dichiarare a parole quanto è sicuro. È un segnale utile - ma, come per ogni modello, non va preso al valore nominale: va misurato con un reliability diagram e, se serve, ricalibrato.
Dove si rompe
Sezione intitolata “Dove si rompe”La calibrazione è una proprietà più fragile di quanto la definizione lasci pensare. Vale sempre rispetto a qualcosa, e quando quel qualcosa cambia, salta.
I modi di rottura che seguono non sono casi di laboratorio: sono i motivi per cui un modello “calibrato” su carta delude in produzione. Conoscerli è parte di saper leggere un reliability diagram.
Distribution shift. La calibrazione è misurata su un dataset. Se i dati di produzione si discostano da quel dataset - utenti nuovi, argomenti nuovi, immagini scattate con altre fotocamere, semplicemente il tempo che passa - la calibrazione non si trasferisce.
Yaniv Ovadia e colleghi (NeurIPS 2019, Can You Trust Your Model’s Uncertainty?) hanno mostrato in modo sistematico che sotto shift della distribuzione di input l’accuratezza e la calibrazione degradano insieme, e che un temperature scaling tarato su dati in-distribution non regge fuori distribuzione. Un modello calibrato al lancio può essere gravemente overconfident sei mesi dopo, senza che nulla nel codice sia cambiato. La calibrazione non è una proprietà che si conquista una volta: va monitorata.
Calibrazione marginale contro condizionale. L’ECE misura la calibrazione marginale: in media, su tutta la popolazione. Un modello può avere ECE globale vicino a zero ed essere pesantemente miscalibrato su un sottogruppo specifico - una classe rara, una fascia demografica, una categoria di input.
Basta che gli errori sui sottogruppi abbiano segni opposti: l’overconfidence su un gruppo e l’underconfidence su un altro si elidono nella media, e l’ECE complessivo sembra ottimo. È lo stesso meccanismo per cui una media nasconde le code.
Per questo la calibrazione condizionata sui gruppi - studiata sotto il nome di multicalibration, introdotta da Ursula Hébert-Johnson e colleghi nel 2018 - è una richiesta molto più forte, e quella che conta quando il modello prende decisioni su persone. Un ECE globale buono non garantisce nessuna onestà sul sottogruppo che ti interessa.
ECE è manipolabile. Il valore di ECE dipende dal numero di bin e da come sono posizionati: con bin diversi, lo stesso modello produce ECE diversi. E un modello può avere ECE basso senza essere informativo - il modello degenere che dice sempre il tasso base è calibrato.
ECE non è una proper scoring rule: è una diagnostica utile e leggibile, non un giudizio completo. Per un giudizio che premia onestà e risoluzione insieme servono Brier score o log-loss. Riportare ECE senza accompagnarlo a una proper scoring rule è una mezza misura.
Validation set piccolo. I metodi più flessibili - isotonic regression, histogram binning - overfittano quando il validation set è piccolo: imparano il rumore di quei dati invece della vera distorsione. La mappa di calibrazione è essa stessa una stima statistica, con la sua incertezza.
E lo stesso reliability diagram, se i bin sono poco popolati, è rumoroso: l’accuratezza per bin è una stima da campione finito, e ogni punto del diagramma ha una barra d’errore che spesso non viene disegnata. Quantificare quell’incertezza - per esempio con il bootstrap - è parte di una lettura onesta del diagramma. Una curva che “sembra” lontana dalla diagonale può essere semplicemente rumore.
LLM e output generativi. Tutta la teoria di questo capitolo assume un evento binario ben definito: la predizione è corretta o no. Per una risposta generativa lunga questo evento spesso non esiste in modo netto: “corretto” è una valutazione parziale e a volte soggettiva.
Calibrare la probabilità di un’affermazione che non è nettamente vera o falsa è un problema concettualmente più scivoloso della calibrazione di un classificatore, e resta in larga parte aperto. La calibrazione delle risposte aperte di un LLM è un’area di ricerca, non un problema risolto.
Gli LLM e l’effetto dell’allineamento
Sezione intitolata “Gli LLM e l’effetto dell’allineamento”Gli LLM riaprono il tema della calibrazione su un terreno proprio, perché per un modello che genera testo “confidenza” ha almeno tre significati diversi.
Il primo è la probabilità dei token. A ogni passo della generazione un LLM produce un softmax sull’intero vocabolario; su una domanda a scelta multipla si può leggere la probabilità assegnata al token della risposta scelta.
Il GPT-4 Technical Report (OpenAI, 2023) riporta su questo un risultato netto, misurato sul benchmark MMLU - un insieme di domande a scelta multipla su 57 materie. Il modello pre-addestrato, prima dell’allineamento, è altamente calibrato: la sua confidenza nei token corrisponde bene alla probabilità di avere ragione, il reliability diagram è quasi sulla diagonale.
Ma il post-training - la fase di allineamento, che include RLHF, il Reinforcement Learning from Human Feedback, l’addestramento a rinforzo con un segnale di ricompensa basato sul giudizio umano - degrada significativamente la calibrazione. Dopo l’allineamento il modello è marcatamente overconfident.
L’intuizione del perché è istruttiva e si lega al meccanismo di RLHF. L’allineamento ottimizza il modello per il giudizio di un reward model, addestrato a sua volta su preferenze umane. Le risposte assertive, decise, “sicure di sé” tendono a essere preferite dai valutatori umani.
Il modello impara così a sembrare confidente, perché è quello che viene ricompensato - non perché le sue probabilità interne siano diventate più oneste. L’ottimizzazione spinge la distribuzione di uscita verso la modalità, verso l’assertività. La calibrazione è un danno collaterale dell’allineamento.
Va detto con la classe di affermazione giusta: questo è un legame causale documentato in un report tecnico - il post-training causa il degrado misurato sullo stesso modello prima e dopo - non una semplice analogia o una congettura.
Il secondo significato di confidenza è la confidenza verbalizzata: chiedere al modello di dire a parole quanto è sicuro, “Confidence: 85%”. Qui c’è un risultato controintuitivo.
Katherine Tian e colleghi (Just Ask for Calibration, EMNLP 2023) trovano che, per gli LLM allineati con RLHF - ChatGPT, GPT-4, Claude - la confidenza verbalizzata è tipicamente meglio calibrata delle probabilità condizionali dei token, con riduzioni dell’ECE fino a circa il 50% relativo su benchmark come TriviaQA, SciQ e TruthfulQA.
Detto altrimenti: dopo RLHF i logprob sono distorti, ma il modello sa ancora dire quanto è incerto in modo ragionevolmente onesto. Stephanie Lin, Jacob Hilton e Owain Evans avevano già mostrato nel 2022 (Teaching Models to Express Their Uncertainty in Words) che un modello può essere fine-tunato per emettere probabilità verbalizzate calibrate.
Il terzo significato è la coerenza tra campioni: porre la stessa domanda più volte e usare la frazione di risposte concordi come stima di confidenza. Tre segnali diversi, che non coincidono e che vanno tutti misurati prima di essere usati.
Per un LLM dietro un’API, dove i logprob spesso non sono disponibili, la confidenza verbalizzata è talvolta l’unico segnale a portata di mano - ragione in più per costruirne il reliability diagram e ricalibrarlo, invece di prenderlo per buono.
La lezione del capitolo vale anche qui, e si riassume in una frase: un numero di confidenza si misura prima di fidarsene. Vale per il softmax di una ResNet, per i logprob di un LLM, per il “Confidence: 85%” che un modello scrive a parole. Nessuno di questi numeri è una probabilità per il solo fatto di stare tra 0 e 1. Lo diventa quando un reliability diagram lo conferma.
Collegamenti
Sezione intitolata “Collegamenti”- Massima verosimiglianza — temperature scaling e Platt scaling stimano i loro parametri minimizzando la NLL: la ricalibrazione è un problema di massima verosimiglianza in piccolo.
- Bootstrap — ogni punto di un reliability diagram è una stima da campione finito; il bootstrap quantifica l’incertezza sull’accuratezza per bin e sull’ECE stesso.
- Intervalli di confidenza — la barra d’errore che andrebbe disegnata attorno a ogni punto del reliability diagram è un intervallo di confidenza su una proporzione.
- Le distribuzioni comuni — l’esito di ogni predizione in un bin è una variabile di Bernoulli; il conteggio dei successi nel bin è binomiale, ed è da lì che viene l’incertezza sulla stima.
- Test di ipotesi — confrontare la calibrazione di due modelli, o decidere se uno scostamento dalla diagonale è reale, è una domanda inferenziale a tutti gli effetti.
- statistica-e-ml (in preparazione) — la miscalibrazione è una forma specifica di overclaim: un numero che afferma più di quanto il modello sa davvero.
- Probabilità di base — la definizione di calibrazione è, letteralmente, una probabilità condizionata posta uguale alla confidenza dichiarata.
- Entropia e cross-entropy — la log-loss che le reti minimizzano è la cross-entropy; capire perché il suo overfitting produce overconfidence richiede di sapere cosa misura.
- Softmax e sigmoid — temperature scaling agisce sul softmax dividendone gli input; Platt scaling fitta una sigmoide. Le funzioni che producono le confidenze sono le stesse che le ricalibrano.
- Compromesso bias-varianza — la scelta tra temperature scaling (pochi parametri, robusto) e isotonic regression (molti gradi di libertà, espressivo) è un caso del trade-off bias-varianza.
Per andare oltre
Sezione intitolata “Per andare oltre”- Chuan Guo, Geoff Pleiss, Yu Sun, Kilian Weinberger, On Calibration of Modern Neural Networks, ICML 2017 (arXiv:1706.04599). Il riferimento canonico: la scoperta dell’overconfidence delle reti profonde e l’introduzione di temperature scaling.
- Glenn W. Brier, Verification of Forecasts Expressed in Terms of Probability, Monthly Weather Review, 1950. La fonte originale del Brier score, nel suo contesto meteorologico.
- OpenAI, GPT-4 Technical Report, 2023 (arXiv:2303.08774). La sezione sulla calibrazione documenta che il modello pre-addestrato è calibrato e che il post-training/RLHF degrada la calibrazione.
- Katherine Tian et al., Just Ask for Calibration: Strategies for Eliciting Calibrated Confidence Scores from Language Models Fine-Tuned with Human Feedback, EMNLP 2023 (arXiv:2305.14975). La confidenza verbalizzata negli LLM allineati è spesso meglio calibrata dei logprob.
- Yaniv Ovadia et al., Can You Trust Your Model’s Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift, NeurIPS 2019 (arXiv:1906.02530). Come accuratezza e calibrazione degradano insieme fuori distribuzione.
- La documentazione Probability calibration di scikit-learn, per
CalibratedClassifierCVecalibration_curve: il modo più rapido di misurare e correggere la calibrazione in pratica.