跳到主要内容

校准弃答:你的 LLM 技术栈每一层都在惩罚的能力

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的模型可以拥有一种能力,在关键时刻,这种能力比你发布的任何其他行为升级都更有价值:能够说“我没有可靠的答案”并且是认真的。不是那种基于关键词匹配的安全拒绝。也不是模型在处理争议性话题时,从 RLHF 中学到的那种模棱两可的坏习惯 (hedging tic)。而是真正的能力——一种经过校准的弃权 (calibrated abstention),仅当且仅当模型的内部证据不支持生成自信的回答时才会触发。

你永远不会偶然获得这种能力。LLM 技术栈中的每一个默认设置都在反向推动。

预训练奖励预测的是下一个 Token,而不是“预测下一个 Token,或者诚实地承认你不知道接下来的内容”。在训练后的评测中,无论是人类还是 LLM 评判员,系统性地给自信的错误答案打分高于诚实的模棱两可——一项被广泛引用的结果显示,在 5 分制下,这种差距高达 15–20%,即使底层主张完全相同,使用对冲词汇 (hedge phrases) 也会损失约 0.7 分。用户反馈加剧了这一现象:点踩 (thumbs-down) 更多集中在显性的拒绝上,而不是隐性的虚假编造 (confabulations) 上。因为用户必须实际进行事实核查才能发现自信的回答是错误的,而大多数用户并不会这样做。在每一个阶段,优化梯度都指向过度自信,而“我不知道”成了一个没人刻意丢弃却被遗失的功能。

这篇文章将探讨为什么梯度会指向那个方向,一个经过适当校准的弃权层在生产环境中究竟是什么样的,以及你必须发明什么样的评估纪律——因为现成的基准测试 (benchmarks) 是系统中最先失效的部分。

惩罚诚实的激励结构

从几乎每个团队都会不加思索沿用的基准评分规则开始。大多数流行的评估 (evals) 打分只有 0 或 1:精确匹配(经过一定规范化),对“我不知道”没有部分分数,对“我不知道,但这里是我要找的地方”也完全不给分。在这种规则下,对 30% 的输入选择弃权的模型在这些输入上得分为零;而一个盲目猜测的模型仅凭运气就能在同样的输入上获得 ≈25% 的分数。将这个梯度运行几千个训练步,模型就会学到:面对“我知道这个吗?”的回答应该是“显然知道,这是一个看起来很合理的回复。”

RLHF 中的奖励模型也继承了同样的模式。最近关于奖励校准的研究表明,PPO 奖励模型系统性地过度自信——无论事实准确性如何,它们都会给听起来自信的输出打高分,并且即使底层答案正确,也会惩罚诸如“可能”、“我不确定”和“你应该核实”之类的认识标记 (epistemic markers)。像 PPO-M 和 PPO-C 这样的方法通过显式注入校准后的奖励信号来对抗这种情况,因为如果没有这些信号,策略 (policy) 就会向奖励模型所青睐的断言式语调漂移。不确定性惩罚 RLHF (UP-RLHF) 进一步扩展了这一理念:使策略趋向于奖励集合达成一致的输出,并惩罚高方差的自信奖励。

当你使用 LLM 评判员来对生产流量进行评分时,情况也是大同小异。评判模型继承了自身训练中的断言式先验。2025 年的一项关于 LLM 评判偏见的研究《正义还是偏见?》(Justice or Prejudice?) 将此称为“权威偏见”(authority bias):在准确性相同的情况下,听起来自信的输出会击败模棱两可的输出,“校准至关重要”这一评分标准虽然缩小了影响,但并未消除它。当你使用同一个评判员来过滤 RLHF 偏好数据时,这种偏见会产生复合效应。你最终会得到一个偏好过度自信的评判员,它正在训练一个变得更加过度自信的模型,而这个模型又由一个偏好过度自信的评判员评分。

