跳转至

Seeing to Ground: Visual Attention for Hallucination-Resilient MDLLMs

会议: ECCV 2026
论文: ECCV 原文
领域: 多模态VLM
关键词: 多模态幻觉、扩散语言模型、并行掩码解码、交叉注意力、免训练解码

一句话总结

这篇论文把多模态扩散语言模型(MDLLM)的幻觉归因于并行掩码解码的「目标失配」——解码器只按文本似然给候选 token 排序、从不核验局部视觉支撑,据此提出免训练的解码期重排框架 VISAGE:用最后一层跨注意力在图像 token 上的空间熵估计「落地证据」,经 β-分位跨头共识聚合成惩罚乘子,把排序分数从置信度 \(c_i\) 换成 \(c_i(1+H_i)^{-\alpha}\),在 MMMU-val 上相对基线提升 8.59%、HallusionBench 提升 7.75%,同时几乎不损伤通用能力。

研究背景与动机

多模态扩散大语言模型(MMaDA、LLaDA-V、Lumina-DiMOO 等)用并行掩码解码取代自回归逐 token 生成,一次前向就同时提出多个位置的候选 token,把推理延迟压了下来。但架构上的高效并没有解决幻觉:模型仍然会给出图像里根本不存在的物体、关系或属性。以往对这个问题的解释大多落在「模型能力」上——预训练阶段的多模态对齐不充分、容量不够、数据配比失衡,于是主流缓解手段要么是训练期对齐,要么是推理期干预。推理期这一支又分两类:一类是外部验证(Woodpecker、MARINE 之类),拿额外的目标检测器在生成之后回头核对内容,代价是引入多趟推理延迟;另一类是内部校准,用模型自身的表示做对比惩罚、抑制某些注意力头、或者约束信息瓶颈。这两类方法有一个共同前提——它们都在顺序 next-token 预测的范式里工作。而扩散语言模型这一侧最近出现的免训练解码方法(CORE 重掩码已提交的不可靠 token、DyStruct 动态调整生成结构与长度)又完全只操作文本,压根不看图像。

矛盾的根源藏在解码算法本身。并行解掩码的每一步其实是一次隐式的逐位置优化:给定当前 token 预算 \(k_t\),解码器要从所有被掩码的位置里挑 \(k_t\) 个提交,而挑法就是按每个位置的置信度取 top-\(k\)。这个置信度只是「在当前上下文下这个词有多顺」的文本似然,它衡量不了候选 token 有没有图像支撑。换句话说,解码器每一步真正最大化的,是一个只含语言项的代理目标;沿着它做贪心,模型自然会走「语言捷径」——把统计上最顺口的 token 提前锁定。而并行解码的可怕之处在于,一个被提前确定的错误 token 会立刻变成后续所有位置的条件,级联污染整条轨迹。论文用一组直接的观测支持这个判断:把扩散步上视觉分量与语言分量的归一化峰值概率质量画出来,视觉落地的承诺在提交之前,视觉峰值会超过语言先验;而幻觉承诺的视觉分布始终摊得很平、峰值一直被压在语言先验之下——排序分数没能反映「视觉证据是否集中」。

既然问题出在排序分数上,就不必去动模型参数。核心 idea:把幻觉重写成逐位置的「代理偏差」\(b_i \ge 0\)(文本似然对真实多模态目标的偏离量),用交叉注意力在图像 token 上的空间香农熵作为这个偏差的可计算估计量,跨注意力头做 β-分位共识聚合以防单个尖头骗过检验,再用一个单调乘子把候选 token 的置信度重加权后取 TopK 承诺——在完全不训练的前提下,把并行解码的排序目标拉回视觉落地。

方法详解

整体框架

