视觉推理(Visual Reasoning):模型能不能像人一样从图片中推断出结论

我最早以为,视觉推理就是“更难一点的图像识别”。模型既然能认出猫、狗、汽车,那回答“猫和狗谁在左边”这类问题应该顺理成章——毕竟“左边”这个词又不难理解。

AI technology illustration

直到我在一个视觉问答(VQA)数据集上跑通第一个模型,才发现自己错得离谱。模型对着“红色方块在绿色方块左边吗?”这种问题,表现得像个刚学会看图的婴儿。图片它明明“看”了,结论却完全不着调。

后来我才想通:识别是“这是什么”,推理是“为什么、凭什么、接下来会怎样”。这两种能力,后者恰好是当前绝大多数视觉模型最薄弱的地方。

CLEVR 的问题是怎么“造”出来的?

每个问题由程序化函数调用生成。模板随机套用颜色、形状、位置等属性,生成器保证每个问题在场景图中只有唯一答案。研究者因此能精确控制难度:这个问题难在一步定位,还是三步组合。

视觉问答(VQA)
输入一张图片和一个自然语言问题,输出答案的任务。
语言先验
模型只凭问题文本就能猜中答案的模式,比如“这是什么颜色”往往可以盲答“白色”。
组合泛化
模型面对训练中没出现过的“零件组合”时,能否把已学概念重新组装起来给出正确答案。

一个为推理打造的“无菌实验室”

要研究推理,必须先有干净的测试场。真实照片杂乱无章,模型可以靠整体统计蒙混过关。2017 年,Johnson 等人发布了 CLEVR 数据集:用 Blender 渲染出 10 万张几何场景图,每张图只有 4 到 6 个物体,物体属性被严格限定为 3 种形状、8 种颜色、2 种材质和 2 种尺寸。

关键问题不是人写的,而是程序生成的。生成器把问题拆成无数变体:“大红色方块右侧的绿色小球是什么材质?”“有多少个物体不是金属材质?”这种问题天然需要多步推理:定位、过滤、比较、计数。整个数据集有超过 85 万个问题,大致分为以下几类,每一类都对应一种“从图像中组织证据”的方式。

问题类型 示例问题 它在测什么
属性查询 红色物体是什么材质? 筛选目标并识别属性
存在性判断 有大球吗? 在场景中确认类别是否存在
计数 有几个绿色方块? 枚举符合条件的所有物体
比较 球比方块多吗? 对数量做大小判断
空间关系 红色方块左边的球是什么颜色? 用位置关系锁定目标
逻辑组合 非金属的且在大球右边的物体有几个? 多条件联合过滤

为什么这么繁琐?因为真实世界的照片里有太多无关干扰,模型可以表面作弊。CLEVR 剔除了这些干扰,才能把“推理能力”单独抽出来测量。

模型根本没在“想”,它只是在“猜”

CLEVR 出现之前,VQA 领域已经埋下一个大坑。

2016 年,Agrawal 等人做了一个“令人不适”的实验:他们不看图片,只把问题文本喂给模型,看能答对多少(Don't Just Assume; Look and Answer)。结果,盲模型在 VQA 全量数据集上答对了约 29% 的问题,在答案偏差最大的子集上准确率直接窜到 54.1%——比当时不少纯视觉模型还强

原因很简单:数据集里一大半问题在问颜色,答案又被少数几个常用颜色垄断。模型根本不需要看图,只需要按高频答案“猜”。这就是语言先验。后来的 VQA 2.0 用互补图像对重新收集了数据,同一问题在不同图上答案不同,试图让模型不能只靠语言先验答题。

但模型总会找到新的捷径。Geirhos 等人在 2020 年给这类行为起了个名字——捷径学习:模型不做理解,只找训练集上碰巧有效的统计规律(Shortcut Learning in Deep Neural Networks)。

在 CLEVR 早期,一个端到端的 CNN+LSTM 基线只能答对 68.5% 的问题。这 30 分的差距,几乎全折在“多步推理”上。模型可能把“红色”“方块”都识别对了,却在“左边”这个空间关系上栽了跟头。

把推理结构直接写进模型,行得通吗?

2016 年,Andreas 等人提出了一个大胆的想法:与其让网络自己悟出推理步骤,不如把推理结构直接写进模型Neural Module Networks)。

