简介
动机
VQA中的语言先验问题,也可以说是OOD问题(Out-Of-Distribution)。使用额外的单独分支减轻模型学得语言先验的一类方法试图消除所有的Q-A bias,作者认为这是适得其反的。而本文的出发点是让模型关注正向bias,消除负面bias。正向bias如:对于“what is the color of xxx”问题,模型应回答“颜色”类答案,负面bias如:“香蕉是黄色的”这种语言先验。
方法
在我个人看来,本文方法可视为一种数据增强。对于数据集中的一个样本 < Q , I , A > <Q, I, A> <Q,I,A>,作者通过两种方式进行数据增强,即: < Q , I , A > → < Q ^ , I , A ^ > <Q, I, A> \rightarrow <\hat{Q}, I, \hat{A}> <Q,I,A>→<Q^,I,A^>和 < Q , I , A > → < Q , I ^ , A ^ > <Q, I, A> \rightarrow <Q, \hat{I}, \hat{A}> <Q,I,A>→<Q,I^,A^>。前者代表在问题 Q Q Q上进行改变,构造新的样本对;后者代表在图片 I I I上进行改变,得到新的样本对。那么本文方法的核心,其实可以分为三点:① 改变 I I I、② 改变 Q Q Q、③ 根据改变,生成对应的答案。
-
改变 I I I
对于图片的处理,作者分为两种策略,一是抹除重要的object,二是改变重要object的颜色。首先定义,如何衡量object是否重要。作者使用的策略是——在 Q Q Q中提到的object视为重要。对于第一类,作者使用COCO数据集的mask标注随机抹除 I I I中的 m m m个object,然后使用基于GAN的inpainting方法对mask部分做一个平滑处理。对于第二类,将重要object做pixel level的换色即可。 -
改变 Q Q Q
对于问题的处理,作者分为三种策略,一是对“yes/no”问题的语义取反,这通过添加“no/not”即可实现。二是使用对抗单词代替问题中的重要单词,如将“Is the lady holding the baby?”改为“Is the cat holding the baby?”,这部分作者构造了一个word list,并使用BERT计算word之间的相似度。替换时,使用 I I I中没出现的、相似度最高的word进行替换。三是对word进行mask,使问题具有歧义性,如“Is the [MASK] holding the baby?”。 -
生成答案
抹除 I I I中的object:对于计数问题,将答案减去抹去的重要object个数;对于“yes/no”问题,当所有重要object全部抹除时,答案会flip。
更改 I I I中重要object的颜色:对于颜色问题,更改答案。
对于改变 Q Q Q的前两种策略:直接对答案取反。
对于改变 Q Q Q的第三种策略:作者使用k-means对数据集中的所有answer做了聚类,手动调节至50个簇,将这50个簇进行标注,作为“广义类”。如“红色、黄色、绿色”等统称为“颜色”类。
下面看一下模型的整体架构。作者将
A
A
A和对应的
<
Q
,
I
>
<Q, I>
<Q,I>多模态特征
M
M
M投影到一个流形上,投影后的特征称为
A
p
A_p
Ap和
M
p
M_p
Mp。对于本文生成的样本
<
Q
^
,
I
,
A
^
>
<\hat{Q}, I, \hat{A}>
<Q^,I,A^>(或
<
Q
,
I
^
,
A
^
>
<Q, \hat{I}, \hat{A}>
<Q,I^,A^>)通过一样的操作得到
A
^
p
\hat{A}_p
A^p和
M
^
p
\hat{M}_p
M^p。通过最小化
∣
∣
d
i
s
(
A
p
,
M
p
)
−
d
i
s
(
A
^
p
−
M
^
p
)
∣
∣
||dis(A_p, M_p)-dis(\hat{A}_p-\hat{M}_p)||
∣∣dis(Ap,Mp)−dis(A^p−M^p)∣∣对模型进行优化。
实验
主要看下在VQA-CP v2上的实验,结果可以说是非常好了。