多模态模型其实不怎么「看」图片

有一个实验,结果让很多人感到不舒服。

研究者把视觉问答(VQA)数据集里的图片全部替换成随机噪声,或者直接去掉图片只保留问题,然后测试当时主流的多模态模型。结果:很多模型在这种情况下仍然能答对超过一半的题目。

这说明什么?说明模型并没有真正在"看"图片,而是在用语言本身的统计规律来猜答案。问"图片里的香蕉是什么颜色的",不需要看图,模型也知道答案大概率是"黄色"。问"这张照片是在哪里拍的",草地加上蓝天,不看图也能猜是"公园"或"户外"。

这就是多模态模型的语言先验主导问题(Language Prior Dominance)——模型依赖从训练语料里学到的语言统计关联,而不是从图像本身做出推理。它是多模态幻觉的根本来源,也是当前多模态基模最核心的技术挑战之一。

正常输入 🍌 Q: 香蕉是什么颜色? (图片可见) 多模态模型推理 黄色 ✓ 准确率相近 去掉图片 Q: 香蕉是什么颜色? (无图片输入) 多模态模型推理 黄色 ✓
去掉图片,多模态模型仍以相近准确率答对——答案来自语言统计,而非视觉推理

一、什么是语言先验

语言先验指的是:模型在生成答案时,更多地依赖"这类问题的答案在语言上的分布",而不是依赖视觉输入。

举一个直白的例子。训练数据里有大量"这只动物是什么颜色的?——白色"(关于北极熊)、"这只动物是什么颜色的?——橙黑条纹"(关于老虎)。模型学到的不是"先看图片,再判断颜色",而是"看到某种动物名,输出对应的颜色"。如果图片里出现了一只染成蓝色的老虎,模型大概率仍然会说"橙黑条纹",因为语言先验太强了。

纯文本语言模型本来就有先验偏差,这是正常的——它在做文本补全,依赖语言统计是合理的。但多模态模型被期望做的事不同:它应该以视觉输入为主,语言理解为辅,在两者出现矛盾时以图像为准。现实是,两者出现矛盾时,很多模型选择了语言。

二、语言先验从哪里来

1. 模型结构的不对称

多模态模型通常是在一个预训练好的大语言模型上拼接一个视觉编码器。语言模型部分是 7B 到 70B 参数,视觉编码器(如 ViT-L)是 300M 到 600M 参数。两者之间差了一到两个数量级。

语言模型部分已经在万亿 token 的文本上训练过,对语言的统计规律有极强的"记忆"。视觉编码器提供的视觉 token 进入语言模型后,只是少数几百个额外输入,相对于语言模型内部已经形成的语义结构,影响力非常有限。

更关键的是:视觉 token 和语言 token 在语言模型的表征空间里并不对等。CLIP 的视觉嵌入和文本嵌入之间存在一个"模态鸿沟"(Modality Gap)——即使语义相同的图文对,其嵌入向量在空间中仍然分属不同的区域,中间隔着一段距离。投影层负责弥合这个距离,但弥合的质量取决于对齐训练的数据质量和规模。

🖼 图片输入 视觉编码器 ViT-L ≈ 300M 300M 参数 投影 大语言模型(LLM) 7B — 70B 参数 · 万亿 token 预训练 ≈ 100× 参数量
多模态模型架构:视觉编码器(~300M)经投影层接入 LLM(7B—70B),参数量相差约 100 倍

2. 指令微调数据的偏差

多模态指令微调(Visual Instruction Tuning)的数据通常来自两个来源:人工标注和用强模型(如 GPT-4V)生成。

这两类数据都有一个共同的问题:问题的答案在语言层面往往是高度可预测的。"图片里有几个人"——答案通常是 2 到 5 个;"这个标志是什么意思"——联系上下文通常能猜到;"图片里的文字是什么"——截图 + OCR 问题的答案非常模式化。

