论文/Sequence to Sequence Learning with Neural Networks
Abstract
深度神经网络(DNN)是一种强大的模型,在困难的学习任务中取得了卓越的性能。尽管 DNNs 在有大的标记训练集时工作得很好,但它们不能用于将序列映射到序列。在本文中,我们提出了一种端到端学习的一般方法。该方法利用多层长短期记忆(LSTM)将输入序列映射到一个固定维数的向量上,然后用另一个深层 LSTM 对目标序列进行解码。我们的主要结果是,在 WMT’14 数据集的英法翻译任务中,LSTM 产生的翻译在整个测试集上达到了34.8 的 BLEU 分数,其中 LSTM 的 BLEU 分数在词汇表外单词上受到惩罚。此外,LSTM 在长句方面没有困难。相比之下,基于短语的 SMT 系统在同一数据集上的 BLEU 得分为 33.3。当我们使用 LSTM 重新评估上述 SMT 系统产生的 1000 个假设时,其 BLEU 得分增加到 36.5,这与之前在这项任务上的最佳结果接近。LSTM 还学习对词序敏感、对主动语态和被动语态相对不变的敏感短语和句子表征。最后,我们发现颠倒所有源句子(而不是目标句子)中的单词顺序可以显著提高 LSTM 的性能,因为这样做会在源句和目标句之间引入许多短期依赖,从而使优化问题变得更容易。
Introduction
深度神经网络(DNNs)是一种非常强大的机器学习模型,在语音识别和视觉对象识别等难题上实现了卓越的性能。DNNs 之所以强大,是因为它们可以在不多的步骤内执行任意并行计算。DNNs 的强大威力的一个令人惊讶的例子是它们仅使用 2 个二次大小的隐藏层对 N 个比特数进行排序。因此,虽然神经网络与传统的统计模型有关,但它们学习复杂的计算。此外,只要标记的训练集有足够的信息来指定网络的参数,就可以用监督反向传播来训练大型 DNN。因此,如果存在一个获得良好结果的大型 DNN 的参数设置(例如,因为人类可以非常快速地解决任务),监督反向传播将找到这些参数并解决问题。
尽管 DNNs 具有灵活性和强大的功能,但它只能应用于输入和目标可以用固定维数的向量进行合理编码的问题。这是一个重要的限制,因为许多重要问题最好用长度未知的序列来表示。例如,语音识别和机器翻译都是顺序问题。同样,问题回答也可以看作是将代表问题的单词序列映射到代表答案的单词序列。因此,很明显,学习将序列映射到序列的独立于领域的方法是有用的。
序列对 DNNs 提出了挑战,因为它们要求输入和输出的维数是已知的和固定的。在本文中,我们证明了长-短期记忆(LSTM)体系结构的直接应用可以解决一般的序列间问题。其思想是使用一个 LSTM 读取输入序列,每次一个时间步,以获得大的固定维向量表示,然后使用另一个 LSTM 从该向量中提取输出序列(图1)。第二个 LSTM 本质上是一个递归神经网络语言模型,只是它是以输入序列为条件的。LSTM 能够成功地学习具有长时间依赖关系的数据,这使得它成为该应用的自然选择,因为输入和相应输出之间存在相当大的时间延迟(图1)。

