时隔一年,OpenAI放出的预训练语言模型GPT-3再次让人刮目相看。「我们训练了GPT-3,一种具有1750亿参数的自回归语言模型,这个数字比以往任何非稀疏语言模型都多10倍。我们在few-shot情况下测试了它的性能。」本周五,OpenAI提出的GPT-3在社交网络上掀起了新一阵风潮。
它的参数量要比2月份刚刚推出的、全球最大深度学习模型Turing NLP大上十倍,而且不仅可以更好地答题、翻译、写文章,还带有一些数学计算的能力。这样强大的深度学习,不禁让人产生一种错觉:真正的AI要来了吗?
首先,GPT-3最令人惊讶的还是模型体量,它使用的最大数据集在处理前容量达到了45TB。
根据OpenAI的算力统计单位petaflops/s-days,训练AlphaGoZero需要1800-2000pfs-day,而OpenAI刚刚提出的GPT-3用了3640pfs-day,看来拥有微软无限算力的OpenAI,现在真的是为所欲为了。研究者们希望GPT-3能够成为更通用化的NLP模型,解决当前BERT等模型的两个不足之处:对领域内有标记数据的过分依赖,以及对于领域数据分布的过拟合。
GPT-3致力于能够使用更少的特定领域,不做fine-tuning解决问题。和往常一样,GPT-3立即放出了GitHub项目页面,不过目前仅是一些生成样本和数据集,还没有代码:https://github.com/openai/gpt-3。
2019年3月机器学习先驱,阿尔伯塔大学教授Richard S. Sutton著名的文章《苦涩的教训》里开篇就曾说道:「70年的人工智能研究史告诉我们,利用计算能力的一般方法最终是最有效的方法。」GPT-3的提出或许会让开发者落泪,大学老师沉默,黄仁勋感到肩上担子更重了。
还记得几周前刚刚结束的GTC 2020吗,英伟达CEO的Keynote上有一页讲最近几年来人工智能领域里最大的深度学习模型:英伟达表示,自2017年底发布Tesla V100之后,训练最大模型的算力需求增长了3000倍。在这里面GPT-2也不在最高的位置了,微软今年2月推出的Turing NLG(170亿参数)、英伟达的Megatron-BERT(80亿参数)排名前列。
GPT-3要放进这个表里,尺度表还要再向上挪一挪。
另有网友吐槽,GPT-3共72页的论文长度也令人绝望:下一次更大的模型,论文长度怕不是要破百了。不过巨大的参数量带来的文本生成效果也是颇为可观的,让我们来看看GPT-3究竟能不能实现写新闻、写小说,甚至写论文的能力吧。
GPT-3:我是GPT-2的「究极进化版」2019年初,OpenAI发布了通用语言模型GPT-2,能够生成连贯的文本段落,在许多语言建模基准上取得了SOTA性能。这一基于Transformer的大型语言模型共包含15亿参数、在一个800万网页数据集上训练而成。GPT-2是对GPT模型的直接扩展,在超出10倍的数据量上进行训练,参数量也多出了10倍。然而,长江后浪推前浪。
昨日,OpenAI发布GPT-3模型,1750亿参数量,足足是GPT-2的116倍。GPT-3的论文作者多达31人,来自OpenAI、约翰霍普金斯大学的Dario Amodei等研究人员证明了在GPT-3中,对于所有任务,模型无需进行任何梯度更新或微调,而仅通过与模型的文本交互指定任务和少量示例即可获得很好的效果。
GPT-3在许多NLP数据集上均具有出色的性能,包括翻译、问答和文本填空任务,这还包括一些需要即时推理或领域适应的任务,例如给一句话中的单词替换成同义词,或执行3位数的数学运算。
当然,GPT-3也可以生成新闻报道的样本,我们很难将机器写的文章与人类写的区分开来。新闻生成据《华盛顿邮报》报道,经过两天的激烈辩论,联合卫理公会同意了一次历史性的分裂:要么创立新教派,要么则在神学和社会意义上走向保守。
大部分参加五月份教会年度会议的代表投票赞成加强任命LGBTQ神职人员的禁令,并制定新的规则「惩戒」主持同性婚礼的神职人员。但是反对这些措施的人有一个新计划:2020年他们将形成一个新教派「基督教卫理公会」。《华盛顿邮报》指出,联合卫理公会是一个自称拥有1250万会员的组织,在20世纪初期是「美国最大的新教教派」,但是近几十年来它一直在萎缩。这次新的分裂将是该教会历史上的第二次分裂。
第一次发生在1968年,当时大概只剩下10%的成员组成了「福音联合弟兄会」。《华盛顿邮报》指出,目前提出的分裂「对于多年来成员不断流失的联合卫理公会而言,来得正是时候」,这「在LGBTQ角色问题上将该教派推向了分裂边缘」。同性婚姻并不是分裂该教会的唯一问题。2016年,该教派因跨性别神职人员的任命而分裂。北太平洋地区会议投票禁止他们担任神职人员,而南太平洋地区会议投票允许他们担任神职人员。
这确定不是报刊记者撰写的短新闻吗?GPT-3用实力告诉你答案:不是。给出标题「联合卫理公会同意这一历史性分裂」和子标题「反对同性恋婚姻的人将创建自己的教派」,GPT-3生成了上述新闻。就问你能不能看出来?反正我认输……在OpenAI的测试中,人类评估人员也很难判断出这篇新闻的真假,检测准确率仅为12%。不过,GPT-3也有失手的时候。
比如对于GPT-3生成的下列短文,人类判断真伪的准确率达到了61%!根据OpenAI的统计,人类对GPT-3 175B模型生成的约500词文章的判断准确率为52%,不过相比于GPT-3 control模型(没有语境和不断增加的输出随机性且只具备1.6亿参数的模型),GPT-3 175B生成的文本质量要高得多。果然很暴力啊!
「牙牙学语」,GPT-3的造句能力给出一个新单词及其定义,造出一个新句子。
难吗?这需要你理解单词的意义及适用语境。OpenAI研究者测试了GPT-3在这一任务上的能力:给出一个不存在的单词(如「Gigamuru」),令GPT-3使用它造句。我们来看GPT-3的生成结果:给出新单词「Gigamuru」(表示一种日本乐器)。GPT-3给出的句子是:叔叔送了我一把Gigamuru,我喜欢在家弹奏它。严丝合缝,非常合理,完美!
再看一个动词例子:给出新单词「screeg」(挥剑,击剑)。GPT-3造出的句子是:我们玩了几分钟击剑,然后出门吃冰淇淋。也还不错。接下来,我们再来看GPT-3的其他能力。
语法纠错给出一句带有语法错误的话,让GPT-3进行修改。第一个例子中,原句里有两个并列的动词「was」和「died」,GPT-3删除系动词「was」,将其修改为正确的句子。
第二个例子中,原句里likes后的ourselves是we的反身代词,而这里like这一动作的执行者是Leslie,因此likes后即使要用反身代词,也应该是himself,而另一个改法是将反身代词改成we的宾格us,即「我们认为Leslie喜欢我们」。Bingo!GPT-3答对了。看完GPT-3的纠错效果,真是英语老师欣慰,学生惭愧……
GPT-3还能做计算题?
不止英语老师欣慰,数学老师也跑不了。GPT-3可以执行简单的计算。OpenAI研究人员在以下10项任务中测试了GPT-3做简单计算的能力,且无需任何任务特定的训练。这十项任务分别是:两位数加减法、三位数加减法、四位数加减法、五位数加减法、两位数乘法,以及一位数混合运算。用于测试GPT-3计算能力的十项任务。在这十项任务中,模型必须生成正确的答案。
对于每项任务,该研究生成包含2000个随机实例的数据集,并在这些实例上评估所有模型。下图展示了GPT-3(few-shot)在这十项计算任务上的性能。从图中可以看到,小模型的性能较差,即使是拥有130亿参数的模型(仅次于拥有1750亿的GPT-3完整版模型)处理二位数加减法的准确率也只有50%左右,处理其他运算的准确率还不到10%。
GPT-3在多个语言建模任务中的表现在多个语言建模任务中的表现GPT-2发布时在多个领域特定的语言建模任务上实现了当前最佳性能。现在,我们来看参数和成本大量增加后的GPT-3效果如何。OpenAI在多项任务中对GPT-3的性能进行了测试,包括语言建模、补全、问答、翻译、常识推理、SuperGLUE等任务。
具体结果如下表所示:不同模型在所有任务上的性能,以及任务的SOTA性能(包括模型规模、训练细节等信息)。GPT-3技术解析近期大量研究工作表明,通过对大量文本进行预训练,并且针对特定任务进行微调,模型的性能可以在许多NLP任务以及基准测试中获得显著提升。
最近,OpenAI团队训练了GPT-3(这是一个具有1750亿参数的自回归语言模型,参数量是之前任何非稀疏语言模型的10倍),并在少样本(few-shot)环境下对其性能进行了测试。在所有任务中,GPT-3无需进行任何额外的梯度更新或微调,完全只通过模型与文本的交互,即可直接应用于特定任务与少样本demo。
GPT-3在许多NLP数据集上均有出色的性能,包括翻译、问答和内容填充任务,以及多项需要实时推理或域适应的任务,如利用新单词造句或执行三位数运算等。GPT-3生成的新闻文章足以以假乱真,令人类评估员难以分辨。不过,GPT-3也有缺点。该研究团队发现GPT-3 (few-shot)在文本合成和多个NLP数据集上的性能不够好,还存在一些结构和算法上的缺陷。
另一个语言模型大多会有的缺陷「预训练样本效率较低」的问题它也有,GPT-3在预训练期间阅读的文本比人一生读的还要多。此外,还有可解释性问题等。
预训练方法OpenAI团队使用的基础预训练方法包括模型、数据与训练三部分。GPT-3的训练过程与GPT-2类似,但对模型大小、数据集大小与多样性、训练长度都进行了相对直接的扩充。
关于语境学习,GPT-3同样使用了与GPT-2类似的方法,不过GPT-3研究团队系统地探索了不同的语境学习设定。OpenAI团队明确地定义了用于评估GPT-3的不同设定,包括zero-shot、one-shot和few-shot。
Fine-Tuning (FT):微调是近几年来最为常用的方法,涉及在期望任务的特定数据集上更新经过预训练模型的权重;Few-Shot (FS):在该研究中指与GPT-2类似的,在推理阶段为模型提供少量任务演示,但不允许更新网络权重的情形;One-Shot (1S):单样本与小样本类似,不同的是除了对任务的自然语言描述外,仅允许提供一个任务演示;Zero-Shot (0S):零次样本除了不允许有任何演示外与单样本类似,仅为模型提供用于描述任务的自然语言指示。
zero-shot、one-shot、few-shot设置与传统微调方法的对比。上图以英-法翻译任务为例,展示了四种方法。该研究将重点放在zero-shot、one-shot和few-shot上,其目的并非将它们作为竞品进行比较,而是作为不同的问题设置。OpenAI团队特别强调了few-shot结果,因为其中许多结果仅仅略微逊色于SOTA微调模型。
不过,用one-shot甚至有时是zero-shot与人类水平进行对比似乎最为公平,这也是未来工作的重要目标之一。
模型和架构该研究使用了和GPT-2相同的模型和架构,包括改进的初始设置、预归一化和reversible tokenization。
区别在于GPT-3在transformer的各层上都使用了交替密集和局部带状稀疏的注意力模式,类似于Sparse Transformer [CGRS19]。为了研究性能对模型大小的依赖性,该研究训练了8种不同的模型大小,涵盖3个数量级,从1.25亿参数到1750亿个参数不等,具备1750亿个参数的模型即为GPT-3。
先前的研究[KMH+20]表明,在有足够训练数据的情况下,验证损失的缩放比例应该近似为模型大小的光滑幂律函数。这项研究训练了多个不同大小的模型,这使得研究者可以对验证损失和下游语言任务检验该假设。表2.1展示了8个模型的大小和架构。
这里n_params表示可训练参数总量,n_layers表示层数,d_model表示每个瓶颈层中的单元数量(在该研究中前馈层总是瓶颈层大小的4倍,即d_ff = 4 ∗ d_model),d_head表示每个注意力头的维度。所有的模型均使用n_ctx = 2048 tokens的语境窗口。表2.1:该研究所训练8个模型的大小、架构和超参数信息。所有模型一共使用了3000亿token。
为了最大程度地减少节点之间的数据传输,该研究从深度和宽度两个方向进行跨GPU模型分割。然后基于跨GPU模型布局的计算效率和负载平衡选择每个模型精确的架构参数。先前的研究[KMH+20]表明,在合理范围内,验证损失对这些参数并不是特别敏感。
训练数据集下表介绍了GPT-3训练过程中所用的数据集。表2.2:用于训练GPT-3的数据集。
OpenAI:其实我们也有点玩不起了最开始是训练不动,后来finetune不起,现在到了GPT-3模型的时代,我们连forward也要不起了。你肯定想问这样一个问题:训练GPT-3模型需要花多少钱?我们目前还只能粗略地估计——训练一个BERT模型租用云算力要花大概6912美元,训练GPT-2每小时要花费256美元,但OpenAI一直没有透露一共要花多少小时。
相比之下,GPT-3需要的算力(flops)是BERT的1900多倍,所以这个数字应该是千万美元级别的,以至于研究者在论文第九页说:我们发现了一个bug,但没钱再去重新训练模型,所以先就这么算了吧。但即使这样它的效果依然惊人。
GPT-3的实验结果,似乎验证了Richard Sutton去年颇具争议的论断,他在《苦涩的教训》的最后写道:「我们应该从苦涩的教训中学到一点:通用方法非常强大,这类方法会随着算力的增加而继续扩展,搜索和学习似乎正是这样的方法。
」关于GPT-3的更多详情,参见论文:https://arxiv.org/abs/2005.14165另外,油管博主Yannic Kilcher做了一个GPT-3解读视频,emmm…光视频就有一个小时,感兴趣的读者请戳:点击阅读原文,查看更多精彩!喜欢本篇内容,请分享、点赞、在看阅读原文