8.7 Seq2Seq 论文

利用神经网络进行序列到序列学习!

创建日期: 2025-02-06

深度神经网络 (DNN) 是一种功能强大的模型,在困难的学习任务上取得了出色的表现。尽管只要有大型标记训练集可用,DNN 就能很好地工作,但它们不能用于将序列映射到序列。

在本文中,我们提出了一种通用的端到端序列学习方法,该方法对序列结构做出最少的假设。我们的方法使用多层长短期记忆 (LSTM) 将输入序列映射到固定维数的向量,然后使用另一个深度 LSTM 从向量中解码目标序列。

长短期记忆 (LSTM) 在 第 8.3 节 长短期记忆网络中介绍,它是基础的 RNN 变种,主要表现为计算隐藏状态的方式不同,通过门控开关处理长期或者短期依赖关系。

我们的主要结果是,在 WMT 14 数据集的英语到法语的翻译任务中,LSTM 生成的翻译在整个测试集上获得了 34.8 的 BLEU 分数,其中 LSTM 的 BLEU 分数因词汇表以外的单词而受到惩罚。

WMT 14 数据集在 第 8.5 节 WMT 数据集 中介绍,包括使用 BLEU 评价方法。

此外,LSTM 在处理长句时没有遇到困难。相比之下,基于短语的统计机器翻译 (SMT) 系统在同一数据集上实现了 33.3 的 BLEU 分数。当我们使用 LSTM 对上述 SMT 系统产生的 1000 个假设进行重新排序时,其 BLEU 分数增加到 36.5,这接近该任务之前的最佳结果。

统计机器翻译 (Statistical Machine Translation, SMT) 的基本思想是通过对大量的平行语料进行统计分析,构建统计翻译模型,进而使用此模型进行翻译。

LSTM 还学习了合理的短语和句子表示,这些表示对词序敏感,并且对主动语态和被动语态相对不变。最后,我们发现,反转所有源句子(但不是目标句子)中的单词顺序可以显著提高 LSTM 的性能,因为这样做会在源句子和目标句子之间引入许多短期依赖关系,从而使优化问题变得更容易。

8.7.1 介绍

深度神经网络 (DNN) 是一种非常强大的机器学习模型,在语音识别和视觉对象识别等难题上取得了出色的表现。DNN 之所以强大,是因为它们可以在少量步骤内执行任意并行计算。DNN 强大的一个令人惊讶的例子是,它们能够仅使用 2 个二次大小的隐藏层对 N 个 N 位数进行排序。因此,虽然神经网络与传统的统计模型相关,但它们学习的是复杂的计算。

此外,只要标记训练集具有足够的信息来指定网络的参数,就可以使用监督反向传播来训练大型 DNN。因此,如果存在一个大型 DNN 的参数设置可以实现良好的结果(例如,因为人类可以非常快速地解决任务),监督反向传播将找到这些参数并解决问题。

尽管 DNN 具有灵活性和强大功能,但它只能应用于输入和目标可以用固定维数的向量合理编码的问题。这是一个很大的限制,因为许多重要问题最好用长度未知的序列来表达。

例如,语音识别和机器翻译是顺序问题。同样,问答也可以看作是将表示问题的单词序列映射到表示答案的单词序列。因此,很明显,一种独立于领域的、学习将序列映射到序列的方法将会很有用。

序列对 DNN 提出了挑战,因为它们要求输入和输出的维数是已知且固定的。在本文中,我们展示了长短期记忆 (LSTM) 架构的直接应用可以解决一般的序列到序列问题。

这个想法是使用一个 LSTM 一次读取一个时间步长的输入序列,以获得大的固定维度向量表示,然后使用另一个 LSTM 从该向量中提取输出序列,如下图所示:

序列到序列

第二个 LSTM 本质上是一个循环神经网络语言模型,只不过它以输入序列为条件。由于输入与其对应输出之间存在相当大的时间滞后,LSTM 能够成功地学习具有长距离时间依赖性的数据,因此它自然而然地成为此应用的选择。

已经有许多相关尝试来解决使用神经网络的一般序列到序列学习问题。我们的方法与 Kalchbrenner 和 Blunsom 密切相关,他们是第一个将整个输入句子映射到向量的人,并且与 Cho 等人相关,尽管后者仅用于重新评分基于短语的系统产生的假设。

Graves 引入了一种新颖的可区分注意力机制,允许神经网络关注其输入的不同部分,并且这个想法的一个优雅变体被 Bahdanau 等人成功应用于机器翻译。连接主义序列分类是另一种流行的使用神经网络将序列映射到序列的技术,但它假设输入和输出之间存在单调对齐。

这项工作的主要成果如下,在 WMT’14 英语到法语的翻译任务中,我们使用简单的从左到右波束搜索解码器直接从 5 个深度 LSTM(每个具有 384M 个参数和 8,000 维状态)的集合中提取翻译,获得了 34.81 的 BLEU 分数。这是迄今为止使用大型神经网络直接翻译所取得的最佳结果。

