内容大纲:
机器翻译是人工智能的晴雨表
过去十年,研究范式的变化...
神经机器翻译的挑战
ChatGPT 表现怎么样?
人类怎么做翻译?
ChatGPT 为什么能做对?
ChatGPT 能做到,那 GPT 呢?
有什么启发?
还有什么启发?
Take home message
Bert 出现之后,其实很多传统的 NLP 任务,其实已经变得没有那么重要了。ChatGPT 进一步革新了这种趋势,所有的 task 可能被统一在一个模型里面,下游 fine-tuning 也不需要了。我最近在反思,这种趋势持续下去,以任务驱动地方式去做不同 NLP task 的模式是不是还是可持续的?另外更具体地,机器翻译从业者,是不是要考虑转型了?
“
机器翻译是人工智能的晴雨表
在这之前,我稍微介绍一下机器翻译。机器翻译其实是应用的比较广的一个 NLP 技术,历史比较悠久,甚至早于人工智能,在四五十年代就开始了,后来慢慢地和人工智能结合在了一起。
其实有一个说法,机器翻译可以看作人工智能的晴雨表。想要了解人工智能的技术发展到什么阶段了?去看一看机器翻译现在质量怎么样,其实大概就会有一个答案。
实际上在过去这么多年,人工智能的科技革新中,机器翻译扮演了一个很重要的作用。因为几次标志性的事件,比如九十年代的 IBM model,把人工智能引入了统计时代,再到比如 2014 年的 sequence to sequence,把自然语言处理引入了神经网络时代,文本生成任务有了突飞猛进的发展。这几次关键进展中,机器翻译技术革新都扮演了重要的作用。
“
过去十年,研究范式的变化...
更具体地,其实我们在看过去 10 年的历史发展,会发现过去 10 年发生了翻天覆地的变化。第一次就是从 SMT 到了 NMT 时代。其中一个标志性的事件,我觉得是 neural sequence to sequence model 的出现,它的影响就是监督数据变得越来越重要了,整个 data-driven 进一步增强。SMT 虽然是统计模型,但其实它里面有很多人工设计的 feature,有很多很细节的东西需要人去设计,模型对数据的学习有限。但是,神经网络模型是一个 data-hungry model,所以随着数据量的增加,模型的威力会不断加强,甚至质变。另外一些标志性的事件可能是 BERT 的出现,背后的逻辑是相同的,都是更多的数据,但是大家的目光从有监督数据转移到了无监督数据,相比来看,无监督数据更容易获取,数据量也要大好几个规模。可以说,过去十年,研究范式逐渐转移到了数据为中心的模式。
“
神经机器翻译的挑战
我们再回过头来去看,我不会去陈列很多数字来说明,机器翻译到底怎么样?或者是现在的算法还需要挑战?我们站在用户视角,去看机器翻译有哪些地方还做的不够好。可以看出,很重要的一件事情是理解语言,只有把语言理解好了,才能做好机器翻译。
我们举几个例子。这里并不是去比较哪个引擎更好,这些现象其实是所有机器翻译普遍存在的问题。如果大家在不同的机器翻译引擎里试这些例子,可能大多数都翻不对。比如我现在有点“方”,你会发现大部分引擎可能都会把“方”翻译成square。其实从人的理解角度,肯定不是这么翻译,但其实这个词也是很常用的。或者再看一下我们现在非常常用的:“你阳了吗?”几乎所有的引擎可能都翻译不对。当然,如果翻译对了,有可能是进行了热更新的操作,但模型本身是很难做对的。
当然,我们也可以看其它例子,比如:“这个人真的有两把刷子”,这也是一个非常简单,或者大家非常常用的表述,小学生理解起来毫不费力,但是机器翻译很少有能翻译对的。包括“我下午又摸鱼了”这句话,机器翻译引擎几乎都会把“摸鱼”翻译成 fish。最近大家还经常会说“阳康”、“阳过”,这些机器翻译引擎都翻译错了。这其实是机器翻译或者很多 NLP 任务都面临的一个挑战,就是广义的理解。我们在封闭测试集上可以刷很高的分数,尤其在一些新闻标准测试集,甚至可以号称超越人类。但是真正达到人的水平了吗?我们反过来看 ChatGPT,它去刷榜的评分不一定很高,但是它的使用体验和展现的理解能力是非常好的。
所以我觉得,现在对于机器翻译,过去的问题在于,模型本身还是在假装去理解。本质上,其实是在做 mapping。如果,“阳”和 "positive",“摸鱼”和 "slack off" ,经常一起在数据中共现,模型就可以学到,我们就觉得它理解能力很强。但是大多数情况,数据没有足够多这样的 pair,那模型就学不到了。
为什么机器翻译通过这种“假装”理解,很难做到更高的上限,可能涉及到了根本问题。我们过去都习以为常的认为,机器翻译的成功依赖于平行文本数据。所谓的,平行文本数据就一句中文,一句英文,作为训练数据,然后用 sequence to sequence model 建模这个例子的序列关系。但是,这种方式存在很大的问题,双语数据总是稀缺的,即使是规模最大的中英数据,可能也只有上亿级别,对比互联网上万亿网页数据,太少了。另外,双语数据总是滞后的。像我们刚才举的例子,其实对于现在新出现的“阳康”或者“方”,或者“摸鱼”这种很常见的词,机器翻译数据里很少出现的,甚至没有。因为绝大多数双语数据都是 5 年前积累,这个速度是很慢的。
“
ChatGPT 表现怎么样?
我们去看看 ChatGPT 表现怎么样。当然我列举的是一些 good case,并不代表 ChatGPT 已经把翻译这个问题解决很好了,因为我们在做了一些很系统的对比之后,发现它并没有比传统的翻译引擎质变,很多时候还是差一些。但是它有一些非常惊艳的case。举个例子,“我现在有点‘方’”,这句话它可以翻得非常好。或者这种“看别人发达了,你‘酸’吗?”问它“摸鱼”的意思,它可以准确地告诉你它是 "slack off or fishing for leisure"。它可以把整个句子和“摸鱼”这个词的意思讲出来,就代表其实 model 本身已经具备了理解一些关键词的这种能力。或者他通过一些其他的数据已经学到了。包括像一些文言文的翻译,其实相对还是比较难的,但 ChatGPT 都能做得超出预期。
“
人类怎么做翻译?
ChatGPT 为什么能做到?或者我们再想一想,人是怎么做翻译的?如果我们需要翻译这句话:“你下午摸鱼了吗?”我们不知道摸鱼是什么意思,会怎么去做?我们肯定会查“摸鱼”是什么意思,这很容易。我们去谷歌查,会发现谷歌很好地解释了“摸鱼”的意思。说“摸鱼”是在水中捉鱼,也指浑水摸鱼。意思是趁乱,是自私地捞取利益,现在也代指偷懒,不好好干活的行为。也就是说“你下午摸鱼了吗?”这一句话的意思,原来是“你下午偷懒了吗?”你把这句话的意思理解了之后,就很容易去做翻译了。
那么人在做翻译的时候,其实是这么一个学习的过程,先要对原文进行理解,再去做翻译。这种原文的理解并不是查词典能得到的,有可能摸鱼会查出别的意思,甚至它有很多种意思,到底用哪一个意思?这个时候对原文的理解就很重要了。人做翻译是依赖于双语吗?我们遇到不会翻译的内容,会去学习大量双语数据,来理解原文的意思吗?我觉得不是的,很多时候,单语数据对理解的帮助也非常大。
“
ChatGPT 为什么能做对?
我们去看看 ChatGPT 是怎么来理解这个事情的。举个例子,你可以告诉它怎么翻译“摸鱼”,它就会把摸鱼的意思翻出来,也就是它理解了摸鱼是 "slack off" 或者 "fishing for leisure" 的意思。“我下午在家摸鱼”这句话的翻译就很地道:"I am at home playing games in the afternoon." 你会发现,如果是用传统的机器翻译来翻译这个句子,“摸鱼”和 "playing games" 之间其实没什么词的 overlap,翻译模型是很难给出这种意译的结果的。模型有可能会翻译成 "slack off",但是很难引申到 "playing games"。当然,翻译成 "playing games" 不一定是对的,但是它一定会比翻译成 "fishing for leisure" 要好得多。
所以这就代表了原文的理解对于翻译任务是至关重要的,也就是,翻译要再往前走一步。或者其他很多类似于翻译的任务要再往前走一步,这种更深层次的“理解”是很重要的。
“
ChatGPT 能做到,那 GPT 呢?
我们再往前去看,ChatGPT 是刚刚发布的,它能做到,那 GPT 是不是能做到?ChatGPT 这次其实公布了一个很好的接口。从它公布的信息来看,它更多是在 GPT 基础上进行了一些 instruction,大概标注了几万句数据。它真正的核心能力,对于一个具体的NLP任务来说,比如翻译、纠错、分类等,应该是不需要这种 instruction的帮助。
ChatGPT 的能力本质上是不是来源于 GPT 的大数据?我们简单地做了一些比较。一个很简单的比较方法就是看 Bloom。Bloom 是一个开源 GPT model。我们可以看看 Bloom 和 ChatGPT 的效果是不是一样的。在 Bloom 里面做翻译,发现了同样的 case。之前做得好的 case,比如刚才我举的那个例子,Bloom 也能做对。甚至它的整体表现可能还要更好一些。比如我们做了 100 个 case 的比对,整体来看其实 Bloom 表现还是要好一些,就说明对于单一的 NLP 任务来说, GPT3 或者类似的 model,甚至 GPT2 其实就已经有了很大的帮助,不一定需要 ChatGPT 去做这个理解。当然我刚才举的是 good case,也有 bad case,它其实还是没有解决所有问题。
“
有什么启发?
但这个事情对我们其实非常有启发。我一再想,也许我们过去的路走到现在是需要去变化了,需要重新看整个研究范式。
第一个问题是我们太看重 benchmark,忽略了真实世界的效果。以机器翻译为例,大部分论文都在用 WMT14 英德英法实验做对比。WMT14 英德的实验数据大概是 400 万,baseline BLEU 是28,数据不变大家公平比较结果。实际效果到底怎么样,提升的 1 个 BLEU 是否真的关键,可能需要打个问号。
第二个问题是,对于机器翻译来说,我们需要理解的知识从何而来?过去大家认为知识来自于双语对照数据,我们从双语数据里面提取 knowledge。绝大多数工业界,据我了解,大家提升翻译性能的一个主要渠道还是标更多的双语数据,这个是合理的,聚沙成塔。但是另一条路,整个互联网万亿网页的数据,这座巨大的金山,是否更值得挖掘?
其实所有的知识在互联网上你都可以找到。以搜索引擎为例,我们以前翻译有 bad case,比如说翻译“老六”,“老六怎么样?”这是一个非常常见的话,出现频率非常高,但是在几乎所有的翻译引擎中,“老六”都会被翻译成 "old six",而且很难做对,并且你几乎找不到“老六”的双语平行数据,只能找到单语。但是你去找“老六”是什么意思?你会发现网上已经把“老六”解释得很清楚了,就是那种看不见队友死活,苟活保命的人,大概是这种意思。
其实这些知识能不能帮助机器翻译?答案肯定是可以的,但是怎么去帮助,我觉得这个是我们需要去思考的问题。我刚才又举了另外一个例子,“阳康”。“我已经阳康了。”这句话,翻译引擎百分之百会翻译成 "I am Yangkang." 但是这句话其实是可以被翻译对的。我们去搜索一下引擎,当然这个引擎其实已经做过一次检索,其实关于“阳康”有非常多描述。比如“阳康”是什么意思,我们会发现其实已经有解释:得过新冠已经被治愈了。甚至还补充介绍:“王重阳”是治愈之后又感染新冠了。
如果你让一个译员去翻译“我阳康了”。他第一次见到,不知道什么意思,就在搜索引擎查询一下,就能把这句话翻译对。机器能不能具备这个能力?我觉得可能是一个质变的点。其实有很多类似的东西,我们发现网上都有。比如在知乎上找,你会发现有很多地方在讨论“老六”,“老六”甚至还可以被称为“伏地魔”,如果用英文来形容就是 "stay in one position without moving",它把英文都给出来了。所以我觉得我们现在需要真正关注的一个问题就是知识从何而来?去扩大我们获取知识的途径,我们的工作不应该局限在刷 benchmark 之上,而是应该更关注整个互联网的知识,并把它用好。
“
还有什么启发?
讲了这么多,我们再去看 ChatGPT,还能有什么启发呢?我觉得可能是 in-context learning。因为从 GP3 开始之后,大家才真正地去关注到了 in-context learning 。这些技术有没有可能带来产品上的变化?举一个很简单的例子,你可以告诉他“便宜出可小刀”是什么意思?翻译模型翻译错了:"cheap to sell, can be a small knife." 这是一个翻译错的 case。但是你告诉他“小刀”的意思是 "bargain",是指“讨价还价”,它就可以翻对了。我觉得这是一个很好的,很有趣的地方。
当然,之前机器翻译也能通过一些其他的渠道翻译正确,但如果以自然的方式,或者以 in-context learning 的方式来做未来的翻译引擎,或者和用户的交互方式是不是可以发生变化?用户可以去教育模型,之后这个模型针对类似的问题就可以得出正确答案,它可能会和人类的 knowledge 连起来了,用互联网的话语来说,就是形成了一个非常好的闭环,越用越好用。大家会形成这种交流,我觉得这是一种非常好的现象。用 in-context learning 去教育模型,结果生效了,会让用户更有动力地去教育。当一个模型有几亿人用,有十几亿人用,其中有 100 万人去教他,我觉得这个力量可能是非常巨大的,会有很大的质变。
另外,我们再去看一些有趣的 case,比如第二个 case,这句话还可以翻译成不同风格,你可以对它做一些限制性的生成。当然不止在翻译,这在任何领域都可以做了。比如让它翻得更简洁,甚至是莎士比亚的风格,甚至是 TikTok style,都可以去做。我觉得可能会让之前相对生硬的一些应用变得更用户友好。
我觉得在产品上这也是有可能会产生变化的点,对于一个具体的从业者是需要关注的。所以这块总结一下,in-context learning 其实是很重要的,它有可能会带来这种产品形式的一些变化,也就是能够做到这种 online learning,让整个产品越用越好用。另外,这种交互性是很重要的。
“
Take home message
做一个简单总结。
ChatGPT 其实在翻译上的表现非常不错,我认为是超出预期的,尤其考虑到假如它并没有特殊地去把中英双语训练数据加进去,它的理解能力是远远超出预期的。但是它目前来看还没有对于翻译行业带来一个革命性的变化或者颠覆,因为它的通用能力并没有超过现在的模型。这个是我自己的一个观察。
第二个点就是对于机器翻译来说,或者对于一个具体的 NLP task 来说,我们其实应该是打开思路的,尤其机器翻译不应该局限于有监督或者无监督的方法,而是应该更多地去思考知识从何而来,我们能不能把互联网上有需要的知识利用起来。我觉得可能是 GPT style 这些东西为什么能做得比较好的原因,因为它把海量单语数据结合起来了。打开思路之后,我们能借助更多的无监督的数据,有可能在理解能力上对比之前的有监督学习有一些本质的提升。
第三个 Take home message:我们觉得 in-context learning 是很重要的,它有可能会带来产品层面的变化。
第四个点,就是我们需要重新去审视数据标注,标什么数据,怎么标,怎么和 model 进行 feedback,更重要了。当然我觉得 ChatGPT 可能提供了一个思路或者用法。每个任务可能都会有自己不同的地方,但是给我们的一个信号是,或许需要重新去审视高质量标注数据的重要性。它其实比我们想象的更重要,然而现在整个业界做的其实还不充分。如果想要去看相关的论文,其实能搜索到的并不多。