跳到主要内容

生产环境中的 LLM 置信度校准:衡量与解决过度自信问题

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的模型说“我非常有信心”,但 40% 的时间都是错的。这不叫幻觉——这是校准失败,而且在生产环境中,这是一个更难检测、衡量和修复的问题。

生产环境中的 LLM 置信度校准:衡量与解决过度自信问题

幻觉占据了所有媒体头条。但过度自信的错误答案往往更危险:模型以极高的表达置信度生成一个看似合理、流利的回答,而下游消费者完全收不到任何异常信号。幻觉检测器、RAG 依据性检查和事实核查流水线都有助于处理凭空捏造的内容。但对于模型知道事实却对其确定性存在系统性错误校准的情况,这些手段几乎无能为力。

大多数发布基于 LLM 功能的团队都将置信度视为事后才考虑的事情。这篇文章将探讨为什么校准会失败、如何衡量它,以及在生产环境中真正能改善这一指标的设计模式。

校准究竟意味着什么

一个完美校准的模型是其声明的置信度与实际正确率相匹配的模型。如果你的模型在一千次预测中都说“90% 信心”,那么它应该大约对 900 次。如果它只对了 600 次,那么你就遇到了校准误差——具体来说,就是过度自信。

这听起来简单,但有着不显而易见的含义。一个模型整体上可能非常准确,但校准却极其糟糕:它能答对大部分问题,但其置信度评分无法可靠地对正确和错误的答案进行排序。模型是准确的,但在它可能失败的地方却不够诚实。这种区别对于路由决策、拒绝回答阈值和面向用户的置信度显示至关重要。

LLM 通过两种截然不同的方式表达置信度,而这两者经常不一致:

  • Token Logit 概率:在每个生成步骤中词汇表上的 Softmax 分布。这是来自模型架构的原始概率信号。它在开源权重模型中可用,有时也可以通过 API 获取(某些供应商会公开 Log Probs),但在大多数商业 API 调用中是缺失的。
  • 言语化置信度:当你要求模型评估其确定性时,它所说的话——例如“我有大约 85% 的信心”或“我相信这是正确的”。这是通过与其他文本相同的自回归过程生成的,而不是从 Token 概率中衍生出来的。研究一致表明,这两个信号经常不一致,且言语化置信度的平均期望校准误差(ECE)超过 0.377——比底层的 Logit 概率差得多。

这意味着,如果没有额外的校准工作,要求模型输出置信度百分比这种常见模式作为工程信号几乎是徒劳的。

为什么 RLHF 会降低校准质量

开箱即用的指令微调模型在过度自信方向上已经出现了错误校准。而 RLHF(来自人类反馈的强化学习)让情况变得更糟。

其机制很直接:PPO 训练中使用的奖励模型会系统性地倾向于给高置信度的回答打高分,而不管这种自信是否有依据。人类评分员会将自信感知为能力。这意味着 LLM 学习到表达肯定会获得奖励——并且在 RL 训练期间它积极地吸取了这一教训。

从经验上看,RL 训练导致的校准退化是巨大的。在相同基础模型上比较训练方法的研究表明:

  • SFT(通过最大似然进行的有监督微调):ECE 为 0.034
  • RL 训练变体:ECE 为 0.135 —— 校准质量大约差了 4 倍
  • 基准(无微调):ECE 为 0.163

SFT 的最大似然训练自然会产生校准更好的输出,因为它优化的是匹配正确答案的分布,而不是为了说服奖励模型。RL 和 DPO 通过奖励挖掘诱导了过度自信。那些聊起来最令人愉悦的模型,往往在面对自己不知道的事情时最不诚实。

实际意义在于:如果你在生产环境中使用 RLHF 微调模型(几乎肯定在用),请默认假设它们是过度自信的。并据此设计你的系统。

衡量校准误差

标准指标是 期望校准误差 (Expected Calibration Error, ECE)。它将模型预测划分为置信度区间(例如 0–10%, 10–20%, ..., 90–100%),然后衡量每个区间内声明的置信度与实际准确度之间的平均绝对差值,并按区间大小进行加权。

