【新智元导读】CMU 语言技术研究所助理教授 Graham Neubig 将有关神经机器翻译和 seq2seq 各种模型的概要、重点以及部署技巧整理为一篇长达65页的教程发表于 arxiv,内容由浅入深,兼具实用性与启发性,值得收藏研读。
论文题目:神经机器翻译与 sequence-to-sequence 模型:一个教程 (Neural Machine Translation and Sequence-to-sequence Models: A Tutorial )
论文下载地址:https://arxiv.org/pdf/1703.01619v1.pdf
引言
这个教程介绍了一些新的,而且十分强大的技术,通常被称为“神经机器翻译”或“神经seq2seq 模型”。这些技术已经被用于人类语言处理的许多人物,并且对任何想对某种类型的序列数据建模的人来说都是很强大的工具。这个教程假设读者已经具备数学和编程的基础知识,但不要求一定要有神经网络或自然语言处理的经验。本教程尝试解释一系列方法背后的原理,然后通过大量数学上的解释帮助读者深入了解这些方法,并且提供了一些实践上的建议,以便读者在实践中测试自己对这些内容的理解。
背景
在这一节,作者解释了标题里的两个重要概念的含义,即“机器翻译”和“seq2seq 模型”。有关“机器翻译”的概念在这里不再赘言,以下介绍一下“序列到序列模型”,即简称“seq2seq 模型”的这个概念。
“seq2seq 模型”是指将一个序列映射到另一个系列的一类模型。这里面当然包括机器翻译,但也包含了处理其他任务的更广泛的方法,如图1所示。实际上,如果我们把计算机程序的输入看作是一个输入比特序列,然后输出是一个输出比特序列,那么我们可以说每一个单独的程序都是一个表示某些行为的“序列到序列”模型(虽然在许多情况下这不是最自然或最直观的表达方式)。
图1:seq2seq 建模任务的示例
本教程的结构
首先,本教程第2节讲解了用于机器翻译的统计学技术的一般数学定义。教程的其余部分按复杂程度递增介绍 seq2seq 的各种模型,最后是注意力模型,它代表了当前该领域最先进的技术。
第3~6节关注语言模型,这些模型计算目标序列的概率。这些模型不能执行翻译或序列转换,但对初步理解 seq2seq 模型很有帮助。这几节解释的概念包括:n-gram 语言模型、log-linear 语言模型、神经网络,以及循环神经网络(RNN)。
最后,第7和第8节介绍了能够执行机器翻译或其他任务的实用 seq2seq 模型,包括 encoder-decoder 模型和 注意力模型。Encoder-decoder 模型使用 RNN 将目标序列编码为数字向量,然后另一个网络将该数字向量解码为输出的句子。第7节也介绍了生成序列的搜索算法。注意力模型允许在生成翻译输出时注意输入的句子的不同部分。这是更有效、更直观的表示句子的方法,而且通常比 encoder-decoder 的对应更有效。
全部目录附在文末。
更多研究主题
本教程涵盖了神经机器翻译和 seq2seq 模型的基础,从 n-gram 语言模型开始,最后讲到注意力模型。需要注意的是,这是一个非常活跃的研究领域,并且还有一些本教程没有覆盖到的更高级的研究主题,掌握了基础知识并想要了解更多的读者可以主动去研究。这些进一步的研究主题包括:
处理大型词汇表:
神经 MT 模型的一个难点是在处理大型词汇表时表现不佳,模型很难学会如何用有限的数据去正确翻译罕见词,而且需要的计算量很大。处理这个问题的一种方法是将词汇分割成更小的单位,例如字符(character)或子字(subword),也可以结合覆盖面更广泛的翻译词典来处理低频现象。
优化翻译结果:
虽然本教程介绍的模型是给定源 P(E | F),被训练去最大化目标句子的似然性,但实际上我们关心的是生成的句子的准确性。已经有很多工作试图解决这个问题,利用的手段是在训练模型时直接考虑的是所生成结果的准确性。方法包括从当前模型的翻译结果中取样,并向能得到更好翻译结果的方向进行参数调优,将参数调优为部分错误假设以提高生成结果中错误的鲁棒性,以及尝试防止在搜索过程中出现错误。
多语言学习:
到目前为止,我们都是假设在两种语言 F 和 E 之间训练一个模型。但是,世界上有许多种语言,一些研究已经证明能够利用所有语言的数据去训练一个模型。也可以跨语言执行迁移,先在一个语言对上训练模型,然后将其微调用于其他语言对。
其他应用:
类似的 seq2seq 模型已经用于多种任务,包括对话系统、文本自动摘要、语音识别、语音合成、图像标注(image captioning)、图像生成,等等。本教程涉及的只是这个迅速扩大的领域的一小部分主题,希望能为读者提供工具,将这些模型应用到自己感兴趣的应用上。
附:目录
1 引言
1.1 背景
1.2 本教程结构
2 MT的统计学基础
3 n-gram 语言模型
3.1 逐词计算概率
3.2 基于计数的 n-gram 语言模型
3.3 语言模型评估
3.4 处理未知的词
3.5 拓展阅读
3.6 练习
4 Log-linear 语言模型
4.1 模型组成
4.2 学习模型参数
4.3 Log-linear 模型的衍生
4.4 语言建模的其他特征
4.5 拓展阅读
4.6 练习
5 神经网络和前馈语言模型
5.1 组合特征的潜力和问题
5.2 神经网络概要
5.3 训练神经网络
5.4 一个实现示例
5.5 神经网络语言模型
5.6 拓展阅读
5.7 练习
6 RNN 语言模型
6.1 语言中的长距离语义关系
6.2 循环神经网络
6.3 消失梯度和长短期记忆中
6.4 其他 RNN 变体
6.5 Online, Batch, 和 Minibatch 训练
6.6 拓展阅读
6.7 练习
7 神经 Encoder-Decoder 模型
7.1 Encoder-decoder 模型
7.2 生成输出
7.2.1 随机取样
7.2.2 Greedy 1-best 搜索
7.2.3 Beam 搜索
7.3 其他编码序列的方式
7.3.1 反向与双向编码器
7.3.2 卷积神经网络
7.3.3 树结构网络
7.4 ensemble 多个模型
7.5 练习
8 注意力神经机器翻译
8.1 Encoder-Decoder 表示的为题
8.2 注意力
8.3 计算注意力分数
8.4 计算注意力分数的方式
8.5 模仿词和位置词替代
8.6 注意力的直觉先验
8.7 拓展阅读
8.8 练习
9 总结
论文地址:https://arxiv.org/pdf/1703.01619v1.pdf