Temperature Scaling dan ECE: Kalibrasi Keyakinan Model Langkah demi Langkah

Telusuri softmax, fit temperatur pada enam prediksi, hitung ECE, dan lihat mengapa likelihood yang lebih baik masih dapat menghasilkan skor kalibrasi berbasis bin yang lebih buruk.

Bagikan artikel ini

Enam prediksi dapat benar empat dari enam kali dan tetap menceritakan dua kisah probabilitas yang sangat berbeda. Dalam contoh yang dikerjakan di bawah, kelas pemenang tidak pernah berubah. Membagi setiap logit dengan temperatur yang telah di-fit hanya menurunkan atau menaikkan keyakinan yang melekat pada setiap pemenang.

Penyesuaian kecil itu meningkatkan mean negative log-likelihood dari 0.8230.823 menjadi 0.8120.812. Lalu terjadi sesuatu yang janggal: expected calibration error, yang dihitung dengan empat bin berlebar sama, naik dari 12.9%12.9\% menjadi 38.0%38.0\%.

Aritmetikanya bukan kegagalan temperature scaling. Ini mengungkap pelajaran yang lebih berguna: kalibrasi adalah hubungan antara probabilitas prediksi dan hasil yang diamati, sedangkan ECE adalah satu estimasi hubungan tersebut yang bergantung pada sampel dan bin. Di akhir pelajaran, Anda akan mampu mem-fit temperatur, menghitung ECE, mereproduksi kedua hasil dalam Python, dan menjelaskan mengapa tidak satu pun angka itu dapat dibawa tanpa perubahan ke populasi deployment baru.

Pekerjaan evaluasi saat ini membuat perbedaan ini praktis. Pilot Google DeepMind yang dipublikasikan pada 27 Agustus menyembunyikan bobot model proprietari dan prompt pengujian eksternal satu sama lain, sementara MLCommons menyediakan subset AILuminate yang dicadangkan. Kontrol tersebut melindungi materi pengujian. Kontrol itu tidak menentukan populasi yang harus dijelaskan oleh suatu probabilitas. NIST AI 800-3 menyampaikan hal serupa untuk akurasi: performa pada pertanyaan benchmark tetap dan performa di seluruh semesta pertanyaan serupa yang lebih luas adalah target pengukuran yang berbeda.

Prakiraan probabilitas memiliki janji yang dapat diuji

Misalkan sebuah pengklasifikasi memprediksi kelas AA dengan keyakinan 0.80.8 pada banyak contoh independen. Keyakinan yang terkalibrasi berarti sekitar 80%80\% dari prediksi tersebut benar. Secara lebih formal, jika Y^\hat{Y} adalah kelas yang diprediksi dan P^\hat{P} adalah keyakinan yang dilaporkan, kalibrasi top-label sempurna meminta

Pr(Y=Y^P^=p)=p.\Pr(Y=\hat{Y}\mid \hat{P}=p)=p.

Definisi ini tidak mengatakan bahwa pengklasifikasi akurat. Model yang memprediksi dengan keyakinan 0.60.6 dan berhasil 60%60\% dari waktu ke waktu tetap terkalibrasi meskipun sering salah. Model juga dapat mengurutkan setiap contoh dengan benar sambil melaporkan 0.990.99 untuk kasus yang hanya berhasil 80%80\% dari waktu. Akurasi bertanya siapa yang menang; kalibrasi memeriksa apakah probabilitas yang menyertainya menepati janji.

Peristiwa dan populasi perlu diberi nama. “Benar” dapat berarti kecocokan kelas yang tepat, penyelesaian tugas, atau hasil lain yang diberi skor. Contohnya dapat berupa permintaan dukungan pelanggan dalam satu bahasa, pertanyaan benchmark, atau lalu lintas produksi besok. Ubah salah satu sisi dan pernyataan probabilitas ikut berubah. Untuk pipeline evaluasi yang lebih luas di balik pilihan tersebut, lihat bagaimana evaluasi membentuk produk AI.

Temperatur memutar kenop keyakinan

Sebuah pengklasifikasi sering mengeluarkan logit: skor tak terbatas z1,,zKz_1,\ldots,z_K untuk KK kelas. Softmax mengubahnya menjadi probabilitas:

pk=ezkj=1Kezj.p_k=\frac{e^{z_k}}{\sum_{j=1}^{K}e^{z_j}}.

