当模型"看图说话"其实在"看题说话":VISE 如何治好多模态 LLM 的视觉忽视症
一个反直觉的发现:模型答对了,但没在看图
假设你给一个多模态大模型(LMM)看一张图片,问"图中有几个红色的物体?"。模型回答"3个"——正确。你把图片换成一张完全不同的图,再问同样的问题,模型又回答"3个"——还是正确。
但如果你把图片拿掉,只给文字提示"请回答:图中有几个红色物体?",模型依然回答"3个"。
这说明什么?模型根本没在看图。它靠的是语言先验——"红色物体"在训练数据中经常和"3个"共现。图片只是个摆设,模型用语言统计规律就能"蒙对"答案。
这就是 VISE 论文揭示的核心问题:视觉欠条件化(Visual Under-Conditioning)。现有自演化多模态模型(Self-Evolving LMMs)在训练时优化的是"答案一致性"——多个角色互相打分,答案一致的拿高分。但"答案一致"不等于"基于视觉证据"。模型可以通过语言先验产生自洽的答案,完全绕过视觉输入。
VISE(Visual Invariance Self-Evolution)提出了一个根本性的解法:不奖励答案一致,奖励视觉不变性。
两个不变性奖励:几何不变 + 语义不变
VISE 的核心是两个互补的自监督奖励信号。不需要任何标注、不需要外部奖励模型、不需要多个角色——单个模型在无标签图片上自己训练自己。
奖励一:几何不变性(Geometric Invariance Reward, R_geo)
直觉:如果模型真的在看图,那么对同一张图做几何变换(翻转、裁剪、仿射),模型对同一个问题的回答应该稳定。如果模型靠语言先验答题,几何变换会破坏视觉线索,模型答案会漂移。
具体流程: 1. 模型对图片 x 生成一个问题 q(自问自答式) 2. 模型预测一个定位框 B = (x1, y1, x2, y2) 3. 对 x 做 N 种几何变换得到 {x'_1, ..., x'_N}(翻转、裁剪、仿射) 4. 模型在变换后的图上用同样的 q 预测框 {B'_1, ..., B'_N} 5. 计算 B 和 B'_i 的 IoU(交并比),取平均作为 R_geo
R_geo 高 = 模型对几何变换鲁棒 = 模型真的在看图(因为语言先验不会随几何变换变化,但视觉定位会)
奖励二:语义不变性(Semantic Invariance Reward, R_sem)
直觉:如果模型真的定位到了图中的物体,那么把那个物体区域"抹掉"(ghosting),模型应该改变回答。如果模型靠语言先验答题,抹掉物体不影响答案——因为它本来就没看那个区域。
具体流程: 1. 模型对图片 x 生成问题 q 并预测框 B 2. 模型回答"B 区域内的物体是否可见" → 应该回答"是" 3. 对 x 中 B 区域做 ghosting(高斯模糊或均值填充),得到 x_ghost 4. 模型在 x_ghost 上回答同样的问题 5. 如果模型回答"否"(物体消失)→ R_sem = 1.0(正确:原来可见,抹掉后不可见) 6. 如果模型仍回答"是" → R_sem = 0.0(错误:模型没在看图,抹掉后还以为物体在)
这个设计极其精巧:它利用了"反事实推理"——如果模型真的依赖视觉证据,那么移除证据应该改变模型的判断。如果移除证据后模型判断不变,说明模型没在用这个证据。
总奖励:R = 0.5 × R_geo + 0.5 × R_sem
两个奖励互补:R_geo 检测"模型是否对视觉变换敏感",R_sem 检测"模型是否依赖特定视觉区域"。一个测稳定性,一个测敏感性。
代码分析:单模型、无标注、REINFORCE 更新
我阅读了 VISE 的开源代码(mbzuai-oryx/VISE),架构非常干净:
配置(vise/config.py):
- 基础模型:Qwen3-VL-2B-Instruct(也测了 8B)
- 坐标空间:归一化到 [0, 1000]
- 几何变换:affine / crop / flip,平移 ±50,缩放 0.9-1.1,旋转 ±10°
- Ghosting:高斯模糊 σ=25 或均值填充
- 训练:16180 步,batch_size=1,lr=1e-6,KL 自适应(目标 0.020)
vise/trainer.py):
1. ImagePool 从目录递归索引无标签图片(只看像素,不读任何标注)
2. 模型生成问题 q(max 64 tokens)
3. 模型预测框 B
4. 计算 R_geo(几何变换后 IoU)
5. 计算 R_sem(ghosting 后可见性变化)
6. PolicyUpdater 用 REINFORCE + KL 正则更新策略关键设计决策:
- 冻结视觉编码器:只更新 multimodal projector + FFN + decoder attention。理由:视觉编码器已经产生好的表征,问题在解码器不会用。把噪声奖励梯度灌进编码器会破坏已有的好表征。
- 单模型:不需要多个角色互相打分。一个模型自问自答自验证。
- EMA baseline:b_t ← 0.9 × b_{t-1} + 0.1 × R_t,减少梯度方差。
实验结果:18 个 benchmark 上一致提升
VISE 在 18 个 benchmark 上测试,覆盖:
- 图像描述(image captioning)
- 视觉问答(VQA)
- 推理(reasoning)
- 幻觉(hallucination)
- 所有任务组都有提升,没有 tradeoff——不像有些方法在 VQA 上变强但在描述任务上变弱
- 超越所有自演化基线:包括多角色自博弈、自一致性奖励等方法
- 注意力分析证实:VISE 训练后,解码器在生成时对视觉 token 的注意力显著增加——模型真的开始"看图"了
为什么这件事重要
1. 揭示了自演化 LMM 的根本缺陷
现有自演化方法(自博弈、自一致性)都在优化"答案一致"。但"答案一致"和"基于视觉"是两回事。一个完全不看图的模型也能通过语言先验产生自洽答案。VISE 用反事实推理(移除视觉证据看答案变不变)直接检测模型是否在看图——这比看答案正确率深刻得多。
2. "正则化策略本身" > "正则化答案"
VISE 的哲学是:不要直接优化答案对错,而要优化模型使用视觉信息的方式。如果模型学会了"看图"这个行为,正确答案自然跟着来。这像教育中"授人以渔"——不教具体答案,教学习方法。
3. 反事实推理作为自监督信号
R_sem 的设计是一个漂亮的反事实推理框架:P(可见|原图) vs P(可见|抹掉图)。如果两者相同,说明模型没在用视觉证据。这种"干预-比较"的因果推理思路,比简单的"答案对不对"提供了更深的信号。
4. 无标注、无外部模型、单模型
VISE 的训练只需要一堆无标签图片。不需要人工标注、不需要更强的模型当裁判、不需要多个角色。这在数据稀缺场景下极具实用价值。
局限性
1. 依赖基础模型的视觉知识:VISE 正则化的是解码器使用视觉信息的方式,假设视觉编码器已经足够好。如果基础模型的视觉表征本身有问题,VISE 无法修复。 2. 定位框表示限制:VISE 通过定位框(bounding box)来检测视觉条件化,但有些视觉理解任务不涉及定位(比如"描述图片的氛围")。R_sem 对这类任务的适用性待验证。 3. Ghosting 的粒度:高斯模糊 σ=25 是固定参数,对不同分辨率和物体大小可能需要自适应。
一句话总结
VISE 发现多模态模型的"视觉忽视症"——模型答对了但没在看图——并用两个不变性奖励(几何变换鲁棒性 + ghosting 敏感性)直接正则化模型的视觉条件化策略,在 18 个 benchmark 上一致提升且无 tradeoff。
---
*深度研究回复 | 论文 arXiv: 2606.27373 | VISE: Visual Invariance Self-Evolution* *开源代码:github.com/mbzuai-oryx/VISE | ECCV 2026*