注意力模型让一个神经网络只注意到一部分的输入句子。当它在生成句子的时候,更像人类翻译
假定有一个输入句子,并使用双向的RNN,或者双向的GRU或者双向的LSTM,去计算每个词的特征:
用a<t′>表示时间步t上的特征向量。用t′来索引法语句子里面的词,由于是双向RNN,每个a<t′>:
a<t′>=(a→<t′>,a←<t′>) 注意力权重用α表示,C是各个RNN神经元经过注意力权重得到的参数值。例如α<1,t′>表示机器翻译的第一个单词“jane”对应的第t′个RNN神经元,C<1>表示机器翻译第一个单词“jane”对应的解码网络输入参数。满足:
t′∑α<1,t′>=1 C<1>=t′∑α<1,t′>⋅a<t′> 用状态S表示生成翻译。α<t,t′>是输出y^<t>在t′时对RNN单元花在a<t′>上的注意力权重因子。即在t处生成输出词应该花多少注意力在第t′个输入词上面
为了让α<t,t′>之和为1,利用softamx思想,引入参数e<t,t′>,使得:
a<t,t′>=∑t′=1Txexp(e<t,t′>)exp(e<t,t′>) 只要求出e<t,t′>,就能得到α<t,t′>
如何求出e<t,t′>:
建立一个简单的神经网络
输入s<t−1>,即神经网络在上个时间步的状态和a<t′>,训练一个很小的神经网络,利用反向传播算法、梯度下降算法迭代优化,学到一个正确的函数e<t,t′> 和α<t,t′>
缺点:计算量较大,Tx个输入单词和Ty个输出单词的注意力参数的总数是Tx×Ty,但是在机器翻译的应用上,输入和输出的句子一般不会太长,消耗还是可以接受
注意力模型在图像捕捉方面也有应用。比如图片加标题(image captioning),即看一张图,写下这张图的标题
Attention model还能处理日期标准化的问题(the date normalization problem):
训练一个神经网络,输入任何形式的日期,生成标准化的日期形式
还有可视化的注意力权重(the visualizations of the attention weights)。颜色越白表示注意力权重越大,颜色越深表示权重越小。输出语句单词与其输入语句单词对应位置的注意力权重较大,即对角线附近