346 Chapter 10. 基于循环神经网络的模型 肖桐 朱靖波
10.1.1 神经机器翻译的起源
从广义上讲,神经机器翻译是一种基于人工神经网络的方法,它把翻译过程描述
为可以用人工神经网络表示的函数,所有的训练和推断都在这些函数上进行。由于
神经机器翻译中的神经网络可以用连续可微函数表示,因此这类方法也可以用基于
梯度的方法进行优化,相关技术非常成熟。更为重要的是,在神经网络的设计中,研
究人员引入了分布式表示的概念,这也是近些年自然语言处理领域的重要成果之一。
传统统计机器翻译仍然把词序列看作离散空间里的由多个特征函数描述的点,类似
于 n-gram 语言模型,这类模型对数据稀疏问题非常敏感。此外,人工设计特征也在
一定程度上限制了模型对问题的表示能力。神经机器翻译把文字序列表示为实数向
量,一方面避免了特征工程繁重的工作,另一方面使得系统可以对文字序列的“表
示”进行学习。可以说,神经机器翻译的成功很大程度上源自“表示学习”这种自然
语言处理的新范式的出现。在表示学习的基础上,注意力机制、深度神经网络等技
术都被应用于神经机器翻译,使其得以进一步发展。
虽然神经机器翻译中大量地使用了人工神经网络方法,但是它并不是最早在机
器翻译中使用人工神经网络的框架。实际上,人工神经网络在机器翻译中应用的历
史要远早于现在的神经机器翻译。在统计机器翻译时代,也有很多研究人员利用人
工神经网络进行机器翻译系统模块的构建
[451, 452]
,比如,研究人员成功地在统计机器
翻译系统中使用了基于神经网络的联合表示模型,取得了很好的效果
[451]
。
不过,以上这些工作大多都是在系统的局部模块中使用人工神经网络和深度学
习方法。与之不同的是,神经机器翻译是用人工神经网络完成整个翻译过程的建模,
这样做的一个好处是,整个系统可以进行端到端学习,无需引入对任何翻译的隐含
结构假设。这种利用端到端学习对机器翻译进行神经网络建模的方式也就成为了现
在大家所熟知的神经机器翻译。这里简单列出部分代表性的工作:
• 早在 2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一个基于编码器-解码器
结构的新模型
[453]
。该模型用卷积神经网络(CNN)将源语言编码成实数向量,
之后用循环神经网络(RNN)将连续向量转换成目标语言。这使得模型不需要
进行词对齐、特征提取等工作,就能够自动学习源语言的信息。这也是一种端
到端学习的方法。不过,这项工作的实现较复杂,而且方法存在梯度消失/爆炸
等问题
[454, 455]
,因此并没有成为后来神经机器翻译的基础框架。
• 2014 年,Ilya Sutskever 等人提出了序列到序列(seq2seq)学习的方法,同时
将长短时记忆结构(LSTM)引入到神经机器翻译中,这个方法缓解了梯度消
失/爆炸的问题,并且通过遗忘门的设计让网络选择性地记忆信息,缓解了序列
中长距离依赖的问题
[21]
。但是该模型在进行编码的过程中,将不同长度的源语
言句子压缩成了一个固定长度的向量,句子越长,损失的信息越多,同时该模
型无法对输入和输出序列之间的对齐进行建模,因此并不能有效的保证翻译质
量。
• 同年 Dzmitry Bahdanau 等人首次将注意力机制(Attention Mechanism)应用到机