模型在微调时学到了"看到这类问题,给这类答案"的捷径,而不是学到了"先仔细分析图片,再给出答案"。这种捷径学习(Shortcut Learning)在 benchmark 上得分不低,但遇到分布外的图片就会暴露。

3. 注意力机制的视觉偏向不足

研究人员通过可视化注意力权重发现,在很多视觉问答场景中,模型生成答案时对视觉 token 的注意力权重显著低于对问题文字 token 的注意力权重。也就是说,模型"看了图片",但实际上大部分推理发生在语言 token 之间,视觉 token 只是提供了一些弱信号。

这个问题在长文本场景里更严重。当输入包含大量文本 + 图片时,视觉信号往往被"淹没",模型回退到纯文本推理模式。

三、三类典型失败模式

1. 对象幻觉

模型描述了图片里并不存在的对象。最常见的形式是:图片里有一张餐桌,模型描述"桌上有盘子、杯子、刀叉"——这些东西在训练数据里经常和餐桌同时出现,但这张特定图片里可能什么都没有。

POPE(Polling-based Object Probing Evaluation)benchmark 专门用来测这个:问模型"图片里有 X 吗",X 一半真实存在,一半是高频共现但不存在的对象。强模型在 POPE 上的准确率大概在 85%—88%,还有明显的提升空间。

2. 空间推理错误

"图片里红色方块在蓝色方块的左边还是右边"——这类问题需要模型真正处理视觉空间关系,无法靠语言先验回答。多模态模型在这类问题上的表现通常比人类低得多,接近随机猜测水平。

根因是:空间关系(左/右/上/下/前/后)在语言中是可以完全用文字描述的,模型在训练时没有建立起视觉坐标系和语言描述之间的可靠映射。它知道"左边"是什么意思,但不知道图片里哪个位置对应"左边"。

3. 计数错误

数图片里有几只猫、几个人、几辆车——多模态模型在这类任务上系统性低于人类,尤其是数量超过 4 个时。

语言先验在这里的影响是:训练数据里图片描述的数量分布高度偏向小数(1、2、3),大数量罕见。模型在不确定时倾向于给出训练数据里高频的小数,而不是真正去数。

四、为什么这个问题难解

直觉上的解法是"给更多视觉数据,让模型更多地依赖视觉"。但实际上没这么简单,原因有三个。

第一,语言先验来自语言模型的预训练,而不是多模态微调。 语言模型在预训练阶段已经形成了对语言统计规律的强烈依赖,这是模型能力的来源,不是缺陷。多模态微调阶段的数据量(通常是几百万到几千万对)相对于预训练(几万亿 token)太少了,无法从根本上改变语言模型的内部偏向。

第二,减少语言先验可能同时减少语言能力。 语言先验和语言理解是同一套机制的两面。如果你让模型在生成时更少地依赖语言统计,它的自然语言理解能力也会下降。这是一个需要精确权衡的 trade-off,而不是一个可以无代价优化的方向。

第三,评估体系本身在助长问题。 很多主流 benchmark(VQAv2、GQA)的题目都是语言先验可以解决大半的题目。在这些 benchmark 上得高分,不代表模型真的在"看"图片。评估指标没有区分"靠语言猜对"和"靠视觉推理答对",导致模型在训练中没有强动机去提升视觉依赖度。

五、工程层面的应对思路

数据构建:反事实样本

反事实数据(Counterfactual Data)的核心思路是:对同一个问题,提供两张图片——一张让答案是 A,另一张让答案是 B,要求模型给出不同的答案。如果模型只靠语言先验,它对两张图片会给出相同答案,这在训练时会得到惩罚。

这类数据显著降低了语言捷径的可用性,逼迫模型真正区分视觉输入。代表性工作包括 VQA-CP(VQA with Changing Priors)和 SUGARCREPE。成本是这类数据生成和标注的代价比普通数据高很多,通常需要人工精心设计。

训练策略:对比解码

对比解码(Contrastive Decoding)在推理时同时运行两个前向传播:一次带图片,一次不带图片(或带一张干扰图片)。最终的输出是两次结果的差值——只保留那些因为图片的存在而改变的预测。

