基于Visual attention的图片主题生成

来源:互联网 发布:网页自动生成软件 编辑:程序博客网 时间:2024/04/28 05:15

引言

Attention model 在序列end to end问题上广泛应用,结合RNN、LSTM、GRU等常用递归神经网络可以取得很好的效果;在计算机视觉领域也有非常广泛的利用,因为序列因素的存在,所以通常在图文转换或者视频描述等应用中出现。

Visual attention model的意义

  1. 在引入Attention(注意力)之前,图像识别或语言翻译都是直接把完整的图像或语句直接塞到一个输入,然后给出输出。
  2. 而且图像还经常缩放成固定大小,引起信息丢失。
  3. 而人在看东西的时候,目光沿感兴趣的地方移动,甚至仔细盯着部分细节看,然后再得到结论。
  4. Attention就是在网络中加入关注区域的移动、缩放、旋转机制,连续部分信息的序列化输入。
  5. 关注区域的移动、缩放、旋转采用强化学习来实现。

Recurrent model of visual attention

Recurrent Models of Visual Attention

基于Attention的图片主题生成

参考Show, Attend and Tell: Neural Image Caption Generation with Visual Attention(2015)
这里写图片描述

模型

之前Encoder过程中的输入是一个个词向量,而在visual attention model中便是通过CNN抽取的各个图像特征之后展平的一维特征向量,如下图所示:
这里写图片描述

Encoder

特征图均匀切割成若干个区域,表示为

a={a1,a2,...,aL},aiRD

L表示特征数,D表示特征的维数,在论文中为D=14×14=196,每一个特征向量代表了图像一个局部窗口的特征。这里的特征提取用的是一个低层的卷积网络,而不是一个完整的CNN网络,因为一个完整的网络最终把一个图片融合成一个很高维的特征向量。而用低层的卷积网络就可以选择集中于某些局部区域。

输出的主题y可以编码为

y={y1,y2,...,yC},yiRK

其中K是字典的单词个数,C输出的句子长度。yi用one-hot编码,形式为(0,0,...,0,1,0,...0,0),即只有一处为1,其他都为0。

Decoder

论文中利用LSTM来进行解码,LSTM的结构如下图所示
这里写图片描述
计算公式为
这里写图片描述

其中σ是sigmoid激活函数,表示同位置的元素相乘。

it,ft,ot分别表示输入门、遗忘门、输出门,gt是对输入的转化,ct是cell状态,ht是隐藏状态。

ERm×K是embedding层训练出来的参数矩阵。

z^t是上下文向量,是t时刻图片部分信息的动态表示。

z^t=ϕ({ai},{αi})

ϕ函数根据hard模式和soft模式有不一样的定义,后面会有具体的介绍。另外还有
eti=fatt(ai,ht1)

αti=exp(eti)Lk=1exp(etk)

其中i表示第i个区域,共有L个,t为第t时刻。fatt函数采用多层网络实现,利用前一个时刻的隐状态ht1与L个区域,分别得到每一个区域的权重αti。权重αti表示每个区域的注意力程度,在hard模型中为下一步输入选择某个区域的概率,在soft模型中表示每一个特征区域在下一次输入中所占的比例。

LSTM网络的初始状态利用表达向量的均值分别输入到两个分开的多层网络(init.c和init.h)得到

co=finit.c(1LiLai)

ho=finit.h(1LiLai)

Stochastic “Hard” Attention

st,i表示在第t步过程中是否选中L个区域中的第i个区域,如果为0则表示不选中,为1则表示选中,st是一个one-hot向量,只有一个为1,其他元素均为0,并且假设满足多项式分布。z^t计算变为下式

p(st,i=1|a)=αt,i

z^t=iLst,iai

定义一个以边际似然函数logp(y|a)的下限为目标函数Ls

Ls=sp(s|a)logp(y|s,a)

logsp(s|a)p(y|s,a)

=logp(y|a)

以上部分看起来很巧妙,其实求解思路来源于著名的EM算法,推导过程中利用的不等式是也是著名的Jensen不等式

对其进行求导可得

LsW=sp(s|a)logp(y|s,a)W

=sp(s|a)logp(y|s,a)W+logp(y|s,a)p(s|a)W

=sp(s|a)[logp(y|s,a)W+logp(y|s,a)logp(s|a)W]

整个以上的变化的目的就是为了使得偏导可以通过Monte Carlo方法采样实现计算,可以尝试,如果直接用之前的目标函数是无法计算偏导的:
s~tMultinoulliL({ai})

LsW1Nn=1N[logp(y|s~n,a)W+logp(y|s~n,a)logp(s~n|a)W]

仿造Weaver&Tao(2001),采用滑动平均(moving average)来减小方差,第k个mini-batch的时候
bk=0.9×bk1+0.1×logp(y|s~k,a)

为了进一步减小方差,加入多项式分布的熵H[s],最后学习规则为:
LsW1Nn=1N[logp(y|s~n,a)W+λr(logp(y|s~n,a)b)logp(s~n|a)W+λeH[s~n]W]

λr,λe是由交叉验证设置的两个超参,以上参数求导优化的过程就是一个强化学习规则(Williams,1992),每次选择下一个特征图的过程都朝目标更好的方向变化。

Deterministic “Soft” Attention

hard模式是每次选择一个区域,soft模式直接利用加权信息得到z^t的估计值:

Ep(st|a)[z^t]=iLαt,iai

αt,i的计算参考Bahdanau(2014)
αt,i=exp(eti)Lk=1exp(etk)

etk=score(st1,hk)

以上模型都是平滑和可微的,所以可以用标准的BP算法来进行端到端的学习。在计算α的时候,iαt,i=1保证所有区域的权重和为1,另外再加入一个新的正则化,对于第i个区域,在时间轴上的T步,权重满足:
tαt,i1

这个正则化的加入,可以使得生成的主题更加,结果更好。另外再计算z^t时添加一个标量进行缩放,通过前一个隐藏单元ht1来计算
Ep(st|a)[z^t]=βi=1Lαt,iai

βt=δ(fβ(ht1))

最终,端到端的目标函数可以写为
Ld=log(P(y|x))+λiL(1tCαt,i)2

hard模式和soft模式的结果如下图所示,上一排为soft模式,下一排为hard模式:
这里写图片描述

可以软注意力模型相对来说更加平滑一点

1 0
原创粉丝点击