吴恩达·注意力模型(Attention Model)简记

机器翻译模型的编码器是先读取整个句子后传递到解码器中翻译,对于过长句子序列(例如超过30个词的句子)的记忆能力弱,翻译效果不理想。此时就出现了注意力模型,它是模仿人类翻译,一部分一部分地翻译,从而提高长句子的翻译能力。

实践:注意力神经机器翻译模型实践

传送门:Attention Is All You Need简记(多头注意力、自注意力、位置嵌入)

本文示例翻译法语句子:Jane visite I’Afrique en Septembre。用t^`来索引法语序列的词。

使用双向RNN用于待翻译序列x的特征提取。下图中蓝色的a^{<t^`>}表示激活值,左右箭头表方向,分别是前向传播后向传播 的激活值。

表示一组前向后向激活值
特征提取模型


注意力权重

注意力模型在生成每个翻译结果时只考虑部分提取到的特征。注意力权重参数(a set of attention weights)表示当你在时间步t处生成输出词,你应该花多少注意力在第t^`个输入词上面。例如a^{<1,1>}、a^{}、a^{}分别表示前三个单词对第一个词语的翻译结果具有的影响力。类似的a^{<2,1>}、a^{}、a^{}分别表示表示在翻译得到第二个单词时,要分别放多少注意力在前三个单词上。并且前一步翻译的输出也会作为下一步的输入。



翻译过程

翻译使用的是一个单向RNN,用状态S^{<i>}表示decoder RNN的隐藏状态(the hidden state in this RNN),C^{<i>}表示上下文(context),作为状态S^{<i>}的输入。参数满足以下公式:

1、每次考虑的所有注意力权重之和等于1     

      \sum_{t^`}a^{}<1,t^`>=1

2、特征步激活值和注意力权重的乘积之和作翻译模型的输入,即上下文C^{<i>}                                                  C^{<i>}=\sum_{t^`}a^{}a^{}

计算第一个翻译结果词


计算注意力权重

为了满足\sum_{t^`}a^{}<1,t^`>=1计算注意力权重的方法(即使用softmax)是:

计算上式的关键是计算得分e^{<t,t^`>},现直到计算e^{<t,t^`>}需要上一个deocder翻译状态的值s^{<t-1>}和特征提取模型encoder中本状态的激活值a^{<t^`>}但不知道具体函数关系,需要通过一个小的神经网络学习对应的具体的函数关系式。

学习表达式的网络



除了学习,e^{<t,t^`>}还有现成的表达式可以利用。

评分函数的思路是度量两个向量间的相似度



得到第二个翻译结果词示意图,以此类推

通过为每个单词分配分值,注意力为不同单词分配不同的注意力。然后利用 softmax 对编码器隐藏状态进行加权求和,得到上下文向量(context vector)。


编码器-解码器架构:(a) 为传统结构,(b) 为带注意力机制的结构  

架构中的注意力模块负责自动学习注意力权重α_ij,该权重会捕获 h_i(编码器隐状态,被称之为候选状态)和 s_j(解码器隐状态,被称之为查询状态)之间的相关性。这些注意力权重之后会被用于构建上下文向量 c,而该向量经过处理后作为输入传递给解码器。


注意力模型的缺点

缺点是时间花费是O(n^3),因为注意力参数部分的计算。如果有T_x个输入词,T_y个输出词,则注意力权重参数的总数就是T_x xT_y

注意力模型




酷文章:

图解NMT的注意力机制

想继续深入了解注意力?一篇就够了:深度学习中的注意力模型--张俊林

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容