前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度|Google神经网络机器翻译上线历程回顾

深度|Google神经网络机器翻译上线历程回顾

作者头像
AI研习社
发布2018-03-29 16:12:41
1.3K0
发布2018-03-29 16:12:41
举报
文章被收录于专栏:AI研习社

唯物按:作者陈村,剑桥大学自然语言处理(NLP)组, 现为机器学习语义分析工程师。

Google Translate 作为久负盛名的机器翻译产品,推出 10 年以来,支持 103 种语言,一直是业界的标杆。而在前不久,Google 官方对翻译进行一次脱胎换骨的升级——将全产品线的翻译算法换成了基于神经网络的机器翻译系统(Nueural Machine Translation,NMT)。

从 Google 官方发表的博文[1]和技术报告[2]中,我们有机会一窥究竟。这个全新的系统到底有什么神奇的地方?笔者借这篇文章,帮大家梳理一下机器翻译的发展历程,以及 Google 这次新系统的一些亮点。

机器翻译的发展史

机器翻译,即把某一种源语言(比如英文)翻译到最恰当的目标语言(比如中文)。

还在几年前,机器翻译界的主流方法都是 Phrased-Based Machine Translation (PBMT),Google 翻译使用的也是基于这个框架的算法。所谓 Phrased-based,即翻译的最小单位由任意连续的词(Word)组合成为的词组(Phrase),比如下图中的“北风呼啸”。

PBMT是怎么把一句英文翻译成中文的呢?

  • 首先,算法会把句子打散成一个个由词语组成的词组(中文需要进行额外的分词),如图中(1)所示;
  • 然后,预先训练好的统计模型会对于每个词组,找到另一种语言中最佳对应的词组,如图中(2)所示;
  • 最后,需要将这样“硬生生”翻译过来的目标语言词组,通过重新排序,让它看起来尽量通顺以及符合目标语言的语法,如图中(3)所示。

图片出处:Lopez, A. (2008). Statistical machine translation. ACM Computing Surveys, 40(3), 1–49.

传统的 PBMT 的方法,一直被称为NLP(Natural Language Processing,自然语言处理)领域的终极任务之一。因为整个翻译过程中,需要依次调用其他各种更底层的 NLP 算法,比如中文分词、词性标注、句法结构等等,最终才能生成正确的翻译。

这样像流水线一样的翻译方法,一环套一环,中间任意一个环节有了错误,这样的错误会一直传播下去(error propagation),导致最终的结果出错。

因此,即使单个系统准确率可以高达 95%,但是整个翻译流程走下来,最终累积的错误可能就不可接受了。

深度学习这几年火了之后,机器翻译一直是深度学习在 NLP 领域里成果最为卓越的方向之一。深度神经网络提倡的是 end-to-end learning,即跳过中间各种子 NLP 步骤,用深层的网络结构去直接学习拟合源语言到目标语言的概率。

2014年,Cho et. al [3]和Sutskever et al. [4] 提出了Encoder-Decoder架构的神经网络机器翻译系统。如下图所示:

首先把源语言一个词一个词地输入 Encoder,Encoder 利用训练好的神经网络参数,把整个输入序列的信息存在一个隐层向量 h 中;h 这个隐层,可以理解为包含了所有对输入源语言的描述;然后再由 Decoder,利用训练好的神经网络参数,从隐层 h 中读取参数,再一个词一个词地输出目标语言。

via:3.bp.blogspot.com

NMT 这样的过程直接学习源语言到目标语言,省去了训练一大堆复杂 NLP 子系统的依赖,依靠大量的训练数据(平行语聊库,比如同一本书的中文和英文版本),直接让深度神经网络去学习拟合。熟悉深度学习的朋友可能会意识到,这样的方法一个极大的优势就是省去了很多人工特征选择和调参的步骤。

听说前两年,有个做神经网络图像处理的教授,在不太了解 NLP 的基础上,硬生生地搭建了一套可以匹敌传统 PBMT 的机器翻译系统,后者可是十几年来多少奋战在第一线的 NLP同志一砖一瓦垒起来的啊。而且,相比传统 PBMT 一个词组一个词组的独立翻译,NMT这样 end-to-end 翻译出来的语言更加自然流畅。

2015年,Yoshua Bengio 团队进一步加入了Attention 的概念。稍微区别于上面描述的Encoder-Decoder 方法,基于 Attention 的 Decoder 逻辑在从隐层 h 中读取信息输出的时候,会根据现在正在翻译的是哪个词,自动调整对隐层的读入权重。即翻译每个词的时候,会更加有侧重点,这样也模拟了传统翻译中词组对词组的对应翻译的过程。Attention模块其实也就是一个小型神经网络,嵌入在 Encoder-decoder 之间的,跟着整个神经网络训练的时候一起优化训练出来的。

Bengio 团队的这个工作也奠定了后序很多 NMT 商业系统的基础,其中也包括 Google 这次发布的 GNMT。

Google GNMT

Google 这次在算法上、尤其是工程上对学术界的 NMT 方法提出了多项改进,才促成了这次Google NMT 系统的上线。

学术上的 NMT 虽然取得了丰硕的成果,但在实际的产品中 NMT 的效果却比不上 PBMT。究其原因 Google 在技术报告[2]中总结了三点:

