Kalibrering och osäkerhet i modeller
Kunna mäta kalibrering och få en modell att uttrycka osäkerhet.
Förkunskaper
Intuition
En kalibrerad modell som säger «80 % säker» har rätt i 80 % av de fallen. De flesta moderna nät är översäkra: de säger 95 % och har rätt 80 % av gångerna.
Det spelar roll så fort du vill agera på konfidensen: eskalera osäkra fall till människa, avstå från att svara, eller sortera efter risk. En okalibrerad konfidens gör alla sådana regler värdelösa.
Mätning: dela upp förutsägelserna i tio konfidensintervall, jämför genomsnittlig konfidens med faktisk träffsäkerhet i varje. Skillnaden, viktad med antalet, är ECE (expected calibration error).
Kod
import numpy as np
def ece(konfidens, korrekt, bins=10):
konfidens, korrekt = np.asarray(konfidens), np.asarray(korrekt, float)
kanter = np.linspace(0, 1, bins + 1)
fel, rader = 0.0, []
for lo, hi in zip(kanter[:-1], kanter[1:]):
m = (konfidens > lo) & (konfidens <= hi)
if m.sum() == 0:
continue
acc, conf = korrekt[m].mean(), konfidens[m].mean()
fel += m.mean() * abs(acc - conf)
rader.append((f"{lo:.1f}-{hi:.1f}", int(m.sum()), round(conf, 3), round(acc, 3)))
return fel, rader
def temperaturskala(logits, y_val, temperaturer=np.linspace(0.5, 3.0, 26)):
"""Hitta T som minimerar NLL på valideringsdata. Ändrar inte vilken klass som väljs."""
def nll(T):
z = logits / T
z = z - z.max(axis=1, keepdims=True)
logp = z - np.log(np.exp(z).sum(axis=1, keepdims=True))
return -logp[np.arange(len(y_val)), y_val].mean()
return float(min(temperaturer, key=nll))
T = temperaturskala(val_logits, y_val) # t.ex. 1.7 → modellen var översäker
Temperaturskalning är den enklaste effektiva metoden: en enda parameter anpassad på valideringsdata, som inte ändrar rangordningen (och därmed inte träffsäkerheten) men gör sannolikheterna ärliga.
För språkmodeller är det svårare — det finns ingen enkel sannolikhet för «svaret är rätt». Praktiska proxyer: självkonsistens (enighet mellan samplade svar), verbaliserad konfidens («hur säker är du, 0–100?», vilken är dåligt kalibrerad men bättre än inget), och token-sannolikheter för det avgörande svarsspannet.
Behärskning innebär
- Mäter kalibrering med ECE och reliability-diagram
- Tillämpar temperaturskalning
- Får en modell att uttrycka och agera på osäkerhet
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — On Calibration of Modern Neural Networks — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Teaching Models to Express Their Uncertainty in Words — arXiv (öppen åtkomst; licens per artikel)