Advertisement

《Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challenge》论文解读

阅读量:

这篇论文讨论了视觉问答系统(Visual Question Answering, VQA)的挑战与改进方法。VQA结合了视觉和语言处理,用于理解图像并回答相关问题。作者提出了基于注意力机制的模型,将自上而下的注意力机制与自下而上的注意力机制相结合,用于问题对图片的注意力权重计算。模型结构包括问题嵌入、图像特征提取、注意力机制以及多标签分类器。作者还介绍了使用gated tanh激活函数和候选答案的预训练初始化方法,这些改进提升了模型性能。实验结果表明,这些改进措施显著提升了模型的准确率。论文为VQA系统提供了有效的改进方向。

近日,本人深入阅读并研读了一篇关于视觉问答(VQA)的综述文章,标题为《Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challenge》。作为视觉问答(VQA)领域系列文章的第十二篇,这篇论文具有重要的参考价值。作为本人首次涉及深度学习的入门文章,本文分享了一些个人学习心得。由于作者水平有限,对某些细节的理解可能不够深入,恳请大家批评指证。本文将重点介绍:主要思路;模型架构;。如需进一步了解,可参考原文:Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challenge

1.简述注意力机制

注意力机制(Attention Mechanism)起源于对人类视觉的研究。在认知科学中,由于信息处理的限制,人类有选择地聚焦于部分可见信息,而对其他信息予以抑制,这一机制通常被称为注意力机制。我们简单介绍一下人类的注意力机制。

在这里插入图片描述

图一:人类的注意力机制

2.Proposed model

VQA背景

VQA的全称名称是视觉问题问答(VQA)。其形式为,为一张图片配上一个问题,然后输出对应答案。

在这里插入图片描述

图2:例题及其标准答案来源于VQA v2数据集[14].

VQA V2数据集

该数据集源自于 Georgia Institute of Technology 和 Microsoft 研究院。由于其新鲜度,该数据集仍存在一些问题。对于一些问题,仅凭死记硬背的方式,你可能只能获得基本效果。例如,对于 yes/no 类型的问题,如果总是选择 yes,你可能在大部分情况下都能得到正确答案。因此,该数据集的答案分布存在一定偏向性,整体平衡性不足。随后,发布了 VQA-v2 修订版,其规模较前一版本增加了约一倍。该数据库总计包含 650,000 个问题与答案配对,覆盖了 120,000 张不同的图片。这一修订版的主要改进方向是解决答案分布不均衡的问题。对于同一个问题,数据库中确保有至少两张不同的图片,从而确保了答案的多样性。

在这里插入图片描述

图三展示了VQA V2数据集如何有效平衡了各类问题。在该论文中,VQA被建模为一个多标签分类问题,其中VQA数据集中的绝大多数问题都与图像内容相关。因此,真正具有代表性的正确答案数量可能在几百到几千之间。该论文中,候选答案集合是由训练集中出现频率至少8次的正确答案预先确定的,这些候选答案的总数为N=3129个,因此,数据集中的问题被划分为若干类别。

Visual Genome数据集

该数据集被用于训练Faster R-CNN模型,其中包含具有场景图形式的图像注释。我们不直接使用这些注释,它们在训练Faster R-CNN的过程中起到了辅助作用。这种结构细化了对图像内容的描述。它们提供了场景中出现的视觉元素物体及其属性,以及它们之间的相互关系。Visual Genome数据集中的问题/答案被视为额外的训练数据,我们仅使用与VQA V2数据集输出词汇重叠的问题,这些问题占Visual Genome数据集总量的30%,约485,000个问题。

简述回归与随机梯度下降
线性回归(Linear Regression)

从一般性的角度来看,线性回归模型输出一个标量形式,即Wx+b,其结果为连续的数值。这种回归方法常用于预测连续型目标变量,例如房价预测问题。线性回归模型的一般形式可以表示为:

线性回归模型的一般形式可以表示为:

在这里插入图片描述
逻辑回归(Logistic Regression)

逻辑回归也被称为对数几率回归,是通过压缩线性回归的输出值来实现的,通常采用sigmoid激活函数将输出压缩至(0,1)区间,其核心用于解决分类问题。拟合函数如下:

在这里插入图片描述

二者关联:线性回归模型与sigmoid函数的结合形成了逻辑回归模型。二者区别:线性回归模型用于回归分析,而逻辑回归模型则主要用于分类任务,其主要应用于解决分类问题。

随机梯度下降步骤

(1)通过随机数值初始化网络权重参数(W)和偏差项(b);
(2)将输入样本代入网络结构进行前向传播,获得预测输出;
(3)通过比较预测输出与真实标签之间的差异,计算损失函数值;
(4)对每一个在误差计算中表现出偏差的神经元节点,调整其连接权重参数,以期逐步降低整体损失;
(5)通过不断重复训练过程,逐步优化网络参数,最终收敛至使损失函数最小的权重配置。