输入是一张图像 \(v\) 和一段文本提示 \(x\)(提示里保留 <think> 位以引出中间推理),输出是响应序列。冻结的 MDLLM 把响应的 \(L\) 个位置全部初始化成 [MASK],然后在 \(T\) 个解码步里逐步解掩码,每一步在预算 \(k_t\) 下挑选一部分位置,用该位置的候选 token 提交。VISAGE 不碰任何模型权重,只在「这一步提交哪几个位置」这个决策上插一层重排:每一步前向本来就会输出各掩码位的候选 token 与置信度 \(c_i\),也本来就算出了跨注意力,VISAGE 直接复用这两样东西算出「落地证据」,得到一个修正后的排序分数,再按修正分数取 TopK 提交。用一句话概括就是——把「按置信度取 TopK」换成「按置信度 × 落地乘子取 TopK」,其余流程一律不变。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["图像 + 提示词<br/>响应位全部置 [MASK]"] --> B["冻结 MDLLM 前向<br/>候选 token + 置信度 c"]
    B --> C["目标失配形式化<br/>幻觉 = 置信度高但偏差大"]
    C --> D["空间熵估计<br/>跨注意力逐头算 Shannon 熵"]
    D --> E["β-分位共识<br/>第 ⌈βM⌉ 小的头熵作 H"]
    E --> F["单调重加权承诺<br/>u = c·(1+H)^−α 取 TopK"]
    F -->|预算未填满,进入下一解码步| B
    F --> G["输出序列"]

关键设计

1. 目标失配形式化:把幻觉写成逐位置的代理偏差

标准解码的写法是:第 \(t\) 步的被掩码位置集合为 \(\mathcal C_t\),每个位置 \(i\) 的候选 token 由贪心取得、其置信度 \(c_i\) 就是这个候选的概率质量;解码器要选出大小恰好为 \(k_t\) 的提交集合 \(U_t \subseteq \mathcal C_t\),而它的选择准则就是最大化 \(\sum_{i\in U}\log c_i\)——因为目标对位置可分离,这等价于按 \(c_i\) 取 top-\(k_t\)。论文的观察是:这个式子里根本没有任何视觉对应项。理想的多模态解码目标应当同时含文本似然与局部视觉对应,即 \(r^{\star}(i)=\log c_i+\lambda r_{\mathrm{vis}}(i)\)\(\lambda>0\) 控制落地强度);但精确的 \(r_{\mathrm{vis}}\) 需要一个昂贵的 oracle 逐个候选去核对图像区域,这会直接抵消并行解码的效率优势,所以标准算法只能退化成只看 \(\log c_i\)。两者之差就是代理偏差 \(b_i\)——它衡量「文本概率质量压过了局部视觉证据」的程度。把幻觉重写成「\(b_i\) 大的那些候选位置」之后,问题从「整条序列生成失败」变成了「若干位置的局部优化误差」,后面所有设计都只需针对这些位置做加罚,而不必去修正整个模型。(⚠️ 原文式 (5)(6)(7) 里 \(b_i\)\(\lambda r_{\mathrm{vis}}\) 的符号方向在 PDF 提取文本中不自洽,这里只保留其概念含义:\(b_i\) 越大表示该位置越可能没落地;具体符号以原文为准。)

2. 空间熵估计:用交叉注意力的集中度当视觉落地证据

要修正 \(b_i\),得先有一个能算出来的估计量 \(\hat b_i\)。论文没有假设注意力权重等同于视觉特征的因果影响,而是把归一化后的跨注意力空间分布当作「视觉证据落在哪里」的代理:对每个被掩码的文本位置 \(i\),取最后一层里每个注意力头 \(h\) 对图像 token \(j\in\mathcal I_{\text{img}}\) 的注意力 \(A^{(t,h)}_{i,j}\),先在图像 token 上重新归一化(原注意力还分摊在提示词与已生成 token 上,且需要一个数值平滑常数 \(\delta>0\) 防除零):

\[\tilde A^{(t,h)}_{i,j}=\frac{A^{(t,h)}_{i,j}+\delta/N}{\sum_{j'\in\mathcal I_{\text{img}}}\big(A^{(t,h)}_{i,j'}+\delta\big)},\qquad j\in\mathcal I_{\text{img}}\]

