本文翻译自《Effective Approaches to Attention-based Neural Machine Translation》,只翻译了理论部分,没有翻译实验部分。知识水平和翻译水平有限,希望大家多多提意见。
转载请注明出处:http://blog.csdn.net/LucyGill
实现基于注意的神经机器翻译的有效方法
Minh-Thang Luong Hieu Pham Christopher D. Manning
Computer Science Department, Stanford University,Stanford, CA 94305
{lmthang,hyhieu,manning}@stanford.edu
摘 要
最近一种在翻译过程中通过选择性地集中关注部分源句子的注意机制被用于提升神经机器翻译(NMT)结果。然而,探索用于基于注意的神经机器翻译(NMT)的有用架构的研究还不多。本论文探讨了两种简单有效的注意机制类别:一种能顾及到所有源词的全局方法,以及一种只能一次查看源词的一个子集的局部方法。我们证明了在英语-德语/德语-英语 WMT 翻译任务上,这两种方法都是有效的。使用局部注意方法,相比于已经结合了dropout 等技术的非注意系统,我们的系统增长了 5.0 BLEU 点。我们的组合模型使用了不同的注意架构,在 WMT'15 英语-德语的翻译任务中,实现了目前最好的结果:25.9 BLEU 点;比现有的基于 NMT 和 一个 n-gramreranker 的最佳系统提升了1.0 BLEU 点。
1 简介
神经机器翻译(NMT)在大型翻译任务(如把英语译成法语、德语)中取得了杰出成果。NMT因其概念简单、需要的知识量少而极富魅力。Luong等人创建的模型读取所有源词,直到检测到句子结束符
图1 神经机器翻译-一种用来把原句ABCD翻译成目标句子XYZ的堆叠循环结构。这里,
同时,“注意”的概念最近在训练神经网络中很流行,这使得模型能够学习不同模态之间的校准。例如,在动态控制问题中图像对象和代理操作之间的校准, 语音识别任务中语音帧和文本之间的校准(Chorowskiet al.,2014),或图像字幕生成任务中图像视觉特征与文本描述之间的校准(Xu et al., 2015)。在NMT的研究领域中,Bahdanau 等人已经成功地把这种注意机制应用到了联合翻译和对齐单词中。据我们所知,除此之外,再无其他研究基于注意的NMT架构的工作了。
在这项工作中,我们设计了两种简单高效的基于注意力的模型:一种所有源单词都被考虑在内的全局方法,和一种每次只考虑一部分源词的局部方法。前者与(Bahdanau etal., 2015)的模型类似,但是在结构上更简单。后者可以看作是(Xu et al., 2015)提出的硬性和软性注意的结合。它比全局模型或软性注意计算复杂度更小; 同时,不像硬性注意,局部方法是可导的,这使其更容易实施和训练。除此之外,我们还为我们的基于注意力的模型验证了各种对齐函数。
在实践中,我们证明了我们的两种方法在英语和德语间的WMT翻译任务中都是有效的。相对于结合了已知技术(如dropout)的非注意力系统,我们的注意力模型增加了5.0个BLEU点。对于英语到德语的翻译,我们在WMT’14和 WMT’15语料库中得到了最佳(state-of-the-art,SOTA)翻译结果, 得分比之前的最佳系统(由神经机器翻译模型和n-gramLM再循环支持)高1.0个BLEU点。我们进行了广泛的分析,对我们的模型在学习、处理长句的能力、注意结构的选择、对齐质量和翻译输出几方面进行了评估。
2 神经机器翻译
一个神经机器翻译系统是一个直接建立将源语句翻译成目标语句的条件概率的神经网络。NMT的一个基本形式由两个要素组成:计算每个源句的表示的编码器和每次生成一个目标单词的解码器,因此条件概率被分解为:
(1)
在解码器中对这种分解建模的一个自然选择是使用循环神经网络(recurrentneural network, RNN)结构, 这个结构是近期的一系列NMT研究(如Kalchbrennerand Blunsom, 2013;Sutskever et al., 2014; Cho et al., 2014; Bahdanau et al.,2015; Luong et al.,2015; Jean et al., 2015)都用到的。然而,它们在解码器中用的RNN结构不尽相同,在编码器计算源语句的表示s时,方法也不同。
Kalchbrenner 和 Blunsom(2013)在解码时用了具有标准隐藏单元的RNN,在给源语句编码时用了卷积神经网络。另一方面,Sutskever etal. (2014) 和Luong et al. (2015)在编码和解码中配合长短期记忆(Long Short-Term Memory,LSTM)隐藏单元,堆叠了多层RNN。Cho et al.(2014),Bahdanau et al. (2015), 和 Jean et al. (2015)都在编码和解码中用了具有LSTM激励的隐藏单元的不同版本的RNN。
更详细地,可以把解码每个单词的概率参数化为:
(2)
其中,是输出词汇大小向量的变换函数,是RNN隐藏单元,抽象地计算为:
(3)
在这里,根据之前的隐藏层计算了当前隐藏层,而且隐藏层可以是标准RNN单元,GRU,或者一个LSTM单元。在(Kalchbrennerand Blunsom, 2013; Sutskever et al., 2014; Cho et al., 2014; Luong et al.,2015)的工作中,词向量s只用了一次,来初始化解码器的隐藏层。另一方面,(Bahdanau etal., 2015; Jean et al., 2015)等人的工作中,s关联着一系列源隐藏层,这意味着,s在整个翻译过程中起着作用。这样的一项工作被称为注意力机制,我们将在下文中详细讨论这个机制。
在我们的工作中,我们用了(Sutskever et al.,2014;Luong et al., 2015)中提到的层叠LSTM结构,这种结构如图1所示。我们用了(Zaremba etal., 2015)中定义的LSTM单元。我们的训练目标由如下公式描述:`
(4)
其中,是我们的平行训练语料库。
3 基于注意力的模型
基于注意力的模型大致被分为两类,全局和局部。这两个种类的区别在于“注意力”被放置于所有的源位置还只被放置于一小部分源位置。我们分别在图2,图3中描述了这两个模型。
这两个模型的共同点是,在每个时刻t的解码过程中,二者都输入位于层叠LSTM顶层的隐层。其目标是得到上下文向量,所含的对应的源语言端信息有助于预测当前目标语言单词。虽然这些模型得到上下文向量的方式有所不同,它们接下来的步骤都是相同的。
特别地,根据目标隐层和源语言端上下文向量,我们设置了一个简单连接层来结合两个向量的信息,从而产生如下所示的注意力隐层:
(5)
注意力向量然后反馈到softmax层,产生如下所示的预测分布:
(6)
我们现在详细阐述每个模型怎样计算源语言层的上下文向量。
全局注意模型的思想是 ,在生成上下文向量时考虑编码器的所有隐层。在这个模型中,通过比较当前目标隐层与每个源隐层,得到一个大小等于源语言端时刻数的可变长度的对齐向量:
(7)
图2 全局注意模型—在每个时间节点,模型根据当前目标状态和所有的源状态得出一个变长对齐权重向量。然后一个全局上下文向量作为所有源状态的加权平均(权重为)算出。
在这里,表示基于内容的函数,我们有三种不同的计算方法:
(8)
除此之外,在我们早期建立基于注意力模型的尝试中,我们使用了基于位置的函数,在这个函数中,对齐分数只通过目标隐层计算:
(9)
设置对齐向量为权重,上下文向量通过源隐层的加权平均得到。
与(Bahdanau et al.,2015)比起来—虽然我们的全局注意力模型在本质上与Bahdanau等人提出的相似,我们的模型也有几个重要的不同点,这些不同反映了我们如何根据原始模型得到了简化模型和全局模型。首先,我们在编码和解码器中都仅仅用了LSTM顶层的隐藏状态,如图2所示。而Bahdanau et al.(2015)在双向编码器中用了源隐层状态的前向和反向级联,在非堆叠无向解码器中用了目标隐层状态。第二,我们的计算路径更加简便;我们的计算路径是,然后用公式5和公式6和图2做预测。而在任一时刻,Bahdanau et al.(2015)开始于上一个隐层,因此,在作出预测前经历了一个深度输出和maxout层。最后,Bahdanau et al.(2015)只针对concat这一种对齐函数做了试验;而我们会在随后证明其他计算方法更好。
全局注意有一个缺陷,其针对每一个目标单词都要考虑源端的所有单词。这种做法的内存消耗很大,还可能会导致其在翻译长序列(段落或文件)时不实用。为了克服这一缺陷,我们提出了局部注意机制,它对每个目标单词,只关注源端的一小部分单词。
这个模型的灵感来自于Xu et al.(2015)对图像标题产生任务的处理:软性和硬性注意模型的结合。在他们的工作中,软性注意对应全局注意,权重被“软性地”放置在源图的每个分块上。而硬性注意每个时间点只选择关注一个图像分块。即便大大缩短了推算时间,硬性注意还是有很多缺点:它不可导,而且需要如方差降低或强化学习这样复杂的训练技巧。
我们的局部注意机制有选择地关注于小范围的上下文,而且是可导的。这种方法有如下优点:它避免了软性注意中庞大的计算,同时,它比硬性方法更易训练。具体而言,这个模型在时刻首先为每个目标单词产生一个对齐位置。然后,上下文向量作为在范围内的源隐层状态的加权平均,被计算出来;是人为选取的。不像全局方法,局部对齐向量现在是固定维度的()下面我们考虑此模型的两个变体:
单调对齐(local-m)—我们简单地设,假设源句和目标句大致上是单调对齐的。对齐向量由公式7定义。
预测对齐(local-p)—不设两个句子单调对齐,我们的模型按照以下方式预测对齐位置:
(10)
和是将要被学习的,用来预测位置的模型参数。是源句长度。通过sigmoid函数的作用,。为了更侧重于附近的对齐点,我们以为中心设置了一个高斯分布。特别地,我们的对齐权重现定义如下:
(11)
我们用了与公式7一样的对齐函数,标准差被人为地设定为。值得注意的是,是一个实数;是一个在以为中心的窗口内的整数。
图3 局部注意模型—模型首先针对当前目标单词预测一个单对齐位置。然后以源位置为中心的窗被用于计算上下文向量,窗内源隐层的加权平均。权重通过当前目标状态和窗内的源状态得到。
与(Gregor et al.,2015)相比—他们针对图像生成提出了一个选择性注意力模型,与我们的局部注意相似。他们让模型在不同位置和焦距中选择一块图像。然而,我们对所有的目标位置使用了同样的“焦距",在极大简化公式的情况下仍然得到了好的结果。
在我们提出的全局和局部方法中,注意力是独立决策的,它的决策是次优的。然而,在标准机器翻译中,通常有一个保存了翻译过程中已经被翻译过的源单词的覆盖集。相似地,在基于注意力的神经机器翻译中,对齐决策应该联合地考虑过去的对齐信息。为了达到这一点,我们提出了一种输入馈送方法,在这种方法中,注意力向量连接了下一时刻的输入(如图4所示)。这样的连接有双重影响:(a)我们希望模型完全知道之前的对齐选择(b)我们创造了一个在水平和垂直方向都非常深的网络。
图4 输入反馈方法—注意力向量被反馈到下一时刻的输入,从而告知模型过去的对齐信息。
与其他方法相比—Bahdanau et al.(2015)用了与我们模型中的相似的上下文向量来构造后续隐层状态,这样也能达到“覆盖集”的效果。然而,他们没有对这种连接的有效性作分析。我们的模型更具有通用性;如图4所示,模型可用于很多层叠循环结构,包括非注意力模型。
Xu et al. (2015)提出了一种双注意力模型,将附加约束添加到训练目标以确保模型在字幕生成过程中平等看待图像的所有部分。这样的约束也可以用于捕获我们前面提到的神经机器翻译中的覆盖集效应。然而,我们选择用输入馈送模型,因为它为模型提供了灵活性,可以决定它认为合适的任何注意力约束。