Sequence to Sequence Learning with Neural Networks

摘要

深度神经网络(DNN)是功能强大的模型,在复杂的学习任务中取得了优异的性能。虽然DNN在大型标记训练集可用时效果很好,但它们不能用于将序列映射到序列。在本文中,我们提出了一种通用的端到端序列学习方法,它对序列结构做出了最小的假设。我们的方法是使用多层长短期记忆(LSTM)将输入序列映射到固定维度的向量,然后使用另一个深度LSTM来解码来自向量的目标序列。我们的主要结果是,在WMT’14数据集的英语到法语翻译任务中,LSTM产生的翻译在整个测试集上获得了34.8的BLEU分数,其中LSTM的BLEU分数在词汇量不足时将会降低。此外,LSTM在长句上没有困难。为了比较,基于短语的SMT系统在同一数据集上实现了33.3的BLEU分数。当我们使用LSTM重新调整上述SMT系统产生的1000个假设时,其BLEU分数增加到36.5,接近此任务的先前最佳结果。LSTM还学习了对词序敏感且对主动和被动语音相对不变的合理的短语和句子表示。最后,我们发现,逆转所有源语句(但不是目标句子)中单词的顺序可以显着提高LSTM的性能,因为这样做会在源语句和目标语句之间引入许多短期依赖关系,从而使优化问题更容易。

1.介绍

深度神经网络(DNN)是非常强大的机器学习模型,可以在诸如语音识别[13,7]和视觉对象识别[19,6,21,20]等难题上实现出色的性能。DNN功能强大,因为它们可以针对适度大小的步骤执行任意并行计算。DNN功能的一个令人惊讶的例子是它们只使用2个二次大小的隐藏层来排序N个N位数的能力。因此,虽然神经网络与传统的统计模型相关,但它们会学习复杂的计算。此外,只要标记的训练集具有足够的信息来指定网络参数,就可以使用监督的反向传播训练大型DNN。因此,如果存在了一个取得了良好结果的大型的DNN参数设置(例如,因为人类可以快速的解决该任务),则有监督的反向传播将会找到这些参数并解决该问题。

尽管DNN具有灵活性和强大的功能,但它们只能应用于输入和目标可以用固定维数向量进行合理编码的问题。这是一个重要的限制,因为许多重要问题最好用长度未知的序列表达。例如,语音识别和机器翻译是顺序问题。同样,问题回答也可以被视为将表示问题的单词序列映射到表示答案的单词序列。因此,学习将序列映射到序列的与结构域无关的方法将是有用的。

将DNN用于序列将产生很大挑战的原因是因为DNN获取的输入和输出的维度是一直且固定的。在本文中,我们将展示长短期记忆架构的直接运用处理序列到序列的问题。我们的想法是使用一个LSTM来读取输入序列,一次一个时间步,以获得大的固定维向量表示,然后使用另一个LSTM从该向量中提取输出序列(图1)。第二个LSTM本质上是一个递归神经网络语言模型,但它不以输入序列为条件。LSTM成功学习具有长距离时间依赖性的数据的能力使其成为该应用的自然选择,因为输入与其相应输出之间存在相当大的时间滞后(图1)。
在这里插入图片描述
已经有许多相关的尝试来解决用神经网络进行序列到序列的学习。我们的方法与Kalchbrenner和Blunsom 密切相关,他们是第一个将整个输入句子映射到向量的人。Graves 引入了一种新颖的可区分的注意力机制,它允许神经网络专注于他们输入的不同部分,并且这个想法的一个优雅的变体已经成功地应用于Bahdanau等人的机器翻译。 Connectionist Sequence Classification 是另一种用神经网络将序列映射到序列的流行技术,但它假设输入和输出之间单调对齐。

这项工作的主要成果如下:在WMT’14英语到法语翻译任务中,我们通过使用简单的从左到右的 beam search 解码器从5个深度LSTM(每个具有384M参数和8000维状态)的集合中直接提取翻译,获得了34.81的BLEU得分。到目前为止,这是通过大型神经网络进行直接翻译得到的最佳结果。为了比较,该数据集上SMT Baseline 的BLEU得分为33.30 。34.81 的 BLEU 得分是通过LSTM获得的,词汇量为 80,000 词,因此只要参考译文为包含这些 80,000 个的单词,分数就会降低。该结果表明,相对未优化的小词汇量神经网络体系结构具有很大的改进空间,但已经优于基于短语的SMT系统。

