置信度到底可不可信
這一頁回答的是:那些置信度到底能不能信。
先說結論:「輸出的形狀有保證」和「輸出的機率是準確的」是兩件完全不同的事。 前一件事有多方驗證,後一件事目前是被公開質疑的。任何要把決策模型放進生產門控的人, 都應該把廠商或專案自報的置信度當作待校準的先驗,而不是保證。
校準是什麼
一個模型說「我有 80% 的把握」。如果把它所有說 80% 的地方拿出來統計, 恰好有 80% 是對的,那這個機率是校準的。差了就說它過度自信(或自信不足)。
量化這件事的常用指標是 ECE(Expected Calibration Error,期望校準誤差): 把預測按置信度分箱,比較每個箱裡的平均置信度與實際正確率,按箱大小加權平均。 數字越小越校準。
校準與準確率是兩條獨立的軸。 一個準確率很高的模型可以嚴重過度自信 (在最難的那部分上尤其如此),一個準確率一般的模型可以校準得很好。 下面會看到這兩者同時出現的例子。
補救手段一:溫度縮放
最便宜、最通用的一種。想法是:模型的機率排序往往是對的,只是幅度不對 —— 過度自信就是所有機率都離 0 和 1 太近。於是用一個溫度參數把分佈拉平或壓尖, 參數在留出集上擬合。
一個可離線復跑的復刻專案給出的實測值:
溫度縮放 + conformal 棄權,ECE 從 0.170 降到 0.071(交叉驗證)。
注意那個「交叉驗證」:不是在同一條資料上擬合併評估的。這是這類數字 值不值得信的關鍵區別。
補救手段二:conformal 棄權
溫度縮放處理的是「幅度」,conformal 處理的是「什麼時候別回答」。
它的做法是:不追求每個機率都準,而是給出一個棄權集合, 並保證「真值落在集合裡的比例」不低於一個指定水平(覆蓋保證)。 達不到把握的樣本不進入自動通道,而是升級。
真實專案裡的用法:
- 一個 118M 的開源替代品用溫度縮放 + split-conformal 棄權集, 在公開套件上報 ECE 0.01–0.03 —— 同時它自己承認,在 typed decisions 基準上輸給 Laya(0.71 vs 0.77)。這種「把輸的也寫出來」的專案, 其數字比只報贏面的更值得看。
- 一個醫療場景的實現用「兩個凍結的本地讀者 + 免擬合路由 + split-conformal 候選集給誤差上界」,在三個各 600 題的國家執業考試上,距離託管服務 不超過 2 分,且沒有微調、沒有蒸餾。
這兩條路徑的共同點是:它們都不聲稱機率本身變準了,而是聲稱「知道自己什麼時候不準」。 在實際系統裡,後者才是你能用來做門控的東西。
一條反直覺的獨立實測:不同原語的偏差方向相反
有獨立的校準測試用 900 條規則生成的工單(模型不可能見過)加三個公開基準, 公佈了每一條原始響應、以及對模擬噪聲底的 ECE,得到了一個符號級結論:
| 原語 | 偏差方向 |
|---|---|
Choice |
系統性過度自信 |
Score |
系統性過度自信 |
Boolean(Noul) |
系統性自信不足 |
這個結論的價值在於「符號」本身。如果偏差只是隨機的,那麼用一個統一的 溫度參數去修就夠了;方向相反意味著單一的全域性校正修不好它 —— 你至少需要按原語分別校準。
它還解釋了為什麼某些設計會出問題:如果一個系統把 Noul 和 Choice
的置信度放在同一個閾值上比較,那麼它實際上在用一個自信不足的尺子
和一個過度自信的尺子量同一件事。
輸入語言也會影響校準
另一條實測:在一個有 3,200 條人工標註的西班牙語專案上,
把 state 寫成西班牙語會掉 3.0–6.4 個準確率點,並讓 XNLI / PAWS-X 上的 ECE 大約翻倍;而把 instructions 寫成西班牙語則沒有影響。
區分「state 的語言」和「指令的語言」是關鍵 —— 前者是內容, 後者是元資訊。這條對中文與日文的讀者尤其相關:中文/日文的 state 很可能會走一遍類似的、但還沒人公開測過的路徑。 沒有理由假設它在你的語言上沒發生。
閾值到底怎麼定
上面所有內容的落點都是同一個問題:那 0.8 是從哪來的。
可復算的答案是:不要拍,量。 拿你自己的標註資料,為每個問題擬合出 「達到目標準確率所需的閾值」,用留出集驗證這個閾值。
有一個工具專門做這件事,並且多做了一步很關鍵的事: 當模型更新破壞了已鎖定的閾值時,讓 CI 失敗。 閾值和價格一樣會過期 —— 區別是價格寫錯了有人會發現,閾值寫錯了不會。
一句話
把置信度當先驗,不當保證。 先用你自己的資料量出「哪個區間可信」,再把那個區間寫進程式碼。