Paper name
Co-VQA : Answering by Interactive Sub Question Sequence
Paper Reading Note
URL: https://arxiv.org/pdf/2204.00879.pdf
TL;DR
- ACL 2022 文章,通过模拟人类拆解子问题的过程,本文提出了一个基于会话的 VQA(Co-VQA)框架,VQA-CP v2 上取得 SOTA 效果
Introduction
背景
- 大多数现有的视觉问答(VQA)方法直接回答问题,然而,人们通常将一个复杂的问题分解为一系列简单的子问题,并在回答子问题序列(SQS)后最终获得原始问题的答案
- 大多数现有的方法都是直接回答问题,但通常很难,尤其是回答复杂的问题
- 在一轮问答中实现全面的场景理解非常具有挑战性
- 在一轮中完成整个问答过程缺乏可解释性,当模型遇到错误答案时,很难找到错误
本文方案
-
通过模拟人类拆解子问题的过程,本文提出了一个基于会话的 VQA(Co-VQA)框架,该框架由三个组件组成:Questioner、Oracle 和 Answerer
- Questioner 使用扩展的 HRED 模型提出子问题,Oracle 逐一回答
- Answerer 使用本文提出的 Adaptive Chain Visual Reasoning Model (ACVRM) ,其中问答对用于顺序更新视觉表示
-
为了对每个模型执行监督学习,本文引入了一种设计良好的方法,在VQA2.0和VQA-CP v2数据集上为每个问题构建 SQS
-
VQA-CP v2 上取得 SOTA 效果
-
进一步的分析表明,SQS有助于建立问题和图像之间的直接语义连接,提供问题自适应可变长度推理链,并具有明确的可解释性和错误可追溯性
Dataset/Algorithm/Model/Experiment Detail
实现方式
整体框架
Questioner
- 基于扩展的 hierarchical recurrent encoder decoder (HRED) 构建
- Image Encoder:基于 Faster RCNN 提取区域特征,每个图片被编码为 M 个区域特征 $ R \in \mathbb{R}^{M \times 2048}$ 及对应的 bbox 坐标
- M 分布范围为 10 到 100
- Hierarchical Encoder:基于 Embedding matrix 将问题 Q 与历史子问题对编码,然后基于 GRU 提取问题特征
- Decoder:基于单层 GRU 解码为子问题
- 将问题引导的注意力部署到区域特征 R 以获得加权视觉特征
- 负对数似然损失用于训练,其中T是最大对话次数
Oracle
- Oracle 用来对上面提出的子问题进行回复,这个过程本文将其看成是一个传统 VQA 问题,这里使用 BUTD 来做
Answerer
- 给定问题 Q、输入图片 I 和完成的子问题对话历史 HT = {q1, a1, …, qT , aT },Answerer的任务是找出候选答案集a*中最准确的回答,可表示为:
其中 θ \theta θ 是 Answerer 的参数 - 本文提出的 Adaptive Chain Visual Reasoning Model (ACVRM) 包含四个模块
- Image Encoder: 基于 Faster RCNN 提取图片中的目标特征,与 Questioner. 中的一致,为了对齐与问题特征维度,降维到 768
- Question Encoder:基于 bidirectional Transformer 提取问题特征
- Sequential Progressive Reasoning:
- feature fusion:图像目标特征与问题特征 concat 后提取融合特征
- relation reasoning:以上融合特征作为图中节点的初始值,基于图形注意力网络提取特征
- Multimodal Fusion:基于 buttom-up 和 top-down attention 进行多模态融合,最后基于两层 mlp 的分类器生成预测答案
训练 loss
- 其中 LossBCE 是最终答案预测损失
实验结果
数据集
- VQA 2.0
- 由 MSCOCO 的真实图像组成,具有相同的训练/验证/测试分割
- 对于每个图像,平均生成3个问题
- 这些问题分为3类:是/否、数字和其他
- VQA-CP v2
- 是VQA 2.0的派生,与问题类型相关的答案分布设计为在训练和测试分割之间不同,旨在克服语言先验
Construction of SQS dataset.
- 基于 VQA 2.0 和 VQA-CP v2 生成 VQA-SQS、VQA-CP-SQS,为训练 Questioner、Oracle和Answerer提供相应的监督信号
- 具体构造方法是在附录中写的:
- 为了完成SQS构建过程,我们首先根据表中的模板确定问题的顺序
对于 order-0 和 order-1 是没有对应的子问题的。order-2 则是可以构造对应的 order-1 子问题。order-3 可以构造多个 order-1 子问题和 order-2 子问题
- 为了完成SQS构建过程,我们首先根据表中的模板确定问题的顺序
- 数据集构建的原则是:高阶问题可以采用相应的低阶问题作为其子问题,对于每个高阶问题,这些子问题按照从低到高的顺序排列,形成子问题序列
- 实验室的十名学生进一步手动重新校正一些样本(约5K个样本)
实施细节
- 训练:
- 三个模块是分开训练的,先训练 Questioner 和 Oracle 得到问答对,然后再基于这些问答对输入训练 Answerer
与 SOTA 方法对比
- VQA 2.0
- VQA-CP v2 数据集
消融实验
- 看起来涨点 0.7 左右
定性分析
- 可以看到 Co-VQA 的子问题能更好地关注到某些重要区域,尤其是需要关注的物体大于 2 个的时候
Thoughts
- 论文想实现的方案的思路是很合理的,和 See, Think, Confirm 思路有点像,即将 VQA 单次推理任务拆解为一些合理的子步骤,实现涨点目标的同时还能提升系统的可解释性
- 需要花较大精力构造包含子问题的数据集,并不是即插即用的模块设计