GPT时代,机器翻译需要的新数据和新技能
不久前,火山翻译团队联合上外语料库研究院举办了“语言数据科学与应用”系列讲座,邀请到算法工程师朱耀明同学进行以“GPT时代,机器翻译需要的新数据和新技能”为题的分享。
讲座期间,朱耀明同学给现场听众科普了机器翻译算法的基本原理,向大家介绍机器翻译需要什么样的数据,演讲稿原文整理如下,希望大家看完能有所收获。
快速了解演讲内容:
讲座之前,我先给大家讲一讲可以在这次分享中收获什么。我本身是算法出身,可以帮助大家了解一下现在的工业级机器翻译算法的基本原理。之前了解到很多同学是有一些“语言模型”的背景的,所以这一块可能会简略一点。第二部分,我会从算法工程师的视角讲一讲机器翻译需要怎样的数据,如何去挖掘等。在第三部分,我会介绍一下最近横空出世的 ,阐述大语言模型将会给多语言相关的 NLP 技术带来什么影响。最后是一个展望,站在大语言模型的肩膀上展望语言处理工作者会有什么新的研究方向和发展。
| 快速入门:机器翻译基础
很多同学应该都知道语言模型是机器翻译的骨架,语言模型的本质是预测下一个词是什么。每一次语言模型会从一个词或者一个字开始,迭代预测下一个单词,然后加入到自己的输入里面,最后生成一个完整的句子。
语言模型可以生成句子,但如果是机器翻译的话,我们不能凭空生成这样一个句子。我们可能要提供一个输入,才能生成一个对应的英文。
关于输入,我们会引入一个叫做(-to-)的架构,这种模型其实就像小时候我们用的有线电话:你的声音进入电话的线圈,声波转换成电信号,然后传播到别人的线圈,最后再出来成为声波。大概可以理解成这样的编码解码组。
机器翻译也可以使用类似的方法,我们设置一个编码器,把编码器的内容发送进去之后成为一段编码的信号,然后传递出来一个可以解码的信号,再变成翻译所需要的语言。这里应该是一段德语,会德语的同学可以看翻译的对不对——可以,但不太对?没错这就是机器翻译目前的情况:可以翻译,但不会太对。
目前主流的机器翻译都是人工神经网络,他里面是由大量的人工神经元组成的,类似于人脑的信号,每个神经元相当于接收一个信号输入,然后转换成一个信号输出,他通过大量数据自动学习数据的输入和输出最后得到一个结果。
我们知道有这么一个输入输出的结构之后,还需要思考怎么把数据给输进去,在这里会有一个叫词嵌入向量的概念。可以把一个词转换成一个点或者一个向量,这样一个词编码就会把一个词转换成一个点。词向量本身也是一个神经网络,但是有一些特征,是通过大量数据学习得到的,比如queen到woman的距离大致上等于king到man的距离。
综上所述,神经网络机器翻译的原理大致上可以用这张图表示。这张图看起来十分的复杂,其实拆解一下前面的几个小模块就能理解。
| 机器翻译需要什么样的数据
现在机器翻译需要什么样的输入呢?前面提到了神经网络天然从数据里面学习,只要给他足够多的数据,他就可以学习数据之间的关系。只要有足够多的中文到英语的平行语料,只要见得够多,他就可以翻译出来。
在我们神经网络里有个很经典的 Log- Law,听起来很唬人,其实简单来说,就是数据和模型大小翻十倍左右,不管是什么指标,比如人工评测等效果都会增加差不多两个点,再翻十倍,可能也是再增加两个点。
这个规律只要在语言任务里不管对什么都是生效的。根据经验来讲,如果要评价翻译的效果就是从两个方面入手,可以把数据扩大或者模型大小扩大。
当然也有后面数据量足够大了之后,达到一个上限的情况。所以工业界的机器翻译首先需要的就是海量的数据。那么海量的数据从哪里来呢?下面这个网站是一个公开的国外大学做的语料库,把一些其他公开网站的数据进行了整理、清洗。比如欧洲议会的文件材料,本来就有多语言的版本,是一个天然的多语言语料,就可能会被收集过来。再比如一些国外的字幕网站,比如新上映的蜘蛛侠的电影,就会有各个国家的字幕,那可能这些字幕信息就会被收集起来,也作为多语言语料的数据,总体体量还是非常大的。
生活中还有很多天然的多语言语料,比如菜单。
还有一部分数据科学家收集一些网站里面的双语,通过一些过滤的手段把里面的数据收集出来。在新浪微博、推特上也能收集到一些语料,大家可以看到这些数据可能比较脏,但是体量特别大。
前面讲到了通过数据积累来提升机器翻译效果,下面我们来提一提神经网络机器翻译学习本质在学什么。一个是在学目标语言和源语言之间的共现信息,比如英语的apple和苹果经常一起出现,就会被学下来,像内部生成了一本词典;另一个是语言预测,生成流畅的合理的句子。其实神经网络是在学这两个方面的信息,这两方面的信息就比较需要优秀的高质量数据,高质量数据又会涉及到一个标注的过程。
有文档以后,一个译员翻译出结果,获取这个结果之后要经过两方面的检查,一方面是自动化的检查,另一方面是具体的人工检测、译后编辑的方法来进行语言标准相关的检查。最后再把检查好的数据放入语料库,起到提升语料库质量的效果,这个就叫做标注工程。
这就涉及两方面,一个是质量、一个是数量,如果质量好,可能语料的数量就下去了。如果追求数量的话,比如去微博等平台获取,那质量就比较难说了。所以很难实现两者之间的一个trade-off。
其实对于我们工业界,数量还是会更重要一点,尤其是对于训练语言模型的阶段。而后面在测试阶段,可能质量会更重要一点。更重要的还是训练阶段,对于数量和质量来讲,我们会优先希望有更大的数量。
最后来介绍一下一些业务导向的数据工程,我们在电商翻译里可能有很多堆砌式的标题,这种标题很烂,所以我们很难翻译。
比如对于这种电商的词语,一看可能不知所云,所以有些时候我们要对特定的场景进行专门的数据标注,再训练出专门的数据来提升在业务方面的能力分数。这个领域的翻译能力在我们官网已经上线了,大家可以去看看不同领域之间的翻译功能。
大概说一下,对于业务模型的评测,我们还没有特别可靠的评估方法,只有如下两种:自动评估和人工评估。
总结一下目前工业级的机器翻译所需要的数据与技能:第一,更重要的是大规模的单语与双语语料积累,只有这样才能更好地提升机器翻译的效果;第二是业务导向的数据测试集的建设,与业务场景相关的比较重要;第三个是针对特定业务场景的标注工程,以及还有人工评估把数据的质量把控到一个基本点之上。
其实讲完这个,如果是放在几个月之前,我可能就会开始讲一讲目前机器翻译的一些不足之处,以及一些我们今后可能要解决的点。但是大家应该知道,如今 GPT 为首的大语言模型改变了机器翻译,甚至是改变了整个自然语言处理的视角。
| 大语言模型给 NLP 技术带来的影响
那么这里就详细介绍一下,为什么大语言模型能够给业界带来这么大的改变。前面我有提到 Log- law,这个规律的重点,就是在模型层是翻译系统的情况下,数据每乘以10,就会有一个线性的提升。但其实到了某一个数据量级之后,我们会突然“开悟”,这个学界把它叫做 ,翻译成中文的话叫做涌现能力。
这种涌现能力其实对于我们来说也挺常见的,比如说你让一个 5 岁的小孩学习乘法,他可能怎么都学不会,这就跟他大脑里面的神经元还在发展有关。大家可以回想一下自己在读学前班的时候,可能有些数学题怎么也想不清楚,而一年级、二年级的时候突然就想清楚了,比如说一些复杂的 10 以上的加法,突然就可以学会了,这个其实就跟人的神经元成长有关。
其实在神经网络里面也出现了一个类似的效果,只要模型够大,数据够多,这个模型就突然开悟了一样,它就可以做很多事情了。这个时候我们甚至不需要完整的编码器-解码器架构,直接使用编码器,只要用这个模型去学习大量数据,它就可以学到这些语言之间的信息,就可以具有翻译能力了。
这个图比较直观的展示了前面讲的对数曲线和涌现曲线的一个对比。前面我们讲的是,模型每提升 10 倍,效果会线性增长,但是到了某一个点,大概是超过了 10 亿的神经元之后,模型就会突然出现很强的语言水平提升。这个为什么会产生?目前各个学界都没有特别好的解释,但是模型在不同学科的任务上都出现了这种效果。
这个是目前最新的大语言模型的性能曲线。 是基于维基百科的一个比较复杂的问题集合,以它作为任务,就可以看出来这样一个效果:在模型在 10B 以下的时候,它的性能是一个线性的增长。但是在 10B 量级以上的话,模型就突然开悟了,突然就非常快速地增长。特别到 100 倍时,它的效果基本上就达到接近人类的水平了,进行数学计算的能力跟人类不相上下。大家可能觉得 100B 这个数字很大,因为一百乘以十亿就是千亿的量级。千亿量级就是现在地球上的人口数再乘以十几倍,大概是这样一个量级。
前面我们说到,工业界现有的大部分系统的参数量大概是上海的人口数乘以3,如果要让模型得到这种涌现能力,它的参数量大概是地球的人口数乘以10。它的计算量则会提升得更大:它做一次翻译需要的计算量,从之前的 10 的 20 次方会突增到 10 的 24 次方,10 的 24 次方,也是一个非常大的数。这个数可能大家更没概念了,在化学里面有一个阿伏伽德罗常数(1摩尔物质所含的分子数),它是 6 乘以 10 的 23 次方。再举个简单的例子,大概一颗葡萄里面水分子的数量大概就是 10 的 23 次,也就是说现在的模型要做一次机器翻译的任务,大概要做 10 颗葡萄蕴含的水分子数量那么多的运算才能得到结果,但是它的效果会非常好。
现在也有很多开源的模型,但我们有时候会发现模型好像也没有开悟过,这里的 GPT2 就是一个比较有名的开源大模型。你问他一些问题,可能会觉得他在瞎说。
有科学家就发现这个时候,是我们提问的方法有问题,如果问一些有上下文的问题,他的回答就会好一些。你补充一些信息,这个时候它就可以正确地去生成内容。你看它的效果就会很好,但它还是会犯一个错,特别是它写到后面的时候。
刚刚说到的补充信息,我们在学术界统一叫做提示工程,也就是为了激发它的能力,我们还要先给他一些任务的提示。比如说我们让大家做知识问答的时候,要给他一些类似的问题和答案,这个时候模型就可以发挥出最好效果。
谷歌对这个现象也有相关研究,他们发现不需要提供大量的双语翻译数据,只要提前给 GPT 模型 5 个左右的双语翻译例子,它就可以翻译得很好了,大家可以打开网站: 试一试,大家比较熟悉哪个语种,可以自己提供这个语种的语料给它,看它能不能翻译对,也可以用类似的方法让他做一些问答,看看能达到什么样的效果。
GPT 2 不是最新的模型,为了更好地激发各种模型的效果,有一个学科横空出世,叫做提示工程,通过撰写合适的提示,学术里叫做,来让模型能够产生比较好的回答能力。
一个标准的提示工程,就有指令、任务输入和输出三部分,这里是一个完整的输入,大家可以去参考一下。
在提示工程里面还有一种特殊的流派,这个流派的学者觉得由人类生成提示还不够出色,就应该让机器自动生成,让大模型可以自动生成一些解法。比如说你提出一个数学题,如果你不给它任何提示的话,这种答案往往是错的。一般的人的想法,可能是给它一些类似的数学题和对应的回答步骤,我们叫做推理概念。就比如说给他一个这种问题,类似于“罗杰有5个网球,他再买了2罐网球,每一罐里面有3个,一共有多少个网球?”再给出答案:5 + 6 = 11。先给他一个问题和答案,再问他一个类似的问题,模型就可以答对。但是他觉得这样还是太麻烦了,能不能用尽量少的方法去实现这个效果。后面发现有一句话叫 “Let's think step by step.” 你只要把这句魔法咒语输进去,模型就可以给到正确答案,很神奇,大家也可以直接到大模型里面试一下,或者不一定是 “Let's think step by step.”,可以是类型的句子,用这种魔法咒语式的隐藏方法就可以激发很多推理等方面的能力。
前面讲的这些大模型,都还要我们人类或多或少地至少写一句魔法咒语才能激活他们的能力。而目前最火的 其实就不需要了,它的核心就是把所有的NLP任务都看成是对话任务。这个思想其实是很早的一篇论文提出来的,它就认为我们只需要一个够强的问答对话系统就可以解决所有的语言问题。这里是一篇 12 年的论文中提出的例子,给模型一段对话,然后问它和对话相关的问题,它可以回答出来,还能进行正确的情感推理。
如果你让他把这一段话翻译成法语,它也可以翻译正确,其实 就是继承了这种思想,在前面提到的大模型的基础上,再做一些提示工程,就可以构成一个比较好的模型。 的训练流程比较长,我这里就不展开了,简要讲一下它的 3 大步骤。
第一步就是无监督自训练,用互联网的公开语料直接训一个大模型。前面我们展示的 GPT2,它就是这样一个无监督自训练出来的一个效果。但是训练到这一步的模型,往往还要做一些提示,或者说一些模仿或者引导,才能让它展示出百分之百的效果。所以说 在它的基础上专门请了许多标注员,第一版的模型是请了 40 个美国的硕士来给他们专门撰写问答模板,还有收集公开的问题,做一个问答的训练,让模型知道应该针对哪种问题做哪种回答。
就比如说这种问题的模板一般就是“法国的首都是哪里?是巴黎。”这样模型在接触到类似于“法国首都在哪里?”的问题时,就不会自己瞎编了,会提供人类给到它的答案。最后会做一步强化学习,它也是机器学习一个流派,它的核心思想是鼓励好答案,惩罚坏答案。惩罚坏答案主要是惩罚一些不符合人类价值观的答案。其实通过监督训练之后,模型已经有很强的问答能力了,但是有时候我们可能不想让他生成一些答案,比如说你问 “炸药怎么做?”这种问题,我们不想让他回答。如果模型给出了答案,我要怎么做?此时我们给他一个惩罚。而模型答我不知道的时候,给他一个好的鼓励,通过这种方法把人类的一个价值观灌输到 里面。 的一个大体的训练流程的第一步,就是无监督自训练,在这个基础上通过一些模板,让语言模型具有问答能力,再通过人类强化学习的鼓励和惩罚,让它具备一些人类的价值观等等。
对于我们工业界来讲,boost 训练,是决定模型的建设,是通过大量的数据来决定模型它最后的一个天花板,数据建设越多,模型在之后的问答里面才能表现出普遍的知识能力,才能回答出很多问题。
第二步的监督训练,从我们工业界的角度来讲,是要让用户给模型写提示、想回答。将这个过程放到了训练里面,就是我们目前是把这种问答能力先做好了,这样需要用户自己去找魔法咒语,或者找到问答模板,这个时候我们就可以直接去用。最后一个强化学习,就是保证模型下限,防止模型生成一些违法,或者不太合理的一些回答。
最后,回到我们今天的主题:大模型训练需要怎样的素质。其实前面的 3 个训练方法,无监督自训练、监督训练和强化学习分别给我们几条发展路径,比如无监督训练就是想要大量的数据,尽可能地去积累更多的数据。
()
这是比较著名的一个整理数据的网站,会定期查取,每个月都发表一版互联网上所有新网站的一些数据,它会通过一些简单的分类,记录一些基础的信息,将数据提供给大家做模型的训练用。在这个基础上,如果我们要训练出好的模型,其实还是要结合一些语料的,也就是语言的信息,这个就是我们工业界模型在做的。比如说像 Chat GPT,虽然它的正式报告里面没有详细说它的某种语料用了多少,但他的母公司微软集团有进行一些相关的分享。
从中我们知道,在他们训练的数据里面,会通过人工标注选择一些好网站。然后模型会更多从这些好网站学习,或者论坛,让模型更倾向于去选网上的数据,对一些差的网站就尽量不选。第二步需要一些提示工程的能力,在 创建 的第一版模型时,招募了 40 个美国的硕士,专门撰写问答情况和进行标注。此外,他们是在全世界,比如印度,还有其他地方请了大量的标注员给他们标注信息、标注问答等。这种标注提示的工程是非常重要的工作,在这里推荐两个网站,一个是 。顾名思义就是大家把自己在 上生成的问答,网友本身挺强大的,大家经常会问一些比较神奇、比较有意思的问题。如果大家要做数据库积累这一类工作的话,可以去上面看看这些常见的问题。比如说这里有提到要给 B2B 的 SaaS 的初创企业建立提供 3 个建议,就比如说要避免做什么,必须要有什么,模型提供了很有趣的回答,给这种 B2B 的 SaaS 企业提供一些初步的规划等等。
第二个
()
是在 社区上的, 社区收集了各种数据集和模型,这个叫做 的数据集,会把目前遇到的网红问答积累下来,处理成问答的案例,模型的作者有时候也会去找一些开源的数据集等等,把这里面的一些问题也做成回答的形式。第二步也需要一些数据的积累方面的工作。
第三块的话
()
是一个强化学习,这一块在工业界就会有比较多的讨论了,像我们做大模型的话,花费最多时间的部分其实就是标准制定。我们有时候要讨论什么样的回答是好的,什么样的回答是坏的,比如说同一句话可能翻译成很多形式,不同的人有不同的翻译的风格,我们要怎么定一个标准?哪种是好,哪种是坏的?这边有一个 的网站,它也是做了 RL( )的积累,里面数据是无法直接查看的,大家可以去通过一些申请的方法把它下载下来,里面的数据是人工提出的一些问题,标注了哪些回答能接受、哪些不能接受。标准制定可能是今后工业界做大模型的过程中非常艰难的部分。
| 站在大语言模型肩膀上的展望
最后来讲一讲从去年 12 月份至今我了解的部分。
第一个是前面我们讲的部分基本都是基于机器翻译的,很多时候我们要让机器做的事情不仅是翻译。机器翻译任务可能在未来的三五年里会被解决得比较好,而且学习能力比较强的翻译模型都会具有比较强的能力。
就比如说一些应用类的任务,像高考作文,假如我想给一个会中文的美国朋友介绍北京故宫,这个时候你可能要考虑他的背景知识,而生成的内容是中文。
比如你在网络论坛上也会看到这种自然语言的语料,这个时候可能需要理解一些网络论坛内部的黑话。最后的语料积累可能就会是结合文化背景、知识背景的一些翻译,而不是简单的句子到句子的任务。
第二个是大模型的难处,我们刚才介绍了大模型有很多优点,可能会在未来三五年里面给机器翻译的语料库建设、机械翻译的工业界落地带来很大的变化。但未来 3 年以内可能机器翻译的这套流程还不会变,也就是我前半小时讲的内容还是会有效的。
具体来讲,大模型目前有两个很贵的点,第一个是它的价格贵,第二个是它的时间成本贵。大模型它的价格非常高,有一家咨询公司叫做 ,它对谷歌搜索进行过成本的统计,目前每个用户搜索一次,大概是 1.6 美元左右的一个广告收入,它的成本在 1 美分左右,近一年的用户检索可以给谷歌 550 亿美元的收入。但是如果直接换成大模型,它计算一次的成本就是 10 颗葡萄里面的水分子,如果用它的话,计算量太大,对于谷歌来说,它最主要的搜索引擎的收入会减少到三分之一左右,所以是不能接受的。虽然长远来看大模型有更大的潜力,但是短期的这种预算成本上的开销是没有办法解决的,还是会有在特定任务上选择大模型还是选择小模型的抉择。
最后是一个更广的问题,目前有人在问,大模型真的能超越人类了吗?其实我觉得人类其实还是要把大模型当做工作人员。
这张图中绿色的线是人类处理的一个基础能力。这条橙色的线表示随着时间AI能力的提升,之前模型是比人类差的。从图中也能看出,其实目前我们更应该借助于机器的能力,站在机器的肩膀上,这样人类能做到的事情就始终在机器之上。
这是我今天大致的分享,这是一个推荐阅读的清单,里面涵盖了一些我前面提到的书籍和论文,大家有兴趣可以去阅读一下。
