《Sequence to Sequence Learning with Neural Networks》论文笔记

机器翻译论文笔记

(Sequence to Sequence Learning with Neural Networks)

一.摘要

       此论文中,实现机器翻译的核心模型是长短期记忆神经网络(Long Short-Term Memory, LSTM),首先通过一个多层的LSTM将输入的语言序列(下文简称源序列)转化为一个特定维度的向量,然后另一个深层LSTM根据此向量编译出相应的另一语言序列(下文简称目标序列)。与基于短语的统计机器翻译(Static Machine Translation, SMT)相比,在BLUE(Bilingual Evaluation Understudy)算法的评估下有着更好的性能表现。同时,作者发现逆转输入序列的顺序能显著提升LSTM的性能表现,因为这样解释了许多的源序列与目标序列的短期相关性,使最优化更简单。

二.介绍

1.深度神经网络(Deep Neural Networks)的介绍以及其局限性

       深度神经网络(Deep Neural Networks)是一种性能强大的模型,在处理各种难题,如语音识别、物体认知上有着近乎完美的表现。这种模型之所以这么强大,是因为它能在有限的步骤内实现任意平行的计算。只要有足够的标签训练数据集,他就能识别出神经网络的参数,从而DNN能够实现很好的运行结果,做到解决问题。

       虽然DNN有着很强的适应性和能力,但只能用于源序列与目标序列都被编译为维度固定的向量。这是一个致命的局限,因为很多问题最好被表示为长度不能提前预知的序列,例如语音识别与机器翻译。

       上述的问题是对DNN的一个巨大挑战,所以在此文中,我们将采用一种更加简单明了的应用——长短期记忆神经网络(Long Short-Term Memory, LSTM)。

2. 长短期记忆神经网络(Long Short-Term Memory, LSTM)

                         

       解决问题的思路就是用先用一层LSTM去读入源序列,逐步地获得大量维度固定的向量表示,随后用另一层LSTM去从向量中提取出目标序列 。第二层LSTM本质上是一个取决于源序列的周期性神经网络(Recurrent Neural Network, RNN)语言模型。考虑到相当大的时间滞后,LSTM能利用长时间范围内的相关性从数据中学习的能力让它成为此次应用的最佳选择。

 

       从此图我们可以简要了解LSMT模型的解决思路,先读取“ABC”,到EOS停止。并且LSTM是按逆转的顺序读取源序列的,随后输出目标序列“WXYZ”。

       此外,LSTM在长句翻译中的表现也不俗。这归功于对源序列中词序的逆转。通过这样的方法,解释了许多的源序列与目标序列的短期相关性,使最优化更简单。这个小策略是我们在本次研究的一个重要贡献。

       LSTM的一个重要特质是它能够学会将不同长度的句子映射在一个维度固定的向量中实现表达。常规的翻译倾向于逐字逐句翻译,但LSTM被鼓励去理解句子的含义,因为同样的句子在不同的语境中的含义会有所不同。一个定性的评估支持了我们的理论,证明我们的模型面对主动语态和被动语态时表现得更加灵活。

三. 关于模型

1.迭代计算

 

       周期性神经网络(Recurrent Neural Network, RNN)是一种前馈神经网络(Feedforward Neural Network)对序列的一种自然泛化。即给定一个输入序列(x1, . . . , xT ),一个RNN通过以下公式迭代得出输出序列(y1, . . . , yT )。

2.条件概率

 

       LSTM的目标是估计出条件概率p(y1, . . . , yT′ |x1, . . . , xT ),其中(x1, . . . , xT )是输入序列,则y1, . . . , yT′是相应的输出序列,并且其中长度T与T‘或许不相同。在最深层隐藏LSTM的状态下,通过初次其给出的输入序列(x1, . . . , xT )的固定维度的表示v,来计算条件概率。随后用一个标准的LSTM—LM公式来计算y1, . . . , yT′的概率,此方程的最终隐藏状态是(x1, . . . , xT )的表示v。

       在此方程中,每个p(y1, . . . , yT′ |x1, . . . , xT )的分布以词汇中所有词的softmax函数表示。同时我们需要在每个句子的结尾用“<EOS>”来标志,以便模型能够对不同长度的序列定义分配。

但我们的实际模型与以上描述有三个方面有所不同。

① 我们将使用两个不同的LSTM,一个用于输入序列,另一个用于输出序列。因为这样能在小到几乎可以忽略的计算消耗下增加更多的模型参数。

② 我们发现深层LSTM的性能显著优于浅层LSTM,所以我们选择使用四层的LSTM。

③ 逆转输入句子的顺序对性能提升有很高的价值。通过这样更容易在输入与输出之间建立联系,让数据的转化在LSTM上具有更好的表现。

 

四. 实验

1. 数据集的相关细节(Dataset Details)

       本次实验使用WMT’14英语->法语数据集。训练的数据子集基于12M的句子,其中包含348M的法语词汇和304M英语词汇。之所以选择此次的翻译任务和数据集,是基于它们的作为标记化训练的广泛实用性,并且这些数据都是从STM基线中1000个最佳列表。

