我是靠谱客的博主 丰富魔镜,最近开发中收集的这篇文章主要介绍《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》论文阅读(详细),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考资料:

[1502.03044v3] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention (arxiv.org)

(PDF) Show, Attend and Tell: Neural Image Caption Generation with Visual Attention (researchgate.net)

sgrvinod/a-PyTorch-Tutorial-to-Image-Captioning: Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning (github.com)

danielajisafe/Image-Captioning-Model (github.com)

贡献:

1、提出一种框架下的两种基于注意力的图像字幕生成方法:

​ a、一种可以通过标准反向传播可训练的“软”确定性的注意力;

​ b、一种可以通过最大化近似可变的下界或者REINFORCE的可训练的“硬”随机注意力机制;

2、将注意力可视化表示;

3、在三个数据集Flickr8k、Flickr30k、MS COCO达到最好结果;

模型:

模型的总体结构:

由卷积神经网络提取图片特征,然后由带注意力机制的循环神经网络一个单词接着一个单词生成。
在这里插入图片描述

两种注意力结构:
硬注意力和软注意力的区别:

1、硬注意力得到的是类似于one-hot向量的权值。而软注意力得到的是softmax的输出权重值。随机硬注意力需要做Multinoulli的假设,也就是说只有一个等于1(事件发生),其余的都等于0(事件不发生)。

2、硬注意力的随机是因为使用Monte Carlo采样的方式求解,而软注意力的确定是因为使用期望的方式求解 z ^ t widehat {z}_t z t

1、随机硬注意力:

p ( s t , i = 1 ∣ s j < t , a ) = α t , i z ^ t = ∑ i s t , i a i . p(s_{t,i}=1|s_{j<t}, pmb{a})=alpha_{t,i}\ widehat{z}_t=sum_is_{t,i}pmb{a}_i. p(st,i=1∣sj<t,aa)=αt,iz t=ist,iaai.
公式的 s t s_t st指的是模型注意到的第t个词的位置。 s t , i s_{t,i} st,i指的是one-hot变量,当图片中的第 i i i个位置被用来提取视觉特征则置1。

2、确定软注意力:

学习随机软注意力需要每次对注意力位置 s t s_t st进行采样,软注意力直接取上下⽂向量 z ^ t widehat{z}_t z t的期望,是平滑和可微的:
E p ( s t ∣ a ) [ z ^ t ] = ∑ i = 1 L α t , i a i E_{p(s_t|a)}[pmb{widehat{z}}_t]=sum_{i=1}^{L}alpha_{t,i}pmb{a}_i Ep(sta)[z z t]=i=1Lαt,iaai
并且使用softmax进行归一化。将第 k 个单词预测的 softmax 的归⼀化加权⼏何平均 值(NWGM)写为:
N W G M [ p ( y t = k ∣ a ] = e x p ( E p ( s t ∣ a ) [ n t , k ] ) ∑ j e x p ( E p ( s t ∣ a ) [ n t , j ] ) NWGM[p(y_t=k|pmb{a}]=frac{exp(E_{p(s_t|a)}[n_{t,k}])}{sum_jexp(E_{p(s_t|a)}[n_{t,j}])} NWGM[p(yt=kaa]=jexp(Ep(sta)[nt,j])exp(Ep(sta)[nt,k])

将注意力嵌入到decoder中:

在这里插入图片描述

如图所示,将注意力结合LSTM得到decoder。图中的 z t ^ widehat{z_t} zt 由注意力机制 f a t t f_{att} fatt作用在图片块上生成:
e t i = f a t t ( a i , h t − 1 ) a t i = e x p ( e t i ) ∑ k = 1 L e x p ( e t k ) z ^ t = ϕ ( a i , α i ) begin{aligned} e_{ti}&=f_{att}(pmb{a}_i, h_{t-1}) \ a_{ti}&=frac{exp(e_{ti})}{sum_{k=1}^{L}exp(e_{tk})}\ widehat{z}_t&=phi({pmb{a}_i},{alpha_i}) end{aligned} etiatiz t=fatt(aai,ht1)=k=1Lexp(etk)exp(eti)=ϕ(aai,αi)

注:多项式分布:多项式分布是二项式分布的推广。二项式做n次伯努利实验,规定了每次试验的结果只有两个。如果现在还是做n次试验,只不过每次试验的结果可以有m个,且m个结果发生的概率互斥且和为1,则发生其中一个结果X次的概率就是多项分布。概率密度函数是:
P ( X 1 = k 1 , X 2 = k 2 , ⋯   , X n = k n ) = n ! ( k 1 ! ) ( k 2 ! ) ⋯ ( k n ! ) ∏ i = 1 n ( p k i ) P(X_1=k_1,X_2=k_2,cdots,X_n=k_n)=frac{n!}{(k_1!)(k_2!)cdots(k_n!)}prod limits_{i=1}^n(p_{k_i}) P(X1=k1,X2=k2,,Xn=kn)=(k1!)(k2!)(kn!)n!i=1n(pki)

最后

以上就是丰富魔镜为你收集整理的《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》论文阅读(详细)的全部内容,希望文章能够帮你解决《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》论文阅读(详细)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部