最后,我们使用LSTM重新调整了同一任务中公开提供的最佳 SMT Baseline 列表。通过这样做,我们获得了36.5的BLEU分数,这使得 Baseline 提高了3.2 个 BLEU 分,并且接近于此任务的先前最佳公布结果(37.0)。

令人惊讶的是,LSTM能够在长句子上做得很好,因为我们颠倒了源句中的单词顺序而不是训练和测试集中的目标句子。通过这样做,我们引入了许多短期依赖关系,使优化问题变得更加简单(参见第2节和第3.3节)。反转源句中单词的简单技巧是这项工作的关键技术贡献之一。

LSTM的一个有用特性是它可以将可变长度的输入句子映射到固定维度的向量表示。鉴于翻译倾向的是源句的释义,翻译目标鼓励LSTM去寻找能够代表他们含义的句子表示,因为具有相似含义的句子彼此接近,而不同的句子含义将互相远离。定性评估支持这种说法,这表明我们的模型对单词顺序敏感,并且对主动和被动语音是相对不变的。

2.模型

递归神经网络(RNN)是前馈神经网络到序列的自然概括。给定一系列输入(x1,…,xT),标准RNN通过迭代以下等式计算输出序列(y1,…,yT):
在这里插入图片描述
只要提前知道输出之间的对齐,RNN就可以轻松地将序列映射到序列。然而,目前尚不清楚如何将RNN应用于其输入和输出序列具有不同长度且具有复杂和非单调关系的问题。

一般序列学习的最简单策略是使用一个RNN将输入序列映射到固定大小的向量,然后用另一个RNN将向量映射到目标序列。虽然它原则上可以工作,因为RNN提供了所有相关信息,但由于产生的长期依赖性(图1),RNN很难训练。然而,因为长短期记忆(LSTM)可以解决长距离时间依赖性的问题,因此LSTM可能在此方法上成功。

LSTM的目标是估计条件概率 p ( y 1 , . . . , y T x 1 . . . x T ) p(y_1,...,y_{T^{'}}| x_1,...,x_T) ,其中 x 1 , . . . , x T (x_1,...,x_T) 是输入序列, y 1 . . . y T y_1,...,y_{T^{'}} 是其对应的输出序列,其长度 T T^{'} 可以不同于T。首先,LSTM通过由最后隐藏状态给出的输入序列 x 1 . . . x T (x_1,...,x_T) 的固定维表示v来计算该条件概率,然后用标准的LSTM-LM公式计算 y 1 . . . y T y_1,...,y_{T^{'}} 的概率,其初始隐藏状态设置为 x 1 . . . x T x_1,...,x_T 的表示v :
在这里插入图片描述

在该等式中,每个 p y t v y 1 . . . y t 1 p(y_t | v,y_1,...,y_{t-1}) 的分布用词汇表中的所有单词的softmax表示。我们使用Graves的LSTM公式。请注意,我们要求每个句子以特殊的句末符号<EOS>结束,这使得模型能够定义任何长度的序列的分布。总体方案在图1中概述,其中所示的LSTM计算“A”,“B”,“C”,<EOS>的表示,然后使用该表示来计算“W”,“X”,”Y“,”Z“,<EOS>的概率。

我们的实际模型与上述描述在三个重要方面上不同。首先,我们使用了两个不同的LSTM:一个用于输入序列,另一个用于输出序列,因为这样做能够增加模型参数的数量并且其计算成本可以忽略,还可以同时在多个语言对上训练LSTM。其次,我们发现深度LSTM明显优于浅LSTM,因此我们选择了一个四层LSTM。第三,我们发现翻转输入句子的单词顺序是非常有价值的。例如,不是将句子a,b,c映射到句子α,β,γ,LSTM而是要求将c,b,a映射到α,β,γ,其中α,β,γ是 a,b,c 的翻译。这样,a非常靠近α,b非常接近β,依此类推,这使得SGD很容易在输入和输出之间“建立通信”。我们发现这种简单的数据转换可以大大提高LSTM的性能

3.实验

