跳到主要内容

校准差距:你的 LLM 说有 90% 的把握,但实际上只有 60% 的准确率

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的语言模型告诉你,它有 93% 的把握认为 Geoffrey Hinton 在 2010 年获得了 IEEE Frank Rosenblatt 奖。然而实际的获奖者是 Michio Sugeno。这不是传统意义上的幻觉——模型生成了一个听起来合情合理的答案,并给它附上了一个高置信度分数。问题在于,这个置信度数字本身就是谎言。

这种声称的置信度与实际准确率之间的断层,就是所谓的校准差距。它是生产 AI 系统中被严重低估的故障模式之一。那些在原始模型置信度分数之上构建路由逻辑、升级触发器或用户可见置信度指示的团队,是在沙滩上建楼。

在许多生产场景中,校准差距比原始准确率更为关键。一个正确率 70%、但在出错时能如实说"我没把握"的模型,远比一个正确率 75%、却对所有输出都声称 90%+ 置信度的模型有用得多。前者让你能在它周围构建可靠的系统,后者则会毒化每一个下游决策。

校准究竟是什么意思

当模型的置信度分数与经验准确率相匹配时,该模型就是良好校准的。如果一个模型在 1000 次预测中都说"90% 置信",那么其中大约 900 次应当是正确的。如果只有 600 次正确,模型就存在一个可量化这一差距的预期校准误差(ECE)。

衡量这一点的标准方式是可靠性图。你按置信度区间(0-10%、10-20%,以此类推)将预测分组,计算每个区间内的实际准确率,并绘制置信度与准确率的对比图。一个完美校准的模型会在对角线上产生点——每个级别的置信度都等于准确率。而在实践中,大多数 LLM 在高置信度区域产生的曲线远高于对角线,意味着它们声称确定的频率远超其实际表现。

近期的基准测试呈现出一幅触目惊心的图景。在 SimpleQA 基准上,主流模型的 ECE 值从 0.631 到 0.810 不等。这意味着置信度与准确率之间的平均差距达到 63 到 81 个百分点。即便是最强模型之一的 GPT-4o,在这一基准上也仅能实现 35% 的准确率,同时 ECE 高达 0.45——近乎一半的置信度分数偏差接近一半。

为何 Logprobs 与语言化置信度会出现分歧

从 LLM 提取置信度有两种常见方式,两者开箱即用都不可靠。

Token 级 logprobs 给出模型对每个生成 token 的 softmax 概率。理论上,这是模型"真实"的内部不确定性估计。然而实践中,尽管它在常见 token 上准确率很高,校准却很差。词汇表上的概率分布受训练动态的影响——尤其是 RLHF,它将模型推向自信、肯定的输出,因为人类评分者更偏爱这类回答。一个措辞谨慎的模型会获得更低的评分,所以训练过程系统性地剥除了经过校准的不确定性表达。

语言化置信度 是指让模型以数字形式陈述其置信度:"你有多大把握?请用 0 到 100 分评分。"这种方式有其自身的问题。无论实际表现如何,模型都倾向于将其语言化置信度分数集中在高分端——它们已经学会了,听起来自信的答案会获得奖励,这一点也体现在自我报告的数字中。

研究表明,语言化置信度与正确性的相关性很弱,而且在模型缺乏相关知识的问题上,这种相关性会进一步下降。

这两种信号之间的差异带来了额外的麻烦。Token 级 logprobs 和语言化置信度经常意见相左,而且两者都与真实情况不甚吻合。一个模型可能给某个 token 分配 0.4 的 softmax 概率,同时却对完整答案声称 85% 的语言化置信度。这种不一致性让构建任何单一置信度管道都更加困难。

RLHF 过度自信的陷阱

现代 LLM 校准失准的根本原因并不神秘——就是 RLHF。预训练的基础模型通常校准得相当不错。而微调过程,尤其是来自人类反馈的强化学习,会系统性地损害校准效果。

机制很直接:人类评分者偏爱自信、清晰、直接的答案。措辞迟疑、加以限定以及表达不确定性,都会降低偏好分数。因此 RLHF 无论底层确定性如何,都在优化自信的表达方式。模型学会了:说"答案是 X"比说"我认为答案可能是 X,但我不完全确定"获得更多奖励。

这为生产系统制造了一个悖论。让模型变得实用的那些微调(遵循指令、流畅对话、提供有帮助的回复),同样使其置信度信号变得不可靠。你不能简单地改用基础模型——基础模型很难在生产中部署。而微调模型的自我评估又无法信任。

这个问题比均匀的过度自信还要糟糕。研究表明,大型 RLHF 调优模型在较简单的查询上可能表现出更严重的校准失准——这恰恰是你期望校准最好的任务。在 TriviaQA 上,GPT-4o 的 ECE 从 0.071 实际上上升到了 0.083,尽管准确率有所提升,这表明规模化和 RLHF 共同造就了难以预测的校准模式。

在你的系统中度量校准

大多数团队完全跳过了校准度量。他们评估准确率、延迟和成本,却从不检查置信度分数是否有意义。以下是在不需要研究团队的情况下添加校准度量的方法。

第一步:收集置信度-准确率对。 对于每个事后可以验证正确性的模型调用,将置信度分数与真实标签一并记录。对于分类任务,这很直接。对于生成任务,你需要对样本进行人工评估,或者使用自动化的正确性检查。

