Neural Machine Translation by Jointly Learning to Align and Translate

Neural Machine Translation by Jointly Learning to Align and Translate

神经机器翻译是最近提出的一种机器翻译方法。与传统的统计机器翻译不同,神经机器翻译的目的是建立一个单一的神经网络,可以共同调整,使翻译性能最大化。最近提出的神经机器翻译的模型通常属于编码器-解码器家族,并将源句编码成一个固定长度的向量,解码器从中生成译文。在本文中,我们猜测使用固定长度的向量是提高这种基本编码器-解码器架构性能的瓶颈,并提出通过允许模型自动(软)搜索源句中与预测目标词相关的部分,without having to form these parts as a hard segment explicitly。通过这种新方法,我们在英法翻译任务上取得了与现有的基于短语的系统相当的翻译效果。此外,定性分析表明,模型发现的(软)对齐与我们的直觉很好地吻合。

1 Introduction

神经机器翻译是一种新兴的机器翻译方法,最近由Kalchbrenner和Blunsom(2013),Sutskever等人提出。(2014)和Cho等人。(2014年b)。与传统的基于短语的翻译系统(参见,例如Koehn等人,2003)不同,神经机器翻译试图构建和训练一个单一的、大型的神经网络,该网络可以阅读句子并输出正确的翻译。

大多数提出的神经机器翻译模型属于编码器-解码器家族(Sutskever等人,2014;Cho等人,2014a),每一种语言都有一个编码器和一个解码器,或者涉及一个应用于每个句子的语言特定编码器,然后对其输出进行比较(Hermann和Blunsom,2014)。编码器神经网络读取并将源句子编码成一个固定长度的向量。然后,一个解码器从编码向量中输出一个翻译。整个编码器-解码器系统由一个语言对的编码器和解码器组成,经过联合训练,以最大限度地提高给定源句的正确翻译概率。

这种编码器-解码器方法的一个潜在问题是,神经网络需要能够将源句子的所有必要信息压缩成一个固定长度的向量。这可能会使神经网络难以应对长句子,尤其是那些比训练语料库中的句子更长的句子。Cho等人(2014b)表明,确实随着输入句子长度的增加,基本编码器-解码器的性能会迅速恶化。

为了解决这个问题,我们在编解码器模型的基础上引入了一个扩展,该模型可以学习联合对齐和翻译。每次在译文中生成一个词时,它(软)搜索源句中最相关信息集中的一组位置。然后,该模型基于与这些源位置相关联的上下文向量和所有先前生成的目标词来预测目标词。

这种方法与基本的编解码器最重要的区别在于它不试图将整个输入句子编码成一个固定长度的向量。相反,它将输入句子编码成一系列向量,并在解码时自适应地选择这些向量的子集。这使得神经翻译模型不必把源句子的所有信息压缩成一个固定长度的向量,而不必考虑它的长度。我们展示了这使得模型能够更好地处理长句。

在本文中,我们表明,所提出的联合学习对齐和翻译的方法比基本的编码器-解码器方法实现了显著改善的翻译性能。这种改进在长句子上更为明显,但在任何长度的句子上都可以观察到。在英语到法语的翻译任务上,所提出的方法在单一模型的情况下,实现了与传统的基于短语的系统相当或接近的翻译性能。此外,定性分析表明,所提出的模型能够在源句和相应的目标句之间找到语言上可信的(软)对齐。

2 Background: Neural Machine Translation

从概率的角度来看,翻译相当于在给定源语句x的情况下找到一个使y的条件概率最大化的目标句y,即 a r g    m a x y p ( y x ) arg \,\,max_y p(y|x) 。在神经机器翻译中,我们采用一个参数化的模型来最大化句子对的条件概率。一旦条件分布被翻译模型学习,给定一个源句子,通过搜索条件概率最大的句子就可以生成相应的翻译。

最近,一些论文提出使用神经网络直接学习条件分布(参见,例如,Kalchbrenner和Blunsom,2013;Cho等人,2014a;Sutskever等人,2014;Cho等人,2014b)。这种神经机器翻译方法通常由两部分组成,第一部分对源句x进行编码,第二部分解码到目标句y.例如,(Cho等人,2014a)和(Sutskever等人,2014)使用两个循环神经网络(RNN)将一个可变长度的源句编码成一个固定长度的向量,并将该向量解码成一个可变长度的目标句。

尽管神经机器翻译是一种新的方法,但它已经显示出了很好的结果。Sutskever等人。(2014)报告称,基于具有长短时记忆(LSTM)单元的RNN的神经机器翻译在英法翻译任务上达到了传统短语机器翻译系统的最先进性能。神经机器翻译系统的性能超过了现有翻译系统系统,当作为现有系统的一部分使用时,例如,对短语表中的短语对进行评分(Cho等人,2014a)或对候选翻译重新排序(Sutskever等人,2014)。

