关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解

近来研究通过RNN的Seq2Seq模型处理文本正则化(Text Normalization)时准备用到注意力机制,因此拜读了注意力机制在自然语言处理的神经机器翻译(以下简称NMT)的两篇论文:

  • 《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》
  • 《Effective Approaches to Attention-based Neural Machine Translation》

首先是第一篇《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》,这篇论文算是在自然语言处理(NLP)中第一个使用attention机制的工作,将attention机制用到了神经网络机器翻译(NMT),NMT其实就是一个典型的Seq2Seq模型,也就是一个encoder to decoder模型,传统的NMT使用两个RNN,一个RNN对源语言进行编码,将源语言编码到一个固定维度的中间向量,再使用一个RNN进行解码翻译到目标语言:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第1张图片
按照论文所述,encoder中的每个隐层单元的计算公式为:
这里写图片描述
encoder的输出语义编码向量c为:
这里写图片描述
而decoder通过将联合概率p(y)分解成有序条件来定义翻译y的概率:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第2张图片
当计算出此处的p(y)最大时则翻译成y的可能性最大,即此刻decoder输出y。其中,每个条件概率p(y)的定义为:
这里写图片描述
此处st代表的是decoder的第t个时刻输出的状态。
而引入注意力机制后的模型如下:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第3张图片
此时,关于p(y)的定义变化如下:
这里写图片描述
此处c变成了ci,即要输出的第i个单词时对应的ci向量,因此要如何计算ci向量时注意力机制实现的关键,但在此之前si的计算也变成了:
这里写图片描述
由论文示意图:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第4张图片
我们可以知道ci的计算牵涉到输入的每个单词xj(j=1,……T),故ci计算如下:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第5张图片
那么该如何来理解ci的计算公式?论文中说了,我们可以理解将所有hj的加权总和作为计算期望的方法。 令αij为目标单词yi与源词xj对齐或翻译的概率。 然后,在要输出第i个输出值y的时候,ci是要计算的值,αij是hj的出现概率,则ci是所有具有概率αij的hj的期望。显然,该公式符合概率论中期望的计算公式。
其中,αij参数的计算为:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第6张图片
对于a函数的形式在第二篇论文中的Score函数中有具体介绍。
该篇论文还提出了对齐模型的可视化,即对于每个翻译出来的单词yi,其与源句子中的单词xi的相关匹配程度可通过注意力矩阵可视化看出相关性程度:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第7张图片


然后是第二篇论文《Effective Approaches to Attention-based Neural Machine Translation》,其主要贡献在于介绍了attention在Seq2Seq模型中可以如何进行扩展,作者同样在NMT上使用attention mechanism,提出了两种attention机制,分别为:全局注意力机制(Global Attention)局部注意力机制(Local Attention)

全局注意力机制
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第8张图片
其中,ht~的计算为:
这里写图片描述
关于ct的计算与前篇论文的计算一样,对于at的计算也与前篇论文的思想一样,不过形式上换成了:关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第9张图片
该论文对于Score函数提出了3种计算方法:
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第10张图片
在他们最后的实验中general的计算方法效果是较好的。在计算路径上与前篇论文的不同是,该论文中是以ht → at → ct → h˜t为计算过程的;而前篇论文是以ht−1 → at → ct →ht为计算过程。

局部注意力机制
针对global模型要考虑输入的每个单词xi(i=1,……T)而导致的计算开销较大的缺点,作者又提出了局部注意力模型(Local Attention)
关于注意力机制(attention mechanism)在神经机器翻译领域的两篇论文的理解_第11张图片
由论文示意图及描述可知,此时的ct需要计算的at较少,可视为在一个固定大小的窗口内进行与global一样的计算at值等过程,而这个窗口的大小即为确定的关键。论文中提出对于要生成第t个y值时,需要计算一个position值简称为pt,则窗口的大小为[pt-D, pt+D],其中参数D的大小根据经验挑选。对于pt的计算有两种方式,分别为Monotonic alignment (local-m)Predictive alignment (local-p)
对于local-m,pt=t;
对于local-p,pt的计算公式为:
这里写图片描述,其中S是源句子的长度(包含单词数),此时,计算at的公式变为:
这里写图片描述
其中,pt是一个数字,而s是以pt为中心的窗口中的整数。对于公式的理解:计算最后的attention矩阵时,在原来的基础上乘了一个pt位置相关的高斯分布。
最后的结果是,局部模型(local)比全局模型(global)的attention效果好。

以上是对于这两篇论文的个人理解,感觉能够看完论文对于自己搭建基于注意力机制的Seq2Seq模型的过程理解加深了。

参考文献:
[1] Bahdanau, D., Cho, K. & Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate. Iclr 2015 1–15 (2014).
[2] Luong, M. & Manning, C. D. Effective Approaches to Attention-based Neural Machine Translation. 1412–1421 (2015).
[3]robert_ai. 注意力机制(Attention Mechanism)在自然语言处理中的应用[EB/OL]. http://bi.dataguru.cn/article-10043-1.html.

你可能感兴趣的:(深度学习)