Image Caption浅谈(2)

引言

上一次,提到seq2seq模型到nic模型,这种Encoder-Decoder结构中,Encode把所有的输入序列都编码成一个统一的语义特征 hn h n 再解码,因此, hn h n 中必须包含原始句子中的所有信息,它的长度就成了限制模型性能的瓶颈。对于短句来说还好,但当句子较长时,一个 hn h n 可能存不下那么多信息,就会造成翻译精度的下降。在这种情况下,论文《Neural machine translation by jointly learning to align and translate》提出了一种Attention机制,不再使用统一的语义特征,而让Decoder在输入序列中自由选取需要的特征,大大提高了Encoder-Decoder的模型性能。有兴趣的朋友可以去读一下这篇文章,这里不再多讨论。

Image Caption With Attention

同样的道理,我们在Iamge Caption中也可以借鉴这种Attention的机制,于是就有了《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》这篇文章,以前decoder在不同的时刻对接收到的信息进行解码并生成单词时,所接收到的encoder vector都是相同的。但是实际上,在生成不同的词时,所应“关注”的信息是不一样的,attention机制就是为了实现在生成一个词时去关注当前所“应该”关注的显著(salient)信息这一目的,手段就是对输入信息的各个局部赋予权重。
这里写图片描述
之前NIC模型用的是最后一层的向量作为特征,这样是具有更多的语义信息,但是缺点是失去了更多能让caption丰富的细节信息,因此在这项工作中采用稍微低层一点的特征( 1414512 14 ∗ 14 ∗ 512 )。
这里写图片描述

Attention机制

加入attention机制的模型如下图所示
这里写图片描述
I I 是输入图片,ai是图像特征D维,共有L个。 zt z t 称为 context vector,是捕捉了特定区域视觉信息的上下文向量。想要实现这种机制的方式就是在时刻 t t ,为输入序列的各个区域 i 计算出一个权重 αi,因为需要满足输入序列的各个区域的权重是加和为一的,使用Softmax来实现这一点。至于Softmax需要输入的信息,则如上所讲,需要包含两个方面:一个是被计算的区域 αi α i ,另一个就是上一个时刻的信息 ht1 h t − 1 :

eti=fatt(ai,ht1) e t i = f att ( a i , h t − 1 )

αti=exp(eti)Lk=1exp(etk) α t i = exp ⁡ ( e t i ) ∑ k = 1 L exp ⁡ ( e t k )

fatt f a t t 是计算区域 i 和时刻 t 这两个信息的打分函数,本文使用多层感知机+softmax。这里举一个简单的例子,比如featuremap大小为3*3,最终算出来的 α α 就是对应的3*3九个值,和为1(softmax)。这里的意义就是赋予featuremap不同区域的各一个权值。
有了权重,就要计算context z^t=ϕ({ai},{αti}) z ^ t = ϕ ( { a i } , { α t i } ) ,这个函数 ϕ ϕ 就代指文中提出的两种attention机制,对应于将权重施加到图像区域到两种不同的策略。
本文提出两种attention机制:

(1)Stochastic “Hard” Attention

“Hard” Attention,机制中权重 α α 所扮演的角色是图像区域 ai a i 在时刻 t 被选中作为输入decoder的信息的概率,有且仅有一个区域会被选中。相比之下“Hard” Attention 更有难度,实现细节这里不多讨论,有兴趣可以去读一下原文。

(2)Deterministic “Soft” Attention

大多数开源代码均为soft attention,相比之下,在 soft attention 机制中,权重 α α 所扮演的角色是图像区域 ai a i 在时刻 t 的输入decoder的信息中的所占的比例。既然这样,就将各区域 ai a i 与对应的权重 αi α i 做加权求和就可以得到 z^t z ^ t

Ep(st|a)[z^t]=i=1Lαt,iai E p ( s t | a ) [ z ^ t ] = ∑ i = 1 L α t , i a i

在训练时,得到 z^t z ^ t ,将 z^t z ^ t 和feature做concatenate,输入到lstm进行解码。

总结

本文就是在nic模型的基础上,根据机器翻译的attention机制,提出了两种attention模型,由于使用了Attention机制,就可以根据权重系数 α α 的大小,在生成每个词时模型关注到了图片的哪个区域。下面展示一个例子,在图片中用白色高亮标注了生成下划线单词时模型关注的区域:
这里写图片描述

参考

  1. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  2. https://blog.csdn.net/shenxiaolu1984/article/details/51493673
  3. http://www.cnblogs.com/Determined22/p/6914926.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值