ECE = 0 意味着完美的校准。大多数生产级 LLM 的 ECE 在 0.05 到 0.20 之间。达克效应(Dunning-Kruger pattern)出现在各种模型家族中——较弱的模型往往表现出最差的校准,不是因为它们整体准确度低,而是因为它们不会针对较难的问题下调置信度。在困难的事实性基准测试中,一些前沿模型的 ECE 经测量甚至超过了 0.70。

配套的视觉化工具是 可靠性图 (Reliability Diagram):这是一个绘制各区间声明置信度(x 轴)与观察到的准确度(y 轴)的图表。完美校准的模型会沿着对角线分布。对角线下方的点意味着模型在该置信度范围内过度自信;上方的点意味着信心不足。大多数经过指令微调的 LLM 在几乎所有置信度范围内都表现出偏离到对角线下方的曲线。

要在实践中衡量这一点,你需要:

  1. 一个已知正确答案的输入数据集
  2. 每次预测的置信度分数(Token Log Probs 或自一致性采样)
  3. 对每次预测的正误判断
  4. 跨区间的 ECE 计算

挑战在于第 2 步。对于无法获取 Log Prob 的闭源 API 模型,你需要通过其他手段生成置信度信号——这把我们带到了生产设计模式。

过度自信的错误回答 vs. 幻觉

这两者是相关但架构上截然不同的失效模式,需要不同的缓解措施。

幻觉是一个内容问题:模型虚构了不存在的信息——错误的案例引用、从未出生的人物、捏造的药物相互作用。幻觉检测器的工作原理是将生成的内容与已知事实或检索语料库进行对比。

过度自信的错误回答是一个校准问题:模型知道一个真实的事物,将其陈述为真实的,但在该事实错误时仍表现出极高的置信度。由于没有虚构行为可以检测——响应通过了格式验证,看起来有据可依,并且能通过大多数幻觉检查。这种失效发生在置信度信号上,而非内容信号。

在医疗和法律背景下,研究表明这两个问题会同时叠加。斯坦福大学对法律问题的研究发现,幻觉率在 69–88% 之间,并伴随着系统性的过度自信。一项针对六个领先 LLM 在医疗任务上的研究发现,模型在高达 83% 的案例中会重复或详细阐述植入的虚假临床信息——且表现出极高的置信度。

错误内容与高置信度的结合是最糟糕的情况,因为接收输出的人类或下游系统没有触发验证的信号。

生产环境设计模式

弃权阈值

最干净的缓解措施是当置信度低到回答的期望值为负时,拒绝回答。这需要一个与实际正确性相关的校准后的置信度信号,而不是模型口头表达的置信度。

在无法访问 Log Prob 的情况下,有两种方法有效:

自一致性采样 (Self-consistency sampling):在温度 (Temperature) > 0 的情况下生成 5–10 个响应,衡量一致率。高度的不一致(通过语义相似度而非完全匹配来衡量)能可靠地发出低置信度信号。SelfCheckGPT 实现了这种方法。其成本与样本数量成正比,因此你是在用计算资源换取校准信号。

基于激活值的探测器 (Activation-based probes)(需要白盒访问):在内部隐藏状态上训练一个轻量级分类器来预测正确性。研究表明,这种方法的 AUROC 达到 0.772——明显优于基于 Logit 的方法 (0.663) 或基准线 (0.590)。在 0.5 的阈值下,你可以在显示的答案上达到 0.95 的精确率,同时扣留约 30% 的响应。缺点是需要访问模型内部数据。

工程上的权衡在于弃权的精确率与召回率:严格的阈值在显示的子集中提供高质量答案,但会扣留过多有效的响应;宽松的阈值则会放行过多错误答案。这应该根据你所在领域的成本非对称性进行调整——医疗和法律应用应该容忍较高的弃权率。

Gusto 的生产环境部署使用 Token 对数概率作为置信度过滤器:高置信度输出的准确率达到 76%,而低置信度输出仅为 45%。将低置信度响应路由至人工审核而非自动回答,显著提升了客户体验到的产品级准确率。

