引言
想象一下,你让 AI 描述一张足球场的照片。模型自信地回答: “一名身穿绿色球衣的球员正将球踢向球门。”这句话听起来很完美,除了一点问题: 照片里根本没有球。
这种现象被称为幻觉 (Hallucination) 。 尽管大型视觉语言模型 (LVLMs) 在理解图像和文本方面能力惊人,但它们经常编造出根本不存在的物体、属性或关系。对于日常使用来说,这很烦人。而对于医学影像分析或自动驾驶等关键应用来说,这则是危险的。
在这篇文章中,我们将深入探讨一篇题为 “Octopus: Alleviating Hallucination via Dynamic Contrastive Decoding” (Octopus: 通过动态对比解码缓解幻觉) 的引人入胜的研究论文。研究人员提出了一种新颖的框架,不再将幻觉视为单一问题,而是一种动态的、不断变化的挑战。他们没有使用“一刀切”的解决方案,而是引入了“Octopus (章鱼) ”——一种能在运行中自适应切换策略的方法,以保持模型基于现实。
“一刀切”的问题
要理解为什么 Octopus 是必要的,我们首先需要看看研究人员目前是如何对抗幻觉的。通常有两大流派:
- 重训练 (Retraining) : 这涉及整理高质量的数据集并对模型进行微调,使其更加诚实。虽然有效,但这既昂贵又耗时,而且计算量巨大。
- 对比解码 (Contrastive Decoding, CD) : 这是一种事后方法 (在训练后应用) ,用于在生成过程中操纵模型的输出概率。它通常将模型的标准输出与“失真”输入的输出进行比较,以消除偏差。

如图 1 所示,重训练 (a) 更新模型权重,而对比解码 (b) 比较来自原始输入和失真输入的 Logit 分数。该论文介绍了 Octopus (c) , 它增加了一个决策层来动态选择最佳策略。
静态策略的局限性
对比解码 (CD) 一直是一种流行的修复方法,因为它不需要重新训练庞大的模型。目前存在几种特定的 CD 策略:
- VCD (视觉对比解码) : 向图像添加噪声,以阻止模型过度依赖语言先验 (例如,不管图像内容如何,只要看到“沙发”就假设后面跟着“客厅”) 。
- M3ID: 遮蔽文本以迫使模型更多地观察图像,减少视觉信息丢失。
- AVISC: 使用“盲 Token”来最小化注意力偏差。
然而,Octopus 的作者提出了一个关键问题: 一种策略对所有图像都有效吗?
他们使用现有的这些策略进行了诊断实验。结果如下图所示,非常说明问题。

图 2 揭示了一个重要的见解: 现有的 CD 策略是互补的,而不是多余的。
- 在 AMBER 数据集 (生成任务) 中,大约 48% 的样本仅通过一种特定策略得到了改善。
- 只有大约 10% 的样本从所有策略中受益。
这意味着,如果你只选择一种方法 (例如 VCD) 并将其应用于所有内容,你将无法修正——甚至可能恶化——很大一部分数据。
幻觉是逐个 Token 发生的
研究人员进行了更深入的研究。他们发现幻觉不仅仅是一个“图像级”的问题;它是一个“Token 级 (词元级) ”的问题。在 AI 生成的同一个句子中,一个词可能是因为语言偏差而产生的幻觉,而下一个词可能是因为注意力偏差而产生的幻觉。

在图 4 中,请观察注意力图。单词 “sitting” (坐) 是由注意力偏差 (策略 3) 触发的,而 “lying” (躺) 则是由视觉信息丢失 (策略 2) 引起的。
这一发现是 Octopus 方法的基础。如果幻觉的成因是逐词变化的,那么解决方案也必须逐词变化。
Octopus 框架
Octopus 框架设计为置于现有的 LVLM (如 LLaVA) 之上。它不会改变 LVLM 的权重。相反,它充当指挥家,决定为生成的每个 Token 使用哪种解码策略。
隐喻: 眼睛和触手
作者使用生物学隐喻来描述该架构:
- 眼睛 (Eye) : 一种感知当前状态并检测可能发生何种幻觉的机制。
- 触手 (Tentacles) : 各种可用于修复问题的对比解码策略。

