深入黑盒: 利用梯度和嵌入捕捉 LLM 幻觉
像 GPT-4 和 LLaMa 这样的大型语言模型 (LLM) 已经改变了我们与信息交互的方式。它们能写代码、作诗并回答复杂的问题。但它们有一个臭名昭著的缺陷: 幻觉 (Hallucinations) 。 我们都见过这种情况——LLM 自信地断言一个完全捏造的“事实”,引用不存在的法庭案例或虚构历史事件。
对于 NLP 领域的学生和研究人员来说,解决幻觉问题是当前可靠性研究的“圣杯”。大多数现有的解决方案将模型视为“黑盒”,仅仅通过提示 (Prompting) 询问它: “你确定吗?”但如果我们能通过引擎盖看本质呢?
在这篇文章中,我们将深入探讨一篇引人入胜的论文,题为 “Embedding and Gradient Say Wrong: A White-Box Method for Hallucination Detection” (嵌入和梯度在报错: 一种白盒幻觉检测方法) 。 研究人员提出了一种名为 EGH (基于嵌入和梯度的幻觉检测) 的方法。他们不再信任模型的文本输出,而是分析模型的内部状态——具体来说是它的嵌入 (Embeddings) 和梯度 (Gradients) ——以从数学上检测模型何时在编造内容。
读完本文,你将理解比较模型的“条件”和“无条件”行为如何揭示真相,以及泰勒展开 (没错,就是你在本科里学的那个微积分概念) 是如何成为解锁这种检测方法的关键。
1. 核心直觉: 忽略问题
要理解解决方案,我们必须首先从概率的角度理解问题。
当你向 LLM 提出一个问题 (\(Q\)) 时,它会生成一个答案 (\(A\)) 。理想情况下,该答案的概率应该在很大程度上取决于问题。我们将其表示为 \(P(A|Q)\)——即在 \(Q\) 条件下 \(A\) 的概率。
然而,当模型产生幻觉时,会发生一些有趣的事情。它不再依赖源文本或特定问题,而是开始依赖其内部先验知识 (它在训练期间记住的内容) 。从某种意义上说,生成的答案 \(A\) 与 \(Q\) 变得松散耦合,甚至毫无关联。
研究人员提出了一个巧妙的假设: 我们可以通过计算模型有问题时的行为与没有问题时的行为之间的距离来衡量幻觉。
两种模式
为了验证这一点,论文建议向 LLM 投喂两种不同的输入:
- 条件查询 (Conditional Query) : 标准输入,我们提供问题 (\(Q\)) 和答案 (\(A\)) 。
- 无条件查询 (Unconditional Query) : 我们仅提供答案 (\(A\)) ,用零填充 (Zero-padding) 替换问题 Token,以保持维度一致。

如上方的 图 1 所示,上面的路径显示了标准流程: “Who is LeBron? (勒布朗是谁?) ” \(\rightarrow\) “A basketball player (一名篮球运动员) ”。下面的路径有效地让模型对问题“视而不见”。
如果模型是根据上下文如实回答,那么在这两种情况下,模型的内部状态 (其嵌入和概率) 应该看起来非常不同 。 然而,如果模型只是根据内部记忆编造内容 (产生幻觉) ,具体问题的存在与否可能就不像我们想象的那么重要,或者其影响方式会有所不同。我们需要测量的正是这两种状态之间的差异。
2. 数学原理: 从概率到梯度
我们如何量化这种差异?作者定义了一个距离度量,\(D\)。
设 \(P(A|Q)\) 为给定问题时答案的概率分布,而 \(P(A|\mathbf{0})\) 为给定零填充 (无条件) 输入时答案的概率。距离定义为:

在这里,Difference 可以是像 KL 散度 (KL Divergence) 或交叉熵 (Cross-Entropy) 这样的标准度量。
为什么简单的度量不够?
你可能会想: “为什么我们不直接计算两个概率之间的 KL 散度就完事了?如果散度很高,那就是幻觉。”
研究人员尝试过这种方法。虽然存在统计学上的差异,但事实证明,将模型所有的复杂性压缩成一个数字 (像 KL 散度这样的标量) 会丢弃太多的信息。作为一种可靠的检测器,它太不精确了。
引入泰勒展开
这正是该论文引入主要创新的地方。他们不再仅仅关注输出的概率标量,而是利用 泰勒展开 (Taylor Expansion) 分析导致这种差异的因素。
他们将差异 \(D\) 视为一个函数,并在无条件输入点 \([\mathbf{0}, A]\) 附近对其进行展开。一阶泰勒展开给出了以下公式:

别被符号吓到了。让我们分解这个公式的三个部分:
- \(D([\mathbf{0}, A])\) : 这是一个常数项 (基线散度) 。
- \(R_1\) : 这些是高阶项 (二阶导数等) 。作者认为这些计算成本太高且可能是不必要的,因此被忽略。
- 中间项 : \([\nabla D([\mathbf{0}, A])]^T ([Q, A] - [\mathbf{0}, A])\)。
中间项是一个金矿。它包含了两个截然不同的组件,作者将其提取为检测器的特征:
- 嵌入差异 (The Embedding Difference) : \(([Q, A] - [\mathbf{0}, A])\) 代表输入表示的变化。由于我们不能减去原始 Token,我们使用模型隐藏层的 嵌入 (embeddings) 。
- 梯度 (The Gradient) : \(\nabla D([\mathbf{0}, A])\) 代表散度对输入变化的敏感程度。
这一理论推导证明,要真正捕捉条件输出和无条件输出之间的关系,我们需要同时观察 嵌入 (\(E\)) 和 梯度 (\(G\)) 。
3. EGH 架构
基于上述数学原理,研究人员构建了 EGH (基于嵌入和梯度的幻觉检测) 方法。这是一种“白盒”方法,因为它需要访问模型的内部——仅凭返回文本的 API 是无法做到这一点的。
让我们通过下面的示意图来了解架构。

第 1 步: 提取特征 \(E\) (嵌入) 模型处理“问题-答案”对和“零-答案”对。系统从 LLM 中提取两次传递的最终隐藏层状态嵌入。
- \(E(A|Q)\): 带问题的嵌入。
- \(E(A|\mathbf{0})\): 不带问题的嵌入。
特征 \(E\) 仅仅是它们之间的向量差:
\[E = E(A|Q) - E(A|\mathbf{0})\]第 2 步: 提取特征 \(G\) (梯度) 这一步稍微复杂一点。
- 系统计算两次传递的输出概率分布之间的标准 KL 散度。

- 然后,它执行 反向传播 (backpropagation) , 从这个 KL 散度损失值回传到无条件输入的嵌入层。
- 得到的梯度向量就是我们的特征 \(G\)。 \[G = \nabla D([\mathbf{0}, A])\] 第 3 步: 幻觉检测器 现在我们有了两个丰富的信息向量,\(E\) 和 \(G\),它们从数学上代表了幻觉行为的一阶近似。
这些向量通过加权求和进行融合。研究人员引入了一个超参数 \(\lambda\) 来控制嵌入与梯度的重要性:

最后,一个简单的多层感知机 (MLP) ——一个小型的神经网络——接收这个融合向量,并将其分类为“幻觉” (1) 或“非幻觉” (0) 。
4. 为什么不直接使用概率?
早些时候,我们声称像 KL 散度或交叉熵这样的简单度量是不够的。作者为此提供了经验证据。
他们可视化了幻觉样本 (橙色) 与非幻觉样本 (蓝色) 的 KL 散度值分布。

仔细观察 图 3 。 虽然存在偏移——幻觉样本倾向于具有略低的散度 (意味着无论问题是否存在,模型并没有太大改变主意) ——但存在大量的 重叠 (overlap) 。
如果你试图画一条垂直线 (阈值) 来区分蓝色和橙色,你会犯很多错误。这证实了虽然信号存在于概率中,但它本身太弱了。 EGH 方法之所以效果更好,是因为它解包了创建这些概率的 向量,提供了对问题更高维度的视角。
为了进一步说明这一点,作者仅使用标量 KL 和交叉熵值训练了一个简单的逻辑回归模型。