我们用两种方式将我们的方法应用于WMT’14英语到法语MT任务。

  1. 我们用其直接翻译输入句子而不使用参考SMT系统,;
  2. 我们重新调整SMT baseline 的n个最佳列表。

我们给出了这些翻译方法的准确性,提供样本翻译,并可视化生成的句子表示。

PS:Baseline Model是机器学习领域的一个术语,简单来说,就是使用最普遍的情况来做结果预测。比如一个猜硬币正反面游戏,最朴素的策略就是永远猜正(或者永远猜反),这样你至少有50%的准确率。再比如说,很多学习不好的同学,应该都做过这件事情:考试里选择题一率选C,这也是利用了Baseline Model来“预测”问题的结果。理论上,这样做至少能拿25%的分数。而之所以选择C,是发现,似乎选择C,能拿到比25%还多的分数。毕竟,选择题的答案不是真正的随机分布的。

Baseline Model的意义,是让我们了解这个问题的基线在哪里,从而让我们不再迷信一个绝对的数值。你告诉我你的预测准确度是99.9%,严格意义来讲是没有意义的。因为如果你的Baseline Model的准确率也是99.9%,你的算法等于没有做任何事情;而如果你的Baseline Model的准确度是99.99%,你的算法反而让结果变差了。但是如果你的Baseline Model的准确率是50%,你的算法结果准确率哪怕仅仅是60%,也是挺不错的一个改善。

3.1 Dataset details

我们使用WMT’14英语到法语数据集。我们在12M句子的子集上训练我们的模型,这些句子由348M法语单词和304M英语单词组成,这是一个干净的“选定”子集。我们选择了这个翻译任务和这个特定的训练集子集,因为该数据集提供了公共可用的标记化训练和测试集以及来自基线SMT的1000个最佳列表。

由于典型的神经语言模型依赖于每个单词的向量表示,我们对两种语言都使用了固定的词汇表。 我们对源语言使用了160,000个最常用的单词,为目标语言使用了80,000个最常用的单词。 每个词汇表外的单词都被一个特殊的“UNK”标记所取代。

3.2 Decoding and Rescoring

我们实验的核心是在许多句子对上训练大的深度LSTM。我们训练该网络是通过在给定源句S的情况下最大化正确翻译T的对数概率,因此训练目标是:

在这里插入图片描述
其中 S S 是训练集。训练完成后,我们根据LSTM来查找最可能的翻译:
在这里插入图片描述
我们使用简单的从左到右beam search 解码器搜索最可能的翻译,该解码器维持少量部分假设B,其中部分假设是某些翻译的前缀。在每个时间步长,我们用词汇表中的每个可能的单词扩展 beam 中的每个部分假设。这大大增加了假设的数量,因此我们根据模型的对数概率丢弃除最可能的假设B之外的所有假设。只要将<EOS>符号附加到一个假设中,就会将其从 beam 中移除并添加到一组完整的假设中。虽然这个解码器是近似的,但实现起来很简单。有趣的是,即使 beam 尺寸为1,我们的系统也能很好地工作,而尺寸为2的 beam 提供了beam search 的大部分优点。我们还使用LSTM来重新调整baseline system 产生的1000个最佳列表。为了重新对n个最佳列表评分,我们使用LSTM计算每个假设的对数概率,并对其得分和LSTM得分取平均值。

3.3 Reversing the Source Sentences

虽然LSTM能够解决长期依赖性问题,但我们发现当源语句被翻转时(目标语句不翻转),LSTM会学得更好。通过这样做,LSTM的测试困惑度从5.8降至4.7,并且其解码翻译的测试BLEU分数从25.9增加到30.6。

虽然我们没有对这种现象做出完整的解释,但我们认为这是由于对数据集引入了许多短期依赖性。通常,当我们将源句与目标句连接起来时,源句中的每个单词都远离目标句中的相应单词。结果,这个问题有一个很大的“最小时间滞后”。通过翻转源语句中的单词,源语言和目标语言中相应单词之间的平均距离不变。但是,源语言中的前几个单词现在非常接近目标语言中的前几个单词,因此问题的最小时滞大大减少了。因此,反向传播在源句和目标句之间更容易“建立通信”,这反过来导致整体性能的显着改善。