Temperature scaling memperkenalkan satu bilangan positif TT:

pk(T)=ezk/Tj=1Kezj/T.p_k(T)=\frac{e^{z_k/T}}{\sum_{j=1}^{K}e^{z_j/T}}.

Ketika T>1T>1, jarak antar-logit yang telah diskalakan menyusut dan vektor probabilitas menjadi kurang terkonsentrasi. Ketika 0<T<10<T<1, jaraknya melebar dan vektor menjadi lebih tajam. T=1T=1 membiarkan probabilitas asli tidak berubah.

Untuk contoh pertama, logitnya adalah [3,1,0][3,1,0]. Mengurangkan logit terbesar sebelum melakukan eksponensiasi menghasilkan softmax yang sama tanpa menangani angka yang tidak perlu besar:

softmax([3,1,0])=[1,e2,e3]1+e2+e3[0.844,0.114,0.042].\operatorname{softmax}([3,1,0]) =\frac{[1,e^{-2},e^{-3}]}{1+e^{-2}+e^{-3}} \approx[0.844,0.114,0.042].

Pada T=1.23T=1.23, vektornya menjadi sekitar [0.779,0.153,0.068][0.779,0.153,0.068]. Kelas AA tetap menang. Bahkan, setiap temperatur positif mempertahankan urutan logit, sehingga temperature scaling tidak dapat mengubah kelas prediksi atau akurasi klasifikasi. Ia hanya mengubah konsentrasi probabilitas.

Fit satu skalar terhadap label yang ditahan

Makalah kalibrasi yang telah melalui peer review oleh Guo dan kolega mem-fit TT dengan meminimalkan negative log-likelihood (NLL) pada set validasi yang ditahan sambil mempertahankan parameter jaringan. Untuk nn contoh berlabel, objektifnya adalah

L(T)=1ni=1nlogpi,yi(T),\mathcal{L}(T)=-\frac{1}{n}\sum_{i=1}^{n}\log p_{i,y_i}(T),

di mana pi,yi(T)p_{i,y_i}(T) adalah probabilitas berskala yang diberikan kepada kelas sebenarnya dari contoh ii. Kesalahan yang dibuat dengan keyakinan tinggi menerima penalti besar karena probabilitas kelas sebenarnya kecil.

Berikut set validasi sintetis yang lengkap. Label AA, BB, dan CC mewakili tiga kelas sembarang; tidak ada prediksi privat atau berisiko tinggi di sini.

ContohLogitKelas sebenarnyaKelas prediksiBenar?Keyakinan pada T=1T=1Keyakinan pada T=1.23T=1.23
1[3,1,0][3,1,0]AAYa0.8440.779
2[2.5,1,0][2.5,1,0]AAYa0.7660.701
3[3,0.5,0][3,0.5,0]BATidak0.8830.821
4[1.5,2,0][1.5,2,0]BBYa0.5740.537
5[0.5,0,1.5][0.5,0,1.5]CCYa0.6290.575
6[2,2.2,0][2,2.2,0]ABTidak0.5180.496

Pencarian temperatur positif menghasilkan T1.22975T\approx1.22975. NLL rata-rata turun dari 0.822780.82278 pada T=1T=1 menjadi 0.812430.81243 pada nilai yang di-fit. Akurasi tetap 4/64/6, tepat seperti yang diprediksi oleh urutan kelas yang dipertahankan.

Set ini sengaja dibuat sangat kecil agar dapat dihitung. Set ini tidak cukup besar untuk menyetujui kalibrator yang di-deploy, dan menggunakan enam baris yang sama untuk mem-fit TT sekaligus melaporkan performa akan menghasilkan estimasi generalisasi yang optimistis.

ECE meringkas diagram reliabilitas

Diagram reliabilitas, yang juga disebut kurva kalibrasi, mengelompokkan prediksi berdasarkan keyakinan. Untuk setiap bin BmB_m, hitung

acc(Bm)=1BmiBm1(y^i=yi)\operatorname{acc}(B_m) =\frac{1}{|B_m|}\sum_{i\in B_m}\mathbf{1}(\hat{y}_i=y_i)

dan

conf(Bm)=1BmiBmp^i.\operatorname{conf}(B_m) =\frac{1}{|B_m|}\sum_{i\in B_m}\hat{p}_i.

