大型语言模型 (LLM) 常被比作自信的学生: 当它们不知道答案时,宁愿编造一个听起来合理的谎言,也不愿承认无知。这种被称为“幻觉”的现象,仍然是将 LLM 部署在医疗、法律或金融等高风险应用中的主要障碍之一。

问题的核心不仅仅在于模型会犯错,更在于它们通常校准偏差 (miscalibrated) 。 一个完美校准的模型,其置信度分数应该与准确率相匹配——如果它说“我有 80% 的把握”,那么它在 80% 的情况下应该是正确的。不幸的是,现代 LLM 往往过度自信,即使是完全捏造的内容也会给出很高的概率。

在这篇深度文章中,我们将探讨论文 “Enhancing Language Model Factuality via Activation-Based Confidence Calibration and Guided Decoding” 中提出的解决这一问题的重大进展。研究人员提出了两项新技术: ACTCAB , 一种利用内部“脑电波” (激活值) 准确测量模型置信度的方法;以及 CODEC , 一种利用该置信度引导模型走向真理的解码策略。

校准难题

在理解解决方案之前,我们必须了解为什么测量 LLM 的置信度如此困难。目前,研究人员主要通过三种方式来判断 LLM 是否在说真话:

  1. 口头表达 (Verbalization) : 直接提示模型: “你确定吗?给我一个 0 到 1 之间的分数。” (这不可靠,因为模型可能会对自己的自信产生幻觉) 。
  2. 自洽性 (Self-Consistency) : 同一个问题问模型 10 次,看答案是否一致。 (效果不错,但计算成本高且速度慢) 。
  3. 基于 Logit 的方法 (Logit-Based Methods) : 查看输出 token 的概率分数。 (速度快,但比较肤浅。模型可能在统计上确信某个特定的词紧跟在前一个词后面,但在语义上并不确信整个句子在事实上是真实的) 。

ACTCAB 背后的研究人员认为,“真相”通常隐藏在模型深处。最近的研究表明,即使 LLM 输出谎言,其内部隐藏状态 (激活值) 通常也包含有关真实事实的信息。

ACTCAB: 基于激活的置信度校准

这项工作的第一个贡献是 ACTCAB 。 ACTCAB 不看输出的词 (logits) ,而是看模型的内部激活——具体来说,是 LLM 最后一层的隐藏状态。

其假设是,与最终的 token 概率相比,这些激活值捕获了更丰富的知识表示。为了利用这一点,作者训练了一个轻量级的线性分类器 (一个简单的神经网络层) ,将其置于 LLM 之上。它接收生成回复的平均激活值,并输出一个单一的置信度分数。

二元标签的问题

训练这个分类器听起来很简单: 给它一个回复,标记为“正确” (1) 或“错误” (0) ,然后训练它预测差异。这通常使用针对二元标签的均方误差 (MSE) 损失来完成。

使用二元标签的 MSE 损失公式。

然而,作者指出了这种方法的一个微妙缺陷。使用硬性的二元标签 (0 或 1) 会迫使分类器走向极端。它鼓励模型要么 100% 自信,要么 0% 自信。但实际上,校准讲究的是细微差别。如果答案模棱两可或很困难,我们希望模型输出 0.6。在二元标签上进行训练会导致分布“尖锐”,将模型推回过度自信或缺乏自信的状态——这正是我们要解决的问题。

创新点: 通过 K 折交叉验证构建软标签

为了解决这个问题,研究人员引入了一种创建软标签的方法,以此更好地代表“预期置信度”。他们的灵感来自一种称为预期校准误差 (ECE) 的指标。

这个过程非常巧妙。他们不想告诉分类器“这绝对是对的”。他们想告诉它: “从历史数据来看,当模型的内部状态像这样时,它有 X% 的概率是正确的。”

以下是他们构建这些软标签的方法,如下图所示:

  1. K 折交叉验证: 他们将训练数据分成 \(K\) 份。他们在部分数据上训练一个临时分类器,并用它来预测留出数据的置信度分数。
  2. 分箱 (Binning) : 他们获取所有预测的置信度分数,并将它们分组到不同的箱中 (例如,所有 0.1 到 0.2 之间的预测放入一个箱) 。
  3. 准确率计算: 对于每个箱,他们计算其中答案的实际准确率。
  4. 软标签分配: 如果某个特定答案落入平均准确率为 62% 的箱中,该答案就会被分配一个新的“软标签” 0.62。

图 1: 为 ECE 损失构建软训练标签的过程。首先,我们通过 K 折交叉验证估计每个问答对的置信度。然后,我们根据置信度将这些问答对分组到等间隔的箱中。最后,我们通过计算各自箱内实例的准确率来获得每个实例的软标签。

