Sequence to Sequence Learning with Neural Networks翻译
由于最近学习的需要,对论文《Sequence to Sequence Learning with Neural Networks》进行了不地道的翻译,翻译存在许多问题,因此仅供自己参考。也希望大家在留言中提出意见,我会认真修改。
翻译全文如下:
利用神经网络进行序列到序列的学习
摘要
深度神经网络(DNNs)是一种功能强大的神经网络模型,在复杂的学习任务中取得了优异的性能。尽管当有大量标记的训练集可用时,DNNs工作良好,但它们不能用于将序列映射到序列。在本文中,我们提出了一种通用的端到端方法来进行序列学习,这种方法对序列结构做出了最小的假设。我们的方法使用多层长短时记忆(LSTM)将输入序列映射到一个固定维数的向量上,然后用另一个深度LSTM从向量上解码目标序列。我们的主要结果是,在WMT-14数据集的英法翻译任务中,LSTM生成的翻译在整个测试集上获得了34.8的BLEU分数,其中LSTM的 BLEU分数在词汇表外的单词上受到了惩罚。此外,LSTM对长句也没有困难。 相比之下,基于短语的SMT系统在同一数据集上的BLEU得分为33.3。当我们使用LSTM对上述SMT系统产生的1000个假设进行重新排序时,其中BLEU分数增加到36.5,接近于之前的技术水平。LSTM还学习了对词序敏感并且对主动和被动语态相对不变的合理的短语和句子表示。最后,我们发现颠倒所有源句(而不是目标句)中的单词顺序显著地提高了LSTM的性能,因为这样做在源句和目标句之间引入了许多短期依赖关系,使得优化问题变得更容易。
1****介绍
深度神经网络(DNNs)是一种功能极其强大的机器学习模型,它在语音识别[13,7]和视觉对象识别[19,6,21,20]等难题上取得了优异的性能。DNNs功能强大,因为它们可以执行任意并行计算,只需要少量的步骤。DNNs强大功能的一个令人惊讶的例子是,它仅使用2个二次大小的隐藏层[27]就可以对n个n位数字进行排序。因此,虽然神经网络与传统的统计模型相适应,但它们学习的是复杂的计算。此外,当标记的训练集具有足够的信息来指定网络参数时,就可以使用监督反向传播对大的DNNs进行训练。因此,如果大的DNN存在一个参数设置,并且取得了很好的效果(例如,因为人类可以非常快速地解决任务),监督反向传播就会找到这些参数并解决问题。
尽管DNNs具有灵活性和强大的功能,但它只适用于输入和目标可以用固定维数向量合理编码的问题。这是一个重要的限制,因为许多重要的问题都是用长度未知的序列来表示的。例如,语音识别和机器翻译是顺序问题。同样,问答也可以看作是将表示问题的单词序列映射到表示答案的单词序列。因此,学习将序列映射到序列的与域无关的方法将非常有用。
序列对DNNs是一个挑战,因为它们要求输入和输出的维数是已知的和固定的。在本文中,我们证明了长短时记忆(LSTM)结构[16]的直接应用可以解决一般序列到序列的问题。我们的想法是使用一个LSTM来读取输入序列,一次一个步骤,以获得大的固定维向量表示,然后使用另一个LSTM从该向量中提取输出序列(图1)。 第二个LSTM本质上是一个循环神经网络语言模型[28,23,30],除了它以输入序列为条件。 LSTM成功获取具有长距离时间依赖性的数据的能力使得它成为这种应用的自然选择,因为输入与它们相应的输出之间存在相当大的时间滞后(图1)。
已经进行了许多相关的尝试来解决用神经网络对序列学习问题进行一般序列处理。 我们的方法与Kalchbrenner和Blunsom [18]密切相关,他们是第一个将整个输入句子映射到向量的方法,与Cho等人[5]非常相似。Graves[10]引入了一种新的可区分注意力机制,允许神经网络将注意力集中在输入的不同部分,Bahdanau等人成功地将这种思想的一个优雅的变体应用到机器翻译中[2]。连接序列分类是另一种流行的技术,用于将序列映射到具有神经网络的序列,尽管它假设输入和输出之间存在非单调对齐[11]。
图1:我们的模型读取输入句子“ABC”并产生“WXYZ”作为输出句子。 模型在输出句末标记后停止进行预测。 请注意,LSTM反向读取输入句子,因为这样做会在数据中引入许多短期依赖关系,这使得优化问题变得更加容易。
这项工作的主要结果如下。在WMT'14英语到法语翻译任务中,我们通过使用简单的从左到右的波束搜索解码器直接从5层LSTM(每个参数380M参数)的集合中提取翻译,获得了34.81的BLEU得分。这是迄今为止用大型神经网络直接翻译得到的最佳结果。相比之下,在该数据集上SMT基线的BLEU分数为33.30 [29]。34.81 BLEU分数是由一个词汇量为80k单词的LSTM人获得的,因此每当引用翻译中包含80k单词以外的单词时,分数会被扣分。结果表明,相对于传统的基于短语的SMT系统,神经网络结构有较大的改进空间。
最后,我们使用LSTM重新调整了同一任务中公开提供的最佳SMT基线列表[29]。通过这样做,我们获得了36.5的BLEU分数,这将基线提高了3.2 BLEU分数,并且接近于先前的最先进水平(即37.0 [9])。
令人惊讶的是,尽管最近有其他相关架构研究人员的经验[26],LSTM并没有遭受很长的句子。 我们能够在长句子上做得很好,因为在源语句中排序了单词的顺序而不是训练和测试集中的目标句子。通过这样做,我们引入了许多短期依赖性,使得优化问题变得更加简单(参见第2节和第3.3节)。 因此,SGD可以学习没有长句子问题的LSTMs。颠倒源句中单词的简单技巧是这项工作的关键技术贡献之一。
LSTM的一个有用特性是,它学会将一个可变长度的输入语句映射为一个固定维向量表示。鉴于翻译往往是源句的释义,翻译目标鼓励LSTM寻找能捕捉其意义的句子表征,因为具有相似意义的句子彼此接近,而不同的句子意义相差甚远。一项定性评估支持了这一说法,表明我们的模型知道词序,并且对主动语态和被动语态相当不变。
2****模型
循环神经网络(RNN)[31,28]是前馈神经网络到序列的自然概括。 给定一系列输入(x1,...,xT),标准RNN通过迭代以下等式计算输出的序列(y1,...,yT):
只要提前知道输入之间的对齐,RNN就可以很容易地将序列映射到序列。 然而,目前尚不清楚如何将RNN应用于输入和输出序列具有不同长度且具有复杂和非单调关系的问题。
一般序列学习的最简单策略是使用一个RNN将输入序列映射到固定大小的向量,然后用另一个RNN将载体映射到目标序列(Cho等人[5]也采用了这种方法) 。 虽然原则上可以工作,因为RNN提供了所有相关信息,但由于产生的长期依赖性(图1)[14,14,16,15],很难训练RNN。 然而,已知长短期记忆(LSTM)[16]会学习长距离时间依赖性的问题,因此LSTM可能会在此设置中成功。
LSTM的目标是估计条件概率p(y1,...,yT'| x1,...,xT)其中(x1,...,xT)是输入序列,y1,….yT’是其对应的输出序列,长度T'可以与T不同。LSTM通过首先获得由LSTM的最后隐藏状态给出的输入序列(x1,...,xT)的固定维度表示v来计算该条件概率,然后 使用标准LSTM-LM公式计算y1,….yT’的概率,其初始隐藏状态设置为x1….xT的表示v:
在这个方程中,每个p(yt|v, y1,…, yt 1)分布用softmax表示词汇表中的所有单词。我们使用Graves [10]的LSTM公式。注意,我们要求每个句子都以一个特殊的句末符号
我们的实际模型在三个重要方面与上述描述不同。首先,我们使用了两种不同的LSTM:一种用于输入序列,另一种用于输出序列,因为这样做增加了数字模型参数,而计算成本可以忽略不计,并且可以很自然地同时在多个语言对上训练LSTM[18]。其次,我们发现深度LSTM明显优于浅层LSTM,因此我们选择了一个四层的LSTM。第三,我们发现颠倒输入句子的单词顺序非常有价值。因此,例如,不是将句子a,b,c映射到句子α,β,γ,而是要求LSTM将c,b,a映射到α,β,γ,其中α,β,γ是a,b,c的翻译。 这样,非常靠近α的a,b非常接近β,依此类推,这使得SGD很容易在输入和输出之间“建立通信”。 我们发现这种简单的数据转换可以大大提高LSTM的性能。
3****试验
我们将我们的方法应用到WMT ‘14英语到法语的MT任务中,方法有两种。我们使用它来直接翻译输入语句,而不使用参考SMT系统,我们使用它来重新列出SMT基线的最佳列表。我们报告了这些翻译方法的准确性,给出了样本翻译,并将结果的句子表示可视化。
3.1****数据集详细信息
我们使用了从英语到法语的WMT’14数据集。我们使用由348M法语单词和304M英语单词组成的12M句子的子集训练我们的模型,这是从[29]中挑选出来的一个干净子集。我们选择这个翻译任务和这个特定的训练集子集,是因为一个标记化的训练和测试集以及来自baselineSMT[29]的1000个最佳列表是公开可用的。
由于典型的神经语言模型依赖于每个单词的向量表示,我们使用两种语言的固定词汇表。 我们对源语言使用了160,000个最常用的单词,为目标语言使用了80,000个最常用的单词。 每个词汇外的单词都被替换为一个特殊的“UNK”标记。
3.2****解码和重新编码
我们实验的核心是在许多句子对上训练一个大型的深度LSTM。 我们通过在给定源句子S的情况下最大化正确翻译T的对数概率来训练它,因此训练目标是
其中S是训练集。 训练完成后,我们就根据LSTM找到最可能的翻译来生成翻译:
我们使用一个简单的从左到右波束搜索解码器来搜索最有可能的翻译,该解码器保留了少量的部分假设B,其中部分假设是某个翻译的前缀。在每个时间步长,我们用词汇表中的每个可能的单词扩beam中的每个部分假设。 这大大增加了假设的数量,因此我们根据模型的对数概率丢弃除B最可能的假设之外的所有假设。 只要将“
我们还使用LSTM来重新调整基线系统产生的1000个最佳列表[29]。为了重新确定一个n-best列表,我们使用LSTM计算每个假设的对数概率,并将其得分和LSTM得分均值平均得分。
3.3****颠倒原句
虽然LSTM能够解决长期依赖性问题,但我们发现当源语句被反转时(目标句子没有被反转),LSTM学得更好。 通过这样做,LSTM的测试preplexity从5.8降至4.7,并且其解码翻译的测试BLEUscores从25.9增加到30.6。
虽然我们对这一现象没有一个完整的解释,但我们认为这是由于对数据集引入了许多短期依赖关系造成的。通常,当我们把源句和目标句连接起来时,源句中的每个单词都与目标句中的对应单词相差很远。因此,这个问题有一个很大的“最小时间滞后”[17]。通过反转源句中的单词,源语言和目标语言中相应单词之间的平均距离不变。 然而,源语言中的前几个单词现在非常接近目标语言中的前几个单词,因此问题的最小时滞大大减少。 因此,反向传播在源句和目标句之间更容易“建立通信”,这反过来导致整体性能的显着提高。最初,我们认为反转输入句子只会导致目标句子早期部分的预测更加自信,而后期部分的预测则更少。 然而,LSTMs对逆源句的训练在长句上比在原始句子上训练的LSTM好得多(见第3.7节),这表明逆转输入句子会导致LSTM具有更好的记忆利用率。
3.4****训练详细信息
我们发现LSTM模型很容易训练。我们使用了4层深度LSTMs,每层1000个单元,1000个维度的单词嵌入,输入词汇量为16万个,输出词汇量为8万个。因此,深层LSTM使用8000个实数表示一个句子。我们发现深层的LSTMs明显优于浅层的LSTMs,每增加一层LSTMs就会减少近10%的困惑,这可能是因为它们隐藏的状态更大。我们在每个输出上使用了超过80,000个单词的朴素softmax。 得到的LSTM具有384M参数,其中64M是纯循环连接(“编码器”LSTM为32M,“解码器”LSTM为32M)。 完整的培训详情如下:
我们使用-0.08和0.08之间的均匀分布初始化了所有LSTM的参数。
我们使用没有动量的随机梯度下降,固定学习率为0.7。在5个时期之后,我们开始将每半学期的学习速度减半。 我们训练我们的模型总共7.5个时期。
我们使用128个序列的批次作为梯度,并将批次的大小(即128)进行分割。
虽然LSTMs往往不受消失梯度问题的困扰,但它们可以有爆炸梯度。因此,我们在梯度的范数超过阈值时对其进行缩放,从而对梯度的范数施加了一个硬约束[10,25]。对于每个训练批次,我们计算s= g2,其中g是梯度除以128。如果s>5,我们设g=5gs
不同的句子有不同的长度。大多数句子都很短(例如,长度为20-30),但也有一些句子很长(例如,长度> 100),所以128个随机选择训练的小批量句子会有很多短句子和很少的长句子,因此,小批量的计算浪费了很多时间。为了解决这个问题,我们确保一个小批处理中的所有句子长度大致相同,从而产生2x的加速。
3.5****并行
深度LSTM的C ++实现与单个GPU上一节的配置一起处理大约每秒1,700字的速度。 这对我们的目的来说太慢了,所以我们使用8-GPU机器并行化我们的模型。 LSTM的每一层都在不同的GPU上执行,并在计算后立即将其激活传递给下一个GPU /层。 我们的模型有4层LSTM,每层都位于一个单独的GPU上。 其余4个GPU用于并行化softmax,因此每个GPU负责乘以1000×20000矩阵。 由此产生的实施速度达到每秒6,300(英语和法语)字样,小批量大小为128.此实施训练大约需要十天。
3.6****试验结果
我们使用大小写混合的BLEU评分[24]来评估翻译的质量。我们使用multi-bleu.pl1对标记化的预测和ground truth计算了我们的BLEU分数。这种评价BELU分数的方法与[5]、[2]一致,再现了[29]的33.3分。然而,如果我们以这种方式评估最佳的WMT’14系统9,我们得到37.0,这大于statmt.org\matrix报告的35.8。
结果见表1和表2。我们的最佳结果是通过LSTM的集合获得的,它们的随机初始化和小批量的随机顺序不同。虽然LSTM集成的译码翻译性能并不优于最佳的wmt 14系统,但这是第一次在大规模MT任务中,纯神经翻译系统的性能远远超过基于短语的SMT基线,尽管它无法处理词汇表外的单词。如果使用LSTM来重新确定基线系统的1000个最佳列表,则LSTM与最佳WMT 14结果的差值在0.5个BLEU点以内
3.7****长句子的表现
我们惊讶地发现LSTM在长句中表现良好,这在图3中定量显示。表3列出了长句及其翻译的几个例子。
3.8****模型分析
图2:图中显示了处理图中短语后得到的LSTM隐藏状态的二维PCA投影。短语是按意义聚类的,在这些例子中,意义主要是单词顺序的函数,使用单词包模型很难捕捉到。请注意,这两个集群具有相似的内部结构。
我们的模型的一个吸引人的特性是它能够将一个单词序列转换成一个固定维度的向量。图2显示了一些学习到的表示。从图中可以清楚地看出,这些表示对单词的顺序很敏感,而对用被动语态替换主动语态则相当不敏感。利用PCA(主成分分析)得到二维投影
图3:左边的图显示了我们的系统性能作为句子长度的函数,其中x轴对应于按句子长度排序的测试句子,并由实际的序列长度标记。少于35个单词的句子没有退化,最长的句子只有轻微的退化。右边的图表显示了LSTM对越来越少的单词的句子的性能,其中x轴对应于按平均单词频率排序的测试句子。
4****相关工作
神经网络在机器翻译中的应用有大量的工作要做。到目前为止,将RNN-Language模型(RNNLM)[23]或前馈神经网络语言模型(NNLM)[3]应用于翻译任务的最简单、最有效的方法是重建强MT基线[22]的n个最佳列表,从而可靠地提高翻译质量。
最近,研究人员开始研究将源语言信息纳入NNLM的方法。 这项工作的例子包括Auli等[1],他们将NNLM与输入句子的主题模型相结合,从而提高了重新评分性能。 Devlin等人[8]采用了类似的方法,但他们将NNLM结合到MT系统的解码器中,并使用解码器的对齐信息为NNLM提供输入句中最有用的单词。 他们的方法非常成功,并且在基线上取得了很大的改进。
我们的工作与Kalchbrenner和Blunsom [18]密切相关,他们是第一个将输入句子映射到一个向量然后回到一个句子的人,尽管他们使用卷积神经网络将句子映射到向量,这会丢失单词的排序。 与此相似,Cho等人[5]使用类似LSTM的RNN架构将句子映射到向量并返回,尽管他们的主要关注点是将他们的神经网络集成到SMT系统中。Bahdanau等人[2]也尝试使用神经网络直接翻译,该神经网络利用注意力机制克服了Cho etal在长句上的糟糕表现[5]。并取得了令人鼓舞的成绩。同样,Pouget-Abadie等人[26]试图解决Cho etal的记忆问题。[5]通过翻译源句的片段来产生流畅的翻译,这类似于基于短语的方法。我们怀疑他们可以通过简单地训练他们的网络使用倒过来的源句来达到类似的改进。
端到端训练也是Hermann等人[12]的研究重点,他们的模型表示前馈网络的输入和输出,并将它们映射到空间中的相似点。然而,他们的方法不能直接生成翻译:为了得到翻译,他们需要在预先计算好的句子数据库中查找最近的向量,或者重新编译一个句子。
5****结论
在这项工作中,我们展示了一个大型的深度LSTM,它有一个有限的词汇量,这使得几乎没有关于问题结构的假设可以胜过一个标准的基于LSTM的系统,而在一个大规模的MT任务中,它的词汇量是无限的。我们简单的基于LSTM的MT方法的成功表明,如果有足够的训练数据,它应该可以很好地解决许多其他序列学习问题。
我们惊讶地发现,把源词倒过来所取得的进步之大。我们的结论是,重要的是找到一个具有最多短期依赖关系的问题编码,因为它们使学习问题简单得多。特别是,虽然我们无法训练一个标准的RNN来解决非反向翻译问题(如图1所示),但我们认为,当源句被反向翻译时,标准的RNN应该是容易训练的(尽管我们没有通过实验来验证)。
我们也对LSTM翻译长句子的能力感到惊讶。我们最初确信LSTM在长句上会失败,因为它的记忆有限,其他研究人员报告说,使用与我们相似的模型,长句的表现很差[5,2,26]。然而,在反向数据集上训练的LSTMs在翻译长句方面几乎没有什么困难。
最重要的是,我们证明了一个简单、直接和相对未经优化的方法可以胜过SMT系统,因此进一步的工作可能会导致更高的翻译精度。这些结果表明,我们的方法很可能在其他具有挑战性的序列问题上做得很好。
6****致谢
