文档导航

置信度到底可不可信

这一页回答的是:那些置信度到底能不能信。

先说结论:「输出的形状有保证」和「输出的概率是准确的」是两件完全不同的事。 前一件事有多方验证,后一件事目前是被公开质疑的。任何要把决策模型放进生产门控的人, 都应该把厂商或项目自报的置信度当作待校准的先验,而不是保证。

校准是什么

一个模型说「我有 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 失败。 阈值和价格一样会过期 —— 区别是价格写错了有人会发现,阈值写错了不会。

一句话

把置信度当先验,不当保证。 先用你自己的数据量出「哪个区间可信」,再把那个区间写进代码。