(⚠️ 原文式 (8) 在缓存文本中损坏,这里是按上下文重建的形式,以原文为准;\(N\) 为图像 token 数。)随后对这个空间分布求香农熵 \(H^{(t,h)}_i=-\sum_{j\in\mathcal I_{\text{img}}}\tilde A^{(t,h)}_{i,j}\log\tilde A^{(t,h)}_{i,j}\)。熵低意味着注意力集中在少数图像块上,这个候选 token 有明确的局部视觉支撑;熵高意味着注意力均匀摊满全图,说明它只是在用语言先验猜。这个方向与 Figure 2 的经验观测一致:落地的承诺在提交前视觉峰高于语言先验(低熵、局部),幻觉承诺的视觉分布全程均匀、峰值被压住。之所以选熵而不是注意力权重本身,是因为熵是一个与尺度无关的标量,不需要训练任何探测器,也不用引入外部模型,一次前向就能顺带算完。

3. β-分位共识:让足够多的注意力头独立同意才算落地

单个注意力头偶尔会塌缩到无关的伪影上,产出一个「人为很尖」的低熵分布:如果直接取头间最小熵,一个假尖头就足以让一个根本没落地的 token 免于惩罚;反过来,如果多数头都弥散而只有少数头给出了真实的集中信号,取平均又会把这个信号稀释掉。论文的做法是把 \(M\) 个头的熵升序排列 \(H_{i,(1)}\le\cdots\le H_{i,(M)}\),取第 \(\lceil\beta M\rceil\) 小的那个值作为稳健落地熵:

\[H_i\triangleq q_\beta\big(\{H^{(t,h)}_i\}_{h=1}^{M}\big)=H_{i,(\lceil\beta M\rceil)}\]

这个分位算子起的是「定位共识」的作用——只有至少 \(\lceil\beta M\rceil\) 个头各自都给出低熵,\(H_i\) 才会小,token 才会被判定为落地。\(\beta\) 因此成了一个显式的「共识门槛」:\(\beta=0.5\) 就是取中位数头熵(要求过半数头同意),实验里统一用 \(\beta=0.25\)。(⚠️ 原文 4.2 节用 \(\beta=0.5\)/中位数举例说明共识含义,而实验部分统一取 \(\beta=0.25\),两处口径不一致,以实验设置为准。)消融显示这个折中确实必要:取最小熵低于取平均、取平均又低于分位共识。

4. 单调重加权承诺:用有界误差的 TopK 取代置信度排序

把估计出的熵变成排序分数,需要经过一个单调乘子:定义落地乘子 \(g_i=1/(1+H_i)\)(熵越大、乘子越小),最终线性排序分数为

\[u_i=c_i\cdot g_i^{\alpha}=c_i\,(1+H_i)^{-\alpha}\]

其中 \(\alpha\ge 0\) 是惩罚强度,等价于在 log 空间减去 \(\alpha\log(1+H_i)\),也就是惩罚相对 log 概率的尺度。\(\alpha\) 默认取 0.5,但在 MME 上降到 0.3——因为 MME 掺了常识推理、文本翻译、数值计算、代码推理这类认知任务,惩罚太强会把模型本应保留的语言与认知先验一起压掉。由于修正后的目标对候选位置依然可分离,最优提交集合就是按 \(u_i\) 取 top-\(k_t\)\(U_t=\operatorname{TopK}(\{u_i\}_{i\in\mathcal C_t},k_t)\),不需要近似求解,也不需要额外的优化循环。这个重排之所以稳,在于 \(c_i\) 固定时 \(u_i\)\(H_i\) 单调递减,于是「既置信、又有集中视觉证据」的 token 才会被提交(论文同时给出了误差保证:若熵估计 \(\hat b_i\) 与真偏差 \(b_i\) 的绝对误差不超过 \(\varepsilon_t\),则相对最优落地子集的目标损失不超过 \(2k_t\varepsilon_t\);这个界来自最坏情况下的一次排序反转——被高估 \(\varepsilon_t\) 的次优 token 顶掉被低估 \(\varepsilon_t\) 的最优 token,单个位置最多损失 \(2\varepsilon_t\),共 \(k_t\) 个位置)。

一个完整示例

