AI 说有九成把握,为什么不能直接相信?

把 AI 的口头自信变成能检查的数字:用假设问答算清概率校准,理解为什么校准良好仍可能分不清难题,以及同一条漂亮曲线怎样掩盖不同任务里的误差。

AI 说有九成把握,为什么不能直接相信?

让 AI 回答一个问题,再补一句“你有多大把握”,它很容易给出一个看起来很认真的数字:百分之九十。

我看到这种回答,总想接着问:这个九十,是怎么来的?是它刚查过可靠资料,是类似问题过去十次对九次,还是它只是觉得,这里写“九成把握”很像一个合适的回答?

数字比“应该没错”显得精确,但小数点不会自动带来证据。如果准备让这个分数决定哪些答案直接采用、哪些交给人复核,就得先知道它能不能兑现。机器学习里把这件事叫作概率校准。

九成把握,要放回一群答案里看

假设做一个 demo 问答助手,根据公开的活动说明,回答“活动在哪天开始”“报名需要什么材料”之类的问题。我们把任务定得很窄:一条回答中的必要信息是否全部正确。有遗漏或者编造,就记为错误。

接下来所有题数、正确率和分组,都是解释原理用的假设数据,不是哪款产品的测试成绩。

收集一批它声称有九成把握的答案,等人工逐条核对之后,如果其中大约九成确实正确,这一档的自信就比较符合实际。它报六成的那批,实际也该大约六成正确。各档都对得上,才能说这套分数经过了校准意义上的检验。

这不是保证接下来任意十道题都恰好错一道。哪怕分数可靠,小批次结果也会波动;同一份材料拆出来的十个问题,还可能因为一起读错某句话而成批出错。把“九成”理解成每十次定额发放一张错误券,会制造另一种误解。

它也没有指出这一次会不会错。校准描述的是一群类似分数的预测与实际结果的对应关系。对眼前这个答案,核对原始资料仍然有价值,尤其是错误会直接改变后续动作的时候。

把口头的九十分画成一条曲线

怎样检查这种对应关系?先把答案按声称的把握分组,再分别算两件事:这一组平均报了多少,最后实际对了多少。

假设有五组答案,每组一百条,平均把握依次是百分之二十、四十、六十、八十、九十。人工核对后,各组分别答对十条、二十五条、四十条、五十五条、六十条。

把平均把握放在横轴,实际正确率放在纵轴,每组就得到一个点。这条可靠性曲线如果贴近对角线,意味着说多少就大致兑现多少;像这组数据,所有点都在对角线下方,说明系统普遍把话说得太满。九成那组实际只有六成,问题一眼就能看出来。

假设五档答案的平均把握与实际正确率:曲线低于对角线,表示自信超过实际表现

scikit-learn 的校准文档用分箱比较预测概率与事件发生比例。这里把“答案正确”定义成要检查的事件,借用同样的思路审视问答助手。

来源:scikit-learn:概率校准与可靠性曲线

图上还应该保留每档有多少条。两条答案恰好全对,和两千条答案中有九成正确,证据的稳定程度完全不同。把分组切得很细,曲线可能抖得厉害;分得太粗,又会把本来不同的情况揉在一起。因此,我会同时看每档的数量和范围,而不只看一条顺滑的线。

平均自信和总体正确率相等也不够。高分那组过分自信,低分那组过分保守,两边刚好抵消,总平均就很好看。逐档检查的用处,正是把这种抵消拆开。

“校准很好”也可能没什么帮助

再想一个更极端的助手:无论题目是什么,它都报告百分之五十的把握。恰好,在这一百道题里,它答对了五十道。

就这批样本而言,它报的五成与实际五成完全一致。可如果只能复核其中二十条,该选哪些?它给所有答案贴了同一个标签,分数没有帮我们挑出更可能出错的部分。

现在换一个系统,它在同一百道题里也答对五十道,却把答案分成两组。五十条报告两成把握,其中十条正确;另外五十条报告八成把握,其中四十条正确。两组也都对得上,但它至少能把较难和较容易的答案区分出来。

假设两个系统都答对50题:全报50%的系统不能区分难易,分别报20%与80%的系统提供了更多信息

如果从低分组随机抽二十条复核,第二个系统下预计能碰到十六条错误;第一个系统没有可用的分组信息,随机抽二十条,预计碰到十条。这里都是按假设比例算出的平均数量,不是一次抽样的保证。

这就是我不愿只问“校准误差有多小”的原因。我们还希望分数有分辨力:容易出错的答案,能否更多地出现在低分那边。前一个问题管数字是否诚实,后一个问题管数字有没有帮助。两项需要分别检查。

同理,故意让 AI 所有回答都谦虚一点,也不一定改善工作。把原来的“九成”统一改成“六成”,可能让某一档更接近事实,却把本来可靠的答案一起压低。没有结果标签,谨慎的语气依然只是语气。

模型给出的三个数字,不是一回事

接入语言模型后,情况还多一层。我们可能看到三个不同的数:模型输出文字里的“百分之九十”;生成某个 token 的概率;另一个评估程序根据历史样本算出来的正确概率。

它们都可以写成百分比,却不能直接互换。

token 概率对应的是当前上下文下怎样续写。某句错误陈述在语言上非常顺畅,不等于陈述本身是真的。整条答案还可能有多个事实,有的正确、有的错误,把某个词的概率当作整条回答可靠程度,首先就换了要预测的对象。

口头自信也不能一概判为废话。Tian 等人在 EMNLP 2023 的研究中发现,对于他们测试的部分经过人类反馈训练的模型和问答基准,直接生成的自信分数,比模型条件概率更接近实际正确情况。这个结果说明,自报分数可以成为有用信号。