如图 5 所示,工作流程包括输入图像和文本。一个“Eye” Token 处理隐藏状态,然后做出决策以激活特定的“触手” (策略 k) 来修正输出。
分步架构解析
让我们分解一下 Octopus 在生成过程中如何工作的数学原理和机制。
1. 标准 LVLM 流程
通常,LVLM 基于图像 \(v\)、查询 \(q\) 和之前的单词 \(y_{ 2. 对比解码 (CD) 基础
在标准的 CD 方法中,模型会从原始输入的概率分布中减去“失真”输入 (如模糊图像) 的概率分布。这会惩罚模型基于偏差进行猜测的行为。 3. Octopus “眼睛” (检测)
核心创新是一个小型的基于 Transformer 的模块,表示为 \(O_{\phi}\)。在每一步 \(t\),它接收 LVLM 的隐藏状态 (视觉、查询和历史记录) 以及一个称为 eye 的可学习 Token。 这个 eye Token 聚合了所有需要的上下文,以决定模型当前是否正在产生幻觉以及原因。 4. 决策 (行动)
eye Token 的输出通过多层感知机 (MLP) 传递,以创建一个动作向量。 该向量表示选择特定策略的概率。模型创建一个“独热 (one-hot) ”向量 \(a_t\) 来为这个特定时刻选择最佳策略 (或“触手”) 。 本文中可用的动作包括: 这里存在一个重大挑战: 我们没有这方面的标签。 没有任何数据集会注明: “对于第 103 号图像的第 5 个单词,你应该使用 VCD。” 为了解决这个问题,研究人员使用了直接偏好优化 (Direct Preference Optimization, DPO) 。 DPO 不需要显式标签,而是允许模型从偏好中学习。研究人员使用不同的随机策略组合生成多个输出。然后,他们测量这些输出的幻觉率 (使用 CHAIR 等指标) 。 Octopus 被训练为最大化选择正样本中使用的策略的可能性,并最小化负样本的可能性。 这使得“眼睛”能够直观地学习哪种情况需要哪种“触手”,而无需人类手动标记策略。 这种动态切换真的有效吗?作者在多个基准测试中将 Octopus 与最先进的方法进行了对比测试。 主要测试是生成任务 : 要求模型描述图像。使用的指标包括 CHAIR (Caption Hallucination Assessment with Image Relevance) ,分数越低越好,因为这意味着幻觉更少。 表 1 显示了在 AMBER、Object HalBench 和 MMHalBench 数据集上的结果。 他们还测试了判别任务 (例如 POPE 基准) ,即模型对“图像中是否有餐桌?”这类问题回答“是”或“否”。 如表 2 所示,Octopus 实现了比任何单一策略都高的准确率和 F1 分数。这证明了动态切换策略有助于模型更准确地验证事实。 你可能会想,复杂的“眼睛”机制是否真的必要。我们能不能直接随机选择策略或者一次性组合它们? 表 3 通过消融实验提供了答案: 最后,眼见为实。让我们回到足球的例子。 在图 6 中,我们看到了足球运动员图像的输出结果: “Octopus” 论文展示了我们处理大型视觉语言模型错误方式的一个重大转变。通过承认幻觉是混合的——由语言先验、视觉丢失和注意力偏差混合引起——研究人员摆脱了静态解决方案。 主要结论: 该框架具有高度的可扩展性。随着研究人员发明新的解码策略 (新的“触手”) ,它们可以简单地添加到 Octopus 的工具包中,这使得 LVLM 在未来可能变得更加可靠。





优化 Octopus

实验与结果
生成任务 (图像描述)

判别任务 (是/否问题)

为什么不直接随机组合?

定性证明

结论
](https://deep-paper.org/en/paper/2503.00361/images/cover.png)