所有文章 > 正文

1750亿参数,史上最大AI模型GPT-3上线:不仅会写文章、答题,还懂数学

作者: 机器之心

时间: 2020-08-01 11:22

训练一次估计要花 1300 万美元。
时隔一年,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。

不过上传的没有那么快其实情有可原,在 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 的测试中,人类评估人员也很难判断出这篇新闻的真假,检测准确率仅为 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… 光视频就有一个小时,感兴趣的读者请戳:

202008010401-SAHyvMRkmR.png

本文经授权转载自“机器之心”微信公众号,感谢原作者的分享。

往期回顾:

沈向洋:从深度学习到深度理解

科技部:论文数量、影响因子不可与奖励奖金挂钩,网友:早就该治了

清华学霸终极追求竟不是科研:打造影响力才能生生不息 | 专访

[关于转载]:本文原载于“机器之心”微信公众号,转载本文请联系原作者获取授权。谢谢您的合作。

二维码 扫码微信阅读
推荐阅读 更多