零基础学nlp【5】 hard attention 和 soft attention(Show, attend and tell: Neural image caption generation )

零基础学nlp【5】 hard attention 和 soft attention

论文:Xu K, Ba J, Kiros R, et al. Show, attend and tell: Neural image caption generation with visual attention[C]//International conference on machine learning. 2015: 2048-2057.

1 主要内容

文章主要基于由图片生成标题的任务。对于这样的任务,采用了encoder-decoder结构,其中encoder采用了一个深层卷积神经网络,标题的生成采用循环神经网络。通过卷积神经网络提取图像的信息,建立注意力模型,用于选择图像信息的某一部分,输入循环神经网络进行标题生成。整体框架如下所示
在这里插入图片描述
其中attention模型用于生成输入rnn的向量,文章采用了两种方法,第一个是 hard attention命名主要原因是其中的注意力模型是硬编码的,即one-hot形(只有一个是1其他都是0),所以当前时刻的rnn只注意在某一块图片上。而soft attention则是软编码的,通过一个softmax层,所以模型注意在整个图片上。

2 细节

2.1 模型建立

1) encoder

使用cnn建立,但是没有使用全连接层之后的特征,而是使用了还没有完全池化的特征,即每一块的特征仅仅还表示图片的某一部分。这样建立了输出特征和图片上的位置之间的关系。文中使用了VGGnet的1414512的那一层的变量。

2)decoder

在这里插入图片描述
decoder使用了lstm神经网络,变量定义与计算方法如上图所示,其中z即由注意力模型与encoder共同得到的输入变量,也是后文重点介绍的,z的获得方法如下图所示,即注意力向量和cnn得到的encoder向量加权求得。
在这里插入图片描述

2.2训练方法

由于decoder输出的句子长短不一样在批处理中,如果每一个batch都随机,那训练的长度都是每一个batch中最长的,太浪费资源了1,这在好几篇论文中都提到,所以训练时从标题一样长的例子中选择batch用于训练。

2.3 hard attention与 soft attention

hard attention即注意力向量是one-hot形的,由于one-hot形的不容易直接反向传播学习得到,于是采用了xxxx方法学习得到(数学公式太多不懂,有谁能简单介绍的可以留言,谢谢啦)。
soft attention就比较简单,直接通过反向传播就可以学习得到。

3 结论

文中首先展示了一个两种attention方法的可视化结果如下图所示:
在这里插入图片描述
这个图应该是由注意力向量得到的,比较好画也能很清楚展示,可以看出上面的soft attention 白色的一大片,证明注意力分布在整张图上,而下面的hard attention表示注意力只集中在一小部分上。
当然,要成为一篇经典论文,当然在许多数据集上得到了sota的结果,而且本文中是单模型得到了好结果。文章最后讲了关于模型集成,怎么选取CNN等一些问题,有待研究。

【零基础学nlp,争取每天看一篇文章,大家有建议,或者我理解错的地方请批评指正。希望有人能和我一起学!!!!】

猜你喜欢

转载自blog.csdn.net/weixin_41303016/article/details/88419714
今日推荐