本文提出了一种基于深度神经网络的VQA模型,并报告了一套广泛的实验来确定每个设计选择的贡献和替代设计的性能。它提供了关于VQA模型各个组件重要性的指示器, 一、Summary of findings 1.使用一个sigmoid输出,允许每个问题的多个正确答案,而不是一个常见的单标签softmax。 2.使用软分数作为ground truth目标,将任务作为候选答案分数的回归,而不是传统的分类问题。 3.在所有非线性层中使用门控tanh激活。 4.使用自下而上注意的图像特征来提供特定区域的特征,而不是使用CNN的传统网格状特征图。 5.使用预先训练好的候选答案表示来初始化输出层的权重。 6.随机梯度下降过程中训练数据的大规模小批量智能改组。 二、框架介绍 完整的模型如下图所示。它实现了对问题/图像的联合RNN/CNN嵌入,将问题引导注意力置于图像上,然后在一个固定的候选答案集上使用多标签分类器。灰度表示层之间的向量表示的维数。黄色元素使用学习过的参数。 2.1 Question embedding 每个实例的输入——无论是在训练时还是测试时——都是一个文本问题和一个图像。问题被标记,即首先用空格和标点符号分割成单词。任何数字或基于数字的单词(例如10,000或2:15pm)也被认为是一个单词。为了提高计算效率,问题被削减到最多14个单词,丢弃多余的单词。但是数据集中只有0.25%的问题超过14个单词。每个单词都被转换成带有一个查询表的向量表示,查询表的条目是在训练期间沿着其他参数学习的300维向量。然而,这些向量用预先训练好的GloVe单词嵌入(用于词表示的全局向量)来初始化。本文使用的是在Wikipedia/Gigaword语体上预先训练过的公开版本的GloVe。用零向量初始化训练后没有出现的词(训练时优化后的子序列)。小于14个单词的问题末尾填充0向量。得到的单词嵌入序列大小为14×300,通过循环门控单元(GRU)。循环单元的内部状态为512维,使用它的最终状态,即在处理了14个词的嵌入后,将其作为问题嵌入q。不使用开始或结束标记,也不修剪序列或处理给定句子中严格数量的标记(也被称为per-example动态展开或TrimZero )。相反,作者发现始终将循环单元运行相同的迭代次数(包括包含零填充的条目)会更有效。 2.2 Image features 将输入图像通过卷积神经网络(CNN)传递,得到大小为K×2048的向量表示,其中K为图像位置的个数。每个位置都由一个2048维向量表示,该向量对该区域中图像的外观进行编码。第4节中的评估比较了有不同权衡的两个主要选项:一个标准的预训练CNN,或者一个性能更好的选项。第一个性能较低的选项是在ImageNet上进行预培训并公开可用的200层ResNet。这提供了大小为14×14的特征图,通过平均池将其调整为7×7(即K = 49)。第二种更高性能的选择是使用自下而上的注意力提供图像特征。该方法是基于一个Faster R-CNN框架内的ResNet CNN。使用来自可视化基因组数据集的注释,它被训练成专注于给定图像中的特定元素。得到的特征可以解释为以图像中top-K对象为中心的ResNet特征。对固定K=36和自适应K进行评估,该自适应K对图像中检测到的元素使用可调节的阈值,允许区域K的数量随着每张图像的复杂性而变化,最大值为100。在这种情况下,VQA v2数据集使用的图像平均每张图像约K = 60。 在所有情况下,在VQA模型的训练过程中,CNN都是预先训练并保持固定的。因此,可以从输入图像中提取特征作为预处理步骤以提高效率。 2.3 Image attention 对于图像中i = 1 … K的每个位置,将特征向量vi与问题嵌入q连接起来。 它们都通过一个非线性层fa和一个线性层,以获得与该位置相关的标量注意权重αi,t。 其中wa是学习的参数向量。 注意权重使用softmax函数在所有位置进行归一化。 然后,通过归一化的值对来自所有位置的图像特征进行加权并求和,以获得代表注意图像的单个2048维的向量。 2.4 Multimodal fusion 问题表示(q)、和图像表示(ˆv)通过非线性层,然后进行element-wise相乘: 得到的向量h称为问题和图像的联合嵌入,然后送入输出分类器。 2.5 Output classifier 从训练集中出现8次以上的所有正确答案中预先确定一组候选答案,称之为输出词汇表。候选答案的个数为N=3129个。将VQA视为一个多标签分类任务。实际上,VQA v2数据集中的每一个训练问题都与一个或多个答案相关联,每个答案都以[0,1]的软精度进行标记。在本文的例子中,一些训练问题(约7%)在所选的输出词汇表中没有正确答案。然而,这些问题并没有被抛弃。作者将它们作为一个有用的训练信号,将这个问题输出词汇表中所有候选词汇的预测分数视为零。 多标签分类器将联合嵌入h通过非线性层fo,然后通过线性映射wo来预测N个候选者的得分ˆs: 其中σ是Sigmoid激活函数,而wo∈ RN×512是初始化学习权重矩阵。 虽然使用软目标分数,但sigmoid将最终分数归一化为(0,1),随后是类似于二元交叉熵的损失。这最后一个阶段可以被看作是一个逻辑回归,它可以预测每个候选人答案的正确性。目标函数是 其中索引i和j分别遍历M个训练问题和N个候选答案。ground-truth得分s是前面提到的ground-truth答案的软精度。上述公式被证明比其他VQA模型中常用的softmax分类器更有效。它的好处是双重的:首先,sigmoid输出允许优化每个问题的多个正确答案,就像VQA v2数据集中偶尔出现的情况一样。其次,使用软分数作为目标提供了比二进制目标稍微丰富的训练信号,因为它们捕获了ground-truth注释中偶尔出现的不确定性。 2.6. Pretraining the classifier 在上述的输出阶段中,候选答案j的分数有效地联合图像问题表示fo(h)与w的第j行之间的点积确定。 在训练过程中,每个候选答案表示作为wo的一行被学习。 作者建议使用来自两个来源的候选答案的先验信息来初始化wo的行。 一方面,以答案词的GloVe词嵌入形式使用语言信息。 当答案无法与预训练的嵌入完全匹配时,使用经过拼写检查、去掉连字符或从多词表达式中保留单个词后的最接近匹配。 相应的矢量放置在矩阵wotext中。 作者还利用从代表候选答案的图像中收集的视觉信息。 使用Google图片自动检索与每个候选答案相关的10张照片。 这些照片通过在ImageNet上预训练的ResNet-101 CNN传递。 最终的平均池特征被提取出来并在10张照片上求平均值。 每个候选答案的结果2048维的矢量放置在矩阵woimg的对应行中。 这些视觉表示是对通过词嵌入获得的语言表示的补充。 也可以针对任何候选答案获得它们,包括多词表达和没有词嵌入的稀有词。 不利的一面是,抽象的词和表达方式可能无法提供丰富的视觉表示。 将之前的表示wtexto和wimgo组合如下: 其中,非线性变换ftexto和fimgo将h带入适当的维度,即分别为300和2048。矩阵wtexto和wimgo与余下的网络使用较小的相对学习率(分别为0.5和0.01)进行微调(通过交叉验证确定)。 2.7. Non-linear layers 上面描述的网络使用了多个学习的非线性层。这种层的常见实现是一个仿射变换,然后是一个整流线性单元。在本文中,每个非线性层使用门控双曲正切激活。即每一层实现一个函数fa:x∈Rm→y∈Rn,其参数定义如下: