在 AI 内容审核系统里,一封邮件被判为垃圾邮件,模型给出 0.9 的概率。这个 0.9 该怎么理解?如果模型校准良好,意思是把历史上所有被打到 0.9 附近的邮件拢在一起,大约九成确实是垃圾邮件。很多团队只关心「有没有判对」,从不检查这个数字对不对得上,等到要按概率做取舍时才发现问题。校准讨论的正是这件事:模型说出的把握,和现实发生的频率能不能对上。
排序准和数值准,是两套标准
分类模型通常只被要求做对一件事:把正确类别的分数排到最高。这个要求叫判别力,衡量的是「谁比谁更可能」,不涉及具体数值。校准要求的是另一件事:分数本身要能当频率读。两者可以分离。一个模型完全可能把正负样本排得极好,同时把所有概率都压在 0.99 附近——排序全对,数值全错。反过来,一个模型也可能每档概率都很准,但区分能力一般。评估分类效果常用 模型评估指标,那些指标多数只看排序,所以校准问题在报表上常常是隐形的。
一条曲线把偏差画出来
检查校准的标准做法是分桶统计。把预测概率切成若干区间,每个区间算两个数:模型给出的平均概率,以及这个区间里实际为正的比例。
| 概率区间 | 模型平均给出 | 实际命中比例 | 偏差方向 | 含义 |
|---|---|---|---|---|
| 0.5 到 0.6 | 0.55 | 0.53 | 基本对齐 | 这一档可信 |
| 0.7 到 0.8 | 0.75 | 0.62 | 高估 | 说七成五,实际六成出头 |
| 0.9 到 0.95 | 0.92 | 0.78 | 明显高估 | 高分段最不可信 |
| 0.95 以上 | 0.98 | 0.85 | 严重高估 | 接近满分的判断也要留余量 |
把每桶的横纵坐标连起来,就是可靠性曲线。曲线贴住对角线说明校准良好;整体压在对角线下方,说明模型系统性过度自信,这是深度模型最常见的样子。表里第四行值得单独看:越靠近满分,偏差往往越大,因为这一档的样本少,模型缺少被纠正的机会。
过度自信是怎么来的
根子在训练目标。交叉熵损失鼓励模型把正确类别的分数往 1 推,推得越狠损失越小,它没有理由停在「刚刚好」的位置。加上深度网络容量大,训练集上几乎能被完全分开,模型于是学会了「凡是我见过的都很有把握」。另一个来源是分布外输入:遇到训练时没见过的样本,模型仍然会给出一个高分,而这个分数毫无依据。想理解这套打分机制的底层,可以看 Softmax 如何把一组实数压成概率,以及 交叉熵 如何驱动这个压的过程。
校正的三种做法
后处理校正最常用,思路是拿一批留出数据,学一个从原始分数到实际频率的映射。温度缩放只调一个参数,把分数先取对数再除以温度,适合偏差形状比较规整的情况;等渗回归拟合一条单调曲线,灵活但样本少时容易过拟合;分桶校正最直接,按区间查表改值,实现简单,代价是桶边界处会跳变。三种都属于「不动模型本体,只改输出」,成本小、可回滚,所以工程上优先考虑。
校准改不了什么
校准只调数值,不改排序。一个模型如果区分能力本身很差,校准之后每条概率都变得诚实,但该错的还是错——它只是把「我很确定」改成「我大概六成」,判断结果并没有变好。这一点常被误解:有人以为做完校准准确率会上升,实际上多数情况下准确率几乎不动,变的只是概率的可读性。校准还依赖一个前提,留出数据和线上数据同分布。一旦线上流量变了,比如用户群体换了、输入类型变了,旧的映射就会失效,需要重新拟合,这类现象在 数据漂移 里有更完整的讨论。此外,多分类场景下的校准比二分类麻烦得多,逐类校正之后各类概率之和未必还是 1,还要额外做归一化。
什么时候必须在意
判断标准很朴素:你的决策是否用到概率的数值。只取分数最高的那一类,校准与否影响不大;一旦要按概率分档处理,比如把预测概率超过某条线的样本转人工复核、按风险高低排优先级、把多个模型的输出加权融合,概率失准就会直接变成决策失误。这时校准属于前置条件,而非上线后的优化项。反过来,如果只是做粗排序或者取前若干名,先把排序指标做好更实际。
速查:模型校准要点
- 校准问数值对不对,判别力问排序对不对
- 可靠性曲线贴对角线为佳,压在下方说明过度自信
- 成因:交叉熵把分数推向 1,分布外样本仍给高分
- 常用修法:温度缩放、等渗回归、分桶校正
- 校准不改排序,只改数值,前提是留出数据同分布


