跳到正文
原文
Hacker News· jimauthors·· 1 天前精选AI 评分67

为何不应让LLM生成置信度分数

Using LLM for confidence scoring is a bad idea

AI 导读

让LLM生成置信度分数并不可靠,因为这些数字只是逐token生成的合理文本延续,不是对证据的测量,也未按实际结果校准。同一问题重复询问或改变措辞时,数字可能变化,而输入信息并未改变。文章建议让LLM负责回答,以可观察特征和历史正确率构建规则,记录每次回复及结果,按分组更新规则并持续检查校准度。

推荐理由

文章拆解了LLM置信度数字的生成机制,并给出依据历史结果校准规则的五步方法,可用于智能体回复审核。

正文 · AI 翻译

基于 LLM 的智能体可以完成许多任务。至少,它们看起来能够完成这些任务。例如,它们会编写代码、总结论文、规划旅行和填写表单。如果你向它询问某个概率或置信度分数,它也会给你一个。我见过许多智能体设计者以这种方式使用 LLM 生成置信度分数。问题在于,我们没有充分理由信任这个数字。本文将解释为什么不能依赖 LLM 生成置信度分数。

置信度的含义

在理解为什么 LLM 无法给出可信的置信度分数之前,我们需要先弄清楚置信度究竟意味着什么。

例如,想象一位天气预报员说:“我有 70% 的把握认为明天会下雨。”

预报员预测的是明天会下雨。70% 表示他们对该预测有多确定。明天要么下雨,要么不下雨,而他们今天的确定程度取决于他们所掌握的信息。

他们的置信度来自所使用的信息。其中一部分与明天有关:气压、湿度、风力,以及雷达图上的云层。另一部分来自过去:多年的天气记录,以及在天气看起来与这一天相似之后,降雨发生的频率。掌握的信息越多,而且这些信息越明确地指向一个方向,他们的置信度就越有可能接近 100% 或 0%。

理论上,把这些信息转化为置信度是一项计算,而不是一种主观看法。假设这项计算可以用一条假想规则来表示。你先根据过去的情况作出判断,再利用关于明天的信息对其加以更新。如果两位预报员掌握的信息完全相同,而且都正确应用了这条规则,那么他们必然得出完全相同的置信度。预报员之所以产生分歧,是因为他们掌握的信息不同,或者其中一人没有正确应用这条规则。

现在假设有人询问预报员两周后某一天的情况。他们目前还没有关于那一天的任何信息,拥有的只有过去的数据。假设在一年中的这个时节,大约 30% 的日子会下雨。那么,他们能说的最好情况就是:“我有 30% 的把握认为那天下雨。”随着这一天临近,他们会获得更多信息,置信度可能上升至接近 100%,也可能下降至接近 0%。

如何衡量置信度分数的准确性

既然我们已经知道置信度的含义,下面就来看看如何判断一个置信度分数是否准确。

单凭一天无法判断预报员给出的 70% 是否正确,因为那天要么下雨,要么不下雨。我们只能通过许多天来检验他们的置信度。

找出预报员声称有 70% 把握会下雨的所有日子。如果其中约 70% 的日子下了雨,他们的 70% 就是准确的。如果只有 40% 的日子下了雨,说明他们过度自信。如果 90% 的日子下了雨,则说明他们信心不足。我们可以对每个置信度水平进行同样的检验。假设这是预报员一年的记录:

他们声称的置信度 天数 下雨天数 降雨比例
10% 120 13 11%
30% 90 26 29%
70% 80 57 71%
90% 75 67 89%

在每个置信度水平上,实际降雨比例都接近他们所声称的置信度。当置信度以这种方式与实际比例相匹配时,就称其为经过校准的。这也是我们了解预报员在多大程度上遵循该规则的方法。

仅凭校准还不够。一个预测者如果无视明天的天气,始终给出当季通常的 30%,那么他同样是经过校准的。一年下来,在他说有 30% 概率的那些日子里,实际会有约 30% 降雨。但他从未利用关于明天的信息,因此他的置信度永远无法告诉我们任何东西。表中的预测者更出色,因为他们大多数日子里给出的概率都接近 10% 或 90%。他们利用了这些信息,同时仍然经过了校准。

条件还有一个,却很容易被忽略。要做到这一切,必须有人把每一次预测以及实际发生的情况都记录下来。没有这样的记录,就无法知道某个置信度评分是否准确。

