神经机器翻译:历史与展望
机器翻译(MT)利用机器的力量来做「从一种自然语言(源语言)到另一种自然语言(目标语言)的自动翻译」[1]。使用机器来做翻译的想法最早由Warren Weaver在1949年提出。在很长一段时间里(1950s~1980s),机器翻译通过研究源语言和目标语言的语言学信息而开展,基于词典和语法生成翻译结果,这被称作基于规则的机器翻译(RBMT)。随着统计学的发展,统计模型开始被应用在机器翻译中,它基于对双语文本语料的分析生成翻译结果。这种方法被称作统计机器翻译(SMT),SMT的性能优于RBMT,在1980s至2000s,SMT方法主导了这个领域。1997年,Ramon Neco和Mikel Forcada提出了使用「encoder-decoder」结构来做机器翻译的想法 [2]。几年后的2003年,蒙特利尔大学由Yoshua Bengio领导的一组研究者基于神经网络开发出了一个语言模型 [3],这个模型改善了传统SMT模型中数据稀疏性的问题。他们的工作为未来神经网络在机器翻译领域的使用奠定了基础。
神经机器翻译的诞生
2013年,Nal Kalchbrenner和 Phil Blunsom提出了一种用于机器翻译的新型端到端编码器-解码器架构 [4]。该模型使用卷积神经网络(CNN)将给定的源文本编码为连续向量,然后使用循环神经网络(RNN)作为解码器将状态向量转换为目标语言。他们的研究可视为神经机器翻译(NMT)的开端,NMT是一种使用深度学习神经网络在自然语言之间进行映射的方法。NMT的非线性映射不同于线性SMT模型,NMT使用连接编码器和解码器的状态向量来描述语义等价。此外,RNN应该能够捕捉到长句子背后的信息,解决「长距离调序」(long distance reodering)的问题[29]。然而,「梯度消失/爆炸」问题 [28] 使得 RNN 实际上很难处理长距离依赖的问题;对应地,NMT模型起初也不能实现很好的性能。
长距离记忆
一年后(2014),Sutskever et al.和 Cho et al 开发出序列到序列(seq2seq)方法,该方法在编码器和解码器中都使用RNN [5][6],并且在NMT中引入LSTM(RNN的一种变体)。由于LSTM中的门机制允许外显记忆删除和更新,「梯度爆炸/消失」的问题得以控制,因此模型可以更好地捕捉到句子中的「长距离依赖」。
LSTM的引入解决了「长距离调序」的问题,却将NMT的主要挑战转移到了「定长向量」的问题上:如图1所示,不管源句子有多长,神经网络需要将源句子压缩为固定长度的向量,这增加了解码阶段的复杂度和不确定性,尤其是源句子比较长的时候 [6]。
图1: 没有「注意力」的原始神经机器翻译机制 [5]。
注意力,注意力,注意力
自Yoshua Bengio的团队在2014年向NMT引入「注意力机制」之后,「定长向量」的问题开始被解决。注意力机制最初是由DeepMind在解决图像分类问题时提出的 [23],它能够「使神经网络在执行预测任务的时候更加关注与输入相关的部分,而不太关注不相关的部分」 [24]。当解码器生成一个目标句子的组成单词时,只有源句子中的一小部分是相关的;所以基于内容的注意力机制就被用来基于源句子动态地生成一个(加权)语境向量(如图2所示,紫色线条的透明度表示的就是权重)。然后基于语境向量预测目标单词,而不是基于定长向量去预测。之后,NMT的性能得到了显著的提升,「注意力编码器-解码器网络」成为NMT最先进的模型。
图2:谷歌神经机器翻译(GNMT)的「注意力编码器-解码器网络」架构的工作机制 [8]。
NMT vs. SMT
尽管NMT已经取得了显著的成绩,尤其是在翻译实验中,然而研究者们仍在担忧这种优秀性能能否在其他任务中得以持续,以及NMT是否可以取代SMT。因此,Junczys-Dowmunt等人在包含15个语言对、30个翻译方向的联合国平行语料库上做了实验。在以BLEU值(评价机器翻译的一种方法,得分越高越好)为度量的实验中,NMT在30个翻译方向上与SMT持平或者优于SMT。此外,在2015年的WMT竞赛中,蒙特利尔大学团队使用NMT成功地拿下了英语-德语翻译的冠军,以及德语-英语、捷克语-英语、英语-捷克语翻译的第三名 [31]。
与SMT相比,NMT可以联合地训练多个特征,而且不需要先验知识,这赋予它zero-shot翻译的能力 [32]。除了更高的BLEU值和更好的句子结构之外,NMT还有助于减少SMT中常见的形态学错误、句法错误和词序错误。另一方面,NMT还面临着需要解决的问题和挑战:训练过程和解码过程相当慢;同一单词的译文风格可能不一致;翻译结果中存在「out-of-vocabulary」问题;「黑箱」神经网络机制造成了较差的可解释性;用于训练的参数大部分是基于经验选择的。
竞赛进行时
由于NMT本身的特点和相对于SMT的优势,NMT最近也开始被用于产业界。2016年9月,Google Brain团队发表一篇博客,显示他们已经在其产品Google Translate的中英翻译中用NMT替换基于词组的翻译(PBMT,SMT的一种变体)[8]。他们部署的NMT叫做谷歌神经机器翻译(GNMT),同时还发表了一篇论文来解释模型的细节 [9]。仅仅一年时间(2017),Facebook AI 研究院(FAIR)宣布他们使用CNN实现NMT的方法,这个方法能够达到和基于RNN的NMT相似的性能 [10][11],但运行速度是后者的9倍。作为回应,谷歌于同年6月发布了一个仅仅基于注意力的NMT模型,该模型既没有使用CNN也没有使用RNN,而是仅依靠「注意力」机制 [12]。其他科技巨头也在行动,例如亚马逊发布了基于MXNet的NMT实现 [13];微软在2016年的时候就谈到他们使用了NMT,2018年3月,微软机器翻译出现新突破 [27]。IBM Watson(机器翻译领域的老兵)、NVIDIA(AI计算领域的领跑者),以及SYSTRAN (机翻领域的先锋)[35] 都或多或少地参与了NMT的研发。在遥远的东方,中国这颗AI领域的明日之星,已经有更多的公司已经部署了NMT,这些公司包括百度、网易-有道、腾讯、搜狗、科大讯飞以及阿里巴巴等。所有这些公司都在尽全力,以在下一轮机器翻译革命中得到竞争优势。
未来是NMT的天下吗?
在快节奏和高度竞争的环境中,NMT技术正在经历相当大的发展。在ACL 2017大会上,机器翻译领域的15篇接收论文全部是关于神经机器翻译的 [34]。我们可以发现,NMT的连续发展表现在不同的方面,包括:
- Rare word problem [14] [15]
- Monolingual data usage [16] [17]
- Multiple language translation/multilingual NMT [18]
- Memory mechanism [19]
- Linguistic integration [20]
- Coverage problem [21]
- Training process [22]
- Priori knowledge integration [25]
- Multimodal translations [26]
- 罕见词问题 [14] [15]
- 单语数据使用 [16] [17]
- 多语言翻译/多语言NMT [18]
- 记忆机制 [19]
- 语言学集成 [20]
- 覆盖率问题 [21]
- 训练过程 [22]
- 先验知识集成 [25]
- 多模态翻译 [26]
因此,我们有理由相信NMT会实现更好的突破,逐渐发展成为机器翻译领域的主流技术,替代SMT,并在不久的未来造福全社会。
补充
为了帮助您体验NMT的魔力,我们列举了一些使用不同工具的NMT开源实现,可以帮助您在实践中学习:
- Tensorflow [Google-GNMT]: https://github.com/tensorflow/nmt
- Torch [Facebook-fairseq]: https://github.com/facebookresearch/fairseq
- MXNet [Amazon-Sockeye]: https://github.com/awslabs/sockeye
- Theano [NEMATUS]: https://github.com/EdinburghNLP/nematus
- Theano [THUMT]: https://github.com/thumt/THUMT
- Torch [OpenNMT]: https://github.com/opennmt/opennmt
- PyTorch [OpenNMT]: https://github.com/OpenNMT/OpenNMT-py
- Matlab [StanfordNMT]: https://nlp.stanford.edu/projects/nmt/
- DyNet-lamtram [CMU]: https://github.com/neubig/nmt-tips
- EUREKA [MangoNMT]: https://github.com/jiajunzhangnlp/EUREKA-MangoNMT
如果您有兴趣了解更多关于NMT的知识,可以阅读参考文献部分的论文:[5][6][7] 是必读的核心论文,可以帮助您了解NMT。[9] 是关于NMT机制和实现的全面论述。此外,我们已经发布的AI技术报告中有专门介绍机器翻译的内容。