来源:Just Ask for Calibration

但有用不等于拿来就准。Xiong 等人在 ICLR 2024 对多种提示、采样和聚合方式进行评估,观察到模型表达自信时常有过度自信,而且没有一种方法在所有测试条件下始终胜出。两项研究并不冲突:一种方法可以比另一个方法好,同时仍然离可靠使用有距离。

来源:Can LLMs Express Their Uncertainty?

因此,问它一句“请诚实表达把握”可以是收集信号的起点。要把这个信号拿去自动做决定,还需要在自己的题目和判断标准上核验,不能把某篇论文里的结果当作所有新模型的通行证。

校准更像修刻度,不是补知识

如果发现九十分那档实际只对六成,能不能直接把九十改成六十?思路上可以,实际做法需要更多数据:用一批独立样本,学习原始分数与正确比例之间的映射,再用没有参与调整的新样本检查它。

这相当于给一把刻度不准的尺子重新标数。尺子原来把六厘米叫作九厘米,重新标定能让读数更诚实,却不会替它测出原本看不见的细节。校准通常也不会凭空补齐模型缺失的知识。

Guo 等人的经典研究讨论了温度缩放:给分类模型的输出分数做一个带正温度参数的变换,再得到概率。这种共同缩放保留同一样本内各类别的大小顺序,所以不会靠改变最高分类别,把原来答错的题突然改对;它主要调整概率有多尖锐。

来源:On Calibration of Modern Neural Networks

这里的温度参数是用校准数据拟合的后处理参数,不能直接等同于聊天界面里的生成温度。把聊天温度调低,改变的是生成时的采样行为,并不意味着模型已经学会正确报告把握。两个地方使用同一个词,解决的问题却不同。

对于只能获得文本输出的工具,也可以研究分数到正确率的映射。但如果原始分数几乎总是九十或九十五,能利用的信息本来就很有限。再精巧的映射,也很难把同一个分数背后完全不同的错误风险分开。

一条漂亮曲线,也能藏住一半人的问题

回到活动问答。假设有五十道简单日期题,以及五十道需要综合多个附件的复杂题。助手对所有答案都报八成把握。简单题全部答对,复杂题只答对三十道。

合起来一百道对八十道,正好八成。总体上,它似乎说得很准。分开看,简单题实际上百分之百正确,复杂题只有百分之六十,统一的八成却对两组都不合适。

假设简单题与复杂题都报告80%把握,分别实际正确100%与60%,总体80%掩盖了两组偏差

这不是图画错了,而是我们问的问题太粗。总体校准,并不保证每种语言、每种资料长度、每类任务都校准。实际使用主要集中在哪些题上,就应该把那些有业务意义的分组拆出来检查。

也不要无限细分,最后每组只剩几道题。分组的目的,是暴露稳定而重要的差异。可以先从“答案直接出现在一段原文里”和“需要跨附件推断”这种明显不同的任务开始,再看数据是否够支撑进一步拆分。

如果以后复杂题比例升高,即使两类题各自的表现完全没变,那个总体八成也会失效。旧报告能够说明当时的样本,不能担保新的输入。更换模型、提示词、检索资料或题目来源以后,都值得重新抽样检查。

我会怎样验收这个“九成”

真正动手时,我会先写清“正确”是什么意思。对于日期提取,可以要求与原文完全一致;对于长段解释,要先决定必要事实、允许的表达差异以及遗漏如何扣分。否则标注者心里的尺子不一样,最后校准的只是混在一起的判断习惯。

还有个容易忽略的细节:一条长回答有十项事实,其中九项正确,究竟算对还是错?如果用户只想知道日期,日期准确即可;如果答案要直接变成办事说明,漏掉唯一一项必要材料就可能不可用。同一份输出可以在“事实逐项正确率”上得九成,在“整条回答可直接采用”上判为失败。必须先决定要校准哪个事件,不能用前一个比例替后一个动作背书。

再保留每条问题、原文、模型版本、提示词、回答、自信分数和人工判定。先用一部分样本研究调整方式,把最后一部分留作独立检查,不要看到某道题答错就一直改提示,直到在同一批题上得出满意曲线。

拆分数据时,也别把同一份活动说明改写成十种问法,随机分到调整组和检查组。它们共享材料和答案,独立检查可能因此变得过分容易。对这个例子,我会尽量按活动或原始文档划分,让最后的检查包含没参与调整的材料;准备长期使用时,再留一批较晚出现的文档,看看换时间之后表现如何。

然后分别看三件事:各档分数是否兑现,低分能否挑出更多错误,重要任务分组是否存在明显偏差。决定“低于多少交给人”时,还要实际计算交给人的数量与剩下的错误,不能只凭一个看起来舒服的门槛。

门槛还应跟动作一起验收。假设一组答案确实有九成正确,拿它来提示编辑优先看哪里,可能已经很有帮助;直接把全部答案写进公开通知,就意味着错误也一起出去了。分数说清了风险的多少,并没有替使用者决定哪些后果可以接受。需要准确字段时,能通过原文定位、日期解析或明确规则复查的部分,仍然可以继续检查。

最后,在真实使用中继续抽查,包括那些高分、已经直接采用的答案。只检查低分,就永远没有机会发现“最自信的部分开始出错了”。新样本与原来差得很大时,先缩小自动采用的范围,再补足证据。

我更愿意把“九成把握”看作一份等待验收的承诺:它可以帮助安排注意力,但价值来自持续对照结果,而不是来自 AI 把这句话说得多笃定。

评论