神经机器翻译实战

1.0 引言

机器翻译(MT)是借机器之力「自动地将一种自然语言文本(源语言)翻译成另一种自然语言文本(目标语言)」[1]。使用机器做翻译的思想最早由 Warren Weaver 于 1949 年提出。在很长一段时间里(20 世纪 50 年代到 80 年代),机器翻译都是通过研究源语言与目标语言的语言学信息来做的,也就是基于词典和语法生成翻译,这被称为基于规则的机器翻译(RBMT)。随着统计学的发展,研究者开始将统计模型应用于机器翻译,这种方法是基于对双语文本语料库的分析来生成翻译结果。这种方法被称为统计机器翻译(SMT),它的表现比 RBMT 更好,并且在 1980 年代到 2000 年代之间主宰了这一领域。1997 年,Ramon Neco 和 Mikel Forcada 提出了使用「编码器-解码器」结构做机器翻译的想法 [2]。几年之后的 2003 年,蒙特利尔大学 Yoshua Bengio 领导的一个研究团队开发了一个基于神经网络的语言模型 [3],改善了传统 SMT 模型的数据稀疏性问题。他们的研究工作为未来神经网络在机器翻译上的应用奠定了基础。

1.1 神经机器翻译的诞生

2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构 [4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(long distance reordering)」问题 [29]。但是,「梯度爆炸/消失」问题 [28] 让 RNN 实际上难以处理长距依存(long distance dependency);因此,NMT 模型一开始的表现并不好。

1.2 用于长距问题的记忆

一年后的 2014 年,Sutskever et al. 和 Cho et al. 开发了一种名叫序列到序列(seq2seq)学习的方法,可以将 RNN 既用于编码器也用于解码器 [5][6],并且还为 NMT 引入了长短时记忆(LSTM,是一种 RNN)。在门机制(gate mechanism)的帮助下(允许在 LSTM 中删除和更新明确的记忆),「梯度爆炸/消失」问题得到了控制,从而让模型可以远远更好地获取句子中的「长距依存」。

LSTM 的引入解决了「长距离重新排序」问题,同时将 NMT 的主要难题变成了「固定长度向量(fixed-length vector)」问题:如图 1 所示,不管源句子的长度几何,这个神经网络都需要将其压缩成一个固定长度的向量,这会在解码过程中带来更大的复杂性和不确定性,尤其是当源句子很长时 [6]。

图 1:没有「注意力」机制的原始神经机器翻译机制 [5] 

1.3 注意、注意、注意

自 2014 年 Yoshua Bengio 的团队为 NMT 引入了「注意力(attention)」机制 [7] 之后,「固定长度向量」问题也开始得到解决。注意力机制最早是由 DeepMind 为图像分类提出的 [23],这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」[24]。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector)(如图 2 所示,紫色线的透明度表示权重大小)。然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。自那以后,NMT 的表现得到了显著提升,「注意力编码器-解码器网络」已经成为了 NMT 领域当前最佳的模型。

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章