2.1 RNN Encoder–Decoder

在这里,我们简单介绍一下Cho等人(2014a)和Sutskever等人(2014)提出的名为RNN Encoder-Decoder的底层框架,在此基础上,我们构建了一个全新的架构,可以同时学习对齐和翻译。

在编码器-解码器框架中,编码器将输入的句子,即一个向量序列 x = ( x 1 , . . . , x T x ) \mathbb x=(x_1,...,x_{T_x}) ,编码成一个向量 c c (into a vector c)。最常见的方法是使用RNN,如

h t = f ( x t , h t 1 ) h_t=f(x_t,h_{t-1})

c = q ( { h 1 , . . . , h T x ) c=q(\{h_1,...,h_{T_x})

其中, h t R n h_t\in \mathbb R^n 为t时刻的隐藏状态,而 c c 是由隐藏状态序列生成的向量。 f f q q 是一些非线性函数。Sutskever et al. (2014) 用LSTM作为 f f q ( { h 1 , . . . , h T } ) = h T q(\{h_1,...,h_T\})=h_T

解码器通常被训练成预测下一个词 y t y_{t'} ,给定上下文向量 c c 和所有之前预测的词 { y 1 , . . . , y t 1 } \{y_1,...,y_{t'-1}\} 。换句话说,解码器通过将联合概率分解为有序条件来定义翻译y上的概率。

在这里插入图片描述

其中 y = ( y 1 , . . . , y T y ) \mathbb y=(y_1,...,y_{T_y}) 。通过RNN,每个条件概率被建模为

在这里插入图片描述

其中 g g 是一个非线性的,可能是多层的,输出 y t y_t 概率的函数, s t s_t 是RNN的隐藏状态。需要注意的是,还可以使用其他架构,如RNN和de-convolutional神经网络的混合体(Kalchbrenner和Blunsom,2013)。

3 学习对齐和翻译

在本节中,我们提出了一种新型的神经机器翻译架构。新的架构由一个双向RNN作为编码器(Sec.3.2)和一个解码器组成,在解码翻译过程中模拟搜索源句(Sec.3.1)。

3.1解码器

在这里插入图片描述

图1:所提出的模型给定源句 ( x 1 , x 2 , . . . , x T ) (x_1,x_2,...,x_T) 试图生成第t个目标词 y t y_t 的图形说明。

在新的模型架构中,我们将式(2)中的每个条件概率定义为:

在这里插入图片描述

s i s_i 是decoder的在 i i 时刻的隐状态,计算公式为:

在这里插入图片描述

应该注意的是,与现有的编码器-解码器方法(参见公式(2))不同,这里的概率取决于每个目标词 y i y_i 的不同的context vector c i c_i 。context vector c i c_i 取决于被编码器将输入句子映射到的一系列annotations序列 ( h 1 , . . . , h T x ) (h_1,...,h_{T_x}) 。每个annotations h i h_i 都包含了整个输入序列的信息,并重点关注输入序列中第i个词周围的部分(双向LSTM)。我们在下一节详细解释如何计算注释。

然后,context vector c i c_i 计算为这些annotations h i h_i 的加权和:

在这里插入图片描述

α i , j \alpha_{i,j} 的计算公式为

在这里插入图片描述

其中 e i , j = a ( s i 1 , h j ) e_{i,j}=a(s_{i-1},h_j) 是一个对齐模型,它对位置 j j 周围的输入和位置 i i 的输出的匹配程度进行打分。该得分是基于RNN隐藏状态 s i 1 s_{i-1} (就在emitting y i y_i 之前,Eq. (4)和输入句子的第 j j 个annotation h j h_j

我们将alignment model a a 参数化为一个前馈神经网络,该网络与所提出系统的所有其他组件进行联合训练。需要注意的是,与传统的机器翻译不同的是,alignment不被认为是一个潜变量(latent variable)。相反,alignment model直接计算一个soft alignment,它允许损失函数的梯度被反向传播通过。这个梯度可以用来训练alignment model以及联合训练整个翻译模型。

在这里插入图片描述

概率 α i j \alpha_{ij} ,或其associated energy e i j e_{ij} ,反映了annotation h j h_j 相对于前一个隐藏状态 s i 1 s_{i-1} 在决定下一个状态 s i s_i 和生成 y i y_i 方面的重要性。直观地说,这在解码器中实现了一种注意力机制。解码器决定对源句的部分进行关注。通过让解码器拥有注意力机,我们减轻了编码器将源句中的所有信息编码成一个固定长度向量的负担。通过这种新的方法,信息可以分布在整个注释序列中,解码器可以据此有选择地检索这些信息。

3.2 Encoder: Bidirectional RNN for Annotating Sequences The usual

通常的RNN,在Eq.(1)中描述,按照从第一个符号 x 1 x_1 开始到最后一个符号 x T x x_{T_x} 的顺序读取输入序列x。然而,在建议的方案中,我们希望每个词的注释不仅能概括前面的词,还能概括下面的词。因此,我们建议使用双向RNN(BiRNN,Schuster和Paliwal,1997),它最近已经成功地用于语音识别(见,例如,Graves等人,2013)。

BiRNN由前向和后向RNN组成。前向RNN f \vec f 按顺序读取输入序列(从 x 1 x_1 x T x x_{T_x} ) 且计算前向隐藏状态的序列 ( h 1 , . . . , h T x ) (\vec h_1,...,\vec h_{T_x}) 。后向RNN f \overleftarrow f 以相反的顺序读取序列(从 x T x x_{T_x} x 1 x_1 ),得到一连串的backward隐藏状态 ( h 1 , . . . , h T x ) (\overleftarrow h_1,...,\overleftarrow h_{T_x})

我们通过连接前向隐藏状态 h j \vec h_j 和后向隐藏状态 h j \overleftarrow h_j 为每个词 x j x_j 获得一个annotation,如 h j = [ h j h j ] h_j=[\overrightarrow h_j^\top,\overleftarrow h_j^\top] 。这样一来,annotation h j h_j 就包含了前面的词和后面的词的摘要。由于RNNs倾向于更好地表示最近的输入,annotation h j h_j 将集中在 x j x_j 周围的词上。这个annotation序列在后面被解码器和对齐模型用来计算context vector(公式(5)-(6))。

所提出的模型的图示见图1。

3.3 Architectural Choices

所提出的方案是一个通用的框架,在这个框架中,人们可以自由定义,例如,循环神经网络(RNN)的激活函数f和对齐模型a,在这里,我们描述了我们在本文实验中的选择。

3.3.1 Recurrent Neural Network

对于RNN的激活函数 f f ,我们使用Cho等人(2014a)最近提出的门控隐藏单元。门控隐藏单元是传统的简单单元的替代方案,如element-wise tanh。这种门控单元类似于Hochreiter和Schmidhuber(1997)较早提出的长短期记忆(LSTM)单元,与之共享的是更好地建模和学习长期依赖性的能力。通过在展开的RNN中拥有计算路径,使之成为可能,这些路径的导数乘积接近于1。这些路径允许梯度很容易向后流动,而不会受到太多的消失效应的影响(Hochreiter,1991;Bengio等人,1994;Pascanu等人,2013a)。因此,可以使用LSTM单元代替这里描述的门控隐藏单元,正如Sutskever等人(2014)在类似情况下所做的那样。

采用n个门控隐藏单元的RNN的新状态si的计算方法为

在这里插入图片描述

其中 \circ 是element-wise multiplication, z i z_i 是更新门的输出(见下文)。Thep roposed updated state s ~ i \widetilde s_i 的计算公式为:

在这里插入图片描述

其中 e ( y i 1 ) R m e(y_{i-1})\in\mathbb R^{m} 是一个word y i 1 y_{i-1} 的m维嵌入, r i r_i 是reset gates的输出(见下文)。 y i y_i 代表一个1-of-K vector, e ( y i ) e(y_i) 是一个embedding矩阵 E R m × K E\in\mathbb R^{m\times K} 的简单列。只要有可能,我们就省略偏项,使方程不至于太杂乱。

update gates z i z_i 允许每个隐藏单元保持其先前的激活状态,reset gates r i r_i 控制前一个状态的信息应该被重置多少和哪些信息。我们通过以下方式计算它们

在这里插入图片描述

其中 σ ( ) \sigma(\cdot) 是logistic sigmoid function。

在解码器的每一步,我们将输出概率(式(4))计算为一个多层函数(Pascanu等人,2014)。我们使用maxout单元的单个隐藏层(Goodfellow等人,2013),并使用softmax函数对输出概率(每个词一个)进行归一化(见Eq. (6)).

3.3.2 Alignment Model

设计alignment mo时应考虑到,对于长度为 T x T_x T y T_y 的每一个句子对,需要对模型进行 T x × T y T_x \times T_y 次评估。为了减少计算量,我们采用single-layer multilayer perceptron,这样就可以做到

设计alignment mo时应考虑到,对于长度为 T x T_x T y T_y 的每一个句子对,需要对模型进行 T x × T y T_x \times T_y 次评估。为了减少计算量,我们采用single-layer multilayer perceptron,这样就可以做到

在这里插入图片描述