04 · Ocena · 4 min czytania · aktualizacja
Czym jest kalibracja modelu i jak działa temperature scaling?
W skrócie
Model jest skalibrowany, gdy deklarowana pewność zgadza się z częstością trafień. Temperature scaling dzieli logity przez T z walidacji, nie zmieniając decyzji.
Co to jest
Kalibracja to zgodność między prawdopodobieństwem, które podaje model, a rzeczywistą częstością zdarzeń: spośród przypadków, którym model przypisuje „90%”, poprawnych powinno być około 90%. Model może mieć wysoką trafność i fatalną kalibrację — i odwrotnie.
Temperature scaling (Guo i in. 2017) to najprostsza metoda naprawy: wszystkie logity przed softmaksem dzieli się przez jedną liczbę T dobraną na zbiorze walidacyjnym. Kalibracja dotyczy każdego klasyfikatora probabilistycznego — sieci, boostingu, naiwnego Bayesa, modeli językowych. Nowoczesne głębokie sieci są zwykle przesadnie pewne siebie.
Mechanizm — dlaczego tak działa
Entropia krzyżowa jest właściwą regułą oceny: jej minimum osiąga model podający prawdziwe prawdopodobieństwa. Skąd więc zła kalibracja? W sieciach trening trwa dalej po osiągnięciu wysokiej trafności: na przykładach już dobrze sklasyfikowanych strata nadal spada, gdy logity poprawnej klasy rosną. Sieć o dużej pojemności dostaje nagrodę za coraz większe logity dla zapamiętanych przykładów, a softmax zamienia duże różnice logitów w pewność bliską 100%. Guo i in. pokazali, że głębsze i szersze sieci bez regularyzacji są gorzej skalibrowane, choć trafniejsze.
Inne modele mają własne źródła błędu. Naiwny klasyfikator Bayesa mnoży prawdopodobieństwa cech traktowanych jako niezależne; gdy cechy są silnie skorelowane, ten sam dowód liczy się wielokrotnie i pewność wybucha do 0 lub 1. Lasy losowe, przeciwnie, rzadko dochodzą do skrajnych wartości, bo uśredniają głosy drzew (Niculescu-Mizil i Caruana 2005).
Temperature scaling: p = softmax(z / T). Dla T > 1 logity zbliżają się do siebie, rozkład się spłaszcza i pewność spada; dla T < 1 rozkład się wyostrza. Dzielenie przez dodatnią stałą nie zmienia kolejności logitów, więc argmax — a z nim decyzje i trafność — zostają dokładnie te same. Zmienia się tylko to, jak bardzo model jest pewny. T dobiera się, minimalizując entropię krzyżową na walidacji, a ocenia na innych danych.
Miary: diagram niezawodności rysuje trafność w funkcji deklarowanej pewności (idealnie przekątna); ECE (expected calibration error) to średnia ważona odległość od przekątnej po przedziałach pewności. Log-loss i Brier score też karzą złą kalibrację.
Zastrzeżenie: jedno T dla wszystkich klas to model o jednym parametrze — nie naprawi sytuacji, gdy model jest przesadnie pewny w jednych obszarach, a niedostatecznie w innych; tam potrzebne są metody Platta, regresja izotoniczna lub skalowanie per klasa. Kalibracja dobrana na jednym rozkładzie danych nie przenosi się automatycznie na inny.
Na przykładzie
Breast Cancer Wisconsin podzieliliśmy na trening (284 guzy), walidację (142) i test (143), random_state=0. Naiwny Bayes (GaussianNB) trafił na teście w 93,0% przypadków, ale deklarował średnio 99,8% pewności; 97% przypadków dostało pewność powyżej 99%, a trafność wśród nich wyniosła 95%. Log-loss: 0,67. Temperatura dopasowana na walidacji wyszła 5,4; po podzieleniu logitów przez T średnia pewność spadła do 96,8%, log-loss do 0,16, a ECE z 0,07 do 0,045 — przy tej samej trafności 93,0%.
Regresja logistyczna na standaryzowanych cechach była skalibrowana od razu (pewność 95,4% przy trafności 96,5%). Temperatura dopasowana dla niej na 142 przykładach (T = 0,48) pogorszyła log-loss na teście z 0,13 do 0,19 — mała walidacja potrafi popsuć model, który nie wymagał naprawy.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- scikit-learn:
CalibratedClassifierCV(method="sigmoid")(Platt) lubmethod="isotonic"(przy większych zbiorach),calibration_curveiCalibrationDisplaydo diagramu niezawodności. - PyTorch: po treningu zoptymalizuj jeden skalar T na walidacji (np.
torch.optim.LBFGS) i dziel logity przy inferencji. - Modele językowe: parametr „temperature” przy generowaniu to ta sama operacja na logitach, ale używana do sterowania losowością, nie kalibracji.
- Decyzja z progiem kosztowym ma sens tylko na skalibrowanych prawdopodobieństwach; na nieskalibrowanych 0,5 nie znaczy „równie prawdopodobne”.
- Typowy błąd: dobieranie T na zbiorze treningowym albo ocena kalibracji na tych samych danych, na których ją dopasowano.
Najczęstsze pytania
- Co to znaczy, że model jest skalibrowany?
- Że jego deklarowane prawdopodobieństwa zgadzają się z częstościami: spośród przewidywań z pewnością 70% około 70% jest trafnych. Sprawdza się to diagramem niezawodności i miarą ECE. Trafność i kalibracja to dwie różne własności.
- Jak działa temperature scaling?
- Logity dzieli się przez jedną liczbę T dobraną na walidacji. T > 1 spłaszcza rozkład (mniej pewności), T < 1 go wyostrza. Kolejność klas się nie zmienia, więc decyzje i trafność zostają identyczne — poprawia się tylko zgodność pewności z rzeczywistością.
- Dlaczego sieci neuronowe są przesadnie pewne siebie?
- Bo po osiągnięciu wysokiej trafności trening dalej zmniejsza stratę, powiększając logity poprawnej klasy na przykładach treningowych. Duże logity dają softmax bliski 1. Większa pojemność, brak weight decay i długi trening pogłębiają ten efekt (Guo i in. 2017).
Źródła
- Guo, C., Pleiss, G., Sun, Y., Weinberger, K. Q. (2017). "On calibration of modern neural networks". ICML. arXiv:1706.04599
- Niculescu-Mizil, A., Caruana, R. (2005). "Predicting good probabilities with supervised learning". ICML.
- Platt, J. (1999). "Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods". W: Advances in Large Margin Classifiers, MIT Press.
- Murphy, K. P. (2022). Probabilistic Machine Learning: An Introduction, MIT Press (reguły oceny i kalibracja). https://probml.github.io/pml-book/book1.html
- scikit-learn: "Probability calibration". https://scikit-learn.org/stable/modules/calibration.html