独家:“论文致谢刷屏”博士演讲干货
编者按:本文来自微信公众号“InfoQ”(ID:infoqchina),编辑:李佳,嘉宾:黄国平,36氪经授权发布。
提示:近日,黄国平博士论文《致谢》刷屏。文中,黄国平回顾了自己走出小山坳,与命运抗争的故事。全文波澜不惊,却能直击人心,堪称现代版《送东阳马生序》。有网友评论说,“他活成了这个世界的一束光”,是无数“寒门学子”的希望。但于黄博士而言,故事只是过往的一部分,技术成果才是评述一位专家的最好佐证。2018 年 10 月,黄国平在的 QCon 全球软件开发大会(上海)上分享了《人机交互式机器翻译研究及应用》,从行业谈到技术,再从技术具象为应用,全程干货十足,值得收藏细读。我们特别将演讲内容整理出来,以飨读者。
以下是演讲的核心内容。
在今天的话,机器翻译已经是人工智能当中一个非常古老的方向了,但是我在前面加了“人机交互式”这 5 个字,或许大家会有些奇怪,为什么要加这个前缀?好,在接下来的演讲当中,我将一一揭晓。
我是黄国平,来自腾讯 AI Lab,博士是在中国科学院自动化研究所,我的研究方向就是机器翻译,然后学位论文也是人机交互式机器翻译研究与实现,进了腾讯后的这一段时间,基本上还是延续了博士期间的一些工作。
今天我主要是在这里分享这么几个方面,首先我会先简单并且快速地过一下机器翻译现状。然后我们讨论一下人机交互式机器翻译相关的行业技术应用,以及我们在做人工智能落地方面的一些思考,因为在这个过程当中我们遇到很多问题,然后我们又想了一些办法来一一克服。
我做报告的目的,也并不一定是为了让大家听了就能够去下一套很好的机器翻译系统,而是看我们解决问题的这些思路,看是否能够为大家日常的工作当中提供一些借鉴,那样的话我就觉得很值了。
机器翻译现状简介
我相信大家在阅读文献的时候,或者去查找资料的时候,或多或少都会用到机器翻译,比如说比较出名的也是比较早的谷歌翻译,然后有百度翻译。后面也出现了很多机器翻译产品,比如搜狗,还有腾讯翻译君。我把所有这些截图再放在一起的话,大家也觉得左右两边应该是概括得比较准确的,就是说“藕花深处田田叶,叶上初生并蒂莲”。大家都像双双胞胎兄弟似的,好像也看不出来什么区别。
在这种情况下,大家好像就是说这个领域是古老的,但也是比较喧嚣的。其实除了在这些新闻 PR 稿中经常看到的公司之外,机器翻译研究的背后,技术的进步是有很多人在幕后做非常辛苦的工作的。
比如说在这些单位里面,中科院自动化所、中科院计算所、清华大学、东北大学、哈尔滨工业大学、南京大学等等,他们有的研究机器翻译至少都快 30 年了。
当然也有一些新生的,像苏州大学,然后还包括现在更多的商业公司,投入资源和人力到这个问题上来。
我们当然是比较开心了,毕竟大家都开始关注起这个行业。
技术发展到现在,我就不在这里去科普传统的经典的那种机器翻译模型长什么样子,我就直接到目前比较通用的,比如说以神经网络为基础的翻译框架当中来。目前深度学习当中一个主流的框架就是端到端。概括来讲的话,就是“编码器 - 解码器”结构,然后在编码器端我们一般喜欢用 RNN 或者 CNN,将原文句子编码成一个上下文向量,然后在解码端当中根据上下文向量来生成目标端的句子,这是一个最朴实的一个机器翻译模型。
但是翻译模型会有很多问题,比如说我每生成的每一个词,它依赖的上下文向上是一样的。举个例子,比如我在生成 secret 的时候,结果发现“成功”或者是“秘诀”或者其他单词对他贡献是一样的。
当然这里面顺带着一个问题,如果是句子比较长的话,尤其是生成目标端很长,到最后发现会出现一个效果叫梯度消失,然后或者是长距离依赖,导致最后生成的句子翻译质量并不好。
这个时候大家很快提出注意力模型这个东西,它的一个根本出发点就是当我要预测下一个词的时候,我要结合已经生成的词,还有源端我去选择当前比如说原装哪些词对下一个词预测影响最深?
比如说在这个例子当中的话,我们人也能很容易想到,在这个时候我要预测下一个词,比如说下一个词可能是翻译成 secret,好,源端的对下一个词贡献最大的应该是秘诀,而不是其他的东西。注意力模型也能比较顺利的,抓到重点,这样在翻译比较长的句子的时候效果也很不错。
其实在过去一两年的时间,就是普通的 RNN 或者是 CNN,主要是 RNN 结构结合注意力模型,是线上机器翻译系统的一个主流。
但是情况很快就发生了变化,我们都知道谷歌发表了一篇比较有名的论文叫 Attention is all you need,也就是所谓的 Transformer 框架。于是,从去年 5 月份开始,很多线上系统就逐渐切换到以 Transformer 为基础的机器翻译系统。
其实到目前为止,在绝大多数的情况下,效果最好的还是基于 Transformer 模型的机器翻译系统,不管是在评测还是实际产品当中。
当然相比前面RNN 加注意力模型,Transformer 也有他自身的问题。首先,Transformer 参数量肯定是增大了很多倍。好多大学里面的课题组做 Transformer 实验的时候,遇上那种规模比较大的数据集就跑不动了。这当然不是我们愿意看到的。
但是呢,目前从效果上来讲,它确实是最好的原理,很简单,就是相比以前我们基于 RNN 或者是 CNN 的方法,在这里面都去掉了,重点引入了三个东西。
第一个比较显著的就是绿色方框的位置编码,因为在以前都看不到这个东西。
位置编码的话就是我们在原文端或者是在目标端,进行 Encoding 的时候是会把位置考虑进去的,然后加上位置编码之后就流入 Multi-Head 申请。
可以看到,Attention 的话它本质上计算的是原文端到目标端的贡献。Multi-Head 它主要计算的是源端到源端的贡献,也就是所谓的 self 的通信。比如说在编码的时候,它会对源端的信息,相互去计算词与词之间的关系。生成目标端的时候,同时它会扫描已经翻译的部分和原端的部分来生成翻译。
这里我们应该有个直观的印象,也就是说 transformer 的话效果确实是最好的,但是它需要的算力的话也是比较惊人的。
这里面我特别需要提及的是,整个训练过程与训练其他的任务也差不多,比如说用于 CV 的任务,它的整体流程与深度学习其他任务都很相似,目前一比较遗憾的是在计算损失这一步。
对于机器翻译来讲,真正的优化目标是自动译文与参考译文的相似度,但是目前我们并没有达到这一步,我们目前计算损失函数的话主要是去计算困惑度,其实困惑度与机器翻译的质量并不是那么严格的正相关关系。
这里面原因自然有模型的问题,但是也有机器翻译方嗯这个问题本身的挑战。比如说我们在机器翻译当中经常会遇到这些奇奇怪怪的现象,首先是歧义和未知现象,因为不管我们训练的语料规模有多大,这些情况都不可能完全给包含在里面。
比如说万一哪一天南京市长真的叫江大桥了,那个时候估计我们需要用规则去干预一下,但是一个例子能干预,两个例子也能干预,但是每天发生这些新的语言现象,我们真的是无能为力。
第二个问题就是说翻译并不仅仅是字符串的转换。不管用什么机器学习模型,他学到的更多的还是字面转换的,这个时候就会出很多问题了。这两天在网上出了一个例子,“一行行行行行,一行不行行行不行”?。这个时候机器翻译就只能启动自杀程序了吧?
第三个问题就是说翻译的解本身就是不唯一的。我们很难去衡量它真正的翻译质量与我们计算出来结果相关性到底有多大。当然说翻译的解不唯一,这也是人工翻译需要面临的问题。
经过刚才的介绍,我始终在强调一个观点,也就是说目前的机器翻译技术虽然说取得了一个很大的进步,但是在很多严肃场合,比如医疗、金融、法律,这些需要非常高质量的情况下,目前的全自动的机器翻译还无能为力,在很多时候还是需要引入人工翻译的。
翻译需求与人工翻译行业
然后我们来简单看一下,在严肃场合我们到底需要通过什么样的方法去来解决翻译需求。
这里其实有一个专门的行业,人工翻译行业。这个图标明了全球各个国家人工翻译行业占整个产业的产值,我们大家可以看到一个很触目惊心的事实,就是,欧洲和北美洲加起来超过了全球翻译市场总量的 90%,然后整个亚洲占比百分之九点几的样子。
这是前年的数据,全球的人工翻译产值是 400 亿美刀好,我们基本上能够测算出来,我们国内人工翻译的产值其实并不高,也就大概是 300 亿人民币的样子。从这个角度来讲,翻译需求好像并不是一个太重要的需求,但是这个需求就是从市场产值来看比较小,但其实这个需求却不容忽视。
大家都总结说翻译是属于非刚需非标准化的一种服务。但是翻译又与我们无处不在,比如说我们好多时候比如说出国旅游,然后需要查一些资料,经常焦头烂额,我们去看英文的理解速度肯定是明显慢于看我们母语文本的,就是说这个时候有很多翻译需求其实不产生商业价值,但是它又很重要。我一直在想这大概是为什么这么多互联网公司愿意投入这么多人力物力来做这个事情。
然后收回到人工翻译行业的话,它有一个很有趣的现象,这也是我为什么愿意把我的主要精力花在人机交互机器翻译上,因为人机交互机器翻译主要强调的是人机结合。这个行业有一个很重要的现象,叫独角兽不独,充分多样性。多样性到啥程度?前 10% 的翻译服务公司加起来的市场份额不超过 15%。
你想这放在咱们互联网行业,这是无法想象的,因为我们一般互联网行业的话讲究的是赢者通吃,可能第一家就占到 80%。它这个呢,前 100 家都不能都占到都不到 15%,所以说大家可以发现这里面有个有趣的现象,而且这个行业它属于我们更愿意把它看作是一个传统行业。
这些玩家比如说这些排名顺序,市场份额一般是相对比较稳定的,也就是说很难看到一次比较剧烈的抖动。
这个行业还有一个特点就是需求以笔译为主。大家看到的同传,不管是同传翻译机也好,还是那种会场展示,其实更多是属于展示的需要,你从刚性来讲的话主要还是笔译。
我这里有个非正式的数字,就是口译(包括了传和同传)这两个加起来的话,不超过整个市场份额的 15%,也就是说笔译是超过 80% 的。
当然说在这个切入过程当中到目前而言,机译的份额还是比较小的,也就是说机器翻译想从现金流上去切的话还是很难的,目前大家可以看到机器翻译一般是免费的,也就是说机器翻译的商业化落地一直是比较难的事情,但是这个情况也在很快发生变化。
另外不得不提的一个现象就是这个行业很分散,分散到什么程度,10 人以内的团队占绝大多数,这是全球的统计数据,这个不是只是咱们国内行业的问题,他们是很多时候是需要专业工具的,但是他们又无力支付正版。
总结一下,前面介绍现状和人工翻译行业,我主要是想引出这个人机交互式机器翻译技术到底是为了解决什么问题,然后接下来我们才能聊什么是人机交互式机器翻译技术。
人机交互式机器翻译技术
我们团队投入到人机交互式机器翻译技术的原因,主要是在目光可及的范围内,全自动输出的翻译结果还无法保证译文质量。
当然说大家也知道目前深度学习模型的鲁棒性还是一个很大的问题。虽然说哪怕是识别率已经很高的人脸识别,说实话效果比机器翻译的效果好多了,但是我们还需要去想很多办法去确保它的鲁棒性,然后在机器翻译的话就更明显了。有可能在与训练语调相关的这些句子的翻译表现的效果很好,但是我一旦给一个奇怪一点的句子,或者是有时候多一个标点,少一个标点,他直接翻译质量就急速下降,这个时候就在很多严肃场景的话,机器翻译的能力还是比较微弱的。
这个时候我们期待这样一种机器翻译,你不是说机器翻译模型很牛吗?那好,你机器翻译能否与人去完成协作,目标是提高人工翻译的生产效率,比如说以前我一天完成的量,现在我 20 分钟就能完成。要达到这个目的也并不是不可能,但是需要改造我们底层的机器翻译模型,比如说需要让模型适应这三个要求。
第一,接收用户提供的译文干预。
第二,及时学习用户的修改反馈。
第三,在人机交互过程当中,你机器翻译能否实时提供翻译的辅助信息。
好多时候人工翻译这个行业是相当苦的,大家可以想象所有文字工作都是有一个共性的,都很枯燥,一直坐在那个地方,这种面临一些很难的问题,好你如果能适当的提供一些更多更有用的辅助信息的话,这个翻译系统也是比较实用的翻译系统。
那问题来了,既然提到人机交互,好,我们需要去找一个人机交互范式,所谓范式的话我是这么理解的,就是说在人工翻译流程当中,我们怎么能怎么让机器翻译充分地发挥作用?
你想想一提到就是说在人工翻译过程当中怎么用机器翻译的话,大家肯定想到第一点可能就是我直接去改机器翻译结果。是的,然后也有这么一个标准的方法,它叫译后编辑,但是它有一个要求就是说被修改的机器翻译结果得是质量非常好的。你想,如果一个句子质量比较差,我们改的也很崩溃是吧?
我们主要是讲这两个东西,一个是翻译输入法,然后还有就是交互式机器翻译。
我们基于这个技术,在不同的情况下给人工译员推荐不同的工具来使用。在这种人机交互范式的情况下,机器翻译的作用就不只是提供一个自动译文,然后对译文不负责任,他要完成的事情其实是可以简单概括为以下几点。
第一,尽力根据人工的反馈来生成更好的整句翻译,也就是说当人工已经给了一些提示之后,你能不能给一个质量明显更好的整个句子。
第二,如果第一步办不到的话,你能不能提供质量比较好的翻译片段?这个时候人工翻译如果直接采用的话,那也能减少很多工作量是吧?
第三,说连靠谱的片段都提供不了的时候,是否能够帮助人工翻译去提高生产效率?
要完成上面三个点的话,其实还是需要底层一些看不见的技术,比如说在线学习技术、语义理解以及快速解码,这里快速解码在人机交互当中特别重要。因为你想我们按了一个键,然后等了半天他卡得出不来结果,肯定不行。
接下来我们简单看一下刚才提到的译后编辑。通过 Quality Estimation 来判定我目前提供的自动译文质量比较好的时候,就可以直接推给人工翻译,让他来改,这是比较理想的情况,85% 以上这一步是达不到的,也就是说是推荐不出来译文。
然后接下来我们就需要用交互式机器翻译,所谓交互式机器翻译,也就是说人工输入一部分,然后机器结合输入的这部分重新生成译文,反复交付。
不管是译后编辑还是交互式机器翻译,它有一个前提,就是说自动译文的质量还可以,我们还有修改价值,还值得我们去阅读理解。
但是我们知道翻译这类工作属于文字工作,如果我们给一个垃圾,然后给人工译员,你去理解我这个垃圾,然后你再把它改好吧,这个时候他肯定是不干的是吧?然后这个时候我们就在想我们是否能找到一种交互方法?用户在不阅读机器翻译自动译文的情况下,还能够提高翻译效率。
我们想来想去,最后想到的方法就是翻译输入法。
人机交互式机器翻译应用
我们前面讲了这么多技术,如何去构建一套人机交互方案系统来满足当前业务的需求呢?我简单总结一下的话,就是说为了供应这个系统,首先是要有明确的需求,所谓需求就是语种、领域、用途、业务系统的接口等;其次要有语料准备;还有一个大头就是如何集成可用的 State-of-the-art 的技术,比如说输入法、术语抽取、翻译片段挖掘等;还要有一个调试 GPU 集群,部署上线并接待。看起来很简单,这其实里面很多坑。
然后难点在哪里?
首先就是对自动译文质量过高的期望。在很多时候业务部门他觉得机器翻译不是已经被宣传的很神奇了,好你就给我自动翻译出来。这个时候但是我们自己部署的系统并不一定能达到要求。
第二个就是我们习惯用开源系统,但是开源系统里面的坑是远比计划的还多。
第三个就是如何甄别并且集成最新的技术,因为我们知道目前在人工智能领域有很多论文,但是说实话 10 篇论文当中能找出一篇能够集成到业务系统,那就已经很成功了,这个时候如何高效率的来甄别这些成果是个问题。
然后最后一个挑战就是说如何拉通目标场景技术链条。人机交互式机器翻译它技术链条实在太长了,涉及到就是一直到输入法,然后还有一些比较传统的统计,机器翻译的技术都要用到,还包括像约束解码这些东西,这里面会有很多那种比较艰巨的事情需要做。
最后和你分享下在整个过程当中,我的一些思考,我相信大家能形成一些共鸣。
人工智能落地的一些思考
首先就是说我们在招人的时候,到底该选用什么样的人,比如说是选“调参大师”还是“论文机器”,或者是“代码工匠”。其实是在一个团队当中,这些人我们都是需要的。但是怎么去调和他们相互之间的那种鸿沟,怎么加强交流,这是个问题。
第二个就是数据鸿沟与工程壁垒,因为好多时候如果公司大了一点的话,就会有部门墙之类的东西,这个时候怎么把数据与我们的算法进行打通就是个问题。
另外就是在设计产品的时候,我们经常叫人工智能,那好我们到底是在设计“人工智能产品”,还是仅仅是“用人工智能的产品”,这两个东西是有区别的。有些时候,为了真的从根子上解决用户体验的问题,我们可能需要去设计人工智能产品,而不是用人工智能的产品。
我的分享就到这里,谢谢大家。
该文观点仅代表作者本人,36氪系信息发布平台,36氪仅提供信息存储空间服务。