最初,我们认为反转输入句只会导致目标句子前面部分的预测更加准确,后面部分的预测则不那么准确。然而,对于翻转源语句进行训练的LSTM在长句子上比在原始源语句上训练的LSTM好得多(参见第3.7节),这表明反转输入句子会导致LSTM具有更好的内存利用率。

3.4 Training details

我们发现LSTM模型易于训练。我们使用4层的深度LSTM,每层1000个记忆细胞和1000维的词嵌入,输入词汇表为160,000,输出词汇表为80,000。因此,深度LSTM使用8000个实数来表示句子。我们发现深度LSTM明显优于浅层LSTM,其中每个附加层减少了近10%的困惑度,可能是由于它们巨大的hidden state。我们在每个输出上使用了超过80,000个单词的朴素softmax。得到的LSTM有384M个参数,其中64M是纯循环连接(“编码器”LSTM为32M,“解码器”LSTM为32M)。完整的训练细节如下:

  • 我们用-0.08和0.08之间的均匀分布来对所有LSTM的参数进行初始化
  • 我们使用无动量的随机梯度下降,固定学习率为0.7。5个周期以后,我们开始每半个周期对学习率减半。我们一共用7.5个周期来训练我们的模型。
  • 我们使用128个序列的批次作为梯度,并将其划分为批次的大小(即128)。
  • 尽管LSTM一般不会遇到梯度消失的问题,但它们会有梯度爆炸的问题。因此,我们通过当其范数超过阈值时对其进行缩放来对梯度的范数[10,25]实施强制约束。对于每个训练批次,我们计算s = g 2 ||g||_2 ,其中g是梯度除以128。如果 s &gt; 5 s&gt;5 ,那么我们将g缩小为 g = 5 g s g=\frac{5g}{s}
  • 不同的句子有不同的长度。大多数句子都很短(例如,长度为20-30),但是一些句子很长(例如,长度> 100),因此长度为128的小批次随机选择的训练句子将具有许多短句和很少的长句,因此,小批次的大部分计算是浪费的。为了解决这个问题,我们确保在一个小批次中的所有句子的长度大致相同,将会提高两倍的速度。

3.5 并行化

在单个GPU上并使用上一节的配置来实现深度LSTM的C++实现,每秒大约处理1700个字。这对我们来说太慢了,所以我们使用8-GPU的机器并行化我们的模型。LSTM的每一层运行在不同的GPU之上,并在计算完成后立即将其激活传递给下一个GPU /层。我们的模型有4层LSTM,每个LSTM都驻留在一个单独的GPU上。剩下的4个GPU用来并行化softmax,因此每个GPU负责一个1000×20000矩阵的乘法运算。最终的实现使用了一个大小为128的小批次,其速度能够达到每秒处理6300个词(英语和法语)。采用这种实施方式,训练完成仅需要10天。

3.6 实验结果

我们使用cased BLEU评分来评估翻译质量。我们在标记化预测和基本事实上使用multi-freu.pl来计算了我们的 BLEU 分数。这种评估BELU评分的方法得到了33.3分。但是,如果我们以这种方式评估最好的WMT’14系统,我们得到了37.0的分数,这大于tostatmt.org\matrix报告的35.8。

结果呈现在表1和表2中。我们的最佳结果是通过LSTM集合获得的,这些LSTM的随机初始化和小批量随机顺序与其他的不同。虽然LSTM集合的解码翻译并不优于最好的WMT’14系统,但它是第一次纯粹的神经翻译系统在大规模MT任务上的表现优于基于短语的SMT baseline,尽管其还不能处理词汇表外的单词。如果重新调整1000个最佳baseline system 列表,LSTM只比WMT’14最佳结果低0.5 个BLEU数值。
在这里插入图片描述
在这里插入图片描述

3.7 在长句子上的表现

我们惊讶地发现LSTM在长句中表现良好,这将会在在图3中定量显示。表3列出了几个长句及其翻译的例子。

在这里插入图片描述Figure 3:The left plot shows the performance of our system as a function of sentence length, where the x-axis corresponds to the test sentences sorted by their length and is marked by the actual sequence lengths.There is no degradation on sentences with less than 35 words, there is only a minor degradation on the longest sentences. The right plot shows the LSTM’s performance on sentences with progressively more rare words,where the x-axis corresponds to the test sentences sorted by their “average word frequency rank"
在这里插入图片描述

