3.8注意力模型(Attention Model)

注意力模型让一个神经网络只注意到一部分的输入句子。当它在生成句子的时候,更像人类翻译

假定有一个输入句子,并使用双向的RNN,或者双向的GRU或者双向的LSTM,去计算每个词的特征:

a<t>a^{<t{'}>}表示时间步tt上的特征向量。用tt{'}来索引法语句子里面的词,由于是双向RNN,每个a<t>a^{<t{'}>}

a<t>=(a<t>,a<t>)a^{<t{'}>}=(a^{\rightarrow <t{'}>},a^{\leftarrow <t{'}>})

注意力权重用α\alpha表示,C是各个RNN神经元经过注意力权重得到的参数值。例如α<1,t>\alpha^{<1,t{'}>}表示机器翻译的第一个单词“jane”对应的第tt{'}个RNN神经元,C<1>C^{<1>}表示机器翻译第一个单词“jane”对应的解码网络输入参数。满足:

tα<1,t>=1\sum_{t{'}}\alpha^{<1,t{'}>}=1
C<1>=tα<1,t>a<t>C^{<1>}=\sum_{t{'}}\alpha^{<1,t{'}>}\cdot a^{<t{'}>}

用状态SS表示生成翻译。α<t,t>\alpha^{<t,t{'}>}是输出y^<t>\hat y^{<t>}tt{'}时对RNN单元花在a<t>a^{<t{'}>}上的注意力权重因子。即在tt处生成输出词应该花多少注意力在第tt{'}个输入词上面

为了让α<t,t>\alpha^{<t,t{'}>}之和为1,利用softamx思想,引入参数e<t,t>e^{<t,t{'}>},使得:

a<t,t>=exp(e<t,t>)t=1Txexp(e<t,t>)a^{<t,t'>} = \frac{\text{exp}(e^{<t,t'>})}{\sum^{T_x}_{t'=1} \text{exp}(e^{<t,t'>})}

只要求出e<t,t>e^{<t,t{'}>},就能得到α<t,t>\alpha^{<t,t{'}>}

如何求出e<t,t>e^{<t,t{'}>}

建立一个简单的神经网络

输入s<t1>s^{<t-1>},即神经网络在上个时间步的状态和a<t>a^{<t{'}>},训练一个很小的神经网络,利用反向传播算法、梯度下降算法迭代优化,学到一个正确的函数e<t,t>e^{<t,t{'}>}α<t,t>\alpha^{<t,t{'}>}

缺点:计算量较大,TxT_x个输入单词和TyT_y个输出单词的注意力参数的总数是Tx×TyT_x\times T_y,但是在机器翻译的应用上,输入和输出的句子一般不会太长,消耗还是可以接受

注意力模型在图像捕捉方面也有应用。比如图片加标题(image captioning),即看一张图,写下这张图的标题

Attention model还能处理日期标准化的问题(the date normalization problem):

训练一个神经网络,输入任何形式的日期,生成标准化的日期形式

还有可视化的注意力权重(the visualizations of the attention weights)。颜色越白表示注意力权重越大,颜色越深表示权重越小。输出语句单词与其输入语句单词对应位置的注意力权重较大,即对角线附近

Last updated