Indikator 1(y^i=yi)\mathbf{1}(\hat{y}_i=y_i) bernilai 11 untuk prediksi yang benar dan 00 untuk prediksi lainnya. Sebuah bin berada pada diagonal ideal ketika akurasinya sama dengan keyakinan rata-ratanya.

Expected calibration error mengambil rata-rata berbobot sampel dari celah absolut antarbin:

ECE=m=1MBmnacc(Bm)conf(Bm).\operatorname{ECE} =\sum_{m=1}^{M}\frac{|B_m|}{n} \left|\operatorname{acc}(B_m)-\operatorname{conf}(B_m)\right|.

Perhitungan di bawah menggunakan empat interval keyakinan tetap dengan lebar sama: [0,0.25)[0,0.25), [0.25,0.50)[0.25,0.50), [0.50,0.75)[0.50,0.75), dan [0.75,1][0.75,1]. Bin kosong tidak memberi kontribusi.

Diagram reliabilitas empat bin untuk perhitungan enam contoh. Penskalaan suhu menggeser keyakinan ke tengah, tetapi contoh juga melintasi batas bin sehingga estimasi ECE berbasis bin memburuk.
Titik reliabilitas sebelum dan sesudah penskalaan suhu Garis diagonal menandai kalibrasi sempurna. Sebelum penskalaan, dua titik lingkaran berada pada keyakinan rata-rata 0,574 dengan akurasi 0,667 dan keyakinan 0,831 dengan akurasi 0,667. Setelah penskalaan, tiga titik persegi berada pada keyakinan 0,496 dengan akurasi nol, keyakinan 0,604 dengan akurasi satu, dan keyakinan 0,800 dengan akurasi 0,500. Sampel kecil dan perpindahan bin membuat ECE naik dari 12,9 persen menjadi 38,0 persen.
Statistik bin persis yang ditampilkan dalam diagram
SuhuInterval keyakinanContohKeyakinan rata-rataAkurasi
1.00[0.50, 0.75)30.5740.667
1.00[0.75, 1.00]30.8310.667
1.23[0.25, 0.50)10.4960.000
1.23[0.50, 0.75)30.6041.000
1.23[0.75, 1.00]20.8000.500

Sebelum penskalaan, tiga prediksi dalam [0.50,0.75)[0.50,0.75) berkontribusi

360.6670.5740.047,\frac{3}{6}|0.667-0.574|\approx0.047,

dan tiga prediksi dalam [0.75,1][0.75,1] berkontribusi sekitar 0.0820.082. Jumlahnya adalah ECE0.129\operatorname{ECE}\approx0.129, atau 12.9%12.9\%.

Setelah penskalaan, satu prediksi menyeberang ke bawah 0.500.50 dan contoh lainnya membentuk kelompok berisi tiga dan dua. Tiga kontribusi bin kira-kira 0.0830.083, 0.1980.198, dan 0.1000.100, menghasilkan ECE0.380\operatorname{ECE}\approx0.380, atau 38.0%38.0\%.

Likelihood lebih baik, ECE lebih buruk

Temperatur yang di-fit mengoptimalkan NLL, bukan ECE empat bin. NLL mengevaluasi probabilitas lengkap yang diberikan kepada setiap kelas sebenarnya dan berubah mulus terhadap TT. ECE memasukkan prediksi ke dalam interval, membuang detail dalam bin, dan berubah tiba-tiba ketika keyakinan melintasi tepi.

Enam contoh memperkuat ketidakstabilan itu. Satu kesalahan dalam bin yang berisi satu contoh menghasilkan akurasi 0%0\%; satu hasil benar akan membuat bin yang sama akurat 100%100\%. Memindahkan tepi atau memilih jumlah bin berbeda dapat menghasilkan ECE berbeda tanpa mengubah satu prediksi pun. Guo et al. secara eksplisit mencatat bahwa ECE adalah pendekatan berbasis bin dan hasilnya dapat dipengaruhi skema binning. Panduan kalibrasi scikit-learn juga memasangkan kurva dengan histogram karena satu titik tanpa jumlah sampelnya mudah dibaca secara berlebihan.

Jadi contoh ini mendukung tiga pernyataan terpisah:

  • TT yang dipilih meningkatkan NLL pada enam baris ini;
  • temperature scaling membiarkan kelas prediksi dan akurasinya tidak berubah;
  • ECE empat bin memburuk pada baris yang sama.

