机器翻译是如何炼成的? | 袁岚峰
风云之声
昨天 22:26
导读
2010年之前,华人出现在AI顶级会议优秀论文中的还寥寥可数。近年来,华人开始在AI国际机构担任要职,优秀论文也开始涌现。例如在过去三年的ACL会议中,华人科学家拿到了两年的最佳论文。
我经常阅读各个领域的外文信息,所以经常用到机器翻译。可以说就在这几年之内,我亲眼目睹了机器翻译的飞速进步,从一塌糊涂到像模像样,现在已经相当不错了。当然还是不时地有错误,但准确率之高、进步之快是更令人瞩目的。
最近刚好有一个消息,字节跳动的人工智能实验室在计算语言学会议(ACL) 2021上获得了最佳论文奖。ACL是国际顶级的学术会议,而且最佳论文只有一篇,不是并列的,所以这个奖的分量是相当可观的。这是一篇什么样的工作呢?借这个机会,我们就来讲一下机器翻译的原理。
其实我对人工智能是外行,但我的朋友、风云学会会员陈经就是搞人工智能研发的。他讲了很多深入的原理和有趣的故事。
“每当我解雇一个语言学家,语音识别的性能就会上升。”这句名言出自捷克和美国人工智能专家弗雷德里克·杰利内克(Frederick Jelinek),是他在1988年说的。这其实反映了一场自动翻译的革命。
弗雷德里克·杰利内克
早期开发自动翻译程序,非常依赖语言学家。就像最初开发围棋程序的人,都是有一定水平的业余棋手,例如我的前辈同行、理论与计算化学专业的陈志行(1931 - 2008)教授,他是电脑围棋世界冠军“手谈”的作者。
陈志行
中国围棋队总教练俞斌九段说过,围棋算法想要突破,一定需要棋力与算法水平都很高的团队。现在大家知道,这种观点是错的。AlphaGo的团队中并没有围棋高手,他们只请了一位樊麾二段来沟通围棋知识。AlphaGo的成功来自算法的进步,机器翻译也走过了类似的历程。
俞斌
早期的自动翻译程序,是把单词与语法问题都用规则来概括,写程序来实现。这是个自然的想法,因为我们学外语也要学单词表和语法,也需要老师教。这些单词表和规则,程序员搞不清楚,就需要语言学家来总结。
例如中文的“看”翻译成英文,是look?还是watch?还是see?还是read?这需要看上下文。例如“看”后面跟的是“书”或者“文章”,就要用read。这类规律需要语言学家来归纳成有限的、可操作的规则,和程序员商量怎么写成计算机代码。
还有更复杂的语序问题。中文和英文都是“主谓宾”结构,日语却是“主宾谓”结构,动词放在最后。电影中的日本鬼子经常说“什么的干活”、“花姑娘大大地有”,其实就是这么来的!
由于人类语言太灵活,这种基于人工规则的翻译经常得到可笑的结果。这到底是谁的锅呢?语言学家说怪程序员没有好好实现自己总结的语法规则,程序员却说怪语言学家的规则体系自相矛盾,充满例外,到处要打补丁。
到八十年代,搞算法的人想出了新办法,于是他们终于可以愉快地“解雇语言学家”了。这个办法就是统计学。更具体地说,是贝叶斯统计(Bayesian statistics)。不久前我刚好介绍过这个主题(贝叶斯统计:概率思维的魔法 | 袁岚峰)。基本思想就是:不要规则了!换成统计概率!
比如说,我们要把“看”翻译成英文,look / watch / see / read,语法规则会很繁琐,要分析很多上下文,用规则“逼”出一个正确的答案。但现在,我们让计算机把多种选择都尝试一下。比如I read a book / I watch a book / I watch a movie / I read a movie,这些都是候选的翻译。然后根据句子在真实世界出现的概率,给这些翻译打分,就会发现read book和watch movie分数很高,而read movie和watch book分数很低。不需要人为地加上read与book、watch与movie的关联规则,都在统计里了。
其实我们学母语就是这么学的,并不是学规则,而是觉得大概率应该这么说,不这么说就怪了。我们学外语时经常说要培养“语感”,也是这个意思。
贝叶斯统计的核心,是计算条件概率,所以概率会随着上下文条件发生变化。如果没有任何信息,只有一个字“看”,翻译成look的正确机会比read高。但是如果加上条件,“看这本书”,翻译成read的正确概率就高了。
这套思想的精华,就是把规则变成概率。为了计算概率,需要海量的真实世界文本,数量越多,概率越准确。语言学家只需要贡献翻译样本就行了,不需要折腾模糊的规则。
其实有大量“开源”的平行文本,如各国政府的条文多语言版本以及各种译著与原文。罗塞塔石碑就是一个著名的平行文本,托马斯·杨(Thomas Young,1773 - 1829)和商博良(Jean-François Champollion,1790 - 1832)根据希腊文与古埃及文字的对应破译了古埃及文字。
罗塞塔石碑
(http://www.mingriqingbao.com/web/detail/forword/P/37382)
机器翻译从基于专家规则的小众系统,到能够开放地放到网上公开测试使用,关键就是这个统计思想。在二十一世纪初,谷歌翻译就有了基本的形式,让人们知道了有“机翻”这回事。
然而,早期的机器翻译还是毛病百出,像段誉的六脉神剑一样时灵时不灵。这是为什么呢?因为计算代码是程序员人工写的,经常碰到各种问题需要修改,改来改去顾此失彼。在这样的框架下,无论代码怎么改进,样本怎么堆积,总是没有本质性进步。
段誉的六脉神剑(动图)
对技术感兴趣的人知道,这一轮人工智能爆发的核心技术是“深度学习”(deep learning),它是从2013年开始获得业界普遍承认的。深度学习的三位创始人杰弗里·辛顿(Geoffrey Hinton)、杨立昆(Yann Le Cun)和约书亚·本吉奥(Yoshua Bengio),获得了2018年的图灵奖。
AlphaGo短短两三年就远远超越了人类棋手,这就是深度学习的威力。同样的,机器翻译也发生了深度学习的革命,进入了新的境界。
巨大的突破来自对问题的重新定义,我们现在将翻译问题抽象理解成一个序列到序列(sequence to sequence)的转换问题。对一个序列,可以进行编码(encode)。在通信传输、图像压缩等领域,编码是很常见的思想。
你也许会问,文字已经用字母或者汉字这些符号来编码了,还要怎么编码?这就是革命性的思想:人就别管了,管也管不好,这事交给神经网络来干!
就当有个黑盒子叫做“编码器”,输入是一串串的字符,输出是一堆数字的编码。然后再把那一堆数字编码,输入另一个叫“解码器”的黑盒子,解码器输出的是有意义的文字序列。这头编码器把中文“编码”成一堆数字,那头解码器把这堆数字“解码”成有意义的英文,一次翻译就完成了。
编码器和解码器
这个结构的好处在于,两个黑盒子里面具体怎么编码、解码不用管,给足样本,让机器自己去深度学习。里面干的其实还是概率统计、减少误差这些事,但逻辑不是程序员写出来的,而是通过数据训练出来的,它们是神经网络的上千万个系数。从语言学家定规则到深度学习自我训练,基本的脉络是逐渐排除人为影响,这就是电脑围棋和机器翻译飞跃进步的根本原因。
现在,我们终于可以来解释字节跳动获得最佳论文奖的工作了。它研究的是这样一个问题:如何把句子划分成一个个单元?也就是说,如何选择最好的“词表”(vocabulary)?
举个例子,一个句子是:The most eager is Oregon which is enlisting 5000 drivers in the country(最积极的是俄勒冈,它在国内招募5000名司机)。我们需要首先把这句话划分成若干个单元,每个单元对应一个编码,然后把这串编码输入神经网络。
词级别、字符级别、子词级别的句子拆分
最容易想到的划分,就是一个单词一个单元,或者一个字母一个单元。但英文中一个词往往是由若干个词根组合成的,例如enlist = en + list。我们背单词的时候不是死记硬背,而是通过这些词根去理解。例如一看到enlist就能猜出它是“使列入名单”,所以是“招募”;一看到enlighten就能猜出它是“使发光”,所以是“启发”。
因此真正高效的划分方法,是用词根来划分,这些词根的集合就是“词表”。就像在生物学里为了理解蛋白质结构,我们用氨基酸而不是原子作为基本单元。
用氨基酸作为蛋白质结构的基本单元
这就带来一个科学问题:词表该取多大好呢?
很容易产生的想法,是词表越大越好。但其实并不是这样,因为每一种语言中常用的单词都只占少数。换句话说,每一种语言的单词使用频率都是长尾分布。
长尾分布
如果我们引入大量的低频词汇,收益就会越来越小,成本却会越来越高,最终得不偿失。因此,我们可以定义一个最优的词表规模,即边际收益刚好等于边际成本时的词表规模,这时总的收益是最大的。
这样,字节跳动团队把词表问题转化成了一个优化问题,然后用“最优运输”(optimal transport)的思想提出了一种解决方案,用深度学习实现了这种方案。
最优运输问题
这些方法的细节,大家可以去看他们的论文《神经机器翻译中通过最优运输的词表学习》(Vocabulary Learning via Optimal Transport for Neural Machine Translation)(https://arxiv.org/abs/2012.15671)。下面我们来讲三个宏观的要点。
《神经机器翻译中通过最优运输的词表学习》
第一个要点是,这种方法大大缩小了词表,同时翻译效果也不错。
来看下面这个图。字节跳动的软件叫做VOLT,跟它对比的BPE-30K是目前业界最常用的设置,这个图就是VOLT和BPE-30K对于英语和其他若干种语言互相翻译的对比,黑体是表示哪一方胜出。最上面两行是英语到其他语言的翻译,中间两行是其他语言到英语的翻译,可以看到大部分是VOLT表现更佳,不过相差不大。最下面两行是词表的大小,这个差别就大了。例如对于英德翻译,BPE-30K的词表有33.6 K,而VOLT的词表是11.6 K,只有前者的1/3。
VOLT与BPE-30K的比较
词表的节约,带来能量的节约。同样的搜索和评估工作,BPE需要运行384小时的GPU,而VOLT只需要半个小时的CPU加30小时的GPU,相当于少砍很多树。在这个意义上,这是一个绿色环保的成果。
VOLT:绿色环保的词表学习方案
第二个要点是,这是一个基础原理层面的进步,而不是技术应用层面的进步。后者大家已经习以为常了。许多人甚至有这样的印象:中国人只擅长改进技术,做不了基础原理。我们可以明确地说,这种印象是错的!
第三个要点是,人工智能发展的七十年,也是中国人工智能研究从空白走向繁荣的七十年。
2010年之前,华人出现在AI顶级会议优秀论文中的还寥寥可数。近年来,华人开始在AI国际机构担任要职,优秀论文也开始涌现。例如在过去三年的ACL会议中,华人科学家拿到了两年的最佳论文。
机器翻译以及整个人工智能已经创造了很多奇迹,但还有很长的路要走。我们相信,未来中国会做出更多基础性、革命性的贡献。