一句话总结
训练了 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% |
| WebText2 | 190 亿 | 22% |
| Books1 | 120 亿 | 8% |
| Books2 | 550 亿 | 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。
- 论文用了较长的篇幅讨论滥用风险、偏见与能耗,这些后来成为安全与对齐评测的重要议题。
参考资料
相关
- Attention Is All You Need:GPT-3 所用 Transformer 架构的来源。
- InstructGPT:在 GPT-3 基础上做指令对齐。
- 语言模型:自回归语言模型的基本概念。
- 预训练:大规模预训练的数据、规模与配方。
- 提示工程:从手工写提示到自动优化。