Sequence to Sequence Learning with Neural Networks(翻译)

Sequence to Sequence Learning with Neural Networks

摘要

本文中提出了一种通用的端到端的学习方式,对序列结构做出了做小的假设。我们的方法是使用多层LSTM将输入序列映射到固定维度的向量,然后使用另一个深层的LSTM 将这个向量解码到目标序列。LSTM还学习到合理的短语和句子的表达,即:对语序敏感而对主动语态和被动语态并不敏感。最后,我们发现翻转源句子中的单词的顺序可以明显的提高LSTM的性能,因为这样做会在源语句和目标语句之间引入许多短期相关性,从而使优化问题变得更容易。

1 简介

DNN功能强大,并且实现了卓越的性能。虽然DNN灵活且强大,但是只能应用在输入和目标可以用固定维度的向量合理的编码的问题上。这是一个严重的限制,因为许多重要的表达最好是用长度不定的序列表达。

序列对DNN构成了一个挑战,因为序列要求输入和输出的维度已知并且固定。本文中, 我们提出LSTM结构直接应用可以解决一般的序列到序列的问题。这个想法是用一个LSTM读取输入序列,一次一个时间步,去获得大的固定向量的表示,然后使用另一个输出序列在从该项量中提取出输出序列。第二个LSTM除了它取决于输入序列,其本质上就是一个RNN语言模型。LSTM可以成功在数据上学习长依赖的能力使其成为了该应用的自然选择,因为输入和相应的输出之间存在着相当的时间延迟。

img

 

注 : 图 1 :我们的模型读取了输入的句子‘ABC’并产生了输出’wxyz’的输出句子。在输出句末标志之后,模型停止预测。请注意:Lstm反向读取输入的句子, 因为这样做会在数据中引入许多短期依赖关系,从而使优化问题变得更加容易

这项工作的主要成果如下:在英语到法语翻译任务中 ,我们使用一个简单的从左向右的Beamsearch解码器5层的从5层的LSTM(每个LSTM有384m个参数,8000维状态)中直接提取翻译,获得了34.81的bleu得分。 到目前为止,这是通过大型神经网络直接翻译实现的最佳结果。

令人惊讶的是,尽管其他研究者最近使用了相关的架构,但是LSTM并么有受到长句子的影响。我们在长句子上做的很好,因为我们颠倒了源句子上中的单词顺序,而不是在训练和测试的目标句子上颠倒顺序。通过这样来做,为了使得优化问题更加简单,我们引入了许多的短期依赖关系。 因此,SGD可以学习无误的LSTMs。 在源句子中反转单词顺序的技巧是本次工作的关键技术贡献。

Lstm的一个有用的性质是可以学习一个可变长度的输入句子映射到一个固定维度的向量表示。考虑到翻译是倾向于对源句子的翻译,翻译的目标是鼓励LSTM找到捕捉其含义的句子表示,因为相似含义的句子互相比较接近,不用含义的句子相互就比较远。定性的评估支持这种说法,表明我们的模型知道单词的顺序,并且对被动语态和主动语态相当是不变的。

2 模型

递归神经网络(RNN)[31,28]是前馈神经网络对序列的一种自然推广。 给定一个输入序列1575704467328,标准RNN通过迭代以下等式计算输出序列1575704514075

img

只要提前知道输入输出之间的对齐,RNN就很容易把序列映射到序列。然而,现在不清楚如何将一个RNN应用到输入和输出序列有不同的长度且复杂和有非单调关系的问题上。

一般序列学习的最简单策略是使用RNN把输入序列映射到固定大小的向量。然后使用另一个RNN将序列映射到目标序列。因为给RNN提供了所有的相关信息,所以原则上是可以训练的,但是长期的依赖使得训练RNN变得非常困难。然而LSTM已知是可以去学习长依赖,因此LSTM在这设置是成功的。

