这篇博客会大概讲解一下论文的工作,以及一些VQA 领域的近况,也会涉及到一些自己的见解。一些容易误解的地方,我会尽量的表达细致,方便读者理解。如果需要深入研究,推荐自行再品读该论文:https://jingchenchen.github.io/files/papers/2020/AAAI_Decom_VQA.pdf
衷心希望这篇博客能有助于大家的科研工作
文章目录
前言
-
这里我首先介绍一下Visual Question Answering(以下简称VQA)领域的language prior problem:
Most existing Visual Question Answering (VQA) models overly rely on superficial correlations between questions and answers.
For example, they may frequently answer “white” for questions about
color, “tennis” for questions about sports, no matter what images are given with the questions.、简而言之,就是对于训练的Question与Image数据,模型并没有学会依照Image来回答问题,而只是简单的依赖answer的比例。比如对于what color这类question,答案为white占比为80%,那么当输入这类问题,模型就直接回答为white,而完全不需要依照Image,且这样的正确率很高。
-
相关工作:其实针对language prior的工作已经有不少了,比如18年nips的Overcoming Language Priors in VQA with Adversarial Regularization,以及CVPR的 Don’t Just Assume; Look and Answer: Overcoming Priors for VQA,等等。另外,还有我们团队的19年sigir的工作:Quantifying and Alleviating the Language Prior Problem in VQA。感兴趣的可以去看看论文。
文章概述
如何解决language prior problem一直是VQA任务的一大难点,这篇文章从question的角度出发,基于 Don’t Just Assumee; Look and Answer: Overcoming Priors for VQA那篇工作进一步延伸,对question进行了分解表示,消除了疑问词所带来的language prior,再依据Image信息进行预测answer。值得一提的是,它并不同于以前的 Neural Module Networks。且可以清晰的呈现model预测answer的过程。下面我拆分成Question decomposition和Answer prediction两部分介绍一下整个模型运行的过程。
Question decomposition:
- 因为question-answer pair常常包含三部分信息:question type, referring object, and expected concept. 所以作者将question分为了以上三部分。
- 因为存在question是否包含expected concept的问题,作者将question分为两种情况进行处理:yes/no和not yes/no。
- 具体的question representation如下面的示例图所示。
Answer prediction:
注意这里的question type只用来确定answer set,也就是这类question下的所以answer集合。它并没有直接参与到最终的answer预测,所以才会有language prior的减轻
-
如果question属于yes/no这类,那么它的anwer集为{yes, no},其它的一律去掉。然后通过qobj和Image信息采用up-down attention定位region,最后再和qcon混合,进行二分类
-
如果question不属于yes/no这类,那么首先需要用qtype来预测answer set,然后用qobj与Image进行soft attention得到最终的image represention(与上面相同,)。最后,计算answer set中每个answer的得分即可。
方法介绍
概述上对整个模型讲的较为笼统,这里我尽量细致的讲解一下作者设计的各个模块,以及如何train各个模块。不太清楚的可以仔细看下上面的图。
这里首先看一下作者原文:
The proposed method includes four modules:
(a) a language attention module parses a ques-tion into the type representation, the object representation, and the concept representation;
(b) a question identification module uses the type representation to identify the question type and possible answers;
(c) an object referring module uses the object representation to attend to the relevant re-gion of an image;
(d) a visual verification module measures the relevance between the attended region and the concept representation to infer the answer.
language attention module
整体如上图所示,分为三个部分:Type attention,Object attention, Concept attention。
-
Type att: w a , t w_a,t wa,t可以理解我question type的vector表示,e为question中的word embedding,共T个words。下图的公式是用soft attention计算question-type的向量表示。注:为了能够准确定位到question type包含哪些词(如下 α i t y p e \alpha_i^{type} αitype越大,说明这个词是疑问词的概率越大),作者采用VQA dataset数据中已有的question type label对模型进行训练
-
**Object att & Concept att:**这两部分几乎一致,与上面类似,就不多做介绍了:
Question Identification module
-
首先对qtype计算cross-entropy判断question是否为yes/no类型:
-
若非yes/no类型,计算Q&A masks,也就是answer set的masks(mq表示),用来遮住不需要的answers。计算公式如下:KL散度计算maks与真实answer set的距离,并优化
s q = q t y p e ⋅ a j , m q = s i g m o i d ( s q ) s_q = q_{type} ·a_j, m_q=sigmoid(s_q) sq=qtype⋅aj,mq=sigmoid(sq)
a j a_j aj为anwer的embedding表示,qtype为前面计算出来的type representation。
-
若为yes/no类型:answer set={yes, no}
Object Referring Module
常用的up-down的soft attention模块,公式如下:
Visual Verification Module
-
对于question为yes/no类型,利用qcon与attention后的image表示来预测score:
s c o r e = s i g m o i d ( q c o n ⋅ v ) score = sigmoid(q_{con}·v) score=sigmoid(qcon⋅v)
-
对于question不为yes/no类型,计算answerj的概率:
s v = a j ⋅ v , s v q a = m q ∘ s v s_v = a_j·v, s_{vqa}=m_q\circ s_v sv=aj⋅v,svqa=mq∘sv
其中mq为前面计算的answer set的masks
总结与感悟
- 这篇文章抓住了VQA task目前的一个缺漏,也就是question representation。关于这个点,其实我之前也有类似的想法,不过并不是从language prior的角度出发,而是设计了一个mult-task learning的方案,让模型针对各类question type分别进行处理。但是我卡在了模型的复杂程度上。在这篇文章中,它其实仅将question分为yes/no和非yes/no两类来处理,简化了任务。而且它还巧妙的引入了alleviate language prior这个中心思想,确实算是一个不错的工作。
- 关于最后的实验结果,也是相当不错:
不过我有一点疑惑,在VQA-CP上的number类型的数据准确率依旧不高,相对其他两类有很大的缺漏。后续我也会做进一步的研究,希望能取得进展。