用 Figure 3 的示意图走一遍。提示词是 "Is there a couch in the image?",某个解码步里模型对五个掩码位给出候选与置信度:a (0.62)、couch (0.25)、visible (0.48)、no (0.51)、. (0.31)。

如果按标准置信度排序,a 以 0.62 排第一,最有资格被优先提交。VISAGE 转而计算每个候选的注意力空间熵:a 的注意力摊满整张图,\(H=4.55\)couch \(H=5.25\)visible \(H=3.16\)no 的注意力集中在画面某一小块,\(H=0.18\). \(H=1.24\)。对应的乘子 \(g=1/(1+H)\) 分别是 0.18、0.16、0.24、0.85、0.44,乘回置信度(\(\alpha=0.5\) 相当于开平方)后重排得到:no 0.47、a 0.26、visible 0.23、. 0.20、couch 0.10。结果是 no 跃到第一被提交、a 因高熵被罚下去——如果让 a 先落地,它立刻成为下一步所有位置的条件,整句就被推向 "There is a couch..." 这种没有视觉依据的回答。(以上数值取自原文 Figure 3。)论文正文里的另一个例子同理:问 "Is there a cup in the image?",标准解码给统计上顺口的 "no" 高达 0.9 的置信度,VISAGE 依据熵把它的修正置信度压到 0.6,阻止了这次提前承诺,模型最终给出 "There is a cup on the deck."

损失函数 / 训练策略

本文没有训练目标——VISAGE 完全工作在推理期,不更新任何参数、不引入额外数据、也不改架构,只在每次承诺前多做几步基于已有注意力图的标量计算。全部超参数只有三个:分位共识门槛 \(\beta=0.25\)(所有实验统一)、惩罚强度 \(\alpha=0.5\)(默认;MME 上取 0.3)、以及熵计算步长(entropy stride)。加罚本身是乘性且单调的,不改变解码器的采样结构,因此可以原样塞进现有的掩码解码循环。

实验关键数据

主实验

骨干是 MMaDA(标准置信度解掩码),对比对象是同一骨干上的 VCD——论文把视觉对比解码适配到了掩码扩散框架(每个并行解掩码步都对原图与视觉退化图的 logit 分布做对比)。POPE 与 MME 用字符串匹配算 F1 / Score,HallusionBench 与 MMMU-val 用 Qwen3-8B 当 LLM 裁判。

基准 指标 MMaDA(基线) + VCD + VISAGE(本文) 相对基线
MMMU-val Acc (%) ↑ 27.11 28.44 29.44 +8.59%
HallusionBench Acc (%) ↑ 34.18 34.80 36.83 +7.75%
POPE F1 ↑ 75.97 75.85 76.17 +0.26%
MME Score ↑ 1383.29 1342.21 1372.05 −0.81%

为了验证这不是 MMaDA 专属的现象,论文把 VISAGE 原样搬到另外两个 MDLLM 上,不做任何架构相关的调参:

骨干 方法 MMMU-val ↑ MME ↑
LLaDA-V 基线 46.67 1883.57
LLaDA-V + VISAGE 47.11 1900.64
Lumina-DiMOO 基线 29.33 1125.23
Lumina-DiMOO + VISAGE 30.13 1142.16

消融实验

配置 基准 / 指标 得分 说明
\(\alpha=0.5\) MME 1320.77 惩罚过强,压掉了认知任务需要的语言先验
\(\alpha=0.3\)(MME 默认) MME 1372.05 最佳折中
\(\alpha=0.1\) MME 1362.68 惩罚过弱,压不住提前承诺
头间取最小熵 MMMU-val 28.56 单个尖头即可伪造「落地」
头间取平均熵 MMMU-val 28.78 弥散头稀释真实集中信号
\(q_\beta\) 分位共识(本文) MMMU-val 29.44 两个方向都挡住

因为重排只用了一次前向里已经算出的注意力,VISAGE 的额外开销只是一个「要不要每步都算熵」的选择。作者提出 entropy stride:隔几步算一次落地信号,其余步沿用上一次的结果。

