摘要
背景我们已经介绍了,现在我们上篇文章的基础上面引入比较流行的Attention机制
说下本篇文章的贡献:
- image captioning中使用同一种框架引入两种atttention机制。
- 可以洞察模型观察的点在哪里where, 以及观察的是什么what
- 代码我只会演示第二种attention 机制
模型
image encoder
第一层还是卷积层来处理图像信息,但是这里不同的是,我们不像上一篇提到的那样直接复用已有的模型,这里直接处理原始的图片。
为什么要处理原始图片?因为如果要做attention,那么势必要在decoder阶段需要知道聚焦在图片的哪个位置,这样我们就不能直接用encoder出来的很高级的单向量了
需要抽取出来一些原始的特征,每个特征能够表征图像的某一部分,这样在做decoder的时候,attention机制可以知道可以聚焦在哪一块,这样就提高了decoder描述的准确性
假设我们处理图片后生成L=196个D=512维的向量:
a=(a1,...,aL),ai∈RDdecoder
主要框架我们还是用LSTM,为了引入attention,我们稍微做下变形,就是在原有的state基础上面再增加一个图片的content的信息
假设需要decoder的序列为:经典的LSTM结构:
it ft ot gt Ct ht=σ(wi.[Eyt−1,ht−1]+bi)=σ(wf.[Eyt−1,ht−1]+bf)=σ(wo.[Eyt−1,ht−1]+bo)=tanh(wc.[Eyt−1,ht−1]+bc)=ft∗Ct−1+it∗gt=ot∗tanh(Ct)_, (c, h) = lstm_cell(inputs=x, axis=1), state=[c, h])
调整后:
it ft ot gt Ct ht =σ(wi.[Eyt−1,ht−1,ẑ t]+bi)=σ(wf.[Eyt−1,ht−1,ẑ t]+bf)=σ(wo.[Eyt−1,ht−1,ẑ t]+bo)=tanh(wc.