LSTM的目标是估计条件概率 1575705475791,其中1575705511172是输入序列,1575705537770是相对应的输出序列,T 和T‘ 的长度可能不同。LSTM通过首先获得的由LStm的最后一个影藏状态给出的输入序列1575706309936的固定维度表示V,来计算这个条件概率,然后用标准的LSTM-LM公式计算1575706738295的概率,初始化的影藏状态设定为x1,…,xT用V表示:

1575706932585

在此等式中, 每一个1575707229630的分布用词汇表中所有单词的softmax表示。 我们使用Graves的LSTM公式[10]。请注意,我们要求每个句子以特殊的句末符号“<EOS>”结尾,这使得模型能够在所有可能长度的序列上定义分布。 总体方案如图1所示,其中展示了LSTM计算 “A”, “B”, “C”, “<EOS>” 的表示,然后使用这个表示(也就是向量V)来计算 “W”, “X”, “Y”, “Z”, “<EOS>”的概率。

我们实际的模型有三个方面与上述不同:

1.我们使用了两个不同的LSTM,一个是用于输入序列另一个是用于输出序列,因为这样做增加了数量模型 参数,而计算成本可以忽略不计, 并且使得在多个语言对上同时训练LSTM变得很自然 。

  1. 我们发现深层的LSTM明显的优于浅层的LSTM,所以我们选择了四层的LSTM。

  2. 我们发现反转输入序列顺序是非常有价值的。比如:不是将句子a, b, c映射到1575708797909而是用LSTM将c, b, a映射到1575708841776其中1575708879246是a, b, c的翻译结果。这样 a 就非常靠近 1575709116441,b非常靠近1575709144025,依次类推,使的SGD很容易在输入和输出之间建立联系。这种简单的数据转化可以很好的提高LSTM的性能。

3 实验

我们在 WMT’14 英语到法语的任务上应用了两种不用的方式。我们使用它直接翻译输入句子没有使用参考SMT系统,我们重新确定SMT基线的n个最佳列表。 我们报告了那些翻译方法的准确性, 提供样本翻译并可视化生成的句子表示。

3.1 数据细节

我们使用WMT'14英语到法语数据集

3.2 解码和重调整

我们实验的核心是包括在许多的句子对上训练大而深的LSTM。我们通过给定的源句子S 的情况下,最大化正确的翻译T的对数概率来训练它,所以我们的训练目标是:

1575711869660

其中S是训练集,一次训练完成之后,我们通过LSTM找出最可能的翻译来产生翻译结果:

1575712174960

我们使用简单的从左到右的定向( 集束 )搜索解码器搜索最可能的翻译,该解码器保留了少量的部分假设B,其中部分假设是一些翻译的前缀。在每个时间步上,我们用词汇表中的每个可能的单词扩展beam中的每个部分假设。 这大大增加了假设的数量,因此我们根据模型的对数概率丢弃除B之外的所有可能假设。只要将“<EOS>”符号附加到一个假设中,就会将其从beam中移除并添加到完整假设集中。虽然这个解码器是近似的,但实现起来很简单。有趣的是, 即使beam大小为1我们的系统也能表现良好, 大小为2的 beam提beam( 集束 )搜索的大部分优势(表1)。

我们还使用LSTM来重新调整基线系统产生的1000个最佳列表[29]。 为了重新排列n个最佳列表,我们使用LSTM计算每个假设的对数概率,并使用他们的得分和LSTM得分取平均值。

3.3 反转源序列

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

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

最初,我们认为,反转输入句子序列,只会在目标句子开头部分产生更多确定的预测信息,但是在后面会产生更少的预测信息。然而,LSTM在反转的源句子上训练长句子要比在短的原始源句子上训练好得多(参见第3.7节),这表明反转输入句子导致LSTM具有更好的内存利用率。

3.4 训练细节