方法 延迟 (s/图) ↓ 相对开销
MMaDA(基线) 8.22 1.00×
VISAGE(每步都算) 10.84 1.31×
VISAGE(stride 2) 9.56 1.16×
VISAGE(stride 4) 8.58 1.04×
VISAGE(stride 8) 8.23 1.00×

关键发现

  • 增益集中在语言先验最容易被误用的地方。HallusionBench 上提升最大的是 illusion(约 9%)与 map(约 12.5%)两个高度依赖空间定位的子集,而 VCD 在 illusion 上几乎没有改善——说明对比式惩罚能压泛化的统计先验,却压不住「必须把注意力集中到某块区域核验」的那类错误。图表类密集格式(figure、math、OCR)也有一致提升,因为细粒度语义细节正是语言先验最容易凭空补全的地方。
  • MMMU-val 的 +8.59% 说明收益不限于 yes/no 题。多步推理里,过早提交一个没落地的中间 token 会级联污染后续所有步骤;逐位置的重排相当于给每一步都加了一道锚定,长答案因此更稳。
  • POPE 只涨了 0.26%,作者归因于标签噪声:因为放开了生成长度、让模型走中间推理,VISAGE 会认真核验空间,于是把标注漏掉的真实物体判为「在」、或者否掉标注里的错误断言,这些正确判断反而被计成错误(POPE 基于 MS COCO,本身就存在漏标与误标)。这个解释合理,但论文只给了定性的补充材料例子,没有定量证据,读者宜把它理解为「可测提升被数据噪声压低」,而非方法在 POPE 上无效。
  • \(\beta\) 分位聚合的必要性来自两个方向相反的失效模式:最小熵防不住单头伪影(28.56),平均熵又会被弥散头稀释(28.78),只有共识式聚合把两边都挡住(29.44)。
  • \(\alpha\) 的敏感性是任务相关的:MME 上 0.3 明显优于 0.5 与 0.1,说明视觉落地并非万能——当幻觉主要来自语言侧(常识、翻译、计算)时,惩罚过强会误伤模型本该保留的认知先验。
  • 效率上逐解码步计算熵的代价是 1.31× 延迟,但相邻解码步的落地信号变化很慢,隔步计算就能把开销压回 1.04×(stride 4)乃至 1.00×(stride 8),提供了一个实用的精度—延迟旋钮。
  • ⚠️ 原文实现细节称 MMMU-val 使用 128 个扩散步,而 latency 表的设置说明写的是 256 步,两处不一致;延迟数字的量级仍可参考,但具体配置以原文为准。

亮点与洞察

  • 把幻觉重新定义为「解码算法的目标失配」而不是「模型能力不足」,是这篇论文最有价值的视角:它把问题从「要不要再训练」转成「要不要改排序分数」,于是得到一个免训练、即插即用、不改架构的方案。可迁移的信号很明确——任何采用并行/非自回归解码的生成模型,只要排序分数只来自单一模态,就存在同构的失配风险。
  • 用注意力的「空间熵」而不是注意力权重或外部检测器当证据,是很划算的选择:熵是尺度无关的标量,不需要训练探测器、不需要外部模型,且复用一次前向的中间结果,成本几乎为零。
  • β-分位共识把一个原本含糊的问题——「多少个注意力头同意才算数」——显式写成了一个可调的分位数,比取最大/取平均这类固定组合更可控。这个技巧可以迁移到任何需要跨头聚合置信度的场景,比如事实性探测、不确定性估计、幻觉检测打分。
  • 单调重加权 + 可分离目标保证了「加正则项」不牺牲最优性:因为目标对候选位置可分离,加完惩罚仍然只需一次 TopK,不需要近似求解或额外的优化循环。这是让一个复杂打分能无痛接入现有解码器的关键工程点。