作为比较,此数据集上 SMT 基线的 BLEU 分数为 33.30 [29]。34.81 的 BLEU 分数是由词汇量为 80k 单词的 LSTM 获得的,因此只要参考翻译包含这 80k 未涵盖的单词,就会对分数进行惩罚。该结果表明,相对未优化的小词汇量神经网络架构有很大的改进空间,其性能优于基于短语的 SMT 系统。

最后,我们使用 LSTM 对同一任务 [29] 上公开可用的 SMT 基线 1000 个最佳列表进行重新评分。通过这样做,我们获得了 36.5 的 BLEU 分数,这使基线提高了 3.2 个 BLEU 点,并且接近之前在此任务上发布的最佳结果(即 37.0)。

令人惊讶的是,尽管其他研究人员最近对相关架构有过研究,但 LSTM 在处理非常长的句子时并没有受到影响 [26]。我们之所以能够在长句子上取得良好的成绩,是因为我们颠倒了源句子中的单词顺序,但没有颠倒训练和测试集中的目标句子中的单词顺序。

通过这样做,我们引入了许多短期依赖关系,使优化问题变得简单得多(参见第 2 节和 3.3 节)。因此,SGD 可以学习对长句子没有问题的 LSTM。反转源句子中的单词的简单技巧是这项工作的关键技术贡献之一。

LSTM 的一个有用特性是它学会将可变长度的输入句子映射到固定维度的向量表示中。鉴于翻译往往是源句子的释义,翻译目标鼓励 LSTM 找到能够捕捉其含义的句子表示,因为具有相似含义的句子彼此接近,而不同句子的含义则会相距甚远。定性评估支持这一说法,表明我们的模型能够识别词序,并且对主动和被动语态相当不变。

8.7.2 模型

循环神经网络 (RNN) 是前馈神经网络对序列的自然推广。给定一个输入序列 \((x_1, ... , x_T)\) ,一个标准的 RNN 通过迭代下述等式获得系列输出 \((y_1, ... , y_T)\):

\(h_t = sigm(W^{hx}x_t + W^{hh}h_{t-1})\)

\(y_t = W^{yh}h_t\)

只要提前知道输入和输出之间的对齐,RNN 就可以轻松地将序列映射到序列。然而,目前尚不清楚如何将 RNN 应用于输入和输出序列长度不同且关系复杂且非单调的问题。

一般序列学习的最简单策略是使用一个 RNN 将输入序列映射到固定大小的向量,然后使用另一个 RNN 将向量映射到目标序列(这种方法也已被 Cho 等人采用 [5])。虽然理论上它可以工作,因为 RNN 提供了所有相关信息,但由于由此产生的长期依赖关系,训练 RNN 会很困难(图 1)[14、4、16、15]。然而,众所周知,长短期记忆 (LSTM)[16] 可以学习具有长距离时间依赖性的问题,因此 LSTM 可能在这种情况下取​​得成功。

LSTM 的目标是估算条件概率 \(p(y_1, \dots , y_{T'} | x_1, \dots , x_T)\) ,其中 \((x_1, \dots , x_T)\) 是输入序列,\(y_1, \dots , y_{T'}\) 是对应的输出序列,它们的长度 \(T\) 和 \(T'\) 可能不相同。LSTM 计算该条件概率的方法是,先获取由 LSTM 的最后一个隐藏状态给出的输入序列 \((x_1, \dots , x_T)\) 的固定表示维度 \(v\) ,然后使用标准的 LSTM-LM 公式计算 \(y_1, \dots , y_{T'}\) 的概率,其中公式的初始隐藏状态设置为 \(x_1, \dots , x_T\) :