2. 编译与重评分(Decoding and Rescoring)

 

       我们实验的核心是对基于许多句子序列对上训练一个结构层次较深的LSTM。基于源句子S上的正确翻译T,通过最大化对数概率来训练模型。具体公式如上,其中,S是训练数据集。

 

       一旦训练完成,根据LSTM我们找到最可能的翻译作为其结果。通过使用从左到右的束搜索解码器(Left-to-Right Beam search decoder),其中包含一个作为部分假设的较小数字B,此处的部分假设(partial Hypothesis)是一些翻译的前缀。我们将利用词汇中每个可能的单词来逐步拓展每个顺序中部分假设。这样就大大增加了假设的数量,因此根据对数概率模型,除了B中最可能的假设,其余全部抛弃。一旦“<EOS>”标志被加到假设中,就将其从束中取出,加入至完成的假设中。有趣的是,我们的系统就算在尺寸仅为1的束也能表现得很好,但尺寸为2的串时,串搜索(Beam Search)性能最佳。

3. 逆转原句序列

       虽然LSTM能够基于长期的相关性处理问题,但我们发现在把原句序列逆转的情况下LSMT能学习得更加出色。逆转之后,LSTM测试的复杂度从5.8降至4.7,并且在BLEU上的得分从25.9提升至30.6。

       虽然对这个现象还没有完整的理论体系来解释,但我们相信这主要是由于向数据集引入许多短期相关项所导致的。通常当我们将源序列与目标序列链接时,源序列中的每个词语在目标序列中意思出入都很大。结果即是,这个问题有着很大的“最小时间延迟“(Minimal Time Lag)。但通过逆转原序列中的词语,源序列与目标序列中词语平均距离不变。然而源序列语言中最初的几个词已经非常接近目标序列语言中的词了,所以问题中的”最小时间延迟“就能减小许多。因此,反向传播(Backpropagation)能够更轻松地在源序列与目标序列中建立联系,并且改善整体的性能表现。

       起初,我们相信逆转源序列只会在句子的前半部分取得良好的表现,但对后半部分却优化较差。然而,在逆转源序列训练下的LSTM处理长句时也能取得很好的表现。这说明了逆转源序列能使LSTM得到更好的内存利用。

4. 平行化(Parallelization)

       基于先前的单GPU处理的结构中,C++实现深层LSTM的处理速度约为1700词每秒。这速度显然远远不够,所以我们将模型用一个8个GPU的机器平行化。每个GPU单独处理每层LSTM,并且每当一层计算完毕时将其激活状态与下个GPU连接。我们的模型有4层LSTM,每层拥有独立的GPU。而剩下的四个GPU用于平行化softmax函数,每个GPU负责用1000*20000的矩阵乘法计算。基于尺寸128的小批量,最终实现速度达到6300词每秒,通过十天的训练完成了实现。

5. 模型分析(Model Analysis)

 

我们模型其中一个吸引力十足的特点就是有能力将一个序列映射为一个有着固定维度的向量。在上图中就是学习过程的可视化表示,每个短语根据其含义而集群分布,从中我们可以看出表达对单词的顺序非常敏感,但对被动语态替换主动语态非常迟钝。

 

       上述两个图表中,左图展示了我们的系统与句子长度的函数关系。其中x轴代表着相应句子整理后的长度(Test Sentences Sorted By their Length)。对于少于35字的句子没有降化,只有在最长的句子中有略微的缩减。右图展示了LSTM的性能表现和句子中词语的稀有度之间的关系,其中X轴代表着整理后句子的平均词语频率排名(Test Sentences Sorted By Average word Frequency Rank)

 

四. 总结

       在本论文,我们发现一个基于有限词汇,具有深层结构的LSTM的性能表现能够胜过一个基于统计机器翻译的系统。基于LSTM的机器翻译系统的成功说明了它只要在拥有足够的训练数据的前提下,同样能在解决其他问题上发挥出色。

       我们对逆转源句子序列后的性能提升程度感到惊讶。同时我们也推断出,找到一个问题具有最大数量的短期相关性的解码是非常重要的,因为这样简化问题的解决。我们相信一个标准的RNN在逆转源序列后能够更加容易被训练。

       同时我们也对LSTM准确翻译长句的能力感到惊讶。我们起初认为LSTM会在翻译长句时受到其内存的局限性而失败,并且早有和我们类似的模型在研究中表现得并不理想。尚且如此,基于逆转源序列的训练LSTM翻译长句却令人惊艳。

       最重要的是我们举例了一个简洁、明确并且相对优化较好的方法,它比传统的、成熟的机器翻译更加出色。所以之后的工作中,我们会致力于更加优秀的翻译准确度。同时,这些结果预示着我们的方法很可能在其他由序列映射到序列的问题中也能发挥出色。

posted @ 2018-02-05 20:25  图袋鼠  阅读(569)  评论(0编辑  收藏  举报