大模型论文:Language Models are Few-Shot Learners(GPT3)

发布于:2025-04-13 ⋅ 阅读:(25) ⋅ 点赞:(0)

大模型论文: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 下载并过滤了一部分数据:

  1. 根据多个高质量语料相似度进行筛选;
  2. 跨数据集与文档级别去重以减少重复、避免泄露验证集内容;
  3. 引入多个高质量语料库以增强多样性,包括 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 BLEUFew-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+(多源融合)
数据来源 图书 高质量网页文本 网页、书籍、百科等
任务能力 需微调 支持少量泛化 支持零样本/小样本学习
文本生成质量 一般 流畅自然 接近人类水准
  • 三个模型的迭代更多的是大力出奇迹,加参数加数据