在这里插入图片描述

该模型的原理是,通过联合嵌入方法,结合问题对图片的自上而下注意力权重,利用特征在候选答案上进行多标签分类预测。

2.1 Question embdding

在这里插入图片描述

图四:Question embedding
首先,输入的问题会被标记化:首先使用标点符号和空格将其分成单词,这里为了计算的效率,一个问题最多被修剪成14个单词,多余的单词会被丢弃(整个数据集中只有0.25%的问题超过了14个单词)。使用Wikipedia/Gigaword语料库上Glove公开版本来进行词特征向量化,对于少于14个词的,使用end-padded进行补零操作。每个单词都被转换为带有查找表的矢量表示,而其表项是在训练期间沿着其他参数学习的300维矢量表示,则一个问题可以被表述为14X300的矩阵。这个结果要经过GRU(Recurrent Gated Unit 循环门控单元),该循环门控单元有512维的内部状态,我们只用其最终状态,即在处理了14个字嵌入后,我们的结果问题嵌入为q,这个q是512维的。

2.2 Image features from bottom-up attention

在这里插入图片描述

图五:Image features
这篇论文中作者所使用的提取特征的方法是通过Faster R-CNN的检测区域提取不同类别物体的特征vi ,它不是对图片的每个区域都做attention,而是对于特定的object做attention ,而这种提取方式就是bottom-up attention,也可叫做基于显著性的attention。
为什么要使用Faster R-CNN而不是使用CNN?

在这里插入图片描述

如图六所示,常规CNN所需特征区域明显多于Faster R-CNN。其中许多特征并非必要,而Faster R-CNN采用两阶段机制:第一阶段是区域建议网络(RPN)生成候选区域,选择前topK框作为第二阶段输入;第二阶段是感兴趣区域(ROI)池,提取每个框特征图并批量输入至CNN最终层进行处理。该方法相较于前代R-CNN实现了单次输入即可识别所有物体,显著提升了处理效率,具体模型架构见下文。

在这里插入图片描述

图七:Faster R-CNN模型的具体实现如下:首先,采用Visual Genome数据集进行模型训练,该数据集为每张图片中的目标框提供了注释信息。特征提取方法基于自上而下注意力机制,每张图片的特征仅由其中前K个物体特征决定,其中K值根据图片复杂程度动态确定,最大不超过100个区域。

在这里插入图片描述

图8展示了Faster R-CNN bottom-up注意力模型的示例输出结果。图8中的图像展示了边界框标注属性类,随后标注了对象类。值得注意的是,在VQA任务中,我们不使用预测标签,而是直接采用特征向量进行处理。图像被划分为K个区域,对于每个选定的区域i,其对应的特征向量vi具有2048维的空间。因此,整张图像的特征向量存在于K×2048维的空间中。

2.3 top-down attention on image features

在这里插入图片描述

图九:Image attention。论文中的模型基于经典的question-guided注意力机制实现了大多数现代VQA模型中常见的top-down attention阶段(自上而下注意力机制)。在Faster R-CNN之后,图像被划分为K个区域,每个区域都具有一个对应的特征向量Vi(V1,V2,V3,…Vi)。Vi与问题嵌入q分别经过非线性层处理后,再通过线性层计算出与区域i相关的标量注意力权重αi,t。具体而言,这些公式如下所示:

在这里插入图片描述

在进行多模态融合之前,问题向量q和图片特征向量V-hat分别经过了一个非线性层处理,这个过程的作用是改变维度,以便在后续的矩阵元素相乘融合时能够顺利进行。处理后的两者维度均为512维。经过非线性层处理后的q和V-hat特征向量,通过Hadamard乘积(即元素乘法)进行融合,得到的结果向量h表示图片和问题的联合嵌入信息。这个融合结果随后被输入到分类器中进行处理。具体的数学表达式如下所示:

在这里插入图片描述

2.5 Non-linear layers—gated hyperbolic tangent activations

在本文的研究中,与大多数模型采用ReLU激活函数不同,并非在所有的非线性层中使用了gated tanh activation作为激活函数。

在这里插入图片描述

图十:非线性层
本质上相当于原来的 tanh 激活通过 gate 进行了 mask(掩饰),其中 gate 用于控制有用信息,调节信息的有效传递,其功能与 LSTM 和 GRU 中的非线性作用机制相似。作者将该层与 tanh 以及 ReLU(修正线性单元) 进行了对比,结果显示 g gated tanh 能够获得更好的性能。g代表门控机制,α代表 softmax 激活函数,W指学习权重,b代表偏差,y(波浪)与 g 的 Hadamard 乘积即为输出。