因此,值得信赖的置信度评分需要具备两点:

  1. 它反映了预测所依据的信息量。
  2. 对于同类问题,它已经与实际发生的结果进行了核验。

LLM 如何给出置信度评分

LLM 每次只生成一个词元。每个词元都是根据此前的词元选出的,这就是“自回归”的含义。例如,当你问“你有多确定?”时,答案“0.85”并不是从模型内部的某个仪表上读取出来的。模型会像生成其他任何文本一样,逐个词元地写出它。“0.85”是这段对话一个合理的延续,而不是对任何事物的测量。

用上一节的术语来说,这个数字两项性质都不具备。它不反映模型掌握了多少信息,因为它只是文本的延续,而不是对证据的概括。而且,它从未经过校准。预训练确实会根据结果对模型进行评分,但这里的“结果”是文本中的下一个词元。因此,模型在某种程度上已经针对“接下来会出现什么文本?”这个问题经过了校准。但人们从未评估它写出的置信度与它答对的频率是否一致。模型学会的是置信度评分在文本中是什么样子;它没有学会让自己的评分与准确率相符。

这会带来一些你可以亲自验证的影响:

  • 再问一次,数字就会变。例如,同一个问题这次可能得到 0.85,下次则得到 0.7。信息没有变化,因此,如果模型是在套用某种规则,置信度也不应该变化。
  • 改换措辞,数字也会变。例如,如果你问“你确定吗?”,即使问题本身没有任何变化,评分通常也会发生变动。换一种措辞并不会带来新信息。
  • 数字前面的文本决定数字。例如,如果模型已经写下“这显然是正确答案”,那么高分就是自然的延续。评分源自这些文字,而不是证据。

模型总会给你一个数字。它看起来很精确。而且,正如我在上一篇文章中讨论论文摘要时所说,错误的数字看起来与正确的数字一模一样。只有将大量这样的数字与标准答案对照评分,你才能知道它们是否可信。大多数向 LLM 询问置信度评分的人都不会这么做。

不使用 LLM 衡量置信度

如果我们不能向 LLM 询问其置信度,该从哪里获得?我们可以像预测者那样:制定一条规则,把信息转换为置信度,并持续根据实际发生的情况进行检验。LLM 仍然可以执行任务,例如写出答案。但置信度评分来自规则,而不是 LLM。

例如,设想一个智能体,它通过搜索帮助中心来回答客户支持问题并撰写回复。我们希望为每条回复给出一个置信度分数,这样不确定的回复会在发送前交给人工处理。

1. 选择信息。列出我们可以针对每条回复观察到的信息,而不必询问 LLM 有何感受。搜索是否找到了一篇关于该主题的文章?有多少篇?这是否属于智能体以前回答过的一类问题?如果我们向智能体提出同一个问题两次,两次回复是否一致?这就相当于智能体自身的气压、湿度和风。

2. 从过去开始。在拥有任何其他数据之前,最佳置信度就是通常的正确率,就像预测两周后的天气一样。如果有人检查了 200 条过去的回复,其中 150 条正确,那么每条回复都从 75% 起步。

3. 记录每条回复及其后续结果。对于每条回复,保存步骤 1 中的信息、规则给出的置信度,以及该回复最终是否正确。如果审核人员批准了回复,或者客户不必再次提问,就说明该回复正确。这就是前面几节所说的我们需要保存的记录。

4. 根据记录更新规则。根据这些信息对过去的回复进行分组,并查看每组正确的频率。如果有匹配文章且两次回答一致的回复有 95% 是正确的,那么规则对于下一条类似回复就应当给出 95%。如果没有匹配文章的回复只有 40% 正确,规则就应当给出 40%。起初,各组都很小,规则也很粗略。随着数据增多,各组规模变大,规则便能利用更多信息。

5. 持续检查。每周左右,再制作一张与预报员统计表相同的表格:对于每个置信度水平,回复正确的频率是多少?如果置信度为 90% 的回复只有 70% 是正确的,就说明规则过度自信,而新的记录会表明应该如何修正它。

这样的规则具有 LLM 给出的数字所不具备的性质。相同的信息总会产生相同的置信度。置信度取决于信息,而非措辞。而且,它针对我们自己提出的这类问题进行了校准,因为它是用我们自己的记录构建的。每条回复都会添加到记录中,因此规则也会随着使用而不断改进。

不过,规则的质量取决于记录的质量。如果没有人检查回复是否正确,就没有任何可供学习的信息,我们又只能使用一个无人测量过的数字。

来源:Hacker News · rumple.github.io