摘要
神经(网络)机器翻译是最近提出来的应对机器翻译的模型。与传统的统计机器翻译不同,神经机器翻译旨在建立一个单个的神经网络,可以共同调整以最大化翻译性能(表现)。最近提出的神经机器翻译模型大多属于编码器-解码器的一种,编码器编码源语句到固定长度的向量,然后解码器基于该向量生成翻译结果。在本文,我们认为使用定长向量是提升这种基本的编码器-解码器结构性能的瓶颈,同时提出了允许模型自动(软)搜索与预测目标词相关的部分源语句的方法,而无需进行明确的分割。基于这种新方法,我们达到了与现有最先进的基于短语的系统在英法翻译任务中相同的表现。此外,定性分析表明,我们模型发现的软对齐方式与我们的直觉一致。
对齐指的是将源句子中的单词与目标句子中的单词匹配。
1 简介
神经机器翻译是最近兴起的应用于机器翻译的模型。不同于传统的基于短语的翻译系统——包含很多分别调整的小成分,神经机器翻译尝试建立和训练一个单个的、大的神经网络,能读入一个句子并输出正确的翻译。
大多数神经机器翻译模型都属于编码器-解码器系列,两种语言分别对应一个编码器和解码器,或者将某个特定语言的编码器应用在某个句子上,并比较它们的输出。编码器负责读取并编码源语句到定长向量,解码器再基于此向量生成翻译。整个编码器-解码器系统,是由针对某种语言对(比如中英翻译)的编码器和解码器组成,一般是联合训练以最大化基于给定源语句的正确翻译概率。
这种编码器-解码器系统存在的问题是,神经网络需要将源语句所有必要的信息压缩到一个定长向量中。这使得该模型很难应对长语句,尤其是比训练语句更长的语句。Cho等人研究表明基本的编码器-解码器的表现随着输入语句的变长迅速下降。
为了解决这个问题,我们提出了一种编码器-解码器模型的扩展版,能联合学会对齐和翻译。每当该模型生成一个单词时,它会软搜索源语句中的最相关信息的位置集。然后,该模型基于这些位置的上下文向量和所有之前生成的目标词来预测下一个目标词。
该方法和基础的编码器-解码器模型最大的区别是,它没有尝试编码整个输入序列到某个定长向量。而是编码输入语句到一个向量序列集,并在解码时相应地选择向量子集。这使得神经网络翻译模型避免压缩所有的源语句信息(而不管语句长度)到一个定长向量。我们会表明这可以使模型能更好的处理长语句。
在本文中,我们证明了提出的对齐和翻译联合学习的方法比基础的编码器-解码器方法有显著的提升。这种提升在长语句中更明显,也能在任意长度的语句中体现。在英法翻译任务中,我们提出的方法,只用了单个模型就可以接近基于短语的翻译系统水平。此外,定性分析表明该模型找到了语言上合理的源语句和对应目标语句的(软)对齐。
2 背景:神经机器翻译
从概率学的角度来看,翻译等同于找到能最大化给定源语句 x x x生成 y y y的条件概率的 y y y: arg max y p ( y ∣ x ) \arg\,\max_y p(y|x) argmaxyp(y∣x)。在神经机器翻译中,我们使用并行训练语料库的句子对拟合参数化模型以使条件概率最大化。一旦该条件分布被翻译模型学到,给定一个源语句,就能通过搜索最大化条件概率的句子找到对应的翻译。
近来,有大量的学者提出了使用神经网络直接去学习该条件分布的方法。这种神经机器翻译模型通常包含两个部分,第一部分编码源语句 x x x,然后第二部分解码生成目标语句 y y y。比如,有学者使用两个循环神经网络分别编码变长源语句到定长向量,和解码此向量到变长目标语句。
尽管这是一种全新的方法,但神经机器翻译已经显示了不错的结果。在英法翻译任务中,Sutskever等人提出的基于使用LSTM单元的循环神经网络模型的表现十分接近于最先进的基于短语的机器翻译系统。通过在现存的翻译系统上增加神经网络组件,比如,对短语表中的短语对打分或对候选翻译进行重新排序,已经超过了之前最好的水平。
2.1 RNN 编码器-解码器
这里,我们简要介绍下底层的框架,称为RNN编码器-解码器(RNN Encoder-Decoder),由Cho等人和Sutskever等人提出。基于此我们提出一种新颖的结构,能同时学习对齐和翻译。
在这个编码器-解码器框架中,编码器读取并编码输入语句
x
=
(
x
1
,
x
2
,
⋯
,
x
T
x
)
x=(x_1,x_2,\cdots,x_{T_x})
x=(x1,x2,⋯,xTx)到向量
c
c
c。最常用的方法是使用RNN计算:
h
t
=
f
(
x
t
,
h
t
−
1
)
(1)
h_t = f(x_t,h_{t-1}) \tag{1}
ht=f(xt,ht−1)(1)
和
c
=
q
(
h
1
,
⋯
,
h
T
x
)
c = q(h_1,\cdots,h_{T_x})
c=q(h1,⋯,hTx)
其中
h
t
∈
R
n
h_t \in R^n
ht∈Rn是时刻
t
t
t的隐藏状态,
c
c
c是由该隐藏状态序列生成的向量。
f
f
f和
q
q
q是非线性函数。比如,Sutskever等人使用了LSTM作为
f
f
f和
q
{
h
1
,
⋯
,
h
T
}
)
=
h
T
q\{h_1,\cdots,h_T\})=h_T
q{h1,⋯,hT})=hT。
解码器通常被训练来预测下一个单词
y
t
′
y_{t^\prime}
yt′,在给定上下文向量
c
c
c和所有之前的预测单词
{
y
1
,
⋯
,
y
t
′
−
1
}
\{y_1,\cdots,y_{t^\prime -1} \}
{y1,⋯,yt′−1}之后。换言之,解码器通过将联合概率分解为有序的条件概率来定义在翻译
y
y
y上的概率:
p
(
y
)
=
∏
t
=
1
T
p
(
y
t
∣
{
y
1
,
⋯
,
y
t
−
1
}
,
c
)
(2)
p(y) = \prod_{t=1}^T p(y_t|\{y_1,\cdots,y_{t-1}\},c) \tag{2}
p(y)=t=1∏Tp(yt∣{y1,⋯,yt−1},c)(2)
其中
y
=
(
y
1
,
⋯
,
y
T
y
)
y=(y_1,\cdots,y_{T_y})
y=(y1,⋯,yTy)。通过RNN模型,每个条件概率被描述为:
p
(
y
t
∣
{
y
1
,
⋯
,
y
t
−
1
}
,
c
)
=
g
(
y
t
−
1
,
s
t
,
c
)
(3)
p(y_t|\{y_1,\cdots,y_{t-1}\},c) = g(y_{t-1},s_t,c) \tag{3}
p(yt∣{y1,⋯,yt−1},c)=g(yt−1,st,c)(3)
g g g是非线性的,可能是多层的函数,输出 y t y_t yt的概率。 s t s_t st是RNN的隐藏状态。值得注意的是,其他结构比如RNN的混合和反卷积神经网络也能被使用。
3 学习对齐和翻译
在本节,我们提出了一个全新的结构。该结构包含一个双向RNN作为编码器,和一个在解码生成翻译时模拟搜索源语句的解码器(见3.1)。
3.1 解码器:概述
在新的模型结构中,我们定义了等式 ( 2 ) (2) (2)中的每个条件概率为:
p
(
y
i
∣
y
1
,
⋯
,
y
i
−
1
,
x
)
=
g
(
y
i
−
1
,
s
i
,
c
i
)
(4)
p(y_i|y_1,\cdots,y_{i-1},x) = g(y_{i-1},s_i,c_i) \tag{4}
p(yi∣y1,⋯,yi−1,x)=g(yi−1,si,ci)(4)
其中
s
i
s_i
si是RNN时刻
i
i
i的隐藏状态,计算如下:
s
i
=
f
(
s
i
−
1
,
y
i
−
1
,
c
i
)
s_i = f(s_{i-1},y_{i-1},c_i)
si=f(si−1,yi−1,ci)
可以发现,和现有的编码器-解码器(见公式 ( 2 ) (2) (2))不同的是,这里的条件概率是基于每个目标词 y i y_i yi不同的上下文向量 c i c_i ci进行计算的(公式 ( 4 ) (4) (4))。
上下文向量 c i c_i ci取决于编码器将输入序列映射的序列 ( h 1 , ⋯ , h T x ) (h_1,\cdots,h_{T_x}) (h1,⋯,hTx)。每个记号 h i h_i hi都包含带有重点关注输入序列第 i i i个单词附近的部分单词的整个输入序列的信息。我们在下一节会详细解释这些记号是如何计算的。
上下文向量
c
i
c_i
ci就通过这些
h
i
h_i
hi的加权和计算:
c
i
=
∑
j
=
1
T
x
α
i
j
h
j
(5)
c_i = \sum_{j=1}^{T_x} \alpha_{ij}h_j \tag{5}
ci=j=1∑Txαijhj(5)
其中每个记号
h
i
h_i
hi对应的权重
α
i
j
\alpha_{ij}
αij通过如下公式计算:
α
i
j
=
e
x
p
(
e
i
j
)
∑
k
=
1
T
x
e
x
p
(
e
i
k
)
(6)
\alpha_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{T_x} exp(e_{ik})} \tag{6}
αij=∑k=1Txexp(eik)exp(eij)(6)
其中
e
i
j
=
a
(
s
i
−
1
,
h
j
)
e_{ij} = a(s_{i-1},h_j)
eij=a(si−1,hj)
是一个对齐模型,它计算位置
j
j
j附近的输入与位置
i
i
i处的输出匹配得分。这个得分基于RNN隐藏状态
s
i
−
1
s_{i-1}
si−1(在公式
(
4
)
(4)
(4)中出现)和输入语句的
h
j
h_j
hj。
我们将对齐模型 a a a参数化为前馈神经网络,它会与我们模型所有其他部分一起训练。与传统的机器翻译模型不同的是,对齐不被当成隐变量(latent variable),而是对齐模型直接计算能进行反向传播梯度的一个软对齐。该梯度能同时用于训练对齐模型和整个翻译模型。
我们可以把这种将所有记号进行加权求和的方法看成是计算期望记号的方法,这里的期望记号基于所有可能的对齐。我们说 α i j \alpha_{ij} αij能计算目标词 y i y_i yi对齐到或转换于源单词 x j x_j xj的概率。那么,第 i i i个上下文向量 c i c_i ci就是所有具有概率 α i j \alpha_{ij} αij的记号中的期望记号。
概率 α i j \alpha_{ij} αij,或它相关的 e i j e_{ij} eij,反映了记号 h j h_j hj对于前一个隐藏状态 s i − 1 s_{i-1} si−1在决定下一个状态 s i s_i si和生成 y i y_i yi时的重要性。直观地,这在解码器中实现了一种注意力机制。解码器决定要注意源语句的哪部分。通过使解码器具有注意力机制,我们打破了解码器需要编码源语句所有信息到定长向量的束缚。在这种新方法中,相关信息能通过记号序列传播,就能选择性地被解码器对应地检索。
3.2 编码器:用于记号序列的双向RNN
一般的RNN,像等式 ( 1 ) (1) (1)描述的那样,顺序地从第一个符号 x 1 x_1 x1到最后一个符号 x T x x_{T_x} xTx读取输入序列 x x x。然而,在我们提出的方法中,我们希望每个单词的记号不仅总结了前面的单词,而且总结了后面的单词信息。因此,我们使用一个双向RNN(BiRNN),这种结构近来在语音识别中应用的很成功。
BiRNN由前向和反向RNN组成,前向RNN f → \overset{\rightarrow}{f} f→顺序地读取输入序列(从 x 1 x_1 x1到 x T x x_{T_x} xTx)然后计算前向的隐藏状态序列 ( h → 1 , ⋯ , h → T x ) (\overset{\rightarrow}{h}_1,\cdots,\overset{\rightarrow}{h}_{T_x}) (h→1,⋯,h→Tx)。 反向RNN f ← \overset{\leftarrow}{f} f←逆序地读取输入序列(从 x T x x_{T_x} xTx到 x 1 x_1 x1),计算反向的隐藏状态序列 ( h ← 1 , ⋯ , h ← T x ) (\overset{\leftarrow}{h}_1,\cdots,\overset{\leftarrow}{h}_{T_x}) (h←1,⋯,h←Tx)。
我们将每个单词 x j x_j xj的前向隐藏状态 h → j \overset{\rightarrow}{h}_j h→j和反向的 h ← j \overset{\leftarrow}{h}_j h←j联立起来,得到记号 h j = [ h → j T ; h ← j T ] T h_j = \left[\overset{\rightarrow}{h}_j^T;\overset{\leftarrow}{h}_j^T \right]^T hj=[h→jT;h←jT]T。这样,记号 h j h_j hj同时总结了前面的单词和后面的单词。由于RNN能更好地表示最近的输入,记号 h j h_j hj会关注于单词 x j x_j xj周围的单词。这种记号序列后面会被用于解码器和对齐模型来计算上下文向量(公式 ( 5 ) − ( 6 ) (5)-(6) (5)−(6))。
该模型的图形化描述见图1。
4 实验设置
4.1 数据
略
4.2 模型
我们训练了两种模型。第一种是传统的RNN编码器-解码器(RNNencdec),另一种是我们提出的模型,记为RNNsearch。每个模型训练了两次:第一次用最大长度为30个单词的句子(训练得到RNNencdec-30,RNNsearch-30),第二次用最长50个单词的序列(得到RNNencdec-50,RNNsearch-50)。
RNNencdec的编码器和解码器有1000个隐藏单元。RNNsearch的编码器由前向和反向循环神经网络组成,每个网络有1000个隐藏单元。解码器也有1000个隐藏单元。在这两种情况中,我们都使用具有一个maxout隐藏层的多层神经网络来计算每个目标词的条件概率。
我们使用一个小批次随机梯度下降算法结合Adadelta优化方法来训练每个模型。批次大小为80,每个模型训练了几乎5天。
当模型训练好后,我们使用束搜索来寻找使条件概率最大的最好的翻译语句。Sutskever等人使用了该方法来基于他们的神经网络机器翻译模型生成翻译结果。
5 结果
5.1 定量结果
在表1中,我们列出了翻译结果的BLEU得分。从中可以看出,在任何情况下RNNsearch都优于传统的RNNencdec。更重要的是,RNNsearch的得分和传统的基于短语的翻译系统(Moses)一样高,而且只考虑了由已知单词组成的语句。这是一个重要的成就,考虑到Moses同时使用了一个单语言语料库(4.18亿个单词)和我们训练RNNsearch和RNNencdec使用的语料库。
我们提出的方法背后的动机之一是(解决)使用在基础的编码器-解码器方法中的一个定长的上下文向量(的限制)。我们认为这个限制可能使基础的编码器-解码器方法在长语句中表现不佳。在图2中,我们看到RNNencdec的表现随着语句长度的增加显著地下降。另一方面,RNNsearch-30和RNNsearch-50对语句的长度表现的更加健壮。RNNsearch50的表现甚至在超过50个单词的语句中没有明显地下降。RNNsearch-30甚至优于RNNencdec-50这一事实进一步确认了我们提出的模型对于传统编码器-解码器的优势。
5.2 定性分析
5.2.1 对齐
我们的方法提供了一种直觉的方式来检查在源语句和生成的翻译语句中的单词的(软)对齐。这可以通过可视化权重 α i j \alpha_{ij} αij来实现,如图3所示。每个图表中矩阵的每行显示与记号相关的权重。从中可以看出在生成目标词时,源语句中的哪些位置被认为更重要。
从图3可以看到,英法单词之间的对齐基本是单调的。我们能从矩阵的对角线上看到很大的权重。然而,也能看到一些不重要的、非单调的对齐。英法之中的形容词和名词通常排列不一样,例如图3(a)中,模型正确地翻译了短语[European Economic Area]到[zone economique europ ´ een]。RNNsearch能正确对齐[zone]和[Area],跳过了两个单词[European]和[Economic],然后每次回头看一个单词来完成整个短语[zone economique europ ´ eenne]。
和硬对齐不同的是,软对齐的强大是显然的。比如从图3(d)来看,考虑源短语[the man]被翻译为[l’ homme]。任何硬对齐都会映射[the]到[l’],[man] 到[homme],但这对翻译没啥帮助,因为必须考虑[the]后面的单词来决定是否被翻译为[le]、[la]、[les]或[l’]。我们的软对齐方式通过让模型同时看[the]和[man]自然地解决了这个问题。并且在这个例子中,我们看到模型能正确翻译[the]到[l’]。我们能在图3中所有短语例子中看到相似的行为。软对齐的额外优势是它自然地处理了源短语和目标短语具有不同的长度问题,而不需要一些反直觉的范式把一些词映射到([NULL])或从([NULL])映射。
5.2.2 长语句
从图2明确看到的是,RNNsearch在翻译长语句方面比传统的RNNencdec好多了。这是因为RNNsearch不需要完美地将一个长语句编码到定长向量中,只需要准确地编码输入语句中特定词周围的部分单词。
举个例子,考虑测试集中的这条语句:
RNNencdec-50翻译这条语句为:
RNNencdec-50基本上正确地翻译了这个源语句直到[a medical center]。然而,从下划线位置开始,它的翻译偏离了源语句的本义。比如它将[based on his status as a health care worker at a hospital](基于他在医院担任卫生保健工作者的身份)翻译为[enfonction de son ́etat de sant ́e] (“based on his state of health” 基于他的健康状况).
另一方面,RNNsearch-50生成了下面正确的翻译,保存了整个源句子的语义而没有忽略任何细节:
从中可以看出,这些定性观察结果证实了我们的假设,即RNNsearch架构可以实现对长语句的翻译比传统的RNNencdec模型好。
6 相关工作
略
7 总结
传统的神经机器翻译途径——编码器-解码器,编码整个输入语句到定长向量。我们认为这种定长向量对翻译长语句不利。
在本文,我们提出了一种新的架构来解决这个(长语句翻译)问题。当生成每个目标词时,我们扩展了基本的编码器-解码器模型,让模型可以(软)搜索输入单词集合或被编码器计算的单词的标记。这使模型不必编码整个输入序列到定长向量,且让模型只关注要生成的下个目标词相关的信息。这使神经机器翻译系统能在较长语句中取得良好翻译效果。不像传统的机器翻译系统,我们这个系统所有部分,包括对齐机制,都是同时训练以达到产生正确翻译的对数概率更大。
我们提出的模型,称为RNNsearch,在英法翻译任务上进行测试。实验表明RNNsearch远优于传统的编码器-解码器模型,而不论句子长度如何且对源语句的长度更健壮。从定性分析中,我们调查了RNNsearch生成的(软)对齐,我们能得出结论,模型能正确地在源语句中对齐每个目标词相关的单词或它们的记号,从而产生正确的翻译结果。
可能更重要的是,我们提出的模型翻译效果能媲美现存基于短语的统计机器翻译模型。这是个引人注目的结果,因为我们提出的模型或所有的神经机器翻译模型,只是在最近才被提出。我们认为这里提出的架构是朝着更好的方向迈出的有希望的一步,能让机器翻译对自然语言有更好的理解。
未来的一个挑战是如何更好的处理未知或稀有单词。这需要将模型得到更广泛的应用并与当前最新技术的性能相匹配。