思路是把问题解析成一棵分析树,树上每个节点对应一个“模块”——“找红色物体”“找左边的物体”“计数”。小模块按树形结构组合,前一个的输出接后一个的输入。比如“红色方块左边是什么颜色”,先调用“找红色方块”,再调用“找左边”,最后“回答颜色”。

这个设计最大的优点是可解释:每一步都看得见模型在干什么。缺点也明显:依赖问题解析器,解析一错,整棵推理树就垮了。真实世界的提问充满省略和歧义,解析器很难扛住。

2018 年的 MAC 网络换了一个折中方案:不显式解析问题,而是用循环注意力网络,让问题“一步一步”引导模型读图(MAC: Compositional Attention Networks for Machine Reasoning)。每一步,网络读一条问题线索,去图像对应区域“看一眼”,把结果写进记忆。这种设计在 CLEVR 上做到 98.9% 的准确率,逼近人类。

但别高兴太早。2019 年,GQA 把这些推理任务搬到了真实照片上(GQA 论文)。人类在 GQA 上能答对 89.3%,而当时基于 MAC 思路的最佳模型只有 54.06%。

"The best model achieves 54.06%, substantially lower than the 89.3% achieved by humans."
—— GQA 论文摘要

CLIP 的全局向量里,没有“左边”的位置

2021 年,CLIP 横空出世,零样本在 ImageNet 上做到 76.2% 的 top-1 准确率。它像一个真正“读懂”了图片的模型。

但 CLIP 学的本质是“全局语义对齐”:把整张图压成一个向量,再把对应文本压成一个向量,让二者靠近。图像编码器用的是 ViT 式 patch token 架构——图像先被切成语义块,经过注意力交互,最后通过池化输出单个全局向量。位置信息在压缩过程中被大幅抹平。

这意味着CLIP 擅长回答“这是什么”,却不擅长回答“它在哪里”“有几个”“谁在谁右边”。官方评估大多用线性探针:把全局向量喂给线性分类器测准确率。这只能证明“分类器可以从向量里读出类别”,完全测不出空间关系。分类成绩再漂亮,也证明不了视觉推理。

一个直观的检验:拿一张“左猫右狗”的图,问 CLIP“猫在左边吗”。它可以从语义上匹配“猫”和“狗”,但“左边”这个位置概念在全局向量里没有明确出口。更别提“红色方块右侧有几个球”这种需要枚举和定位的组合推理。

为什么 GPT-4V 数图里的小球,总是数错?

计数要求先把每个同类物体精确分隔开,再逐一枚举。视觉 token 化擅长捕捉“这里有球”这种语义,却不擅长把相近物体一个个分开,注意力还可能重复扫到同一个物体。OpenAI 在 GPT-4V 系统卡里就列出过模型在计数、空间推理上的失败案例。

CLEVR 上模型已经 98.9% 了,视觉推理算解决了吗?

远远没有。CLEVR 是无菌实验室:几何物体、固定光照、程序化问题,每个变量都被控制住。真实世界是露天菜市场:遮挡、阴影、纹理、语言歧义,一步一坑。GQA 上 54% 对 89% 的差距,才是现实视觉推理的真实水位。

让 LLM 写程序来做视觉推理,可行吗?

确实有人这么干过。Visual Programming 让 LLM 把问题翻译成代码,再调用现成的检测器、分割模型执行。好处是推理结构清晰,坏处是上限被底层视觉 API 卡住——工具找不到“左边”,程序再完美也白搭。

我的判断

视觉推理的瓶颈,从来不是“看得够不够清楚”,而是“会不会把看到的东西组织成结论”。

CLEVR 告诉我们,在人工约束的世界里,组合式推理可以训练出来;GQA 告诉我们,把任务放到真实照片里,模型立刻露馅;CLIP 告诉我们,全局表征能做好识别,却天然缺失空间细节。当前最强的视觉-语言模型,本质上依然是“识别增强”,而不是“推理突破”。

下次看到某个模型号称“能看图写文章”,先别急着惊叹它“懂”了图片。问它一句:“图里的猫在左边还是右边?”答案通常会让你冷静下来。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/768.html

(0)
上一篇 4小时前
下一篇 4小时前

相关推荐