极市导读
GPT系列详解第三篇!到了GPT-3这一代已经不在乎执着于 Zero-Shot 的方式,而是把注意力集中在 Few-Shot 的方式,最大的模型约为175B的参数,能够很好的完成Few-Shot的下游任务。本系列持续更新,敬请期待下一篇吧! >>加入极市CV技术交流群,走在计算机视觉的最前沿
GPT系列来龙去脉大起底(一)|第一代 GPT:无标注数据预训练生成式语言模型
GPT系列来龙去脉大起底(二)|GPT-2:GPT 在零样本多任务学习的探索
本文目录
1 GPT-3:大型语言模型是少样本学习器
(来自 OpenAI)
1.1 背景:取消下游任务的 Fine-Tuning
1.2 In-Context Learning
1.3 GPT-3 的模型架构
1.4 GPT-3 的训练数据
1.5 实验结果
太长不看版
2022年底-2023年初由 OpenAI 提出的 ChatGPT 和 GPT-4,在一系列生成,对话,翻译和多模态任务中取得了震惊世界的效果。而这两个工作的基础是发布于2018年-2020年的 GPT,GPT-2,GPT-3 模型。GPT 系列模型的特点是巨大的模型,巨大的训练语料数据和巨大的算力成本。
| 模型 | 发布时间 | 参数量 | 预训练数据量 |
|---|---|---|---|
| GPT | 2018 年 6 月 | 1.17 亿 | 约 5GB |
| GPT-2 | 2019 年 2 月 | 15 亿 | 40GB |
| GPT-3 | 2020 年 5 月 | 1,750 亿 | 45TB |
表格来自:大师兄:预训练语言模型之GPT-1,GPT-2和GPT-3 (https://zhuanlan.zhihu.com/p/350017443)
本文主要介绍第三代 GPT 模型。
-
GPT 第1代模型定出了 GPT 系列模型的基本架构,即:GPT 的系列架构都是基于 Transformer 的 Decoder。 -
GPT-2 定出了 GPT 做各种下游任务的模式,即可以通过使用 Prompt 以一种 Zero-Shot 的方式完成下游任务,无需 Fine-Tuning,无需下游任务的领域内有标签数据。 -
到了 GPT-3 这一代的不同之处是,GPT-3 不再执着于 Zero-Shot 的方式,即一条下游任务的数据都不用。而是把注意力集中在 Few-Shot 的方式,即只使用少量下游任务的数据。但是,GPT-3 强调把模型做得很大,最大的模型约 175B 的参数,大到这样的模型可以很好地完成 Few-Shot 的下游任务。预训练好的 GPT-3 在迁移到下游任务时,不进行任何的参数更新,仅仅依靠输入的例子和对问题的描述来完成。
GPT 和 GPT-2 更详细的介绍在:
GPT系列来龙去脉大起底(一)|第一代 GPT:无标注数据预训练生成式语言模型
GPT系列来龙去脉大起底(二)|GPT-2:GPT 在零样本多任务学习的探索
1 GPT-3:大型语言模型是少样本学习器
论文名称:Language Models are Few-Shot Learners
论文地址:
https://arxiv.org/pdf/2005.14165.pdf
1.1 背景:取消下游任务的 Fine-Tuning
自然语言处理任务在很长的一段时间里都遵循了 "预训练 + Fine-Tuning" 的范式,其中,Fine-Tuning 这一步需要在特定的下游任务数据集上面对预训练好的大模型的全部参数进行梯度更新的再训练。但是基于下面3个方面的原因,大家其实并不希望每次做下游任务的时候都进行微调。
其一,微调需要有标签的数据,而为每个下游任务搞一套数据集会限制模型的应用范围。比如语法纠错,编故事,生成摘要,这些看似简单的下游任务其实并不是很容易标注。
其二,当模型变得越来越大,训练数据的分布越来越窄的时候,模型可能会学到一些虚假的表征。这种情况,尤其是在 "预训练 + Fine-Tuning" 的范式上很容易发生。
其三,人类是不需要有监督数据集来完成各种下游任务的。一句简单的描述 (比如 "请告诉我这句话是在描述开心的事情还是伤心的事情"),或者几个简单的例子,已经足以让人们完成任务。
1.2 In-Context Learning
基于上面3点,我们希望模型可以无需 Fine-Tuning 地完成下游任务。GPT-2 证明了可以通过 In-Context Learning 来完成这个任务:把任务的描述文本 (Prompt) 输入给预训练好的语言模型,然后使得模型直接输出我们想要的答案。这是一种 Zero-Shot 的方式,即无需 Fine-Tuning。
也就是说,预训练好的大模型,在迁移到下游任务上面时,可以不用 Fine-Tuning 了,也就是不用再更新参数了。尽管 GPT-2 的 Zero-Shot 性能还不够强悍,但是它至少从概念上证明了在不重新训练大模型参数的情况下,是可以直接使用预训练的参数以 Zero-Shot 的方式来做下游任务的。
GPT-2 的不足之处是:仅仅从概念上证实了 Zero-Shot 的方式是可行的,只是性能不佳。在很多任务上面,其性能远不如监督学习的 Baseline。但是,GPT-2 很难得地观察到了下游迁移任务的性能与模型的量级大小存在一个对数线性的关系 (log-linear trends)。因此,GPT-3 训练了一个 175B 参数的超大自回归语言模型,想看其迁移学习的性能。
而且,GPT-3 把注意力集中在 Few-Shot 的方式,而不是仅限于 Zero-Shot。Few-Shot 和 Zero-Shot 方式的共同点是都不重新训练模型。它们的不同点是 Zero-Shot 方式仅仅给模型一些自然语言描述让它完成推理任务,而 Few-Shot 方式不仅如此,还会给模型一些示例,每条示例包括一个 Context 和一个 Completion,借助其 "In-Context Learning" 完成下游任务,从新的 context 生成 completion。
如下图1所示,在英文到法文的翻译任务中,Zero-Shot 的方式就是直接给模型一个 Instruction:"Translate English to French",直接让模型输出结果。One-Shot 的方式就是除此之外再给模型一个例子 "Sea otter -> loutre de mer"。
GPT-3 的这个 175B 参数的超大自回归语言模型就已经克服了 GPT-2 性能不佳的困难,在一众 NLP 任务上实现了极佳的性能。
如下图2所示是 SuperGLUE 42 个任务的结果。可以观察到随着模型容量的上升,Zero-Shot 的性能上升,但 Few-Shot,One-Shot 的性能会更快地提高,这表明更大的模型更擅长上下文学习。而且到最大模型尺寸时 Few-Shot,One-Shot 高于 Zero-Shot 的性能。
不仅如此,作者还训练了一些小一点的模型,看看究竟是不是这个 175B 的超大参数使得模型具备了这样的性能。一个值得注意的现象是:Zero-Shot,One-Shot 和 Few-Shot 性能的差距随着模型容量的上升而上升,这可能表明更大的模型更熟练的 meta-learner。
1.3 GPT-3 的模型架构
GPT-3 延续 GPT-2 的 Transformer Decoder 架构,以及它的 modified initialization,pre-normalization 和 reversible tokenization。但是使用了 Sparse Attention[1]。如图3所示是 GPT-3 不同尺寸的模型,最大的模型达到了 175B 参数的量级。所有模型的输入 token 数都是 n_{ctx}=2048n_{ctx}=2048 。
1.4 GPT-3 的训练数据
如下图4所示是GPT-3 的训练数据。CommonCrawl 数据是一个噪声相对较多但是数据量很大很大的数据集,为了训练 GPT-3 这个庞大的模型不得不拿出来用了,但是要经过过滤,文档级别的模糊重复数据删除,增添一些高质量参考语料库。增加的语料库数据包含:WebText,Books1,Books2,Wikipedia。
CommonCrawl 数据从 2016 年到 2019 年的月 CommonCrawl 的 41 个分片下载,过滤前大约有 45TB,过滤后有 570GB,大致相当于 400 亿个 BPE token。不仅仅是过滤之后的 CommonCrawl,GPT-3 还用了其他几个高质量数据集比如 Books1,WebText2 等等。在训练期间,数据集不会按其大小成比例采样,而是更高质量的数据集采样更频繁。最终训练时它们的占比就是图4中的 60%,22%,8%,8%,3%。这说明 CommonCrawl 和 Books2 数据集采样少于1次,其他数据集采样可以达到 2-3 次。也就是说,尽管 CommonCrawl 数据集看着是个很大的数据集,但是实际训练时每个 Batch 里面只有 60% 是来自它的;尽管 Wikipedia 数据集看着是个很小的数据集,但是实际训练时每个 Batch 里面有 3% 是来自它的。
此外,大数据集训练的一个潜在的问题是:模型在训时无意中看到测试集上的数据,即污染了下游任务。为了避免这个问题,作者尝试把训练数据集里面可能和测试集重叠的部分搜索出来并消除掉。但作者也提到,很不幸的是,由于过滤中的一个错误导致作者们忽略掉了一些重叠,也就是这些污染没弄干净。但是又由于由于训练的成本,重新训练模型是不可行的。因此,作者在原始技术报告里面描述了污染带来的影响,并在未来的工作中,更积极地消除污染。
1.5 实验结果
GPT-3 的实验结果部分长达20多页,具体细节大家可以去参考原文,这里展示一个比较有意思的结果。如图5所示是上面不同大小的8个模型在训练时的 Validation Cross-Entropy Loss 和计算量之间的关系。图5中作者还包括 6 个额外的小模型,只有 100,000 个参数。作者说交叉熵损失的改进也会使得模型在其他任务上的性能有所提升。
可以看得出来 Validation Loss 和计算量的关系大致服从 Power Law,即: L=2.57\times C^{-0.048}L=2.57\times C^{-0.048} 。大致还是说明了随着计算量的指数级的上升,验证集上的交叉熵损失是可以线性下降的,其他下游任务的性能也会相应地提升。
另外一个有意思的结果如图6所示。图6是 TriviaQA 数据集的结果,是个回答问题的任务。可以观察到:随着模型量级的增长,性能也在随之上升。GPT-3 的 One-Shot 性能已经与 Fine-tuned 的最佳性能相适配了,GPT-3 的 Few-Shot 性能已经超过了 Fine-tuned 的最佳性能。
下图7是 GPT-3 机器翻译任务的结果。现有的无监督机器翻译方法通常直接在一对两种语言的数据上训练。相比之下,GPT-3 从混合训练数据中学习,这些数据以自然的方式混合多种语言。GPT-3 还使用单个训练目标,该目标不是为特定任何任务定制或设计的。从图7中可以发现,GPT-3 翻译为其他语种的性能超过了从其他语种翻译为英语的性能,而且二者的性能都随着模型量级的上升而上升。
下图8所示是 GPT-3 生成的新闻稿。人类很难去区分这篇新闻稿是由 GPT-3 生成还是由人类书写的,准确率仅仅为 12%。
下图9所示是 GPT-3 生成的另一篇新闻稿。人类比较容易去区分这篇新闻稿是由 GPT-3 生成还是由人类书写的,准确率为 61%。
下图10是人类的一些提示,以及 GPT-3 给出的回答。粗体字是 GPT-3 生成的答案,灰色字体是人类的提示。在第1个示例中,提示和完成都由人类提供;然后其他的题目都是人类给出一些提示,GPT-3 自动生成回答。
本着严谨的学术态度,作者还讨论了关于 GPT-3 的局限性和社会影响,可以参考原文了解更多细节。
参考:
https://zhuanlan.zhihu.com/p/609716668
https://www.zhihu.com/question/398114261/answer/1253942032
https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3Dt70Bl3w7bxY%26t%3D4351s
(#ref_1_0)Generating Long Sequences with Sparse Transformers
公众号后台回复“CNN综述”获取67页综述深度卷积神经网络架构
# 极市平台签约作者#
科技猛兽
知乎:科技猛兽
清华大学自动化系19级硕士
研究领域:AI边缘计算 (Efficient AI with Tiny Resource):专注模型压缩,搜索,量化,加速,加法网络,以及它们与其他任务的结合,更好地服务于端侧设备。
作品精选

