近日研读了一篇文章,题目:《Dynamic Fusion with Intra- and Inter-modality Attention Flow for Visual Question Answering》这篇文章是CVPR2019的文章,作者主要来自港中文。文章链接如下:Dynamic Fusion with Intra- and Inter-modality Attention Flow for Visual Question Answering
VQA旨在自动回答与给定图像内容相关的自然语言问题。它在实践中有着广泛的应用,如辅助盲人 以及幼儿教育,因此近年来成为一个热门的研究课题。而学习多模态特征的有效融合是视觉问答的核心。
近年来,VQA的性能有了很大的提高,有三点原因:一,有了更好的语言特征表示和视觉特征表示,视觉特征比如从VGG到ResNet再到bottom-up & top-down;二、不同类型的attention机制能够自适应地选择特征;三、更好的多模态融合方法被提出,比如双线性融合Bilinear Fusion,MCB和MUTAN。
近年来VQA的研究重点在两个方面:一是关注模态之间的关系,比如双线性特征融合(Bilinear feature fusion),协同注意力(co-attention);二是关注模态内部的关系,比如BERT算法。然而却从没有在一个统一的框架内共同研究模态内和模态间的情态关系,而这些关系大多被忽略了。如对于图像模态,每个图像区域不仅应该从问题的关联词/短语中获取信息,还应该从相关的图像区域获得信息判断问题的答案;对于问题模态,可以通过推断其他词语来对句子有更好的理解。这种情况就促使作者提出一种新的框架来模拟这两种情况——模态内与模态间的信息交流。
作者提出了一种利用外部和内部模态信息流(在视觉和语言模态中动态传递信息)的多模态特征融合方法。它能够捕捉视觉模态和语言模态之间的高层次信息,因此能够有效提高VQA的性能,另外该模型也包含有一定条件约束的其他模态融合,实验是基于VQA2.0数据集,结果表明该模型达到了state-of-the-art艺术级的效果。
文章中,模态间的注意流基于co-attention(协同关注)来进行交互建模,而模态内部的注意流通过self-attention(自我关注)来进行交互建模,这里稍作提点:
协同注意力方法(Co-attention-based methods):协同注意力能够在两个模态交互建模,对于每一个单词,图像区域特征都会根据协同注意力与其对应。常见的模型包括Dense Symmetric Co-attention(DCN)。
自注意力方法(Self-attention-based methods):self-attention则是求自己对自己的权重,其特征转换为三种:查询特征(query),关键特征(key),值特征(value):
(不同特征之间的注意力矩阵可以通过query and key features的内积计算。获得注意力矩阵之后,特征可以被聚合为原始特征的注意力加权之和。基于自注意力机制提出的模型比如Non-local neural network,Relation Network。这里稍作展示一下self-attention的具体过程以便更加理解论文中的模型:
图一:self-attention图解
self-attention分为三个阶段,其中阶段1中的F是计算Q与每一个K的相似度得分的函数,阶段2中的SoftMax()归一化将阶段1中求得的得分处理成一个0~1之间的概率,而阶段3即是将相应的得分与相应的权重相乘再相加,即加权求和得到原Q增加了注意力机制的特征向量。其中SoftMax()值与V相乘的图示公式如下:
相信有了这两张图,大家应该很能理解self-attention的过程了!
作者提出了一个流程DFAF(Dynamic Fusion with Intra- and Inter-modality Attention Flow)来充分利用模态特征融合以提高VQA精度。模型结构如下图所示:
DFAF整合了交叉模态自注意力(cross-modal self-attention)和交叉模态协同注意力(cross-modal co-attention),其流程主要由InterMAF(模态间注意流)和DyIntraMAF(动态模态内注意流)两个模块组成,多个这种DFAF块的堆叠可以帮助网络逐渐关注重要的图像区域、潜在的语义,获得更好的性能。
对于所给图片I,作者提取提取图像特征使用的是bottom-up & top-down attention mode,提取视觉区域特征用的Faster RCNN(在Visual Genome数据集上训练的)。每张图片提取100个区域候选框,与区域特征相连,将得到的区域视觉特征表示为R,共有μ个区域,第i个区域的特征为r-i,每个区域的长度为2048维,故R的维度为μ x 2048维;
对于所给问题Q,问题特征编码则采用GRU(输入为GLoVe词嵌入),每个问题Q都被截断或填充为14个单词,第j个词的特征表示为e-j,每个单词特征为1280维,将得到的问题特征表示为E,则E的长度为14 x 1280维。
R和E表示分别如下:
其中的和是学习参数向量。
InterMAF模块首先捕捉视觉特征和单词特征的对彼此的重要性,然后根据学习到的重要权重,在两个模态之间传递信息流和合并特征。给定一个视觉区域特征和单词特征,首先计算他们之间的联合权重,每个视觉区域特征和单词特征都可以转换成query, key和value features,用R表示视觉区域(region)特征,用E表示单词特征(embedding),则视觉区域特征与单词特征的各自的Q、K、V可分别被表示为:
(!!!注意EK中的R这里应该是作者笔误,应为E)
其中, RQ,RK, RV分别是图片的query、key、value,它们的维度为μ x dim; EQ,EK, 和 EV分别是问题的query、key、value,它们的维度为14 x dim。dim表示两种模态的变换特征的共同尺度。Linear是一个全连接层,是学习参数向量。
首先,图片的图片区域特征作为deconder中的Q,问题特征的每一个单词特征作为K,通过计算每一对图片区域特征RQ和单词特征EK的内积,去计算来自每个单词特征与图片区域特征的注意力(相似度)权重,我们将该内积结果进行降维操作后使用SoftMax()进行归一化处理,这个相似度概率我们用InterMAF(R←E)(矩阵维度为μ x 14)表示:
反之亦然,再将问题中的单词特征作为deconder中的Q,图片区域特征中的每一个区域特征作为K,通过计算每一对问题特征EQ和视觉区域特征RK的内积,来计算每个图片区域特征与单词特征的注意力(相似度)权重,我们将该内积结果进行降维操作后使用SoftMax()进行归一化处理,这个相似度概率我们用InterMAFR→E(矩阵维度为14 x μ)表示:
上述两个双向的InterMAF矩阵捕捉了每个图像区域特征与单词特征对的相关性。
对于(6),矩阵中的每一行代表每一个图像区域与所有单词之间的注意力权重。从所有单词到这一图像区域特征的注意力可以被聚合为单词特征向量EV的加权求和,得到更新后的图像区域的特征向量Rupdate:
对于(7),矩阵中的每一行代表每一个单词与所有图像区域之间的注意力权重。从所有区域到这一单词的注意力可以被聚合为图像区域特征向量RV的加权求和,得到更新后的单词的特征向量Eupdate:
其中EV和RV为未加权的信息流(值特征向量)。Rupdate和Eupdate分别是经过两轮双向的InterMAF更新后的图片和问题的特征向量。
在得到更新后的特征向量后,我们分别将它们与原始的图片区域和问题的特征向量连接起来,这里使用一个全连接层将连接起来的特征向量转换为输出特征向量:
上述得到的R和E将被喂入下面的Dynamic Intra-modality Attention Flow(动态模态内注意流)模块中去捕获region-to-region和word-to-word的关系,进一步更新视觉特征与问题特征。
从3.2中得来的R和E分别掺杂了图像与问题之间的跨模态关系,然而这并不够,我们认为,每个模态内的关系与跨模态关系是互补的,应被考虑到以提高VQA精度。例如对于“谁在滑板之上?”的问题,模态内模块应该将滑板上方的区域和滑板区域联系起来,从而推断出最终答案。因此我们在模态间注意流之后又增加了一个模态内注意流。
参考3.2中的图像与问题之间的协同注意求彼此相似度,这里模态内的注意流采用的是self-attention。对于图像中区域到区域之间的相似度,某一个区域为Q,所有区域分别为K,求所有区域与该区域的相似度;对于问题中词与词之间的相似度,某一个词为Q,所有词分别为K,求所有词与该词的相似度。具体公式如下:
若是上述这种朴素的模态内信息流,只是单纯利用模态内的信息来估计region-to-region和word-to-word和相似度,它所确定的区域与区域之间的关系永远都是一样的,词与词之间的关系也是永远一样的,所以有些很重要的关系只能通过来自另一模态中的信息来确定,例如,即使对于相同的输入图像,不同的视觉区域对之间的关系应该通过不同的问题来进行不同地加权。因此作者提出来一种动态的模态内注意流,用于基于另一模态的信息来计算模态关系的重要性。
上图只给出了其中一种情况,视觉模态以文本模态的约束为条件,在此基础上进行自我关注。
为了总结来自另一个模态的信息,我们将图像区域特征沿着对象索引维度和单词特征沿着单词索引维度进行平均池化,该平均池化特征被转化为二维特征向量以匹配query和key的维度RQ、RK、EQ、EK。每种模态的二维特征向量由sigmoid函数处理,以产生用于其他模态的通道式调节门。公式如下:
其中GR→E是以图像模态为基础,门机制控制图像模态中有多少区域与问题模态有联系,这个“多少”是用概率来量化的,是一个0~1里面的数。再使问题模态进行自我关注。
GR←E是以问题模态为基础,门机制控制问题模态中有多少区域与图像模态有联系。再使图像模态进行自我关注。
算出这个概率后,将其与原模态中的Q和K进行点积,得到的就是增加了另一模态约束之后的Q和V:
(!!!注意这里的第二行的EˆQ中,与RQ的点乘可能是作者笔误,应为EQ)
第一行的RˆQ和RˆK是以问题为基础所更新的图像的R与Q,第二行的EˆQ和EˆK是以图像为基础所更新的问题的R与Q。得到了新的R跟Q。我们就可以进行自我关注了!其中这里的加1个人见解可能是因为怕有些区域门机制控制后所得的概率过小,影响最终的理论性能,所以统一加上1。
图像模态进行自我关注时,某一区域与全部各个区域(region-to-region)的相似度得分我们用DyIntraMAFR←R表示(其矩阵维度为μ x 1):
问题模态进行自我关注时,某一词与全部各个词(Word-to-Word)的相似度得分我们用DyIntraMAFE←E表示(其矩阵维度为 1 x 14):
从区域到区域的注意力可以被聚合为图像区域特征向量RV的加权求和,得到更新后的图像区域的特征向量Rupdate:
从词到词的注意力可以被聚合为词区域特征向量EV的加权求和,得到更新后的单词的特征向量Eupdate:
这里得到的Rupdate和Eupdate再次与这一模块最原始的R与E相联系使其更加细化:
这里主要是介绍如何将两个流模块结合起来。整个模型结构就是前面模型所展示的那样,首先用Faster RCNN提取视觉特征和用GRU提取单词特征,然后两组特征通过全连接层转换成相同长度的向量,InterMAF模块在每一组视觉特征和单词特征之间传递信息流并且在每一个区域或者单词之间进行更新,该模块的输出则是DyIntraMAF的输入,DyIntraMAF模块在每个模态内中动态的传递信息流,在同一个模态内会通过残差连接对视觉特征和单词特征进行再次更新。一个InterMAF模块后接一个DyIntraMAF模块构成了提出方法DFAF的一个基本块,在特征更新的过程中可以通过特征连接或者残差连接堆叠多个块。
深度模态内或模态间信息流的训练可以采用随机梯度下降,另外作者使用了multi-head注意力,原始特征则会沿着通道维度分为不同的组,不同的组生成平行注意力在每个组内独立的更新视觉特征和单词特征。
通过上述的InterMAF模块和DyIntraMAF模块对特征的更新,可以得到最终的图像区域特征和问题特征。随后需要对两个特征进行合并,作者实验中分别通过特征连接,特征点乘,特征相加获得融合特征,但是点乘的效果是最好的。与其他的VQA问题一样,作者同样将VQA看作是一个多分类问题,将数据集中出现5次以上的答案作为候选答案,ground-truth从其中选出,VQA中的问题也由答案的相同而被分为一类一类的。最后是采用了两层的MLP(multi-layer perceptron),之间有一层Relu激活函数,最后再连接一个softmax,损失函数选用的交叉熵损失函数。
(1)A novel Dynamic Fusion with Intra- and Inter-modality Attention Flow (DFAF) framework is proposed for multimodality fusion by interleaving intra- and inter-modality feature fusion(提出了DFAF框架用于多模态融合);
(2) Dynamic Intra-modality Attention Flow (DyIntraMAF) module is proposed for generating effective attention flows within each modality, which are dynamically conditioned on the information of the other modality(提出DyIntraMAF模块,在每一个模态内生成有效的注意力流);
(3)Extensive experiments and ablation studies are performed to examine the effectiveness of the proposed DFAF framework, in which state-of-the-art VQA performance is achieved by our proposed DFAF framework.(对比试验和简化实验验证DFAF的有效性)。
首先,视觉区域特征R和问题区域特征E在整个模型中是在不断被更新着的,每经过一个模块都会被更新,这是动态之一;其次,对于相同的图片,不同的问题,门控出的区域(或单词)的比例都不同,这是动态之二.
5.1数据集——VQA 2.0数据集
5.2DFAF的简化实验
这一部分中展示了一些DFAF的简化实验,更好地比较出不同模块对于准确度的影响:
5.3注意流权重的可视化
这一部分中,作者将朴素的模态内注意流与动态的模态内注意流以可视化的形式相比较,更加清晰地为我们展示了DyIntraMAF的性能:
从上图中可以看到,对于相同的图片,问题不同,经过IntraMAF模块的图片不同区域的权重都是完全相同的!而经过DyIntraMAF模块后图片不同区域的权重全都不相同,这对于提高我们模型的性能意义极大!
5.4模型比较
在这一部分中,作者将论文中的模型DFAF与一些经典的模型进行了一些比较,比较结果如下:
本文提出了一种新的基于模态内和模态间关注流(DFAF)的视觉问题应答框架动态融合方法。DFAF基于模式间和模式内的注意机制,在不同的模式内部和之间传递信息。对多个DFAF块进行叠加,提高了VQA的性能。