局限与展望

  • 作者承认的局限:VISAGE 只处理图像到文本的并行解码,不显式建模视频 MDLLM 的时间 token 维度;空间熵虽然在形式上可以推广到时空注意力图,但方法不强制跨帧一致性。这一点在实验里也有反映——HallusionBench 的 video 子集上基线仍然占优,因为视频推理需要跨多帧聚合落地。
  • 我看到的局限:全部证据只来自 3 个 MDLLM(MMaDA / LLaDA-V / Lumina-DiMOO)与 4 个基准,绝对提升幅度总体不大(MMMU-val +2.33 绝对点、HallusionBench +2.65 绝对点),没有多次运行的方差报告,也没有说明解码顺序随机性对结果的影响(variance 未知)。
  • 熵的估计固定使用「最后一层跨注意力」,但论文没有做层选择的消融;Figure 2 只给了定性曲线,缺少「注意力集中度」与「事实正确性」在全部任务上的相关性统计。
  • 基线覆盖偏窄:只对比了适配版 VCD,没有把更多同代解码类干预(层间对比、多头抑制等自回归方法)搬到掩码扩散框架里比。
  • 改进思路:(1) 把时间维纳入熵的计算,对跨帧注意力一致性加约束,直接补上视频短板;(2) 让 \(\beta\)\(\alpha\) 按样本自适应,避免 0.3/0.5 这种人工按基准挑参;(3) 用熵信号反过来做「重掩码」——对已提交但后来熵变高的 token 允许回退,与 CORE 的思路结合。

相关工作与启发

  • vs VCD:这是论文最直接的可比基线,用原图与视觉退化图的 logit 对比来惩罚语言先验依赖,论文把它适配到了掩码扩散框架。两者的区别在证据形式:VCD 看「图像被破坏后分布怎么变」,VISAGE 看「注意力在图像上是否集中」。VISAGE 在 MMMU-val/HallusionBench 上更好,而且 VCD 在 MME 上反而掉了(1342.21 对基线 1383.29),说明对比式惩罚容易误伤需要语言先验的认知任务,而按熵加权的惩罚只罚「没落地」的位置,误伤更小。
  • vs OPERA / DoLa 这类自回归解码干预:它们分别在自回归解码中用对比惩罚、层间对比来抑制幻觉,作用对象是顺序 next-token 预测的 logit 分布。论文并没有把这两项实现成基线,只是在相关工作里把它们归入「顺序机制、忽略并行掩码解码特有的局部优化误差」这一类——所以严格地说,本文没有回答这类方法能否平移到掩码扩散并取得相近效果。本质差别在于介入时机:它们在生成过程中逐 token 修分布,VISAGE 在承诺步之前重排候选。
  • vs CORE / DyStruct:同为扩散语言模型的免训练解码方法。CORE 把已提交但不可靠的 token 重新掩掉、事后再修正;DyStruct 在解码过程中动态调整生成结构与长度。两者都只在文本上操作、不看图像。VISAGE 的不同是介入点更早——在承诺那一刻就按视觉落地重排,没落地的 proposal 根本不会被提交,而不是提交之后再回退。
  • vs 自回归的内部校准方法(对比惩罚、图像引导的注意力头抑制、变分信息瓶颈探测):这些方法为顺序解码设计,多依赖对已生成 token 的再打分或额外的前向;VISAGE 用的是并行解码每一步本来就有的注意力图,不引入额外前向,也不需要外部模型。

评分

  • 新颖性: ⭐⭐⭐⭐ 「目标失配 / 局部优化误差」的重新定义有理论野心,用注意力空间熵做重排也是新角度;但「用注意力集中度抑制幻觉」在自回归 VLM 上已有相近思路。
  • 实验充分度: ⭐⭐⭐ 覆盖 4 个基准 + 3 个骨干 + 3 组消融(惩罚强度、头聚合、延迟),但绝对提升不大、无方差报告、基线只有适配版 VCD,POPE 的异常表现仅有定性解释。
  • 写作质量: ⭐⭐⭐ 动机链条清楚、图示到位;但式 (5)(6)(7) 的符号方向不自洽、\(\beta\) 在正文与实验中的口径不一致、MMMU-val 的扩散步数在实现细节与延迟表中矛盾,都需要读者自行辨别。
  • 价值: ⭐⭐⭐⭐ 免训练、即插即用、带精度—延迟旋钮,对任何做扩散语言模型解码的团队都是低成本可复现的改进;把幻觉重构成解码目标问题这条线也有继续做的空间。