第二步:构建可靠性图。 将置信度-准确率对分成 10 到 15 个桶。绘制平均置信度(x 轴)与平均准确率(y 轴)的对比图。曲线与对角线之间的差距,就是你的校准误差的可视化呈现。Apple 的开源 ml-calibration 库提供了计算可靠性图和校准指标的工具。

第三步:计算 ECE。 预期校准误差是各桶中置信度与准确率绝对差值的加权平均,权重为每桶的样本数。ECE 为 0.05 是良好的。ECE 为 0.20 意味着你的置信度分数几乎毫无意义。大多数未经重校准的生产 LLM 的 ECE 在 0.15 到 0.40 之间。

第四步:按查询类型分段。 不同输入类别之间,校准差异悬殊。在某些基准中,与人物相关的查询 ECE 高达 0.71,而与地点相关的查询校准则好得多。你的模型可能对常见请求类型校准良好,却对罕见类型严重过度自信——而这恰恰是最致命的故障模式。

对于更新的校准指标,平滑 ECE(smECE)使用核平滑代替硬性分桶,目前是研究界推荐的度量方法。它避免了标准 ECE 在小数据集上可能产生的分桶边界伪影。

在生产中有效的重校准技术

一旦度量出了差距,就需要弥合它。好消息是:事后重校准技术可以在不重新训练模型的情况下显著改善校准效果。

温度缩放 是最简单、最广泛使用的方法。你学习一个单标量参数 T,在 softmax 之前除以 logits。若 T > 1,分布变得更平滑(置信度更低);若 T < 1,则变得更尖锐。你在一个留出的验证集上优化 T,以最小化负对数似然。温度缩放在推理时零延迟,且保留了模型的预测——它只调整置信度水平。

局限在于,单一温度对所有预测一视同仁。如果你的模型在难题上过度自信、而在易题上校准良好,全局温度无法同时解决两个问题。

自适应温度缩放 通过一个小型辅助模型为每个样本预测各自的温度来解决这一问题。MIT Thermometer 方法在有代表性的任务样本上训练一个轻量级模型,然后推广到新的类似任务。一个关键发现是:在模型家族中,基于小型 LLM 训练的辅助模型可以迁移到更大的模型,从而降低对标注数据的需求。

Platt 缩放 对模型的 logits 拟合一个逻辑回归,以生成经过校准的概率。它比温度缩放更灵活(两个参数而非一个),但仍假设特定的函数形式。在有足够验证数据时效果良好——通常每个任务需要几百个标注样本。

等渗回归 是非参数选项。它从置信度到校准概率拟合一个分段常数、单调不减的函数,不对校准失准的形状做任何假设。权衡之处在于:它需要更多验证数据,且在小数据集上容易过拟合。

语言化置信度校准 是针对无法访问 logits 的黑盒模型的新兴方法。你提示模型输出一个置信度分数,收集(语言化置信度、正确性)对的数据集,并在其上拟合一个校准函数。近期研究表明这能显著降低 ECE,但由于信号更嘈杂,需要更多校准数据。

对于大多数生产系统,从温度缩放开始。如果你的误差分析揭示出输入依赖的校准失准模式,再升级到自适应温度缩放或等渗回归。只有在真正无法访问 logprobs 的情况下,才保留语言化置信度校准方案。

围绕不确定置信度设计系统

即便在重校准之后,置信度分数也只是估计,而非保证。真正的工程挑战是构建能在置信度出错时优雅降级的系统。

用带迟滞的阈值,而非硬截断。 与其在置信度 < 0.8 时路由到人工审核,不如使用一个区间:0.85 以上自动批准,0.3 以下自动拒绝,中间的进行人工审核。这能防止在单一阈值附近的振荡,并承认校准在任何单一边界附近都是不完美的。

监控校准漂移。 随着输入分布的变化,校准会随时间退化。上个月优化的温度,本月可能已经不对了。在滚动窗口的生产数据上运行你的可靠性图,并在 ECE 超过阈值时发出告警。

集成多个置信度信号。 结合 token 级 logprobs、语言化置信度和语义一致性(用不同方式提问同一个问题并检查一致性)。没有任何单一信号是良好校准的,但它们之间的分歧本身就有信息量。当三个信号都对高置信度达成一致时,你能比任何单一分数都更信赖它。

向用户报告不确定性。 如果你的产品会暴露 AI 生成的答案,可以考虑展示经过校准的置信度,而不是将其隐藏。看到"中等置信度"的用户会做出比看到一个被自信陈述的错误答案更好的决策。关键在于,所展示的置信度必须是经过校准的——展示原始模型置信度只会训练用户去忽视这个信号。

校准投入的回报

在你的管道中添加校准度量和重校准,只需适度的投入:几百个标注样本、一张可靠性图和一个温度缩放参数。回报则不成比例。每一个消费置信度分数的下游系统——路由、升级、缓存、用户可见指示器——都会变得更加可靠。

跳过校准的团队并没有节省时间。他们只是把一次调试推迟到了一个代价高得多的时刻:当生产系统基于一个毫无意义的置信度分数做出高风险决策的时候。到那时,代价以用户信任来衡量,而非工程工时。

校准不是光鲜的工作。它不会产生令人印象深刻的演示数字,也不会出现在产品公告中。但它是一个知道自己不知道什么的 AI 系统,与一个自信地走下悬崖的 AI 系统之间的区别所在。在生产中,这个区别就是一切。

References:Let's stay in touch and Follow me for more thoughts and updates