论文笔记:Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26253653/article/details/78436112

论文链接:Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering


Bottom-Up Attention Model

本文的bottom up attention 模型在后面的image caption部分和VQA部分都会被用到。

这里用的是object detection领域的Faster R-CNN方法来提取,详细的就不再说了。
这里写图片描述

其中把提取出的region的mean-pooled convolutional feature定义为 v i

因为只有小部分的bounding box会被选择出来, Faster R-CNN可以看作是一种hard attention机制。

bottom up attetion model在完成imageNet的预训练后,又到visual genome数据上进行了训练,原因如下。

为了学习到更好的特征表示,除了预测object class以外,他们额外加了一个训练输出,来预测region i 的attribute class(比如物体的颜色、材质等,具体见上图,这些属性在visual genome上可以找到)。这里是通过把 v i 和一个可训练的ground-truth object class的embedding这两者进行concatenate,并把它送达到一个额外的输出层,输出层是每个attribute class的softmax分布。

本文保留了Faster R-CNN的损失函数,并在此基础上加了一个multi-class loss来训练attribute predictor。


Image Caption部分

Caption model结构如图所示,共有2个LSTM模块,一个是Language LSTM,另一个是Top-Down Attention LSTM。

caption model

这里两个LSTM都是用的标准LSTM,因此就简化表述了:

h t = L S T M ( x t , h t 1 )

其中,对于LSTM的输入 x t 以及hidden state h t ,使用上标1表示top-down attention LSTM,上标2表示language LSTM。

这个模型的结构很有意思,两个LSTM都在互相使用对方前一个时刻的隐状态,具体结合公式来看。


top-down attention LSTM

top-down attention使用LSTM来确定image feature v i 的权重, 是soft attention机制。

而top-down attention LSTM的输入 x t 1 = [ h t 1 2 , v ¯ , W e Π t ] 分别由:

  1. 前一时刻language model的hidden state h t 1 2
  2. k个image feature的 mean-pooled feature v ¯ = 1 k i v i
  3. 之前生成的词的encoding( Π t 为t时刻输入单词的one-hot encoding, W e 为embedding矩阵。)

这三者concatenate而成。

PS:论文原文提到:
These inputs provide the attention LSTM with maximum context regarding the state of the language LSTM, the overall content of the image, and the partial caption output generated so far, respectively.
而公式上只是输入了几个局部的image feature,而不是整张图片,个人认为严格意义上这不能等同于overall content of the image

对于k个image feature v i 的attention权重 α i , j ,是由top-down attention LSTM在每一个时刻利用自身的hidden state h t 1 产生的:

a i , t = w a T t a n h ( W v a v i + W h a h t 1 )

α t = s o f t m a x ( a t )

v t ^ = i = 1 K α i , t v i

其中 v t ^ 将在language LSTM中被用到。

简单来说, h t 1 记忆了之前输入的单词、图像的mean-pooled feature以及language LSTM的隐状态;而 W a T 则根据 h t 1 以及 v i 来学习如何计算出 v i 的权重。


language LSTM

language LSTM的输入 x t 2 = [ v t ^ , h t 1 ] 由上述的:

  1. attention feature加权和 v t ^
  2. 当前时刻attention LSTM的hidden state h t 1
    concatenate而成。

t 时刻输出的任一单词的概率分布 p ( y t | y 1 : t 1 ) = s o f t m a x ( W p h t 2 + b p ) ,其中 ( y 1 , . . . , y T ) 为单词的序列。

而整个句子的概率分布 p ( y 1 : T ) = t = 1 T p ( y t | y 1 : t 1 ) ,为每个单词概率的连乘。


训练目标

文章首先使用的是最小化cross entropy L X E ( θ ) = t = 1 T l o g ( p θ ( y t | y 1 : t 1 ) ) 来进行训练的,其中 y 1 : T 是ground-truth caption。

另外文章还用到了SCST中的强化学习方法来对CIDEr分数进行优化:

L R ( θ ) = E y 1 : T p θ [ r ( y 1 : T ) ]

梯度可以被近似为:

