Google最新宣布发布谷歌神经机器翻译(GNMT:Google Neural Machine Translation)系统,在官方博客中Google称该系统使用了当前最先进的训练技术,能够实现到当下机器翻译质量上最大的提升。
听上去十分令人激动,不是吗?
有从事翻译职业的网友甚至这样形容:
作为翻译,看到这个新闻的时候,我理解了18世纪纺织工人看到蒸汽机时的忧虑与恐惧。
真有这么可怕吗?让我们先来回顾下Google Translate的发展历程。
在2006 年Google团队改进了——统计机器翻译(statistical machine translation),并宣布上线Google Translate翻译功能。
其中,Google Translate的核心技术 “统计机器翻译”其基本思想是通过对大量平行语料进行统计分析、构建统计翻译模型、进而使用此模型进行翻译。简单来说,Google Translate 在生成译文时,会在大量人工翻译的文档中查找各种模型,进行合理的猜测,从而得到恰当的翻译。
当时之所以采用“统计翻译模型”的一个重要原因就是 Google 的云计算架构。机器翻译需要海量的数据存储空间以及高效的运算能力,而 Google 拥有 GoogleMapReduce(分布式计算系统)和 BigTable(分布式存储系统),恰好满足了这两方面需求。
几年前,Google开始使用循环神经网络来直接学习一个输入序列(如一种语言的一个句子)到一个输出序列(另一种语言的同一个句子)的映射。
其中基于短语的机器学习(PBMT)将输入句子分解成词和短语,然后对它们的大部分进行独立翻译,而神经网络机器翻译(NMT)则将整个输入句子视作翻译的基本单元。
这种方法的优点是:相比之前的基于短语的翻译系统,这种方法所需的调整更少。
首先,该网络将这句中文的词编码成一个向量列表,其中每个向量都表示了到目前为止所有被读取到的词的含义(编码器“Encoder”)。一旦读取完整个句子,解码器就开始工作——一次生成英语句子的一个词(解码器“Decoder”)。为了在每一步都生成翻译正确的词,解码器重点注意了与生成英语词最相关编码的中文向量的权重分布(注意“Attention”;蓝色连线的透明度表示解码器对一个被编码的词的注意程度)。
通过维基百科和新闻网站的例句测定发现:在多个样本的翻译中,神经网络机器翻译系统将误差降低了 55%-85%甚至以上。
知乎网友Jacob Wu对此评价十分正面:
这个是基于Yoshua Bengio团队两年前的研究做出的成果。目前从中文翻译到英文,线上系统已经使用了文章中所述的系统。我实际体验了一下这个系统,明显超出我的预期,非常牛!
另外一位知乎网友萧瑟则表示:
百度在1年半前就已经上线了基于attention机制的神经网络机器翻译,和google一样都是基于Yoshua Bengio组2015年的paper做的改进。
Google的方法看起来基本是这几年学术界paper的组合,包括converage,subword,residual多层等等,并没有特别明显的创新。不过google机器翻译组的迭代实验能力真心很强,这个不能不服。而且有足够多的gpu机器把8层神经网络的模型线上化,也充分体现了google有多么的土豪。
我们另外有咨询前百度主任架构师、蓦然认知创始人戴帅湘,他对此评价是:
这个方法是新的,但是应该去年还是前年论文就出来了。以前是基于短语的翻译,这个方法直接用待翻译的句子来预测目标语言中的词,去年大家就都用这个方法了,但是效果没有宣传的那么好。对于Google这次发布的新系统,个人猜测Google的语料更大,计算能力强,神经网络训练的细节做了比较好的优化,集成了学术上最近一些新改进,理论框架上应该没什么大的变化。
但是其在工程上意义很大,以前的方法训练起来比较辛苦,需要做很多预处理,需要分词,然后特征设置也要人为制定一些针对语言特性的,特别是词对齐本身就比较复杂;采用NN(神经网络)以后就变得比较简单的,上述那些预处理基本都没有了,甚至都不需要分词,按字做也行。
另外现在主流是NN(神经网络),既然NN也能达到效果,显然用主流方法更经济。
目前Google Translate已在中英翻译系统中上线,在实际使用过程中比传统的机翻体验好上不少。但是我们有注意到这个情况,加上语助词之后,原本的翻译效果大打折扣。
对此,蓦然认知创始人戴帅湘的观点是:
针对上面的例子,我个人是这样理解的,NMT在用平行句对训练的时候,把输入的源语言句子用向量进行描述,通过一个编码用的神经网络转成隐层的向量表示,然后对这个隐层用另外一个神经网络进行解码,得到目标语言的向量表示。这个过程纯粹是一个拟合函数的过程,即使源语言句子语义一样,而如果字面有所差异的话,通过这个“拟合函数”映射过去得到的目标语言差异也会很大,所以会出现明明意思没变,但是加了几个无关紧要的字或者词,翻译过去的句子意思就会变化很大。
如果用基于短语对齐的翻译模型,在对齐的时候通过引入一些基本的语言特性,或者词语重要性识别方法,就可以避免这个问题,这也是NMT的缺陷所在,不能很好地引入语言本身的一些特性,如构词和句法等。
我看过一些试验数据,基于短语的统计机器翻译我比较熟悉和完全基于NN的效果没有特别大的差距。同样语料训练的话基于NN的有所提升,但不很显著。
对于Google最新发布的神经机器翻译(GNMT)系统,我们要充分肯定其在机器翻译上的进步。在同等语料的情况下,相较于基于短语的统计机器翻译,神经机器翻译(GNMT)系统能在更少工程量的基础上实现相同的效果。但是其纯粹把输入的句子当做一个序列(理论上任意符号序列都可以),不考虑这个句子本身作为语言的特性,生成的内容可能会比较奇怪,难以控制,错误的结果也难以解释。