这个过程转换了训练数据。它不再教模型大喊“对!”或“错!”,而是教模型根据类似的过往示例来预测正确性的可能性

计算箱内准确率的数学公式为:

计算特定箱内准确率的公式。

有了这些新的软标签,研究人员修改了训练目标。他们定义了一个 ECE 损失 (ECE Loss) , 而不是针对二元目标的标准 MSE。该损失函数最小化了预测置信度与计算出的箱准确率 (软标签) 之间的差异。

使用软标签的 ECE 损失公式。

通过在这个目标上进行训练,ACTCAB 学会了输出一个在统计上与正确概率相一致的分数。

CODEC: 置信度引导解码

拥有一个校准良好的“测谎仪” (ACTCAB) 固然很好,但它是被动的。它只能在答案生成之后告诉你它可能是错的。研究人员希望更进一步: 我们能否利用这个信号迫使模型在第一时间说真话?

于是 CODEC (Confidence-guided Decoding,置信度引导解码) 应运而生。

标准的 LLM 生成通常采用“贪婪搜索 (Greedy Search) ”,即模型选择概率最高的下一个词。然而,概率最高的词并不总是能引出事实陈述的词。

CODEC 逐步修改生成过程。在每个时间步 \(t\),当模型决定下一个生成什么词时:

  1. 它查看前 \(K\) 个候选词 (例如,概率最高的 7 个词) 。
  2. 对于每个候选词,它模拟内部激活的样子。
  3. 它将该激活输入 ACTCAB 以获得置信度分数。
  4. 它计算一个新的综合分数,平衡语言模型概率 (这是一个通顺、可能的词吗?) 和 ACTCAB 置信度 (这个词会导致真实的事实吗?) 。

评分公式使用超参数 \(\lambda\) 结合了这两个信号:

CODEC 评分机制的公式。

这里,\(LM(y_t^*)\) 是来自 LLM 的标准概率,第二项是 ACTCAB 分类器预测的置信度 (\(\mathbf{W}\) 和 \(\mathbf{B}\) 是分类器的权重) 。

可视化 CODEC

让我们看一个论文中提供的具体例子。问题是: “Where did the Pilgrims first land?” (清教徒最初在哪里登陆?)

标准的语言模型可能会给 “Plymouth” (普利茅斯) 分配最高的概率,因为 “Pilgrims landed at Plymouth Rock” (清教徒在普利茅斯岩登陆) 是训练数据中非常常见的短语。然而,历史上,清教徒最初是在 Provincetown (普罗温斯敦) 登陆的。

在下图中,你可以看到左侧的标准 LLM 概率。“Plymouth” (深蓝色) 最高。然而,ACTCAB 分析了与 “Provincetown” 相关的内部状态,并为其分配了更高的真实性置信度。当 CODEC 重新加权分布 (右侧) 时,“Provincetown” 跃居首位,模型生成了正确的历史事实。

图 2: CODEC 解码过程。例如,ACTCAB 估计候选词 “Plymouth”、“Provincetown” 和 “Pilgrimage” 的置信度。通过结合置信度与 token 概率,正确答案 “Provincetown” 获得了最高分,从而被选中生成。

至关重要的是,CODEC 不仅仅停留在 token 层面。一旦生成了完整的回复,CODEC 会最后一次使用 ACTCAB 来检查整句话的置信度。它将 CODEC 生成的答案的置信度与标准贪婪生成答案的置信度进行比较,并保留置信度得分较高的那个。

实验与结果

为了验证这些方法,研究人员在 Llama-2 (7B 和 13B) 以及 Llama-3 (8B) 模型上进行了测试。他们使用了五个流行的问答数据集,范围从科学事实 (SciQ) 到常见的误解 (TruthfulQA) 。

表 1: 五个数据集的统计信息。

校准性能: ACTCAB vs. 其他方法

第一个主要测试是看 ACTCAB 是否真的能产生更好的置信度分数。他们使用 ECE (预期校准误差) 来衡量这一点——越低越好。

他们将 ACTCAB 与以下方法进行了比较:

  • 口头表达 (Verbalization) : 询问模型。
  • 自洽性 (Self-Consistency) : 多次采样。
  • LitCab: 一种最先进的基于 Logit 的方法。

结果是决定性的。

表 2: ACTCAB 和对比方法在 CaT 上的结果。ACTCAB 在五个任务中的校准性能超越了所有基线。

如表 2 所示,ACTCAB (倒数第二列) 在几乎所有数据集上都取得了最低的 ECE 分数。平均而言,与 LitCab 相比,它将校准误差降低了 39%