θ L R ( θ ) ( r ( y 1 : T S ) r ( y ^ 1 : T ) ) θ log p θ ( y 1 : T S )

其中 y 1 : T S 是强化学习中samlpe得到的caption, y ^ 1 : T 是baseline,总的来说,如果这个sample的句子比baseline好,这个梯度会提高它出现的概率,如果不好就抑制。

具体需要原理和推导需要看原论文以及强化学习相关理论。

本文使用beam size为5的beam search进行decode,并且发现,在这个size下通常会包含至少一个质量非常高(分数很高)的句子,而且这个句子的log概率通常不会很高。因此为了减少计算量,在强化学习的优化过程中,本文就只在beam search decode出来的句子中进行sample。


VQA部分

VQA模型也同样使用的是 soft top-down attention机制,结构如图所示:
这里写图片描述
对问题和图片进行joint multimodal embedding。

对于网络内的非线性变换,这里是用gated hyperbolic tangent activation来实现的,是highway network的一种形式。对于每一个gated tanh层,都是用如下方式来实现映射 f a : x R m y R n

y ~ = t a n h ( W x + b )

g = σ ( W x + b )

y = y ~ g

其中 α 表示函数内的参数 代表Hadamard积。

对于这个非线性变换,2017 VQA Challenge 第一名技术报告提到:

本质上就是原来的 tanh 激励上根据获得的 gate 进行了 mask,其实是跟 LSTM 和 GRU 中间非线性用的是一样的。

VQA中的问题Q被编码成GRU内的隐状态 q ,其中单词是以可训练的word embedding来表达的。

其中对于k个image features v i 的unnormalized attention weight a i 是这样计算的:

a i = w a T f a ( [ v i , q ] )

而normalized attention weight α t 和attended image feature v ^ t 就以caption 部分的方式计算。

输出响应 y 的分布以如下方式计算:

h = f q ( q ) f v ( v ^ )

p ( y ) = σ ( W o f o ( h ) )

其中 h 是问题和图像的联合表示。由于篇幅限制,文章没有给出更多的VQA系统的细节,详见Tips and Tricks for Visual Question Answering: Learnings from the 2017 Challenge


实验结果

总的来说,image caption和VQA部分的结果都是当时state-of-the-art的,但是VQA部分的分析较少,就只放image caption的分析了。
这里写图片描述

这里的Resnet是文章选取的一个baseline模型,用来代替bottom-up attention机制。也就是说这个baseline模型只有top-down的attention机制。

可以看到,无论有没有加CIDEr的强化学习训练、有没有使用bottom-up机制,本文的模型都比SCST的方法要好。而且SCST是从4个随机初始化的模型里面选了一个最好的,而本文这里的对比就只用了一个模型。

本文也试验了4个模型ensemble后的结果:
这里写图片描述

可以看到,本文的模型跟其他模型相比提升非常大。

本文还做了个实验证明本文bottom up attention机制的作用:
这里写图片描述

根据实验显示,如果没有清晰的视觉信息的引导的话,模型可能会过分依赖于语言中的上下文信息,因此不能很好地识别出一些out-of-context的图片。

(在SCST中也做了out-of-context的图片实验,如果使用attention模型加cross-entropy训练的话是不能准确识别出out-of-context的图片的,加了CIDEr优化以后才能很好地识别出out-of-context的图片。本文这个实验中的Up-Down模型应该也是经过CIDEr优化的,那么这里的结果到底是因为强化学习的效果还是attention的效果呢?)


总结

总的来说,本文主要的贡献在于提出了Bottom-Up and Top-Down Attention的机制,如果跟前面Image Captioning with Semantic Attention的对比的话,主要区别就是:

后者提出的只是一个个的单词,来指代检测到的物体,不包含空间的信息;而前者是一个feature vector,包含空间信息的同时还可以对应多个单词,比如一个形容词和名词,表现力更丰富了。

另外,个人认为两个LSTM之前互相利用对方隐状态这一架构设计也非常有意思。


猜你喜欢

转载自blog.csdn.net/sinat_26253653/article/details/78436112