当前位置:网站首页>《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》论文阅读(详细)

《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》论文阅读(详细)

2022-08-11 05:35:00 KPer_Yang

参考资料:

[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 zt

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,izt=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 zt的期望,是平滑和可微的:
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)[zzt]=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} etiatizt=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)

原网站

版权声明
本文为[KPer_Yang]所创,转载请带上原文链接,感谢
https://blog.csdn.net/KPer_Yang/article/details/126206705