Hoppa till innehållet
AI-grafen
F· AI engineeringsprakmodeller· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

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

Alla källor och licenser