2.6 output classifier 输出分类器

在这里插入图片描述

图十一展示了输出分类器的结构。在 VQA-v2 数据集中,由于数据来源多样,同一图像对同一问题可能有多个正确答案。基于这一特点,该模型采用了软分类方法,与许多现有研究不同,它并未采用多选一的分类方式,而是将其转化为multi-label分类问题。在训练集中,所有出现频率超过8次的正确答案被选为候选答案,共计N=3129个。每个答案都被分配一个标签类别,所有标签类别均被赋予0-1之间的概率值(soft score)。原来的softmax层被替换为sigmoid层。因此,网络最终为每个答案输出一个0-1之间的分数。每个答案的准确度在0-1之间,因此本文采用了soft target score。这个概率值将成为后续计算的ground-truth S。

在这里插入图片描述

在2.4节中,h代表多模态融合的输出结果。f0是一个非线性层,W0是一个线性映射。α是Sigmoid激活函数,亦称为logistic函数,其输出能够优化每个问题的多个正确答案。采用Soft score作为ground truth相比二元分类,能够提供更为丰富的训练信号。经过Sigmoid激活函数处理后,得到预测分数S^(h)。损失函数为二元交叉熵损失函数,具体公式如下:

在这里插入图片描述

其中M代表训练问题个数;N代表候选答案个数(共3129个);Sij表示第i个训练问题的第j个候选答案的真实分数;Sij(hat)表示第i个训练问题的第j个候选答案的预测分数。

在这里插入图片描述

图十二:Output 分类器亮点

2.7 Petraining the classifier预训练分类器(分类网络初始化)

在这里插入图片描述

图十三:预训练分类器
由于分类网络最后一层是个全连接层,所以最后每个答案的分数就是图片特征和问题特征与网络权重的点积。
作者使用了来自两个来源的候选答案的先验信息来训练:
一种是语言信息,使用答案文本的GloVe词嵌入形式的语言信息,当一个答案不能与问题完全匹配时,在拼写检查后则选择关系程度最接近的匹配,删除连字符号,或者保留多词表达式中的单个词,矩阵W0(text)(语言信息)的每一行通过答案的 glove feature 进行初始化;
一种是视觉信息,是从代表候选答案的图像中收集的视觉信息。利用Google Images来自动检索挑选10张与每个候选答案最接近的图像。这些图片经过一个在ImageNet上预训练过的ResNet-101 CNN,最终的平均特征被提取并在这10张图片上取平均值,用它作为W0(img)(视觉信息)每一行的初始化(2048维);
两种先验信息W0(text)与W0(img)互补结合,它们可以用于任何候选答案,包括多义词和生僻词
则将2.6中的公式(5)换成下式:

在这里插入图片描述

f0(text)(h)和f0(img)(h)代表h分别经过两个非线性层被改变维度。

2.8 论文亮点汇总

在这里插入图片描述
在这里插入图片描述

两个关键优势分别体现在模型分类策略的优化上。首先,采用sigmoid函数使得模型能够更有效地优化每个分类任务的多标签数据。其次,通过soft target score,模型能够获得比二元分类任务更全面的训练反馈。这两个改进措施显著提升了模型的分类性能。

在这里插入图片描述

所有的非线性层使用gated tanh激活函数而不是常见的ReLU。

在这里插入图片描述

在提取图片特征的过程中,采用自上而下的注意力机制模型,而非传统的CNN模型生成的feature map。

在这里插入图片描述

使用候选答案的预训练表达来初始化输出层权重。

在这里插入图片描述
什么是mini batch

在梯度下降算法中,处理完所有样本后才完成一步计算,因此为了提高计算效率,我们可以将样本划分为若干等量的子集。例如,将100万个样本分成1000份,每份包含1000个样本,这些子集即被称为mini batch。随后,我们使用一个for循环遍历这1000个子集。针对每一个子集,我们执行一次梯度下降运算。接着更新参数w和b的值。当遍历完所有的mini batch后,相当于在梯度下降过程中完成了1000次迭代。我们将一次遍历所有样本的行为定义为一个epoch,也就是一个世代。通过这种方式,我们训练的数据不再是全部样本,而是被划分为一个个的子集。在mini batch的情况下,一个epoch中可以进行1000次梯度下降运算,而在full batch情况下则仅进行一次。这样一来,算法的运行速度得到了显著提升。论文中尝试了多种不同的minbatch size,发现256、384和512等batch size在效果上都表现优异,比使用更多或更少的数据量要更优。

在这里插入图片描述

3.实验

这些改进措施对结果的影响程度可以在该表格中清晰地展示,通过观察移除每一项后对结果的影响程度,可以更全面地评估这些改进措施的效果。

在这里插入图片描述

参考文章:

全部评论 (0)

还没有任何评论哟~