其实这篇 CLEVR 论文你只需要抓住一条主线:
作者的目标不是提出新模型,而是设计一个可控的数据集,用来判断模型到底会不会视觉推理。CLEVR_A_Diagnostic_CVPR_2017_paper.pdfPDF
1. Scene Graph:先把场景结构化
CLEVR 先随机生成场景,再用 Blender 渲染图像。每个物体都知道真实的:
物体之间还知道:
因此:Attributes=描述一个物体本身,Relations=描述物体之间的关系
这些信息共同构成 GT Scene Graph。
2. Functional Program:决定“这道题要怎么推理”
Scene Graph 只是告诉我们:场景里有什么
真正决定一道题测试什么能力的是Functional Program。
例如:
What color is the cube to the right of the yellow sphere?
可以表示成:
其中每一个 function 都可以近似看成一个:
推理步骤
复杂问题本质上就是把简单操作组合起来:
Compositional Question = 多个基础 reasoning operations 的组合
论文就是通过这些基本函数来构造复杂问题。
3. Question Family:控制生成哪种问题
作者先设计不同的Question Family,每个 family 包含:
Program Template 决定推理结构,例如:
Text Template 再把它变成自然语言。
所以可以简单记成:
Scene Graph 提供“问什么物体”
Functional Program 提供“怎么推理”
Text Template 提供“怎么说出来”
CLEVR 一共设计了 90 个 question families。
4. 生成问题时还要验证:真的需要这些推理吗?
作者会在 GT Scene Graph 上执行这个 program。
如果目标不唯一,例如:sphere 右边有三个 cube
那么问题属于:ill-posed question,直接丢弃。
如果整张图只有一个 cube,那么:
the cube to the right of the sphere
中的“right of the sphere”其实没必要,这就是:degenerate question,也丢弃。
因此 CLEVR 不只是生成“看起来很复杂”的问题,而是尽量保证:
问题声称需要某种推理 ⇒ 实际上也真的需要这种推理
5. 最后为什么它叫 Diagnostic Dataset?
因为每道题都有 Functional Program,所以作者知道:
用了什么 attribute、用了什么 relation、用了多少 reasoning steps、是 chain 还是 tree structure
这样模型答错以后,不只是知道accuracy 低,而是可以进一步判断它到底弱在attribute recognition还是 relation reasoning 还是 long reasoning chain、还是 compositional generalization
论文也发现,随着真正需要执行的 reasoning steps 增加,模型表现会下降
所以整篇论文可以最终压缩成一句:CLEVR 先控制 Attributes 和 Relations, → 再用 Functional Program 把它们组合成问题, → 从而精确控制并分析 Reasoning Steps。