温度缩放 (Temperature Scaling)

如果你可以访问 Log Prob,温度缩放是回报最高、成本最低的校准技术。它在 Softmax 之前对 Logits 应用一个学习到的单一标量 T:

calibrated_logit = logit / T

T 是通过最小化负对数似然在留出验证集上学习得到的。对于指令微调模型,T 通常落在 1.5 到 3 之间——你正在向下压缩分布,以匹配模型的实际准确率。实现只需 2–3 行代码,应用只需几毫秒。

其局限性也是现实存在的:你需要 Logit 访问权限(大多数商业 API 不提供),并且当模型更改、提示词分布偏移或切换领域时,必须重新校准标量 T。在客户支持查询上学习到的 T 无法推广到代码生成。请将其视为针对每个任务的超参数。

对于更非对称的误校准,Platt 缩放(2 个参数:缩放 + 偏差)或保序回归(非参数化,需要 1,000 个以上的校准样本)能提供更好的拟合。集成校准——针对多个模型运行查询并衡量一致性——可以减少约 46% 的校准误差,但计算成本也相应增加。

第二意见路由

当单个置信度信号落在决策边界附近时,将其路由至第二个模型或人工审核通常是正确的生产模式。其架构如下:

  1. 主模型生成带有置信度分数的响应
  2. 高置信度响应直接通过
  3. 低于阈值的响应路由至更强大的模型或人工队列
  4. 处于中间不确定带的响应可能会触发针对性的验证调用(例如,针对特定声明的 RAG 溯源性检查)

这种三层模式——自动响应、验证、升级——让你能高效处理流量,同时对自动响应的内容保持质量保证。每一层的置信度阈值应分别校准:自动响应层需要高精确率的置信度信号,验证层可以使用噪声较大的信号,因为你反正会增加一个验证步骤。

哪些方法行不通

要求模型在回复中输出置信度百分比:这会产生口头化的置信度(verbalized confidence),这是目前最不准确(miscalibrated)的信号。平均 ECE 超过 0.377 意味着你应当预见到陈述置信度与实际置信度之间存在 37 个百分点的系统性误差。

将 Temperature 设置为 0:这会使 token 分布更集中,但并不能解决校准(calibration)问题。Temperature 为 0 的模型更具确定性,但校准效果并不会变好。确定性解码带来的 ECE 改善微乎其微,且取决于具体的任务。

在系统提示词中加入 “诚实面对你的不确定性”:这有时能减少在直接询问不确定性问题时的过度自信,但并不能系统性地改善整个输出分布的校准。

将校准视为一等工程需求

大多数生产环境中的 LLM 部署都将校准视为模型的一种隐性属性——即要么存在,要么不存在。研究表明事实并非如此:校准会因微调选择而退化,且随任务和领域的不同而剧烈波动,可以通过需要额外工程投入的后验技术(post-hoc techniques)来改进。

做得出色的组织会将 ECE 视为与准确率同等重要的指标进行追踪,在更新模型时运行可靠性图表(reliability diagram)分析,并在回复流程中构建弃权(abstention)机制,而不是将 “我不知道” 视为模型失败。

正确的思路是将校准视为与延迟(latency)同等的指标:它不是免费获得的,它会随着系统的更迭而退化,你需要通过检测手段来捕捉它的漂移。一个将准确率提高 3% 但使校准退化 15 个百分点的模型更新通常是负收益的——你是在用虚假的自信换取诚实的不确定性,用户最终会因此降低对系统的信任。

短期投入:在你的高风险端点(high-stakes endpoints)中加入自一致性采样(self-consistency sampling),将弃权率作为一等指标进行追踪,并构建置信度路由逻辑,将低确定性的回复发送给人工审核。长期投入:衡量生产查询分布中的 ECE,维护一个校准验证集作为模型评估流水线的一部分,并将后验重新校准(post-hoc recalibration)视为模型升级的标准步骤。

校准不会让你的模型更准确。它会让你的模型在力所不能及时保持诚实。

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