Tidak satu pun berarti kalibrator akan memperbaiki probabilitas untuk sampel baru. Pertanyaan itu membutuhkan data evaluasi yang tidak disentuh, yang diambil dari populasi yang menjadi perhatian keputusan deployment.

Reproduksi setiap angka dengan NumPy

Program berikut melakukan pencarian padat atas satu skalar positif. Grid ini sengaja transparan; kode produksi dapat menggunakan optimizer skalar berbatas dan harus mempertahankan set evaluasi final yang independen.

import numpy as np

logits = np.array([
    [3.0, 1.0, 0.0],
    [2.5, 1.0, 0.0],
    [3.0, 0.5, 0.0],
    [1.5, 2.0, 0.0],
    [0.5, 0.0, 1.5],
    [2.0, 2.2, 0.0],
])
labels = np.array([0, 0, 1, 1, 2, 0])

def probabilities(temperature):
    scaled = logits / temperature
    scaled -= scaled.max(axis=1, keepdims=True)
    exp = np.exp(scaled)
    return exp / exp.sum(axis=1, keepdims=True)

def nll(temperature):
    p = probabilities(temperature)
    return -np.log(p[np.arange(len(labels)), labels]).mean()

temperatures = np.linspace(0.25, 4.0, 15_001)
temperature = temperatures[np.argmin([nll(t) for t in temperatures])]

def ece(temperature, edges=np.linspace(0.0, 1.0, 5)):
    p = probabilities(temperature)
    predictions = p.argmax(axis=1)
    confidence = p.max(axis=1)
    correct = predictions == labels
    total = 0.0
    for lower, upper in zip(edges[:-1], edges[1:]):
        in_bin = (confidence >= lower) & (confidence < upper)
        if upper == 1.0:
            in_bin = (confidence >= lower) & (confidence <= upper)
        if in_bin.any():
            total += in_bin.mean() * abs(
                correct[in_bin].mean() - confidence[in_bin].mean()
            )
    return total

print(f"T={temperature:.5f}")
print(f"NLL: {nll(1.0):.5f} -> {nll(temperature):.5f}")
print(f"ECE: {ece(1.0):.3f} -> {ece(temperature):.3f}")

Output yang diharapkan kira-kira:

T=1.22975
NLL: 0.82278 -> 0.81243
ECE: 0.129 -> 0.380

Kalibrator termasuk dalam satu kontrak pengukuran

Catatan kalibrasi yang dapat dipertanggungjawabkan harus menyebut checkpoint model, logit yang belum diskalakan, definisi hasil, populasi, jendela data, metode pembagian, TT yang di-fit, objektif optimasi, tepi bin reliabilitas, hitungan bin, dan setidaknya satu proper scoring rule seperti NLL. Fit kalibrator pada contoh yang tidak digunakan untuk melatih pengklasifikasi, lalu nilai pada data yang tidak disentuh.

Pergeseran distribusi adalah kasus batas yang menentukan. Temperatur yang di-fit pada pertanyaan benchmark yang bersih mungkin keliru untuk prompt pendek, bahasa lain, campuran kelas baru, atau input yang dikumpulkan setelah produk berubah. Temperature scaling tidak dapat memperbaiki pemeringkatan kelas yang buruk, mendeteksi domain yang belum pernah dilihat, atau membuktikan keamanan sistem. Ia hanya menskalakan ulang logit berdasarkan asumsi validasi yang digunakan untuk mem-fit satu angka.

Itulah sebabnya tinjauan deployment harus menempatkan kurva reliabilitas dan hitungan sampel di samping ECE, bukan memperlakukan skalar itu sebagai sertifikat. Jika kohort baru memindahkan titik-titik tersebut menjauh dari diagonal, tugas berikutnya bukan membela ECE lama. Tugasnya adalah mengidentifikasi populasi yang berubah, mengumpulkan cukup label untuk mengukurnya, dan memutuskan apakah kontrak kalibrasi masih menggambarkan sistem yang digunakan.

Sumber

  1. On Calibration of Modern Neural Networks
  2. NIST AI 800-3 expands the AI evaluation toolbox
  3. scikit-learn probability calibration documentation
  4. Google DeepMind's double-blind AI evaluation pilot
  5. MLCommons on AILuminate's double-blind reliability evaluation