Abstract
与传统的统计机器翻译有所不同,神经机器翻译致力于构建一个神经网络,可以共同调整以最大化翻译性能。最近提出的神经机器翻译模型都是属于Encoder-Decoder系列,将源语言句子编码成为固定长度的向量,然后解码生成目标语言的翻译结果。在这篇论文中我们猜测固定长度的向量表示是提升基础encoder-decoder架构性能的瓶颈,为此,作者允许模型自行搜索与目标词汇相关的上下文,即Attention机制。使用这个新方法,作者在英法翻译任务上达到了SOTA。通过定性分析发现,模型发现的对齐方式符合我们的直觉。
1. Introduction
首先介绍了神经机器翻译的提出,不像传统的基于短语的机器翻译一样,包含了很多可以单独调整的小组件,神经机器翻译尝试去构建一个神经网络模型,输入一个句子,输出一个正确的翻译句子。
大部分提出的神经机器翻译模型都是属于Encoder-Decoder系列,整个encoder-decoder系统包含一个针对语言对的编码器和解码器,二者一起训练来最大化给定的源语言句子产生对应正确的翻译句子的概率。
有个潜在的问题是需要将源语言的句子的信息整个压缩到一个固定长度的向量,但这对长句子来说可能有些困难,Cho, K等学者发现随着输入句子长度的增加,基础的encoder-decoder架构的性能会急速下降。
为了解决这个问题,作者介绍一种encoder-decoder的扩展——共同学习去对齐和翻译,在翻译的过程中每次生成一个单词,模型将会搜索源语言句子中与目标词汇最相关的信息,然后模型基于上下文向量预测目标词汇。
作者提出的方法与之前的方法最大的区别就是不会去尝试去把整个句子编码成固定长度的句子,相反把源语言句子编码成一系列向量,然后在解码的过程中自适应的选择向量的子集去翻译,这对于处理长句子很有效。
在这篇文章中,作者提出的共同学习对齐和翻译的方法性能超过了原有的encoder-decoder方法,这个提升对于长句子是更为明显的。在英法翻译的任务上,提出的方法单模型翻译性能远超传统的翻译模型。更进一步,通过定性分析发现,作者提出的模型在源句子和相应的目标句子之间找到一种语言上合理的(软)对齐方式。
2. Background:Nerual Machine Translation
从概率的视角,机器翻译就是已知源语言句子,和目标语言句子来
作为一种新方法,神经机器翻译已经表现出不俗的效果,Sutskever等学者发现基于带LSTM单元的RNNs在英法翻译任务上已经超过了传统基于短语的机器翻译的系统,取得了SOTA的效果。
2.1 RNN Encoder-Decoder
首先简要的介绍一下RNN Encoder-Decoder这个底层的框架:
编码器读入一个句子,,将这个向量变成一个向量,最常用的方法就是RNN,, ,其中都是非线性的激活函数。
解码器通过给定上下文向量和之前的已经生成的词汇来预测下一时刻的词汇,换句话说解码器定义了翻译结果y的概率分布:,其中,有了RNN,每个条件概率可以被描述成 ,其中是一个非线性激活函数,输出的概率,是RNN的一个隐层状态。
3. Learning to Align and Translate
本节,作者提出了一个新的神经机器翻译的结构,其中包含双向的RNN作为编码器,和一个解码器,解码器在翻译的过程中搜索源语言句子。
3.1 Decoder:General Description
在新的模型结构里,我们定义条件概率为:,,其中是RNN的i时刻的隐层状态,。跟之前不一样的是这里对于每个目标词汇都有一个上下文向量。
上下文向量其实是注解序列的线性组合:
其中的权重的计算方式:
,其中
在本文中作者使用输入连结后通过含单隐藏层的多层感知机变换:
其中,,都是可以学习的模型参数
是一个对齐模型,衡量输入句子的第个词汇与输出结果的第个词汇之间的相关匹配程度,其中是RNN的隐层状态,是输入序列第个位置的状态序列。
需要注意的是在该模型中对齐模型和翻译模型一起训练。
:可以认为是目标词汇从源语言词汇翻译或对齐来的概率;
:也就是所有状态序列在为概率下期望;
或者反映了源语言状态序列和目标语言上一时刻的隐层输出对于产生下一个隐状态和生成的重要性程度,这就实现了在解码器端的注意力机制。
:可以看作是目标语言和源语言表示的一种统一化,即把源语言和目标语言表示映射在同一个语义空间,比如向量乘法、向量夹角、线性模型等等。
注意力机制的解读:
实际上,目标语位置本质上是一个查询,我们希望从源语言端找到与之最匹配的源语言位置,并返回相应的表示结果,为了描述这个问题,可以建立一个查询系统,里面包含若干key-value单元,每次查询时就把query与key逐个进行匹配,如果匹配成果就返回value,对应到机器翻译中不总是能够完全匹配上,注意力机制就采用了一个“模糊”匹配的方法,对key和value之间定义一个0~1的匹配度,记为,查询的结果也不是简单的value,而是所有value用的加权和,也就是说所有的value都会对查询结果有贡献,只是贡献不同罢了,使用来捕捉key和query之间的相关性,相关性越大贡献越大。 从统计学的角度,作为每个 出现的概率的某种估计,新的value就是在对应的概率下的期望,从这个观点看注意力机制是得到了的一种期望。 参考:《机器翻译:统计建模与深度学习方法》 肖桐 朱靖波著
3.2 Encoder:Bidirectional RNN for Annotating Sequences
以往的RNN,都是从句子第一个符号读到最后一个符号。然而,我们想要让注释不仅囊括之前的信息,还要包含之后的信息,所以我们采用双向RNN。BiRNN包含前向RNN和反向RNN,前向RNN读入序列,得到前向的隐层状态序列,反向的RNN读入序列,得到前向的隐层状态序列,当对于每个词汇产生的状态表示包含前向和反向的对于的状态表示。这个状态向量会在对齐模型和解码器中用来计算上下文向量。
4. Experiment Settings
4.1 Datasets
在英法翻译任务上做评估,使用ACL WMT’14提供的双语并行语料….
4.2 Models
作者训练了两种模型,一种是RNN Encoder-Decoder,另一种是RNNsearch(即本文提出的模型),然后分别在最大句子长度为30和50下进行训练。
RNN Encoder-Decoder 模型结构:
encoder和decoder都是1000个隐层单元的RNN(GRU)
RNNsearch 模型结构:
encoder:1000个隐层单元的BiRNN
decoder:1000个隐层单元
上述两种模型结构都使用一个带maxout的多层的神经网络来计算每个目标词的条件概率
maxout的论文:Maxout Networks 讲的比较清楚的博客:Maxout网络学习
使用批梯度下降算法,使用Adadelta算法进行优化,= 10−6 and = 0.95每个minibatch的大小是80个sentences, ,训练每个模型大概需要5天。
一旦模型训练好,作者使用集束搜索的算法去近似的最大和条件概率来生产对应的翻译结果。
集束搜索:是一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率,但缺点就是有可能存在潜在的最佳方案被丢弃,因此Beam Search算法是不完全的,一般用于解空间较大的系统中。
5 Results
具体数据省略..
作者提出该方法的动机就是克服固定长度的上下文向量的弊端,并猜测这限制了模型在长句子上的表现,而本文提出的RNNsearch-30和RNNsearch-50均有较好的鲁棒性,即使在一些长度超过50的句子上,仍有不错的表现。
具体的定量分析略..