我们发现LSTM模型很容易训练,我们使用了4层深LSTM,每层1000个单元和1000维字嵌入,输入词汇量为160,000,输出词汇量为80,000。 因此深层的LSTM使用了8000个实数来表示一个句子。 我们发现深层LSTM明显优于浅层LSTM,其中每个附加层减少了近10%的复杂度,可能是由于它们的隐藏状态很大。我们在每个输出中使用了超过80,000个单词的朴素softmax。得到的LSTM具有384M个参数,其中64M是纯循环连接关系(“编码器”LSTM为32M,“解码器”LSTM为32M)。完整的训练详情如下:

  • 我们初始化了所有LSTM的参数,均匀分布在-0.08和0.08之间

  • 我们使用没有动量的随机梯度下降算法,固定学习率为0.7。在5个epochs后,我们开始每过一半epoch学习率减半。我们训练我们的模型总共7.5个epoch。

  • 我们使用128个序列的batch用于梯度,并且除以批次大小(128)

  • 虽然LSTM不会遇到梯度消失的问题,但是会遇到梯度爆炸的问题。 因此,在梯度的范数超过阈值,我们对其进行缩放,来对梯度[10,25]的范数强制执行硬约束。对于每个训练批次, 我们计算1575794581398, 其中g是梯度除以128。如果是 1575794605050,我们设1575794634201

  • 不同的句子有不同的长度。大多数句子都很短(例如,长度为20-30),但是一些句子很长(例如,长度> 100),因此128个随机选择的训练句子的minibatch将具有许多短句字和很少的长句,因此,minibatch中的大量计算被浪费了。为了解决这个问题,我们确保一个 minibatch的所有句子长度大致相同,产生2倍的加速。

3.5 并行化

多GPU训练

3.6 实验结果

我们使用了BLEU分数去评估我们的翻译质量。

img

表1:LSTM在WMT'14英语到法语的测试集(ntst14)上的表现。**注意,一个5层LSTM带有尺寸为2的beam效果比尺寸为12个beam的单个LSTM成本更低。

img

表2:在WMT'14英语到法语测试集(ntst14)上使用神经网络和 SMT系统的方法。

3.7 在长句子上的表现

我们惊讶地发现LSTM在长句中表现良好,如图三所示。表3列出了几个长句及其翻译的例子。

img

表3:LSTM产生的长译本与实际翻译的几个例子。**读者可以使用Google翻译验证翻译是否合理。

img

图3:左图显示了我们的系统作为句子长度函数的性能,其中x轴对应于按其长度排序的测试句子,由实际序列长度标记。少于35个单词的句子时没有下降,在最长的句子上只有轻微的下降。右图显示LSTM在越来越罕见的单词的句子上的表现,其中x轴对应于按其“平均单词频率排列”排序的测试句子。

3.8 模型分析

我们模型的一个吸引人的特点是它能够将一个单词序列转换为固定维度的向量。图2显示了一些已学习的表示。图中清楚地表明,表示对单词的顺序很敏感,而对用被动语态替换主动语音则相对不敏感。使用PCA获得二维投影。

img

图2: 该图显示了对图中短语进行处理后得到的LSTM隐藏状态的二维PCA投影。 。短语按意义聚类,在这些例子中主要是词序的功能,用词袋模型难以捕捉。请注意,两个 簇 具有相似的内部结构。

4 相关工作

 略:

5 结论

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

我们通过对源句中的单词的反转,所获得的改进程度感到惊讶。我们得出结论,找到具有最大数量短期依赖性的问题编码非常重要,因为它们使学习问题更加简单。特别是,虽然我们无法在非反向翻译问题上训练标准RNN(如图1所示),我们认为在源序列被反转时,标准的RNN更容易训练。

我们也对LSTM正确翻译很长句子的能力感到惊讶。我们最初确信LSTM由于其有限的记忆而在长句上会失败,而其他研究人员报告说长句的表现不佳,其模型类似于我们的[5,2,26]。然而,在反向数据集上训练的LSTM几乎没有难以翻译长句。

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

 

注:没有显示的图片部分是论文上的部分公式(我的文档可以正常显示),可以参照原文或者留言我给你发我的文档。

posted @ 2019-12-08 19:07  成长中的菜鸟zhy  阅读(1233)  评论(1编辑  收藏  举报