一句话总结

训练了 1750 亿参数的自回归语言模型 GPT-3,证明只要规模足够大,语言模型不需要任何梯度更新或微调,仅凭提示里的任务描述和几个示例,就能完成大量任务。这种能力被称为上下文学习(in-context learning)。

背景与问题

当时自然语言处理的主流是「预训练 + 微调」:先在大规模文本上预训练,再针对每个下游任务收集成千上万条标注数据做微调。这种做法有几个问题:

  • 每个新任务都需要一个标注数据集,限制了适用范围。
  • 模型在微调数据上可能学到虚假的相关性,泛化到分布之外时表现下降。
  • 人类只需要一句说明或几个例子就能学会新任务,模型却做不到。

GPT-2(2019)已经展示了语言模型零样本完成任务的苗头。论文要验证的假设是:继续扩大模型规模,上下文学习的能力会随之大幅提升。

核心方法

模型:沿用 GPT-2 的 Transformer 解码器结构(包括修改过的初始化、前置层归一化和可逆分词),不同之处是各层交替使用稠密注意力和局部带状稀疏注意力(类似 Sparse Transformer)。为了研究规模的影响,论文训练了 8 个模型,参数从 1.25 亿到 1750 亿。最大的 GPT-3 有 96 层,,96 个注意力头,上下文窗口为 2048 个 token。1750 亿参数是此前最大的非稀疏语言模型的 10 倍。

数据:所有模型都训练 3000 亿个 token,数据配比如下。高质量数据集在训练中被重复采样,Common Crawl 则不到一轮,用少量过拟合换取更高的数据质量:

数据集token 数训练配比
Common Crawl(过滤后)4100 亿60%
WebText2190 亿22%
Books1120 亿8%
Books2550 亿8%
维基百科30 亿3%

以上配比照录论文表 2.2 的舍入值,合计为 101%;它们是采样权重的近似表示,不能据此精确反算每个来源实际使用的 token 数。

Common Crawl 经过了与高质量语料的相似度过滤和文档级模糊去重。模型在微软提供的 V100 GPU 集群上训练,参见预训练与数据构建与清洗。

评测方式:不做微调,把任务直接写进提示,分三种设置:

  • 零样本(zero-shot):只给一句自然语言的任务说明。
  • 单样本(one-shot):说明加一个示例。
  • 少样本(few-shot):说明加尽可能多的示例,通常 10 到 100 个,受上下文窗口限制。

这种「把任务写进提示」的用法后来发展成提示工程。

实验与结论

  • 规模越大,上下文学习越强:零样本的表现随规模稳步提升,少样本提升得更快,说明大模型更擅长从上下文中学习。
  • 部分任务接近或超过微调模型:TriviaQA 闭卷问答的准确率在零样本、单样本、少样本下分别为 64.3%、68.0%、71.2%,少样本结果超过了同样闭卷设置下微调模型的最好成绩;CoQA 上三种设置的 F1 分别为 81.5、84.0、85.0。
  • 即时学习与推理:能完成单词字母重排、多位数算术、看一次定义就在句子里使用新词等任务。
  • 生成新闻:少样本设置下生成的新闻文章,人类评估者很难与真人写的区分开。
  • 局限:在自然语言推理(ANLI)和部分阅读理解数据集(RACE、QuAC)上,少样本表现依然较差。论文也坦白,数据去污染的过滤代码有 bug,部分评测集与训练数据的重叠没有去除,由于重训成本太高,只能在分析中评估这些重叠的影响。

影响与后续

  • 把「规模」确立为提升能力的主线,与同年的 Scaling Laws 研究一起推动了此后的大模型竞赛。
  • 上下文学习与提示成为使用大模型的基本方式,也成为思维链等后续技术的起点。
  • GPT-3 的预训练目标是预测下一个 token,不能保证它可靠地遵循用户意图或生成真实、无害的内容。InstructGPT 用人类反馈改善了这些表现,并没有消除相关问题,其方法也影响了后来的 ChatGPT。
  • 论文用了较长的篇幅讨论滥用风险、偏见与能耗,这些后来成为安全与对齐评测的重要议题。

参考资料

相关