这个方法不需要改变训练,只在推理时加一步,能有效抑制语言先验。代价是推理时间翻倍(两次前向传播)。在对延迟敏感的场景里不适用,但在离线评估或对质量要求高的场景里是实用的工具。

问题 + 图片输入 含图片输入 正常前向传播 输出概率 P₁ 无图片输入 干扰前向传播 输出概率 P₂ P₁ − P₂ 纯视觉驱动输出
对比解码:同时运行两次前向传播,用差值抵消语言先验,保留视觉驱动的预测

评估体系:抗捷径 benchmark

衡量模型真实视觉能力,需要选择对语言先验不友好的 benchmark:

  • POPE:专门测对象幻觉,对象是否存在的判断对语言先验几乎无帮助
  • MMVP(Multimodal Visual Patterns):专门测那些人类一眼能看出但多模态模型容易出错的视觉模式
  • CV-Bench:用真实计算机视觉任务测试,语言捷径有限
  • SpatialBench:专门测空间推理,无法靠语言猜测

在这些 benchmark 上的得分,比在 VQAv2 上的得分更能反映模型真实的视觉理解能力。

视觉 Token 的充分利用

从模型结构层面,有几个方向在尝试提高视觉信号的权重:

增加视觉 token 数量。 把图片切成更多 patch,给模型更多视觉信息。GPT-4V 和 Claude 3 对高分辨率图片都采用了类似的策略(Tile Encoding)。代价是 KV cache 和推理延迟显著增加。

Visual Grounding 专项训练。 在训练中加入需要精确定位(Bounding Box)的任务,逼迫模型学会把文字描述和图片区域对应起来。Qwen-VL 和 InternVL 都把 Grounding 任务作为重要的训练组成部分。

更强的视觉编码器。 从 ViT-L 升级到 ViT-H 或更大的模型,或者用专门在细粒度理解任务上训练的视觉编码器(如 DINOv2),提升视觉特征的质量,给语言模型提供更"可信"的视觉输入。

六、对多模态工程师的启示

理解语言先验问题,会让你在实际工作中做出几个不同的判断。

评估模型效果时,不要只看综合 benchmark。 VQAv2 高分可能只是语言先验好,不代表真正的视觉理解能力。专项评估(幻觉率、空间推理、计数准确率)更有诊断价值。

数据质量比数量更重要,但"质量"要定义对。 增加多样性高、语言捷径少的数据,比单纯增加数据量对改善视觉依赖度效果更好。反事实样本、Grounding 标注数据的性价比,往往高于大规模爬取的图文对。

模型给出自信的错误答案,比给出"我不确定"更危险。 语言先验让模型在视觉信息不足时仍然以高置信度生成答案,而不是表达不确定。在部署多模态模型时,需要额外的校准机制(Calibration),防止模型的自信误导用户。

幻觉不是玄学,是可以量化和定向优化的工程问题。 用 POPE 这类 benchmark 测幻觉率,找到幻觉的对象类别分布,针对性地补充那些类别的真实负样本(模型说有但实际上没有的对象),是系统性降低幻觉率的工程路径,比泛泛地"增加数据"有效得多。

七、总结

多模态模型的语言先验问题是当前这一代模型的结构性弱点,来源于三个层面:语言模型和视觉编码器之间的参数量不对称、指令微调数据的捷径偏差、注意力机制对视觉 token 的权重不足。它导致了对象幻觉、空间推理失败和计数错误三类典型问题。

这个问题难以从根本上消除,因为语言先验和语言能力共用同一套机制。工程上的应对是多管齐下:数据层面引入反事实样本和 Grounding 标注,推理层面尝试对比解码,评估层面选择抗捷径的 benchmark,结构层面增强视觉编码器和视觉 token 的密度。

最后一句话:理解"模型在靠什么答对题",和理解"模型能答对什么题"一样重要。前者决定了你在部署时的风险判断,后者决定了你选择模型的依据。