\(p(y_1 , \dots , y_{T'} | x_1 , ... , x_T) = \prod_{t=1}^{T'}p(y_t | v, y_1, \dots , y_{t-1})\)

在上面的等式中,每个 \(p(y_t | v , y_1, \dots , y_{t-1})\) 分布都用词汇表中所有单词的 softmax 表示。我们使用来自于 Graves 论文的 LSTM 公式。请注意,我们要求每个句子都以特殊的句末符号 "" 结尾,这使模型能够定义所有可能长度的序列分布。总体方案如上图所示,其中 LSTM 计算的 "A", "B", "C", "" 的表示,然后使用这些表示计算 "W", "X", "Y", "Z", "" 的概率。

我们的实际模型与上述描述有三个重要的不同。第一,我们使用了两个不同的 LSTM:一个用于输入序列,另一个用于输出序列,因为这样做可以以忽略不计的计算成本增加模型参数的数量,并且可以自然而然地同时在多个语言对上训练 LSTM 。第二,我们发现深度 LSTM 的表现明显优于浅层 LSTM ,因此我们选择了四层的 LSTM 。

第三,我们发现反转输入句子的单词顺序非常有价值,比如 LSTM 不是将句子 a, b, c 映射到句子 α, β, γ, 而是将 c, b, a 映射到 α, β, γ ,其中 α、β、γ 是 a、b、c 的翻译。这样,a 就与 α 非常接近,b 就与 β 非常接近,依此类推,这使得 SGD 很容易在输入和输出之间“建立通信”。我们发现这种简单的数据转换可以大大提高 LSTM 的性能

8.7.3 实验

我们以两种方式将我们的方法应用于 WMT 14 英语到法语的 机器翻译 (MT) 任务。我们使用它来直接翻译输入句子而不使用参考 SMT 系统,并且我们用它来重新评分 SMT 基线的 n 个最佳列表。我们报告了这些翻译方法的准确性,展示了示例翻译,并可视化了生成的句子表示。

8.7.3.1 数据集

我们使用了 WMT’14 英语到法语数据集。我们在一个由 3.48 亿个法语单词和 3.04 亿个英语单词组成的 1200 万个句子子集上训练了我们的模型,这是一个来自 [29] 的干净的“选定”子集。我们之所以选择这个翻译任务和这个特定的训练集子集,是因为有一个标记化的训练和测试集以及来自基线 SMT [29] 的 1000 个最佳列表可供公众使用。

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

8.7.3.2 解码与重评分

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

\(1/|S|\sum_{(T, S) ∈ S} log_p(T|S)\)

其中 S 是训练集,训练完成后,我们根据 LSTM 找到最可能的翻译来生成翻译:

\(\hat{T} = arg \underset{T}{\max} p(T|S)\)

我们使用一个简单的从左到右的波束搜索解码器来搜索最可能的翻译,该解码器维护少量的 B 个部分假设,其中部分假设是某些翻译的前缀。在每个时间步骤中,我们用词汇表中所有可能的单词来扩展波束中的每个部分假设。这大大增加了假设的数量,因此我们根据模型的对数概率丢弃了除 B 个最有可能的假设之外的所有假设。

一旦将“<EOS>”符号附加到假设上,它就会从光束中移除并添加到完整假设集。虽然这个解码器是近似的,但实现起来很简单。有趣的是,即使光束大小为 1,我们的系统也能表现良好,而光束大小为 2 则提供了光束搜索的大部分好处(表 1)。

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

8.7.3.3 反向源句子

虽然 LSTM 能够解决具有长期依赖性的问题,但我们发现,当源句子被反转(目标句子没有反转)时,LSTM 的学习效果会更好。通过这样做,LSTM 的测试困惑度从 5.8 降至 4.7,其解码翻译的测试 BLEU 分数从 25.9 提高到 30.6。

虽然我们无法完全解释这一现象,但我们认为这是由于向数据集引入了许多短期依赖关系而导致的。通常,当我们将源句子与目标句子连接起来时,源句子中的每个单词都与目标句子中的对应单词相距甚远。因此,该问题具有很大的“最小时间滞后” [17]。通过反转源句子中的单词,源语言和目标语言中对应单词之间的平均距离保持不变。但是,源语言中的前几个单词现在非常接近目标语言中的前几个单词,因此该问题的最小时间滞后大大减少。因此,反向传播更容易在源句子和目标句子之间“建立通信”,从而大大提高整体性能。

最初,我们认为反转输入句子只会使目标句子的前半部分预测更准确,而后半部分预测准确度较低。然而,在反转源句子上训练的 LSTM 在长句子上的表现比在原始源句子上训练的 LSTM 好得多(见第 3.7 节),这表明反转输入句子可使 LSTM 具有更好的内存利用率。

8.7.3.4 训练详情

8.7.3.5 并行化

8.7.3.6 实验结果

8.7.3.7 长句子表现

8.7.3.8 模型分析

8.7.4 相关工作

8.7.5 总结

在这项研究中,我们展示了一个大型深度 LSTM,它词汇量有限,而且对问题结构几乎不做任何假设,在大规模机器翻译任务中,它的表现可以胜过基于标准 SMT 的系统,后者的词汇量是无限的。我们基于 LSTM 的简单方法在机器翻译上的成功表明,只要有足够的训练数据,它应该可以在许多其他序列学习问题上表现出色。

我们对通过反转源句子中的单词所获得的改进程度感到惊讶。我们得出结论,找到具有最多短期依赖性的问题编码非常重要,因为它们使学习问题变得简单得多。特别是,虽然我们无法在非反向翻译问题上训练标准 RNN(如图 1 所示),但我们相信当源句子被反转时,标准 RNN 应该很容易训练(尽管我们没有通过实验验证这一点)。

我们还对 LSTM 能够正确翻译非常长的句子的能力感到惊讶。我们最初确信 LSTM 会因为内存有限而无法处理长句子,其他研究人员报告称,使用与我们类似的模型,其在长句子上的表现不佳[5, 2, 26]。然而,在反向数据集上训练的 LSTM 在翻译长句子时几乎没有遇到任何困难。

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

8.7.6 致谢与参考

我们感谢 Samy Bengio、Jeff Dean、Matthieu Devin、Geoffrey Hinton、Nal Kalchbrenner、Thang Luong、Wolfgang Macherey、Rajat Monga、Vincent Vanhoucke、Peng Xu、Wojciech Zaremba 和 Google Brain 团队的有益评论和讨论。