「咱们训练了 GPT-3,一种具备 1750 亿参数的自回归语言模型,这个数字比以往任何非稀疏语言模型都多 10 倍。咱们在 few-shot 状况下测试了它的性能。」
本周五,OpenAI 提出的 GPT-3 在社交网络上掀起了新一阵风潮。它的参数量要比 2 月份刚刚推出的、全球最大深度学习模型 Turing NLP 大上十倍,并且不只能够更好地答题、翻译、写文章,还带有一些数学计算的能力。这样强大的深度学习,不由让人产生一种错觉:真正的 AI 要来了吗?git
首先,GPT-3 最使人惊讶的仍是模型体量,它使用的最大数据集在处理前容量达到了 45TB。根据 OpenAI 的算力统计单位 petaflops/s-days,训练 AlphaGoZero 须要 1800-2000pfs-day,而 OpenAI 刚刚提出的 GPT-3 用了 3640pfs-day,看来拥有微软无限算力的 OpenAI,如今真的是随心所欲了。github
研究者们但愿 GPT-3 可以成为更通用化的 NLP 模型,解决当前 BERT 等模型的两个不足之处:对领域内有标记数据的过度依赖,以及对于领域数据分布的过拟合。GPT-3 致力于可以使用更少的特定领域,不作 fine-tuning 解决问题。算法
和往常同样,GPT-3 当即放出了 GitHub 项目页面,不过目前仅是一些生成样本和数据集,尚未代码:https://github.com/openai/gpt-3网络
不过上传的没有那么快其实情有可原,在 issue 里有人道出了真相:参数这么多,若是按照 GPT-2 十五亿参数等于 6G 这么算的话,GPT-3 模型可能要 700G,老硬盘还装不下,不是正常人能玩的转的。架构


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 作简单计算的能力,且无需任何任务特定的训练。
这十项任务分别是:两位数加减法、三位数加减法、四位数加减法、五位数加减法、两位数乘法,以及一位数混合运算。


在这十项任务中,模型必须生成正确的答案。对于每项任务,该研究生成包含 2000 个随机实例的数据集,并在这些实例上评估全部模型。
下图展现了 GPT-3(few-shot)在这十项计算任务上的性能。从图中能够看到,小模型的性能较差,即便是拥有 130 亿参数的模型(仅次于拥有 1750 亿的 GPT-3 完整版模型)处理二位数加减法的准确率也只有 50% 左右,处理其余运算的准确率还不到 10%。


GPT-3 在多个语言建模任务中的表现
GPT-2 发布时在多个领域特定的语言建模任务上实现了当前最佳性能。如今,咱们来看参数和成本大量增长后的 GPT-3 效果如何。
OpenAI 在多项任务中对 GPT-3 的性能进行了测试,包括语言建模、补全、问答、翻译、常识推理、SuperGLUE 等任务。具体结果以下表所示:


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 上,其目的并不是将它们做为竞品进行比较,而是做为不一样的问题设置。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 的语境窗口。


为了最大程度地减小节点之间的数据传输,该研究从深度和宽度两个方向进行跨 GPU 模型分割。而后基于跨 GPU 模型布局的计算效率和负载平衡选择每一个模型精确的架构参数。先前的研究 [KMH+20] 代表,在合理范围内,验证损失对这些参数并非特别敏感。
训练数据集
下表介绍了 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