接着是用户。《自然·机器智能》(Nature Machine Intelligence) 中的“校准差距”研究表明,当解释显得自信且风格化时,人类会系统性地高估 LLM 的准确性;而将解释语气与模型的内部置信度保持一致,可以缩小校准差距和辨别差距(即用户区分正确答案和错误答案的能力)。但你的产品团队并没有进行这项实验。他们发布的是在用户满意度调查中得分更高的版本,也就是那个自信的版本,因为用户在当下更喜欢自信的回答,只有在事后才会察觉代价——有时甚至永远察觉不到。

四层结构,四个梯度,全都指向同一个方向。最终发布的模型,是那个能够流利编造事实的模型。

校准并非选择性分类(而且你的评估混淆了它们)

在构建弃权层之前,请区分两件在日常对话中看起来一样但在衡量中完全不同的事情:

  • 校准 (Calibration) 问的是:当模型说“80% 置信度”时,它是否在 80% 的时间里是正确的?通过预期校准误差 (ECE) 和可靠性图表来衡量。
  • 选择性分类 (Selective classification) 问的是:模型的置信度是否可以用来区分其正确答案和错误答案?通过置信度与准确率曲线下的 AUROC 或风险覆盖权衡 (risk-coverage tradeoffs) 来衡量。

一个模型的校准可能非常糟糕——总是说 95%——但具有出色的选择性分类,因为其 95% 主张与 99% 主张的 相对 排名仍然遵循正确性。反之,一个完美校准的模型如果其置信度在 平均 水平上校准良好但在 单次查询 中没有信息量,那么它的选择性分类可能一团糟。

生产环境的分流需要的是后者。你不需要模型输出一个精确的概率;你需要它的不确定性信号——无论是口头表达的、Logit 衍生的,还是跨多个补全 (completions) 采样的——具有足够的信息量,以便你可以将低置信度的输出路由到检索、升级、弃权或人工处理。报告单一准确率数字的基准测试套件无法为你提供其中任何一个,而混淆这两者的团队最终会针对聚合 ECE 调整校准提示,而他们的实际弃权门控却在随机触发。

评估的升级是针对风险覆盖曲线 (risk-coverage curves) 进行评分。在回答了多少比例的流量时,已回答部分的准确性仍能保持在你的阈值之上?如果模型对 20% 的输入弃权,剩下的 80% 是 95% 的准确率还是 78% 的准确率?画出这条曲线。你会发现,大多数在平均 ECE 上看起来能改善校准的提示技巧,在真正关键的长尾部分几乎无法改变曲线。

生产环境中的校准弃权层是什么样的

无论你选择哪种不确定性估算器,最终上线的模式大致如下:

模型可以低成本计算的不确定性信号。 选项包括从第一个内容 Token 的 Token 级熵(token-level entropy),到多样本一致性(multi-sample agreement,即在适度温度下运行 N 次提示词并衡量自一致性),再到口头表达置信度(verbalized confidence,“你的把握有多大,0-100?”),以及将模型输出与检索到的段落进行比较的基于检索的接地得分(grounding scores)。每种方法都有权衡:多样本一致性在不同模型系列中最可靠,但成本为 N 倍 Token;口头表达置信度成本低,但除非你专门针对其进行训练,否则往往会塌陷到 90-100 之间。

按查询类别而非全局调整的阈值。 医疗编码查询和日常闲聊查询不应使用相同的弃权置信度阈值。阈值是一个产品决策:用户愿意在此界面接受多少虚假置信的输出,以及他们能容忍多少弃权带来的阻力?请针对流量集群进行调整,而非针对模型本身。

弃权触发的响应模板。 “我不知道”是错误的 UX。正确的做法更接近于:“我对这个答案没有把握。在采信之前,建议你核实以下内容:[列表]。可以去这里查看:[指针]。”这就是弃权作为“拒绝”与弃权作为“移交”之间的区别。它还可以兼作反馈信号:当用户实际点击其中一个指针时,你的评估就已经告诉你这次弃权是有用的。

回退路径,最好是检索增强的。 如果弃权层可以路由到检索系统,并利用接地(grounded)的上下文重新尝试回答,你就将一次拒绝转化为了“缓存未命中”(cache miss),而不是死胡同。最近的研究(如 RefusalBench)规范了如何测试这一点:通过编程方式扰动检索到的上下文,观察模型在检索内容有缺陷时是否能恰当弃权,而不是根据错误的证据进行胡编乱造。