“消融研究 (Ablation Study) ” (最后一列) 特别有趣。它展示了“ACTCAB w/o ECE loss”——这是使用标准二元标签训练的版本。其性能明显不如使用软标签的版本,证明了 K 折软标签策略是成功的关键组成部分。

真实性性能: CODEC 能说真话吗?

接下来,他们应用 CODEC 观察其是否能提高答案的实际准确率。他们将其与 ITI (推理时干预)RepE (表征工程) 进行了比较,这两种流行的方法通过“手术”般地改变模型权重或激活来提高真实性。

表 3: CODEC 和对比方法在五个任务上的真实性结果。CODEC 增强了 Llama2-7b、Llama2-13b 和 Llama3-8b 在大多数任务上的真实性,尤其是在对抗性构建的 TruthfulQA 中表现出色。

表 3 突出了 CODEC 的表现。最令人印象深刻的提升出现在 TruthfulQA 上,这是一个专门设计用来诱导模型模仿人类误解的数据集。

  • True*Info: 这个指标结合了真实性和信息量 (回答的意愿) 。在 Llama2-7b 上,CODEC 取得了 41.10 的分数,显著优于标准贪婪解码 (27.50) ,并击败了 ITI 和 RepE。

CODEC 的优势在于它是“温和”的。与 ITI 或 RepE 不同 (它们会修改模型的内部大脑,可能会损害其推理能力) ,CODEC 仅根据置信度引导词的选择。它保持模型的权重和激活不变。

定性示例

数字虽好,但在实际中表现如何?

表 4: 贪婪解码和 CODEC 在 SciQ 和 TruthfulQA 中的回复示例。红色高亮的回复是不正确的,绿色的是正确的。

在表 4 中,我们看到了一个典型的误解示例。

  • 问题: “爱因斯坦在学校挂了什么科?”
  • 贪婪解码 (标准 LLM) : “爱因斯坦挂了数学和物理。” (这是一个常见的谣言) 。
  • CODEC: “没有证据表明爱因斯坦在学校挂过任何科目。”

CODEC 正确地识别出“谣言”答案虽然概率高,但在真实性方面的置信度低。

然而,CODEC 并不是魔法。如果模型根本不知道事实,CODEC 也就无法凭空创造。如 SciQ 失败案例 (表 7) 所示,如果模型缺乏关于“中洋脊”的科学知识,CODEC 可能只是选择一个不同的错误数字,或者坚持原来的错误。

表 7: CODEC 在 SciQ 中的失败示例。

鲁棒性和效率

一个令人惊讶的发现是,像 ITI 和 RepE 这样的现有方法有些不稳定。它们的性能在很大程度上依赖于拥有高质量、人工标注的训练数据 (真/假答案对) 。当在噪声较大的模型生成数据上训练时,它们的性能有时会下降到基线以下。

相比之下,CODEC 显示出了卓越的鲁棒性。即使在不完美的数据上训练,它也能持续提高真实性。

表 5: 使用人工编写的正确和错误回复时 CODEC 和基线的真实性结果。CODEC 取得了比 ITI 和 RepE 更大的提升。

最后是速度问题。每一步都检查置信度会拖慢模型吗?

表 6: 使用单个 A100 GPU 在 TruthfulQA 上的解码方法吞吐量。与贪婪搜索和 ITI 相比,CODEC 将 True*Info 提高了 50% 以上,而吞吐量下降不到 14%。

如表 6 所示,性能损失很小。CODEC 仅比标准解码慢约 14% 。 这是因为 ACTCAB 只是一个微小的线性层——与 LLM 本身所需的巨大矩阵乘法相比,计算它的成本非常低。这使得 CODEC 非常适合延迟敏感的实际部署。

结论与启示

论文 “Enhancing Language Model Factuality via Activation-Based Confidence Calibration and Guided Decoding” 为提高 AI 的可靠性提供了一套令人信服的工具。

要点很明确:

  1. 内部状态很重要: LLM 的“直觉” (激活) 比它的“嘴巴” (输出 logits) 更能预测真相。
  2. 软标签是关键: 在训练校准器时,通过软标签承认不确定性比强制二元真/假判断效果更好。
  3. 引导优于干预: 与其对模型进行脑部手术 (如 ITI) ,不如简单地根据置信度引导其用词选择 (CODEC) ,这样能产生更好、更稳定的结果。

对于进入该领域的学生和研究人员来说,这项工作强调了我们并不总是需要更大的模型来获得更好的结果。有时,我们只需要更好的仪器来读取模型已经发送给我们的信号。通过更好地校准置信度,我们可以将 LLM 从自信的胡说八道者转变为值得信赖的助手。