文章题目:《Visual Question Answering as a Meta Learning Task》
ECCV2018的一篇文章。元学习和VQA的结合,非常值得关注。
文章下载地址:http://openaccess.thecvf.com/content_ECCV_2018/papers/Damien_Teney_Visual_Question_Answering_ECCV_2018_paper.pdf
文章引用格式:Damien Teney and Anton van den Hengel. "Visual Question Answering as a Meta Learning Task." European Conference on Computer Vision (ECCV), 2018.
项目地址:暂无
先看文章摘要吧
The predominant approach to Visual Question Answering (VQA) demands that the model represents within its weights all of the information required to answer any question about any image. Learning this information from any real training set seems unlikely, and representing it in a reasonable number of weights doubly so. We propose instead to approach VQA as a meta learning task, thus separating the question answering method from the information required. At test time, the method is provided with a support set of example questions/answers, over which it reasons to resolve the given question. The support set is not fixed and can be extended without retraining, thereby expanding the capabilities of the model. To exploit this dynamically provided information, we adapt a state-of-the-art VQA model with two techniques from the recent meta learning literature, namely prototypical networks and meta networks. Experiments demonstrate the capability of the system to learn to produce completely novel answers (i.e. never seen during training) from examples provided at test time. In comparison to the existing state of the art, the proposed method produces qualitatively distinct results with higher recall of rare answers, and a better sample efficiency that allows training with little initial data. More importantly, it represents an important step towards vision-and-language methods that can learn and reason on-the-fly.
视觉问答是要求模型能够利用其参数表示出,回答视觉问题所需的所有信息。从任何真实数据集中学习这些信息似乎不太可能。因此本文提出将VQA替换为元学习,从所需的信息中分离出问答的方法。测试时,会给模型提供一个support set以对给定的问题进行推理。该support set不需要修正,不需要重新训练来扩展,因此它能够增强模型的能力。为动态的使用这种信息,我们使用VQA模型并结合两种最新的元学习,即原型网络(prototypical networks)和元网络(meta networks),实验表明这种模型能够完全生成新的答案(即训练集中从未出现过的)。
VQA是一个典型的纯监督学习(purely supervised learning setting)。所以最大的问题就在于VQA能够回答的问题只能是训练集中所出现过的。为了解决这类问题,本研究提出了一个元学习的方法,使得模型能够学会学习(learns to learn),例如下图所示,在测试的时候,他会从support set学习一些样本来回答给定的问题:
这些样本就是一些VQA的样本。这个support set是不确定的,它可能很大,也可能样本与待预测问题无关,它只是在测试的时候提供给模型,以增加模型的能力。“学会学习”则是指在测试中能够动态地识别和利用support set中的相关样本,以提供给模型更多信息,且不需要重新训练。
所以本研究的最重要的贡献就是将元学习引入到VQA中,所构建的深度学习网络中使用了动态参数,这些参数取决于support set。整篇文章的贡献可以总结如下:
1. We re-frame VQA as a meta learning task, in which the model is provided a test time with a support set of supervised examples (questions and images with their correct answers). 将VQA重构为一个元学习,即在模型测试时会提供一个support set。
2. We describe a neural network architecture and training procedure able to leverage the meta learning scenario. The model is based on a state-of-the-art VQA system and takes inspiration in techniques from the recent meta learning literature, namely prototypical networks [33] and meta networks [24]. 阐述了神经网络结构和训练过程中能够使用元学习的场景。模型基于VQA,引入元学习的两个最好模型,即原型网络和元网络
3. We provide an experimental evaluation of the proposed model in different regimes of training and support set sizes and across variations in design choices. 对提出的模型进行了实验验证,包括训练策略。support set 的大小,交叉验证。
4. Our results demonstrate the unique capability of the model to produce novel answers, i.e. answers never seen during training, by learning from support instances, an improved recall of rare answers, and a better sample efficiency than existing models. 结果表明该模型能够产生新的答案。
相关工作部分的VQA和引入外部知识的VQA(VQA with additional data)之前已经介绍很多了,这里不再多说。
元学习和few-shot学习(Meta learning and few shot learning):术语“元学习”泛指让模型学会学习,大部分的元学习都是来自于one-shot或者few-shot。作者用于VQA的元学习也与这些相似,即将VQA视作分类问题,测试的时候额外提供一些参考样本。而大部分的few-shot学习并不适合VQA,因为类别数量多,且类别样本不平衡,因此必须要将其改进整合到VQA中。为了处理这个support set,作者在神经网络中引入了多个记忆单元;同时网络层使用动态权重来参数化;其中的一个记忆单元来存储梯度和loss,这与Meta Network的思路类似;输出阶段,通过答案类别的相似性来计算评分,这与Prototypical Networks的思路相似。
连续性学习(Continuum learning):在元学习环境中对VQA进行框架化的一个重要成果是开发能够随着更多数据可用而改进的模型。这就涉及到了连续性学习(continuum learning),这类工作注重于使用新的训练数据,精校正网络。相比之下,我们的模型不会随着时间的流逝而进行自我修改,也不会经历负面的域偏移或灾难性的遗忘,这是连续学习的核心问题。作者提出该框架的一个重要动机是它有潜力应用于支持与问答示例不同性质的数据。这也是未来工作的一个重要方向。
作者所提出的模型结构如下图所示:
首先,根据文献[34],作者获得问题的嵌入和图像的嵌入,然后将嵌入映射到候选答案的分数上,这部分也是作者的创新之处。该映射的做法如下:首先,用静态和动态权值来参数化一个非线性层(non-linear transformation),这里作者用的是双曲正切(gated hyperbolic tangent layer)。静态权值学习就是传统的权值学习过程,用梯度下降就可以;动态权值学习取决于实际输入和support set中候选动态取值的记忆。之后,对特征向量结果和原型的集合进行相似性度量(similarity measure),每一个原型都表示一个候选答案。静态原型类似传统的权值学习,动态原型则取决于support set的处理。图中的虚线是处理support set的数据流。
文献[34]:Teney, D., Anderson, P., He, X., van den Hengel, A.: Tips and tricks for visual question answering: Learnings from the 2017 challenge. arXiv preprint arXiv:1708.02711 (2017) (之前读过这篇文章,可参考:【文献阅读】视觉问答VQA中的一些技巧(D. Teney等人,CVPR,2018))
基于文献[34],作者将VQA分为两部分,即嵌入部分(对问题和图像进行编码)和分类部分(预测答案)。这篇文章主要解决的是第二部分。具体的,词嵌入使用的是GloVe和Recurrent Gated Unit (GRU)。图像嵌入使用的是CNN,并结合了bottom-up attention和question-guided attention两个注意力。两个嵌入的融合使用的是对应元素的点积(Hadamard (element-wise) product),记做h。接下来就是将h输入到非线性层和答案映射层了,最终产生一个预测得分的向量。在传统模型中,非线性层往往会跟一个线性的softmax或者sigmoid层,但是作者在此进行了改进,引入了元学习。
非线性层的作用是将联合嵌入h映射到分类器可用的表示中。这里作者添加了一个使用门机制的双曲正切变换,即:
定义参数θ为权值和偏置连接的向量,即θ=[W;W';b;b'],传统模型来学习参数θ是通过在训练集上后向传播和梯度下降,在测试时这些参数都是静态的。作者对其进行了修改,在测试时引入动态参数θd,所有参数为两种参数的加权和。
动态参数全部被保存在一个联合记忆M中,这个记忆是非常大的key/value对的集合,测试的时候,就可以进行动态参数的关键值匹配检索:
g是将非线性层的输出映射到候选答案得分向量上。传统的处理方式就是仿射或者线性变换(比如矩阵相乘),作者定义了gΦ(h),即输入h和代表可能答案的原型Φ之间的相似性度量,在传统模型中,每一个原型都对应一行weight matrix,而这里作者允许每一个可能答案对应一个或多个原型。可能答案的得分就可以表示为,输入的h'和相应可能答案原型之间的相似度。如果有多个原型可用,那得分就是取平均值:
其中,a表示可能的答案,d(·, ·)表示相似性度量,σ是sigmoid函数用于将相似性度量映射到[0 1]之间,b′′是学习到的偏置。传统模型的相似性函数都是采用的点积(dot product)。作为比较,本研究采用了点积,和l-p范数分别作为相似性度量的函数:
作者提出的模型使用了两种原型,一种是静态的Φs,一种是动态的Φd。静态的是在训练过程中用梯度下降和后向传播得到,并在测试的过程中进行修正。动态的取决于测试时的support set。最后,网络的输出使用的是交叉熵损失。
前面提到的两个层,即非线性层f和映射答案候选层g都使用了support set。support set在网络的前向和后向传播中的处理如下图所描述。
support set的处理会在测试过程中,先于预测答案发生。而在训练过程中,它会在每个epoch之前重复进行,随着训练的进行而不断改变的网络静态参数。我们将support set记为S,它的每一个元素,它的特征向量h还有loss的梯度,都与静态权值θ有关,然后将h和梯度∇θ添加在记忆M中,记忆M就会保留最后处理的那个元素。
为了确定动态原型φd,作者收集了support set所有样本的特征向量h′,然后,我们计算它们在具有相同正确答案的实例上的平均值。即答案a的动态原型计算:
最后就是实验了,实验要验证3个问题:
(1) how effectively the proposed model and its different components can use the support set. 提出模型的效果以及它的不同成分使用support set
(2) how useful novel support instances are for VQA. support set里面样本是否对VQA有用
(3) whether the model learns different aspects of a dataset from classical VQA methods trained in the classical setting. 是否能够从数据集中学习到不同的方面
数据集:VQA 2.0
评价方法:精度和召回度
运行:代码基于文献[34],embedding dimension D=128,mini-batches = 256。
消融实验:文献[34]的记做baseline,相当于作者提出的模型中,每个答案只有一个静态原型,且没有动态参数。support set 都是从训练集中用supersampling方法采样得到的。结果如下表所示,当使用静态原型时,L2范要比L1范或者点积的表现要好,这与别的文献中所说“原型网络最好使用L2范”的结论一致。
另外的数据集和新答案:对support set进行测试过程的评估,训练模型包含7个候选答案的情况,但是训练集只提供其中的部分答案,而support set中则包含所有7个候选答案。从图3就可以看出,提出的模型明显比原模型要好很多,且动态原型是由帮助的。但是仅有动态权值的情况下,效果提升微小,甚至有负面效果。
后面是作者的一点展望,找出一些关键的话:
尽管提出的模型使用了support data,但是实验结果明显还有可提升的空间。另外将模型进行大规模实际应用时,应特别注意处理当前随支持集线性增长的动态权重的记忆。聚类也许能够减少它的大小,哈希方法也许能够改善检索的效率。