VQA 中的常识推理:「图中的人在做什么饭」——需要知道食材和菜品的关系

假如你正在刷菜谱,看到一张图:一个手拿锅铲的人在灶台前,旁边摆着切好的西红柿和打散的鸡蛋。你脱口而出:“在做西红柿炒蛋。”

AI technology illustration

这个回答看起来简单。但要问一个 AI 系统同样的问题,它会怎么答?它可能认出西红柿、鸡蛋、锅铲、灶台,甚至能描述出人的动作,但“这些食材合在一起是在做西红柿炒蛋”这个结论,它很有可能会答错。因为它需要的不只是看见,而是将看见的东西与一个看不见的菜名关联起来——这就是常识推理。

认出食材不等于知道在做菜

“图中的人在做什么饭”是视觉问答(Visual Question Answering,VQA)的经典难题。VQA 的任务是:给定一张图和一句用自然语言提出的问题,模型输出答案。乍一听,这像是把“看图说话”和“问答”拼在一起。但真正让研究者头疼的,不是让模型在图像里找到答案,而是让它在图像之外找到答案。

这类问题考验的是“食材和菜品的关系”这种世界知识。你没法直接从像素里读出来,得先知道西红柿是一种食材、鸡蛋是一种食材、两者在中式家常菜里搭配,然后结合动作和场景推断出正在做的菜名。这已经不是视觉问题了,更像是一个知识问题。为了看清差别,我们对比两类问题:

问题类型 例子 信息来源
纯视觉 那个人的帽子是什么颜色? 像素颜色
需要常识 这个人在做什么饭? 食材搭配、动作语义、场景知识

纯视觉问题可以直接从图像中取答案,但常识问题需要模型把像素翻译成语义,再把语义与外部知识进行连接。这一步目前还没有一个通用的方法。

模型最拿手的是偷懒

早期的 VQA 模型有个臭名昭著的毛病:它们压根不怎么看图。论文Don’t Just Assume; Look and Answer做过一个实验,把训练集中所有“是不是”问题的答案都改成“是”,模型再遇到这类问题时,准确率竟然没有明显下降。也就是说,模型根本不是在推理,它在背诵训练集里的统计规律:厨房场景配“做饭”答案,看电视场景配“看电视”答案。

这意味着什么?意味着如果你问它“这个人在做什么饭”,它可能只根据“厨房”这个场景就猜到“做饭”,完全不看锅里的东西。这就是为什么常识问题难:因为常识没有直接写在图片上,模型只能靠猜。而猜出来的答案,只是训练数据的影子,不是真正的理解。

把常识装进模型:外部知识库的路

为了逼模型“用脑”,研究者设计了专门需要外部知识的 VQA 数据集和模型。一个代表是 OK-VQA,它的问题和答案对在图中找不到,必须借助额外知识。另一类方案是把知识图谱直接接进模型,比如用 ConceptNet。具体做法大致是这样:

  1. 先用目标检测模型提取图里的物体,比如“西红柿”“鸡蛋”“锅铲”;
  2. 再拿着这些物体去知识图谱里找它们的邻居节点和关系边,比如“西红柿 – 搭配 – 鸡蛋”;
  3. 把图里的视觉特征和知识图谱子图的特征拼在一起,喂给分类器或 Transformer,输出答案。

这套流程看起来合理,但它有个根本问题:知识图谱是残缺的。“西红柿炒蛋”这种常识可能在里面,但换成“梅干菜扣肉”就不一定了,更别说那些各地小馆子才有的搭配。知识图谱里的关系往往是人工整理的,覆盖面永远追不上现实世界的多样性。

预训练模型真的在推理吗?

现在更流行的做法是让模型自己在海量图文对里“悟”。像 CLIP、ALIGN,以及它们的交互版 LLaVA,会在几亿张图片和标题文字里学习“西红柿炒蛋”这种组合出现的频率。你问它“这个人在做什么饭”,它可能因为见过太多类似图而回答出正确答案。但要注意,它不是靠推理,而是靠记忆。把图片中的西红柿换成苦瓜,模型可能还是会回答“西红柿炒蛋”,因为它没有真正理解“在做”这个动态过程,它只是在做模式的近邻匹配。

我最早对 VQA 的理解很天真:觉得把目标检测做得够好,把语言模型调得够强,问题就能迎刃而解。后来做实验时发现,一个模型能准确回答“在做什么”的图片里,如果单独盖掉锅铲或灶台,答案就被带偏了。它并不是在“推理”做饭这个动作,而是在找“厨房”这个上下文然后选一个最常出现的答案。那一刻我才意识到,视觉识别和常识推理是两件完全不同的事。

几个常见困惑

为什么模型能认出食材却做不对题?

因为识别和推理是不同的认知层。识别是感知,目标是回答“这里有什么”;推理是结合知识得出“这意味着什么”。目前的模型在感知层很强,但在推理层很弱。

给模型一本菜谱能解决吗?

不能。菜谱是静态的,而图片是动态的、充满歧义的。模型需要学会把菜谱里的步骤和图像里的动作对齐,这本身就比检索复杂得多。

常识推理和语言模型里的世界知识有什么不同?

语言模型学到的世界知识是分散在参数里的统计共现,常识推理要求的是在具体场景里选择并组合这些知识。一个能背出所有菜谱的模型,不一定会做菜。

常识推理的边界在哪里

目前,即使是最先进的视觉语言模型,在处理“新组合”时也会翻车。比如你给它一张图,内容是西红柿和苦瓜放在一起,旁边有锅铲,问“在做什么菜”,它大概率会回答一个最接近的已知组合,而不是说“没见过”。VQA 中的常识推理,真正缺的不是“知识量”,而是“在当下情境中调用哪一条知识”的决策能力。

所以,“图中的人在做什么饭”这道题,本质上是在问 AI:你能不能把零散的视觉信号和零散的世界知识组织成一个连贯的结论。目前的大模型能勉强答对,但靠的是训练数据里的统计惯性。真正的常识推理,需要模型学会区分“常见搭配”和“当前事实”之间的区别,这不再是一个视觉问题,而是一个认知问题。这也是我认为 VQA 领域未来最值得投入的方向:不是喂更多数据,而是教模型进行有约束的、可验证的推理。

进阶阅读

如果你想深入,建议读几篇原始材料:OK-VQA 论文定义了需要外部常识的问答评估;Don’t Just Assume揭示了语言先验的影响;Visual Commonsense R-CNN从视觉特征中提取可解释的常识概念。它们分别从数据、缺陷和方法三个角度呈现了 VQA 的常识推理困境。

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

(0)
上一篇 4天前
下一篇 4天前

相关推荐