如 表 6 所示,在 QA 任务上使用简单度量的准确率仅为约 67%。而 EGH 方法呢? 97.19% 。 这简直是天壤之别。
5. 实验结果
研究人员在多个基准数据集上测试了 EGH,包括 HaluEval、SelfCheckGPT 和 HADES 。 他们使用 LLaMa-2-7B 和 OPT-6.7B 作为基础模型。
在 HaluEval 上的表现
HaluEval 包含特定的任务,如问答 (QA) 、对话和摘要。

在 表 1 中,查看“QA”列。
- 基线 (要求模型自查) 获得了 59-63% 的准确率。
- GPT-4 (使用 CoNLI) 获得了 86.20% 。
- EGH (使用 LLaMa2-7B) 达到了 97.19% 。
这是一个惊人的结果。这表明,一个配备了白盒检测的小型开源模型,在检测幻觉方面可以显著优于甚至 GPT-4 的提示策略。
泛化性: SelfCheckGPT
这种方法具有泛化能力吗?作者在一个数据集 (HaluEval) 上训练了他们的检测器,并在一个完全不同的数据集 (SelfCheckGPT) 上进行了测试。

表 2 显示,即使在不同的数据集上进行训练,EGH 也达到了 87.23% 的 AUC,这与专门在该数据上训练的方法具有竞争力。这表明“嵌入差异”和“梯度敏感性”的模式是幻觉的通用指标,而不仅仅是特定数据集的特例。
模型架构重要吗?
该方法不仅限于 LLaMa。他们还在 HADES 数据集上使用 BERT、RoBERTa 和 GPT-2 进行了测试。

表 3 证实 EGH 在不同架构上均优于基准,证明只要拥有白盒访问权限,它就是一个与模型无关的解决方案。
6. 哪个更重要: 嵌入还是梯度?
该方法使用权重 \(\lambda\) 结合了嵌入 (\(E\)) 和梯度 (\(G\)) 。
\[ \text{Input} = \lambda E + (1-\lambda)G \]如果 \(\lambda=1\),我们只使用嵌入。如果 \(\lambda=0\),我们只使用梯度。
作者进行了一项消融实验 (ablation study) ,看看哪个组件起了主要作用。

表 4 揭示了一个有趣的细节。
- 仅使用梯度 (\(\lambda=0\)) : 74.22% 准确率。
- 仅使用嵌入 (\(\lambda=1\)) : 76.54% 准确率。
- 两者都用 (\(\lambda=0.8\)) : 77.39% 准确率。
两个特征都有贡献,但嵌入似乎更具判别力。然而,组合使用产生了最好的结果,验证了泰勒展开理论中两项均相关的观点。
7. 结论: 白盒检测的未来
“Embedding and Gradient Say Wrong” 这篇论文为超越黑盒提示提供了一个令人信服的案例。通过对“回答问题”和“只是在说话”之间的差异进行数学建模,作者提供了一种严谨的方法来捕捉幻觉。
关键要点
- 上下文很重要: 幻觉从根本上讲是生成的答案与源输入之间的脱节。
- 向内看: 概率 (输出 logits) 是不够的。你需要嵌入和梯度中存储的丰富信息。
- 泰勒展开有效: 微积分为深度学习解释中的特征提取提供了坚实的理论基础。
- SOTA 性能: EGH 在 QA 任务上达到了 97% 的准确率,大大优于基于提示的检查。
局限性与未来
EGH 的主要缺点是计算成本。在推理过程中计算梯度 (反向传播) 是昂贵的,并且比简单的前向传播要慢。它需要内存和计算能力,这使得在实时、低延迟的应用中部署变得更加困难。
然而,对于离线验证、审计 LLM 或准确性至关重要的高风险场景,EGH 为争取可信赖的 AI 提供了强大的新工具。它提醒我们,有时为了找到真相,我们必须停止听模型说什么,而开始看它的神经元在做什么。
](https://deep-paper.org/en/paper/file-3016/images/cover.png)