1

训练和预测的速度太慢。

要获得更好的模拟效果,就要用更深层的神经网络来拟合参数(下面会提到,GNMT用了8层的Stack LSTM来做Encoder)。这么复杂的神经网络在预测的时候就要耗费大量的资源,远远慢于 PBMT 的系统。并且在训练的时候拟合这么大规模的预料,可能要很久很久才能训练一次,这样不利于快速迭代改进调整模型参数。

2

NMT在处理不常见的词语的时候比较薄弱。

比如一些数字、或者专有名词。在传统 PBMT 系统中,可以简单地把这些词原封不动的copy 到翻译句子中;但是在 NMT 中,这样的操作就无法有效的进行。

3

无法对源句的全部进行翻译,会有奇怪的效果

Google NMT 的主要神经网络架构图如下:

仔细看,其实还是带 Attenion 的 Encoder-Decoder 逻辑。Encoder 是由 8 层 LSTM 组成,最下面两层是一个双向 LSTM,可以从前到后以及从后往前理解一遍输入的源语言输入。中间的蓝色模块就是 Attention 模块,负责对 Encoder 的逻辑进行加权平均输出到Decoder 层。

Decoder 模块也是一个 8 层的 LSTM,最终连接到 Softmax 层,一个词一个词输出最终的目标语言词语的概率分布。

算法上,论文中还提到了一些创新点。包括引入 Wordpiece 来对单词进行更细粒度的建模,来解决上面提到的不常见词语的问题;以及在 Decoding 结束之后,搜索最佳输出序列的时候,引入coverage penalty 的概念,来鼓励 Decoder 输出更加完整的翻译句子,以解决有时候NMT有时候无法完整的翻译整句的情况。

工程上,报告里面着重谈到了几个性能优化的重点:

  • 引入Risidual Connection

8 层的 LSTM 堆叠起来,大大增加了神经网络的表达能力,在海量的数据下可以获得更好的模型效果。不过这样的堆叠会直接导致模型太庞大不可训练,在梯度反向传播的时候,很容易出现梯度弥散或梯度爆炸的问题。过去的研究证明[5],Residual Connection 的方式,直接去学习残差可能会带来更好的效果,避免了深度网络中反向传播中出现的梯度反向传播可能会发生的问题。在上面 Google NMT 架构图中,从倒数第三层开始都会引入Residual Connection。

  • 大量的并行优化

与此同时,在工程上 Google 也进行了非常多的优化,来减少训练和实时翻译时候的延迟问题。比如训练数据的时候,数据会分成 n 等份,交给不同的 GPU 去异步训练,然后再汇总到统一的参数服务器;同时,Encoder 和 Decoder 的不同层的 LSTM 会在不同的GPU 上运行,因为更上一层的 LSTM 不必等到下一层的神经网络完全计算完毕再开始工作;即使对于最后的 Softmax 输出层,如果最后输出词的维度太大,也会划分到不同的GPU 上并行处理。可谓不放过丝毫并行的机会。

底层基础计算平台的支持。Google NMT 采用了自家的 Tensorflow 深度学习框架,并运行在 Google 专门为深度学习打造的 TPU(Tensor Processing Unit)上,当年的 AlphaGo 也是由 TPU 提供支持。在对于模型参数的计算上,也大量应用了 Quantized 计算的技术:

由于神经网络参数涉及大量的耗时的浮点数运算,通过 Quantization 的方法,将模型参数由浮点数类型转换到一个更低精度(比如 8bit),虽然会有一些精度的损失,但是可以大大减少计算量以及最终训练模型的体积。

从软件框架到定制硬件,相互配合,追求最极致的性能。在这篇报告里,有着长长的作者列表,最后赫然列着 Google 工程架构大神 Jeffrey Dean 的名字,他是当年一手创造了Map Reduce、Big Table 等产品的 Google 奠基者之一。

写在后面

Google 这次的论文,基本框架仍然是带 Attention 模块的 Encoder-Decoder。而且国内厂商,比如百度和搜狗,也发布了类似的神经网络机器翻译系统。百度早在去年,就发布“工业界第一款 NMT 系统”。不过,Google 毕竟是机器翻译界的标杆,这次披露的论文也揭示了很多他们为了大规模商业化做出的努力,因此在业界引起了不小的震动。

参考文献:

[1]A Neural Network for Machine Translation, at Production Scale

[2] Wu, Y., Schuster, M., Chen, Z., Le, Q. V., Norouzi, M., Macherey, W., et al. (2016, September 26). Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation.

[3] Cho, K., van Merrienboer, B., Gulcehre, C., Bougares, F., Schwenk, H., and Bengio, Y. (2014a). Learning phrase representations using RNN encoder-decoder for statistical machine translation. In Proceedings of the Empiricial Methods in Natural Language Processing (EMNLP 2014).

[4] Sutskever, I., Vinyals, O., and Le, Q. (2014). Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems (NIPS 2014).

[5] He, K., Zhang, X., Ren, S., & Sun, J. (1512). Deep residual learning for image recognition. arXiv preprint (2015).

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 机器翻译的发展史
  • Google GNMT
  • 写在后面
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档