3.8 模型分析

我们模型的一个吸引人的特征是它能够将一系列单词转换为固定维度的向量。图2展示了一些学习的表示。该图清楚地表明,该表示对单词的顺序敏感,但对用主动语态替换被动语态相当不敏感。
在这里插入图片描述
Figure 2: 该图示出了在处理图中的短语之后获得的LSTM隐藏状态的二维PCA投影。短语按意义聚类,在这些例子中主要是词序在起作用,用词袋模型难以捕捉。请注意,两个集群都具有相似的内部结构。

4.相关工作

关于神经网络在机器翻译中的应用有大量的工作。到目前为止,将一个RNN语言模型(RNNLM)或前馈神经网络语言模型(NNLM)应用于MT任务的最简单和最有效的方法是重新计算 MT baseline 的最佳列表[22],这种做法能够可靠地提高翻译质量。

More recently, researchers have begun to look into ways of including information about the source language into the NNLM。
这项工作的例子包括Auli等人。[1],他们将NNLM与输入句子的主题模型相结合,从而提高了重新评分性能。Devlin等。[8]采用了类似的方法,但是他们将NNLM结合到MT系统的解码器中,并使用解码器的对齐信息为NNLM提供输入句子中最有用的单词。他们的方法非常成功,并且在基线方面取得了很大的进步

最近,研究人员开始研究将源语言的相关信息加入到NNLM中。例如Auli等人,他们将NNLM与输入句子的主题模型相结合,从而提高了 rescoring 的性能。Devlin等人采用了类似的方法,但是他们将NNLM结合到MT系统的解码器中,并使用解码器的对齐信息为NNLM模型提供输入句子中的最有用的单词。他们的方法非常成功,并且在 baseline 方面取得了很大的进步。

我们的工作与Kalchbrenner和Blunsom 密切相关,他们是第一个将输入句子映射到一个向量然后回到一个句子的人,但他们用的是卷积神经网络来将句子映射到向量,这会失去单词的排序。与此相似,Cho等人使用类似LSTM的RNN架构将句子映射到向量,但他们的主要关注点是将他们的神经网络集成到SMT系统中。Bahdanau等人也尝试使用神经网络进行直接翻译,该网络使用注意机制来克服Cho等人所遇到的长句处理不理想的情况,并取得了很好的成果。同样,Pouget-Abadie等人试图解决Cho等人的记忆问题,通过以产生平滑翻译的方式翻译源句的片段,这类似于基于短语的方法。我们认为他们可以通过简单地在反向源语句上训练他们的网络来实现类似的改进。

端到端训练也是Hermann等人关注的焦点,其模型表示前馈网络的输入和输出,并将它们映射到空间中的类似点。但是,他们的方法不能直接生成翻译:要获得翻译,他们需要在预先计算的句子数据库中查找最接近的向量,或者重新构造句子。

5.总结

在这项工作中,我们展示了一个很大的深度LSTM,它具有有限的词汇表,几乎没有对问题结构的假设,可以胜过基于SMT的标准系统,但SMT系统的词汇表在大规模MT任务中是无限的。我们在MT上基于LSTM的方法的成功表明,如果有足够的训练数据,它应该在许多其他序列学习问题上也能做得很好。

我们对通过反装源语句中的单词所获得的改进程度感到惊讶。因此,找到具有最大数量的短期依赖性的编码很重要,因为它们使学习问题更加简单。特别是,虽然我们没有在非反向翻译问题上训练标准RNN,但我们认为当源语句被颠倒时,标准RNN应该易于训练(尽管我们没有对其进行实验验证)。

我们也对LSTM能够正确翻译长句子的能力感到惊讶。我们最初认为由于LSTM有限的记忆而在长句上会失败。然而,在反向数据集上训练的LSTM在翻译长句时几乎没有困难。

最重要的是,我们证明了一种简单,直接且相对不优化的方法就可以胜过SMT系统,因此进一步的工作可能会带来更高的翻译准确度。这些结果表明,我们的方法可能在其他有挑战性的序列到序列的问题上也能很好的工作。

猜你喜欢

转载自blog.csdn.net/FK103/article/details/83688235