大模型论文:Language Models are Few-Shot Learners(GPT3)
文章地址:https://proceedings.neurips.cc/paper_files/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf
一、摘要
我们证明了,扩大语言模型的规模在任务无关的 few-shot 学习任务中极大提升了表现,有时甚至能与此前最先进的微调方法相竞争。具体来说,我们训练了 GPT-3,这是一种具有 1750 亿参数的自回归语言模型,其参数数量是此前任何非稀疏语言模型的 10 倍。我们在 few-shot 设置中对其性能进行了测试。
对于所有任务,GPT-3 都是在没有任何梯度更新或微调的情况下使用的,其任务和 few-shot 示例完全通过文本交互的方式输入给模型。在许多自然语言处理(NLP)数据集上(包括翻译、问答和完形填空任务),GPT-3 都取得了出色的表现。
我们也指出了一些数据集,在这些数据集上 GPT-3 的 few-shot 学习仍然存在困难,以及某些 GPT-3 在大规模网络语料训练中面临方法学问题的数据集。
二、背景
-
自然语言处理(NLP)已经从学习任务特定的表示形式和设计任务特定架构,转向使用任务无关的预训练和任务无关的模型架构。比如GPT1还需要属于特定于任务的半监督模型,使用无标签语料数据预训练,对于特定任务,使用带标签数据进行微调。而GPT-2开始打破了这一限制,提出了统一的任务无关预训练模型。它在更大规模的无监督文本数据上进行训练,仅通过“语言建模”这一单一目标函数,学习通用的语言表示。在下游任务中,GPT-2不再依赖任务特定的模型结构,而是直接通过“少量示例”(few-shot learning)或“零样本学习”(zero-shot learning)进行泛化,表现出令人惊讶的迁移能力
-
本文提出的GPT3(1750亿参数)将这一趋势进一步加强。GPT-3拥有1750亿个参数,是当时最大规模的预训练语言模型。它不再需要显式微调,而是依赖“提示工程” (prompt engineering)来完成各类任务。这种方式不依赖具体任务的模型参数调整,只需将任务以自然语言描述的方式嵌入输入中,模型即可根据上下文进行推理和生成答案,极大地提升了语言模型的通用性与可扩展性
-
本文的实验显示,GPT-3 即使不进行任何微调,只靠上下文提示,也能在特定任务上达到甚至超过当前最先进模型
-
本文还训练了一系列较小模型(从 1.25 亿参数到 130 亿参数),用于与 GPT-3(1750 亿)在 Zero-/One-/Few-shot 设置下进行对比。然后发现一个明显趋势:随着模型容量的提升,Zero-/One-/Few-shot 表现之间的差距逐渐缩小,表明较大模型在“元学习能力”上更强,能够更好地通过上下文示例学习并完成新任务
三、方法
1、方法概述
-
本文采用与GPT2类似的基础预训练方法,主要变化时扩展模型规模、数据集规模与多样性、训练时长。本文使用的上下文学习方式也类似于GPT2,但本研究还系统性地探索了不同上下文学习设置下的模型表现
-
Fine-Tuning(微调):
使用数千条任务特定的有监督标签数据来更新预训练模型的权重。
优点:在许多基准任务上性能强。
缺点:每个任务都需要新数据集、泛化能力弱、可能过拟合训练数据中的偏差特征。 -
Few-Shot(少样本):
模型在推理时被给予少量任务示例(上下文 + 输出),但模型参数不更新。
示例格式通常为“输入:英文句子,输出:对应法文翻译”等,K 表示上下文中提供的示例数量(常设为 10–100),受限于模型最大上下文长度(例如 GPT-3 是 2048 token)。
优点:无需大规模任务数据。
缺点:效果仍低于微调模型;仍需少量任务样本。 -
One-Shot(一样本):
是 Few-shot 的特例,K = 1,仅提供一个示例。
-
Zero-Shot(零样本):
与 Few-shot 相似,但不提供任何示例,只用自然语言说明任务(prompt)。
Few-shot 学习可看作是一种上下文中的提示式迁移,不涉及训练,仅依赖模型内部“知识泛化”能力,评估的是模型是否能“看几个例子就会做”。
-
2、Model and Architectures 模型架构
-
本文使用了 GPT-2 相同的模型架构,包括修改后的初始化、归一化方式、可逆的 token 编码方案。不同之处在于本文采用了稀疏注意力机制(dense + 局部带状 sparse 模式),并训练了 8 种不同规模的模型,从 1.25 亿参数到 1750 亿,最大模型即为 GPT-3。 这种规模范围可以检验“扩展规律”(scaling laws)是否成立。
-
GPT-3 与 GPT-2 架构基本一致,但增加了参数数量和引入稀疏注意机制以优化大规模训练;
-
通过训练不同规模的模型来观察性能与规模的关系(验证“模型越大越强”是否成立)。
3、 Training Dataset 训练数据集
为了构建训练集,本文从 CommonCrawl 下载并过滤了一部分数据:
- 根据多个高质量语料相似度进行筛选;
- 跨数据集与文档级别去重以减少重复、避免泄露验证集内容;
- 引入多个高质量语料库以增强多样性,包括 WebText、Books1、Books2、Wikipedia 等。
训练数据质量直接影响模型泛化能力:
- 不仅靠大,更要干净、多样、有信息密度;
- 使用类似于“去毒+筛选+补充”的方式构建数据管道,以保证有效性和泛化性。
4、Training Process 训练过程
作者发现越大的模型可以使用越大的 batch size,但需要更小的学习率。本文使用梯度噪声大小控制学习率,并采用 V100 GPU + 高带宽集群 + 模型并行(层内、层间)训练大模型,避免内存溢出。
- 大模型训练不仅需要更大计算资源,也需更复杂的策略(如学习率调节、模型并行);
- 充分优化硬件利用率、降低通信成本,是训练 GPT-3 成功的幕后关键。
5、Evaluation 评估方法
-
对于 Few-shot 学习,本文从每个任务的训练集中随机抽取 K 个示例作为输入(有换行分隔),再让模型预测目标。对于没有训练集的任务(如 LAMBADA, StoryCloze),本文从开发集中抽样。
-
Zero-shot 设置下,本文提供自然语言任务描述而不是示例;某些任务会根据不同需求调整格式。
-
自由生成任务中使用 beam search,beam 宽度为 4,惩罚因子 α = 0.6。
-
最终结果基于公开测试集给出,某些任务测试集太大,GPT-3 无法完全加载,因此本文提供开发集表现。
-
总结:
- Few-shot 评估方式与“真实交互场景”更接近:模型看到的示例仅存在于上下文中;
- Zero-shot 检测模型推理能力,而不是学习能力;
- 使用 beam search 表明注重生成质量。
-
下图展示了模型大小与上下文示例数量对 GPT-3 表现的影响:
-
GPT3可以不依赖传统微调,仅通过上下文示例就能高效执行任务。GPT-3 的 Few-shot 表现可媲美甚至超越精调后的 BERT 系列模型,展示了“预训练 + In-context Learning”范式的巨大潜力
四、实验结果(具体数据看论文)
1、语言建模、完形填空和文本补全(Language Modeling, Cloze, and Completion Tasks)
本文测试了 GPT-3 在传统语言建模任务及相关任务上的表现。
- 在 PTB(Penn Tree Bank) 数据集上计算 zero-shot 的困惑度(perplexity),结果比之前 SOTA 模型高出 15 分(代表更优)。
- 由于 Wikipedia 和 one-billion word 数据集可能与训练集重合,我们没有在这些数据集上汇报结果。
LAMBADA 数据集 要求模型预测一段话的最后一个词:
- GPT-3 zero-shot 成绩相比 SOTA 提升 8%;
- Few-shot 设置下采用填空格式(如:
Alice was friends with Bob. Alice went to visit her friend, _____.
→Bob
),GPT-3 提升超过 18%。
总结:
- GPT-3 在传统语言建模任务上远超以往表现;
- 填空格式提升表现的核心在于:鼓励模型以最简形式“精确输出”(如只补 1 个词);
- LAMBADA 的强表现显示 GPT-3 在理解上下文的长期依赖性上表现优越。
2、问答任务(Question Answering)
本文测试 GPT-3 在不同 QA 数据集上的表现,包括开放领域问答(无需上下文材料):
- TriviaQA:GPT-3 的 zero-shot 表现比微调 T5-11B 高出 14.2%,比引导式 span 预测还高 3.8%;One-shot 设置下再提升 3.7%,接近目前 SOTA 系统(但未使用检索机制)。
- Natural Questions (NQ):GPT-3 低于微调的 T5-11B+SSM,原因可能是其测试的是对维基百科知识的微粒度掌握。
- ARC 科学题库:在 Challenge 子集(困难题)上 GPT-3 超过微调 RoBERTa;在 Easy 子集上稍优于 RoBERTa。
- CoQA(对话式阅读理解):GPT-3 Few-shot 比 BERT 微调模型高出 3%,但仍落后人类和符号混合系统。
总结:
- GPT-3 zero-shot 就能击败大多数微调模型,这意味着其已拥有庞大“事实记忆”。
- 但在需要微粒度文档知识提取的任务(如 NQ),GPT-3 表现略差;
- GPT-3 表现优于 RoBERTa 说明其理解推理能力更强,但仍受限于上下文记忆长度和结构化知识建模能力。
3、翻译任务(Translation)
GPT-3 的训练语料主要来自 Common Crawl(网络文本),93% 为英文,7% 为非英文。
- GPT-3 的训练语言分布未进行语言对控制,不同于传统 NMT 系统的双语回译训练。
- One-/Few-shot 设置使用少量对齐示例。
结果:
- Zero-shot GPT-3 明显弱于 NMT 系统;
- One-shot 提升 7 BLEU,Few-shot 再提升 4 BLEU,整体接近传统方法;
- 英译结果明显优于反方向(En → Ro 方向最差,比最优系统差 10 BLEU);
- Few-shot GPT-3 在 Fr-En 和 De-En 上超越可找到的最强基线;
- 在 Ro-En 上接近基于 60.8 万标注样本和回译的 SOTA。
总结:
- GPT-3 没有用并行语料训练,所以翻译任务中属于“非对称输入”,zero-shot 很难。
- 但仅用极少量示例就能赶上传统训练方法,说明 GPT-3 拥有强大的跨语言泛化能力。
4、SuperGLUE 综合评测
- SuperGLUE 是 NLP 高难度基准测试集,本文采用 Few-shot(每个任务随机抽取 32 个样本)。
- Sweep 不同的示例数(K),观察得分随上下文长度与模型大小提升。
各子任务表现如下:
任务 | 表现概况 |
---|---|
COPA / ReCoRD | One-shot/Few-shot 接近 SOTA,仅略低于 T5-11B 微调模型 |
WSC / BoolQ / MultiRC / RTE | 表现与 BERT-Large 微调接近 |
CB | Few-shot 可达 75.6% |
WiC | 表现明显不足,接近随机(尝试多种提示词无效) |
RTE / CB | 与 WiC 类似,处理两个句子比较类任务效果差 |
- GPT-3 的 Few-shot 表现超越 BERT-Large 的任务达 8 个,在其中两个任务中接近 T5-11B 微调 SOTA。
5、综合解读:
- 表现亮点:推理类(如 COPA)与语言理解类任务表现出色;
- 劣势任务:涉及两句比较(如 WiC、RTE),Few-shot 提示难以触发有效推理;
- 这暗示 GPT-3 在“结构化比较”“语义对齐”方面仍待提升。
能力类型 | GPT-3 表现总结 |
---|---|
语言建模 | 超越历史 SOTA,填空格式显著提升表现 |
完形填空 / Cloze | Zero-shot 和 Few-shot 表现大幅优于以往 |
问答任务 | Zero-shot 表现直接超过 T5-11B 微调模型,Few-shot 更强 |
翻译任务 | 英语方向表现佳,反方向稍差;Few-shot 能接近甚至超过强基线 |
SuperGLUE 综合 | 多任务接近甚至超过 BERT-Large 微调水平;对比类任务仍是短板 |
五、GPT1、GPT2和GPT3对比
- 下表是三个模型的简单对比
GPT-1 | GPT-2 | GPT-3 | |
---|---|---|---|
发布年份 | 2018 | 2019 | 2020 |
参数规模 | 1.17 亿 | 15 亿 | 1750 亿 |
层数(Transformer) | 12 层 | 48 层 | 96 层 |
隐藏层维度 | 768 | 1600 | 12288 |
训练语料规模 | 5GB(BooksCorpus) | 40GB(WebText) | 570GB+(多源融合) |
数据来源 | 图书 | 高质量网页文本 | 网页、书籍、百科等 |
任务能力 | 需微调 | 支持少量泛化 | 支持零样本/小样本学习 |
文本生成质量 | 一般 | 流畅自然 | 接近人类水准 |
- 三个模型的迭代更多的是大力出奇迹,加参数加数据