将弃权视为信号的日志记录界面。 大多数可观测性栈将弃权视为不可见(触发低参与度、低留存指标)或视为需要调查的故障模式。这两者都抓错了重点。弃权是你的模型表现出克制的时刻;它们应该与置信的回答一起出现在同一个仪表盘上,按查询类别切分,并像监控准确率一样监控其漂移率。系统提示词更改后弃权率突然塌陷,是你无意中通过训练消除了模型克制力的早期指标。

闭环的评估准则

弃权层是一个控制面(control surface)。你不能在不测量它的基准测试中发布控制面。构建一个仅针对以下四项进行评分的评估套件:

1. 在留出数据集(held-out grid)上的校准。 按难度对评估进行分层——简单、中等、困难、无法回答。针对每个分层,对比模型的陈述置信度或衍生置信度与实际正确性。每个分层的可靠性图(reliability diagram)应趋于对角线分布。如果你的模型在困难切片上自称有 95% 的把握,但准确率只有 60%,这就是你需要知道的真实数据,而单一的聚合 ECE 指标会掩盖这一点。

2. 阈值下的风险覆盖率(Risk-coverage)。 在每个候选弃权阈值下,模型回答了多少比例的流量?已回答部分的准确率是多少?将运营点作为一项产品决策来选择,并针对其制定预算。

3. 弃权质量,而非仅仅是弃权率。 当模型弃权时,这种弃权是有帮助的(它是否提供了可验证的下一步?),还是仅仅是诚实的(它是否只是说“我不知道”)?在单独的评价标准下进行评分。一个在 20% 的查询中通过说“我不知道”来弃权的模型,其交付的产品效用低于一个在同样 20% 的查询中进行建设性移交的模型。

4. 改进评价标准后的非对称评分。 替换评估边界处 0 或 1 的评分方式。置信且正确获得全分。置信且错误获得负分,而不是零分。对无法回答的问题进行诚实弃权获得部分分数。对可以回答的问题进行诚实弃权则给予轻微惩罚。确切的数字并不重要,重要的是这种非对称性。一旦你的训练和评估流水线看到了非对称奖励,梯度就会反转。

这正是符合预测弃权(conformal-abstention)研究领域所规范的原则:通过严格的风险控制,将“诚实的不确定性”从缺失的功能转化为具有正权重的输出类别。你不需要完整采用符合预测(conformal prediction)也能获益;你只需要让评估标准不再是二元的。

校准弃权是一个产品特性

这一切背后的架构实现是:弃权不是你等待下一次训练运行交付的模型属性。它是一个你需要构建的产品特性,围绕一个原生并不想弃权的模型,使用一套在公共基准测试忽略的维度上进行评分的评估套件,通过 UI 交互设计将克制转化为效用而非阻力。

最后一部分是产品团队往往重视不足的。如果一个模型在产生动摇时,其 UX 让每一次对冲看起来都像是一个“非回答”,那么它会被认为比一个能流利胡编乱造的模型能力更弱。如果一个模型在产生动摇时,其 UX 能将每次对冲转化为有用的后续行动——引用、澄清问题、检索建议或“建议验证”清单——那么它会被认为比胡编乱造的模型更值得信赖,而这种信任会在用户关系的生命周期中不断累积。

一次自信的错误回答所损失的用户信任,比十次诚实的“我不知道”所建立的信任还要多,而第二个数字可能是你的仪表盘目前没有追踪的。开始追踪它。在评估中添加弃权列。分配非对称分数。构建移交 UI。将弃权率记录为一级信号并对其漂移进行告警。

这种能力并不是“让模型变得诚实”。这种能力是构建周边系统——评估、标准、UI、日志——使得诚实的回答物有所值,而自信的错误付出应有的代价。一旦梯度反转,模型自然会跟进。在此之前,每一项其他的质量投入都处于一个错误方向推力的下游。

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