用神经网络进行序列到序列学习
深度神经网络(DNNs)是一种功能强大的模型,在困难的学习任务中取得了优异的性能。尽管DNNs在有大型标记训练集的情况下工作良好,但它们不能用于将序列映射到序列。在这篇文章中,我们提出了一种一般的端到端方法来学习序列,它对序列结构做出最小的假设。我们的方法使用多层长短期记忆(LSTM)将输入序列映射到一个固定维数的向量,然后使用另一个深度LSTM从向量中解码目标序列。我们的主要结果是,在WMT-14数据集的英语到法语翻译任务中,LSTM生成的翻译在整个测试集中达到了34.8分的BLEU分数,其中LSTM的BLEU分数在词汇表外的单词上被处罚。此外,LSTM对长句没有困难。为了进行比较,基于短语的SMT系统在同一数据集上获得了33.3的BLEU分数。当我们使用LSTM对上述SMT系统产生的1000个假设重新排序时,它的BLEU分数增加到36.5,这接近于以前的技术水平。LSTM还学习了敏感的词组和句子表征,这些词组和句子表征对词序敏感,并且相对于主动语态和被动语态不变。最后,我们发现在所有源句(但不是目标句)中颠倒单词的顺序显著提高了LSTM的性能,因为这样做在源句和目标句之间引入了许多短期依赖关系,使优化问题更容易。
1介绍
深度神经网络(DNNs)是非常强大的机器学习模型,在语音识别[13,7]和视觉对象识别[19,6,21,20]等困难问题上取得了优异的性能。dnn的强大之处在于它们可以在适当的步骤中执行任意的并行计算。DNNs的强大功能的一个令人惊讶的例子是,它仅使用2个平方大小[27]的隐藏层就可以对N个N位数字排序。因此,虽然神经网络与传统的统计模型有关,但它们需要学习复杂的计算。此外,只要标记的训练集有足够的信息来指定网络参数,就可以用有监督的反向传播来训练大型DNNs。因此,如果一个大型DNN存在一个能够取得良好效果的参数设置(例如,因为人类可以非常迅速地解决该任务),有监督的backpropagation就会发现这些参数并解决问题。尽管DNNs具有灵活性和力量,但它只适用于输入和目标可以用固定维数的向量进行合理编码的问题。这是一个重要的限制,因为许多重要的问题都是用长度未知的序列来表达的。例如,语音识别和机器翻译是顺序问题。同样,回答问题也可以看作是将一个表示问题的单词序列映射到一个表示答案的单词序列。因此,很明显,学习将序列映射到序列的独立领域的方法将是有用的。序列对DNNs构成了挑战,因为它们要求输入和输出的维数是已知和固定的。在这篇论文中,我们证明了一个简单的应用长短期记忆(LSTM)体系结构[16]可以解决一般的序列对序列问题。这个想法是使用一个LSTM阅读输入序列,一个步伐,获得大fixeddimensional向量表示,然后使用另一个LSTM从向量中提取的输出序列(图1)。第二个LSTM递归神经网络本质上是一个语言模型[30]28日,23日,除了它是条件输入序列。LSTM成功学习数据的能力和长期时间依赖性使其自然选择对于这个应用程序,由于相当长的时间滞后之间的输入和相应的输出(图1)。有很多相关的试图解决一般序列序列与神经网络的学习问题。我们的方法与Kalchbrenner和Blunsom[18]密切相关,他们是第一个将整个输入句子映射到向量的人,并且与Cho等人[5]非常相似。Graves[10]引入了一种新颖的可区分注意机制,允许神经网络关注输入的不同部分,badanau等人成功地将该思想的一个优雅变体应用到机器翻译中。连接主义序列分类是另一种流行的技术,用于用神经网络将序列映射到序列,尽管它假定输入和输出[11]之间是单调对齐的。
图1:我们的模型读取一个输入句子“ABC”,并生成“WXYZ”作为输出句子。在输出句子结束标记后,模型停止进行预测。请注意,LSTM反向读取输入句子,因为这样做会在数据中引入许多短期依赖关系,从而使优化问题变得容易得多。
这项工作的主要结果如下。在WMT 14英法翻译任务中,我们使用简单的从左到右波束搜索解码器从5个深度lstm(每个带有380M参数)的集合中直接提取翻译,获得了34.81的BLEU分数。这是迄今为止用大型神经网络直接翻译得到的最佳结果。为了进行比较,此数据集上SMT基线的BLEU分数为33.30[29]。BLEU的34.81分是由词汇量为80k的LSTM获得的,所以如果参考翻译中包含80k词汇范围之外的单词,就会被扣分。这一结果表明,相对未优化的神经网络结构有很大的改进空间,优于成熟的基于短语的SMT系统。
最后,我们使用LSTM对相同任务[29]上的SMT基线的1000个最佳列表进行重新评分。通过这样做,我们获得了36.5的BLEU分数,这将基线提高了3.2个BLEU点,接近之前的最先进水平(37.0[9])。
令人惊讶的是,LSTM并没有出现很长的句子,尽管最近有其他研究人员使用相关架构[26]的经验。我们能够在长句上做得很好,因为我们颠倒了源句中单词的顺序,而不是训练和测试集中的目标句。通过这样做,我们引入了许多短期依赖关系,使优化问题变得更加简单(见第2节和第3.3节)。因此,SGD可以学习那些没有长句子问题的LSTMs。在源句中颠倒单词的简单技巧是这项工作的关键技术贡献之一。
LSTM的一个有用的特性是它学会了将可变长度的输入句子映射为固定维向量表示。考虑到翻译往往是源句的转述,翻译目标鼓励LSTM寻找能捕捉其含义的句子表征,因为含义相似的句子彼此接近,而含义不同的句子相差很远。一个定性的评估支持了这一说法,表明我们的模型能够感知词序,并且对于主动和被动语态是相当不变的。
2模型
递归神经网络(RNN)[31,28]是前馈神经网络对序列的自然概括。给定一个输入序列(x1,hellip;,一个标准RNN计算一个输出序列(y1,hellip;, yT)通过迭代以下方程:
RNN可以很容易地将序列映射到序列,无论何时输入和输出之间的对齐是已知的。然而,对于输入和输出序列长度不同且关系复杂且非单调的问题,如何应用RNN还不清楚。
一般序列学习的一种简单策略是使用一个RNN将输入序列映射到一个固定大小的向量,然后使用另一个RNN将向量映射到目标序列(Cho等人[5]也采用了这种方法)。虽然RNN提供了所有相关信息,原则上可以工作,但由于产生的长期依赖关系,训练RNN会很困难[14,4](图1)[16,15]。然而,众所周知,长短期记忆(LSTM)[16]能够学习具有长期时间依赖性的问题,因此LSTM可能在这种设置中成功。
LSTM的目标是估计条件概率p(y1,hellip;, yT |x1,hellip;, xT),其中(x1,hellip;, xT)是一个输入序列,y1,hellip;, yT 是其对应的输出序列,其长度T 可能与T不同。LSTM计算这个条件概率首先得到输入序列(x1,hellip;, xT)由LSTM的最后一个隐藏状态给出,然后计算y1,hellip;,用标准的LSTM-LM公式,其初始隐藏状态设置为x1的表示v,hellip;xT:
在这个方程中,每个p(yt|v, y1,hellip;, ytminus;1)词汇表中所有单词的分布用softmax表示。我们使用Graves[10]的LSTM公式。请注意,我们要求每个句子以一个特殊的句子结束符号“”结束,这使模型能够定义一个分布在所有可能长度的序列上。图1概述了总体方案,其中所示的LSTM计算了“A”、“B”、“C”、“”的表示,然后使用该表示计算出“W”、“X”、“Y”、“Z”、“”的概率。
我们的实际模型与上述描述在三个重要方面有所不同。首先,我们使用了两种不同的LSTM:一种用于输入序列,另一种用于输出序列,因为这样做增加了模型参数的数量,而计算成本可以忽略不计,并且使同时在多个语言对上[18]训练LSTM变得很自然。其次,我们发现深层LSTM的性能明显优于浅层LSTM,因此我们选择了一个四层的LSTM。第三,我们发现颠倒输入句子中单词的顺序非常有价值。例如,而不是映射这个句子,b, c的句子alpha;,beta;,gamma;,要求LSTM地图c, b, aalpha;,beta;,gamma;,alpha;,beta;,gamma;是翻译的a, b, c。这样,一个是在靠近alpha;,b是相当接近beta;,等等,这一事实使得SGD更容易“建立通信”之间的输入和输出。我们发现,这种简单的数据转换极大地提高了LSTM的性能。
3实验
本文从两方面将该方法应用于WMT 14英法机器翻译任务。我们使用它直接翻译输入句子,而不使用参考的SMT系统,并使用它对SMT基线的n个最佳列表重新评分。我们报告了这些翻译方法的准确性,给出了示例翻译,并将结果的句子表示可视化。
3.1数据集的细节
我们使用了WMT 14英语到法语数据集。我们在一个包含3.48亿个法语单词和3.04亿个英语单词的1200万个句子的子集上训练我们的模型,这是[29]中一个干净的“选择”子集。我们之所以选择这个翻译任务和这个特定的训练集子集,是因为有一个标记化的训练和测试集以及基线SMT[29]中的1000个最佳列表可供公开使用。
由于典型的神经语言模型依赖于每个单词的向量表示,我们对两种语言都使用了一个固定的词汇表。我们在源语言中使用了16万个最常用单词,在目标语言中使用了8万个最常用单词。每一个词汇表外的单词都被替换成一个特殊的“UNK”符号。
3.2解码和重码
我们实验的核心是在许多句子对上训练一个大型的深度LSTM。我们通过最大化给定源句子S的正确翻译的log概率T来训练它,所以训练目标是
其中S为训练集。一旦培训完成,我们将根据LSTM找到最可能的翻译:
我们使用一个简单的从左到右的波束搜索解码器来搜索最有可能的转换,该解码器保留了少量的部分假设,其中部分假设是某些转换的前缀。在每一个时间步,我们用词汇表中的每一个可能的词扩展光束中的每一个部分假设。这极大地增加了假设的数量,所以我们根据模型的对数概率,除了B个最有可能的假设之外,丢弃所有的假设。一旦“”符号被附加到一个假设中,它就会从光束中移除,并被添加到完整的假设集合中。虽然这个解码器是近似的,但它很容易实现。有趣的是,即使束流大小为1,我们的系统也能表现良好,而束流大小为2可以提供束流搜索的大部分好处(表1)。
我们还使用LSTM对基线系统[29]产生的1000个最佳列表重新评分。为了重新评分n个最佳列表,我们用LSTM计算每个假设的log概率,并对它们的分数和LSTM的分数取一个偶数平均值。
3.3颠倒源句
虽然LSTM能够解决具有长期依赖性的问题,但我们发现,当源句颠倒(目标句不颠倒)时,LSTM的学习效果更好。通过这样做,LSTM的测试困惑度从5.8下降到4.7,其译码的测试BLEU分数从25.9上升到30.6。
虽然我们没有一个完整的解释这一现象,我们相信它是由于引入了许多短期依赖数据集造成的。通常,当我们连接源句和目标句时,源句中的每个词都与目标句中的对应词相差甚远。因此,这个问题有一个很大的“最小时间延迟”[17]。通过颠倒源语句中的词语,源语和目的语中对应词语之间的平均距离不变。然而,源语言的前几个单词现在已经非常接近目标语言的前几个单词,所以这个问题的最小时间延迟大大减少了。因此,反向传播更容易在源句和目标句之间“建立通信”,从而大大提高了整体性能。
一开始,我们认为颠倒输入句子只会导致在目标句子的前面部分更自信的预测,而在后面部分更不自信。然而,在长句子上,反源句子训练的LSTMs比原源句子训练的LSTMs 4表现得更好(见3.7节),这表明颠倒输入句子会导致LSTMs更好地利用内存。
3.4培训细节
我们发现LSTM模型比较容易训练。我们使用4层的深度LSTMs,每层有1000个单元,有1000维单词嵌入,输入词汇量为160,000,输出词汇量为80,000。我们发现,深度LSTMs的性能明显优于浅层LSTMs,每增加一层就减少近10%的困惑,这可能是由于它们的隐藏状态更大。我们使用了一个简单的softmax软件,每次输出超过80000字。得到的LSTM有380M个参数,其中64M是纯循环连接(32M是“编码器”LSTM, 32M是“解码器”LSTM)。完整的培训细节如下:
bull;我们用-0.08到0.08之间的均匀分布初始化LSTM的所有参数
bull;我们使用无动量的随机梯度下降,固定学习率为0.7。5个纪元后,我们的学习速度开始每半个纪元减半。我们总共训练了我们的模型7。5个纪元。
bull;我们使用128个序列的批次作为梯度,并将其分成批次的大小(即128个)。
bull;尽管lstm往往不会遇到渐变消失的问题,但它们可能会有爆炸性的渐变。因此,当梯度的范数超过阈值时,我们对其进行缩放,从而对梯度的范数进行严格限制[10,25]。对于每个训练批,我们计算s = kgk2,其中g是梯度除以128。如果s gt; 5,则设g =5g s。
bull;不同的句子有不同的长度。大多数句子是短的(如长度为20-30),但也有一些句子是长的(如长度为gt; 100),因此随机抽取128个训练句子的小批处理中短句较多,长句较少,从而浪费了小批处理中的大量计算。为了解决这个问题,我们确保在一个小批量中所有的句子都是相同的长度,这将加速2倍。
3.5并行化
使用上一节介绍的配置,在单个GPU上实现深度LSTM的速度约为每秒1700字。这对于我们的目的来说太慢了,所以我们使用8 gpu的机器来并行化我们的模型。LSTM的每一层都在不同的GPU上执行,并在计算完成后立即将其激活信息传递给下一个GPU(或层)。我们的模型有4层LSTMs,每一层都驻留在单独的GPU上。剩下的4个GPU用于并行化softmax,所以每个GPU都需要乘以1000 times; 20000的矩阵。最终实现的速度为每秒6,300个单词(包括英语和法语),小批处理大小为128个单词。培训大约花了十天的时间。
3.6实验结果
我们使用了大小写BLEU评分[24]来评估我们翻译的质量。我们使用mult
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[405753],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。