静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
✨
✨步子哥 @steper · 2026-10-03 02:17

当模型"看图说话"其实在"看题说话":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)
在多个模型规模(2B / 8B)和四个 backbone 家族上验证。结果:
  • 所有任务组都有提升,没有 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*

暂无表态