已经进行了许多相关尝试,以解决一般序列与神经网络的序列学习问题。我们的方法与最早将整个输入句子映射到向量的 Kalchbrenner 和 Blunsom 密切相关,并且与 Cho 等人的方法有关。尽管后者仅用于记录基于短语的系统所产生的假设。Graves 引入了一种新颖的可微分注意力机制,该机制使神经网络能够专注于其输入的不同部分,并且 Bahdanau 等人成功地将该思想的一种优雅变体应用于机器翻译。Connectionist Sequence Classification 是另一种流行的技术,可以利用神经网络来映射端到端,但是它假定输入和输出之间是单调对齐
这项工作的主要结果如下。在 WMT’14 英法翻译任务上,我们利用了一个简单的从左到右的波束搜索解码器,从整合 5 层的深度 LSTMs(每个 384M 参数和 8000 个维度状态)直接提取翻译,获得了 34.81分的 BLEU 分数。这是迄今为止用大型神经网络进行直接翻译所取得的最佳结果。作为比较,该数据集上 SMT 基线的 BLEU 得分为33.30。BLEU 得分为 34.81,是由词汇量为 80k 的 LSTM 获得的,因此每当参考译文中包含 80k 单词以外的单词时,BLEU 分数就会被扣分。这一结果表明,相对未优化的小词汇量神经网络结构比基于短语的 SMT 系统有很大的改进空间。
最后,我们使用 LSTM 对同一任务中公开的 1000 个 SMT 基线最佳列表进行了重新筛选。通过这样做,我们得到了 36.5 的 BLEU 分数,这使基线提高了 3.2 个 BLEU 点,并且接近之前在这项任务中发表的最佳结果(37.0)。
令人惊讶的是,尽管最近有其他研究人员在相关架构方面的经验,LSTM 并没有在很长的句子中受到影响。我们之所以能在长句上表现出色,是因为在训练和测试集中,我们颠倒了源句中单词的顺序,而不是目标句。通过这样做,我们引入了许多短期依赖关系,使优化问题更加简单。因此,SGD 可以学习没有长句问题的 LSTMs。这项工作的主要技术贡献之一就是在源句中颠倒单词的简单技巧。
LSTM 的一个有用的特性是它可以学习将可变长度的输入语句映射为固定维的向量表示。考虑到译文往往是源句的释义,翻译目标鼓励第一语言学习者寻找能够捕捉其意义的句子表示法,因为意义相似的句子彼此接近,而不同的两个句子的意义却相距甚远。一个定性的评估支持了这一说法,表明我们的模型能够感知词序,并且对主动语态和被动语态具有相当的不变性。
The Model
递归神经网络(RNN)是前馈神经网络对序列的自然推广。给定输入序列$(x_1…x_T)$,标准 RNN 通过迭代以下方程计算输出序列$(y_1…y_T)$:
只要提前知道输入和输出之间是对齐的,RNN 就可以很容易地将序列映射到序列。然而,如何将 RNN 应用于输入和输出序列长度不同、关系复杂且非单调的问题还不明确。
一般序列学习最简单的策略是使用一个 RNN 将输入序列映射到一个固定大小的向量,然后用另一个 RNN 将向量映射到目标序列(Cho 等人也采用了这种方法)。虽然原则上可以工作,因为 RNN 提供了所有相关信息,但由于产生的长期依赖性很难训练 RNNs(图1)。然而,众所周知,长-短期记忆(LSTM)可以学习具有长范围时间依赖性的问题,因此 LSTM 可能在这种情况下取得成功。
LSTM 的目标是估计条件概率$ p(y_1…y_{T′}| x_1…x_T)$其中$(x_1…x_T)$是一个输入序列,$(y_1…y_T)$是其相应的输出序列,其长度 T′ 可能与 T 不同。LSTM 通过首先获得由 LSTM 的最后一个隐藏状态给出的输入序列$(x_1…x_T)$,然后用一个标准的 LSTM-LM 公式计算 $(y_1…y_T)$的概率,其初始隐藏态设为$(x_1…x_T)$的表示$v$:
在这个方程中,每个$p(y_t|v,y_1…y_{t-1})$在词汇表中的所有单词上用 softmax 表示分布。我们使用 Graves 中的 LSTM 公式。注意我们要求每个句子以一个特殊的句子结尾符号“
我们的实际模型在三个重要方面与上述描述不同。首先,我们使用了两种不同的 LSTM:一种用于输入序列,另一种用于输出序列,因为这样做会以可忽略的计算成本增加数字模型参数,并使得同时在多个语言对上训练 LSTM 变得很自然。第二,我们发现深层 LSTMs 的表现明显优于浅层 LSTMs,因此我们选择了四层的 LSTM。第三,我们发现倒序输入句非常有价值。例如,LSTM 不是将句子 a,b,c 映射到句子 α,β,γ,而是要求 LSTM 将 c,b,a 映射到 α,β,γ,其中 α,β,γ 是 a,b,c 的翻译。这样一来,a 非常接近 α,b 相当接近 β,以此类推,这一事实使得 SGD 很容易在输入和输出之间建立联系。我们发现这种简单的数据转换可以大大提高 LSTM 的性能。
Experiments
Related work
神经网络在机器翻译中的应用有大量的工作要做。到目前为止,将 RNN 语言模型(RNNLM)或一个前馈神经网络语言模型应用到机器翻译任务中,通过重新筛选强机器翻译基线的 n 最佳列表,可以提高翻译质量。
最近,研究人员开始研究如何将源语言的信息包含到 NNLM 中。这项工作的例子包括 Auli 等人,他们将 NNLM 与输入语句的主题模型相结合,从而提高了重新排序的性能。Devlin 等人采用了类似的方法,但他们将 NNLM 合并到 MT 系统的解码器中,并使用解码器的对齐信息为 NNLM 提供输入语句中最有用的单词。他们的方法非常成功,并且在基线上取得了很大的改进。
我们的工作与Kalchbrenner和Blunsom[18]密切相关,他们第一个将输入句子映射到向量,然后再映射回句子,尽管他们使用卷积神经网络将句子映射到向量,这会失去单词的顺序。与这项工作类似,Cho等人[5]使用类似LSTM的RNN架构将句子映射到向量和反向,尽管他们的主要关注点是将他们的神经网络集成到SMT系统中。Bahdanau等人[2]还尝试用一种神经网络直接翻译,这种神经网络使用注意机制来克服Cho等人[5]在长句上表现不佳的问题,并取得了令人鼓舞的结果。同样,Pouget Abadie等人[26]试图解决Cho等人[5]的记忆问题,通过翻译源句子的片段来产生流畅的翻译,这类似于基于短语的方法。我们怀疑,他们可以通过简单地训练他们的网络来获得类似的改进。
Conclusion
在这项工作中,我们证明了在大规模机器翻译任务中,词汇量有限且几乎没有问题结构假设的大型深层 LSTM 可以比基于 SMT 的标准系统表现更好。我们简单的基于 LSTM 的 MT 方法的成功表明,只要它们有足够的训练数据,它就可以很好地解决许多其他序列学习问题。
我们惊讶于通过颠倒源句中的单词所获得的改进程度。我们的结论是,重要的是找到一个问题编码有最大数量的短期依赖,因为他们使学习问题更简单。特别是,虽然我们无法在非反转翻译问题上训练标准 RNN(如图1所示),但我们认为,当源语句被颠倒时,标准 RNN 应该是容易训练的(尽管我们没有通过实验验证)。
我们还对 LSTM 正确翻译很长句子的能力感到惊讶。我们最初确信,由于记忆有限,LSTM 在长句上会失败,而其他研究人员报告说,使用类似于我们的模型的长句表现不佳。然而,在反向数据集上训练的 LSTM 在翻译长句时几乎没有困难。
最重要的是,我们证明了一个简单、直截了当且相对未优化的方法可以优于 SMT 系统,因此进一步的工作可能会探索更高的翻译精度。这些结果表明,我们的方法很可能在其他具有挑战性的序列对序列问题上做得很好。
我们的工作与 Kalchbrenner 和 Blunsom 密切相关,他们第一个将输入句子映射到向量,然后再映射回句子,尽管他们使用卷积神经网络将句子映射到向量,这会失去单词的顺序。与这项工作类似,Cho 等人使用类似 LSTM 的 RNN 架构将句子映射到向量和反向,尽管他们的主要关注点是将他们的神经网络集成到 SMT 系统中。Bahdanau 等人还尝试用一种神经网络直接翻译,这种神经网络使用注意力机制来克服 Cho 等人在长句上表现不佳的问题,并取得了令人鼓舞的结果。同样,Pouget Abadie 等人试图解决 Cho 等人的记忆问题,通过翻译源句子的片段来产生流畅的翻译,这类似于基于短语的方法。我们怀疑,他们可以通过简单地训练他们的网络来获得类似的改进。
端到端训练也是 Hermann 等人的重点,他们的模型通过前馈网络表示输入和输出,并将它们映射到空间中的相似点。然而,他们的方法不能直接生成翻译:为了得到翻译,他们需要在预先计算的句子数据库中查找最近的向量,或者重新扫描句子。

