AI论文评述:语言模型是少样本学习者(GPT-3)

TL;DR · AI 摘要
GPT-3通过极致的规模扩展实现了真正的少样本学习,仅通过提示中的示例就能动态适应新任务,无需微调或梯度更新,彻底改变了AI系统交互方式。
核心要点
- GPT-3拥有1750亿参数,是当时最大语言模型,规模是关键突破因素
- 实现了真正的少样本学习和上下文学习,仅通过提示示例就能完成任务
- 为ChatGPT等现代AI系统奠定了基础,改变了AI研究方向
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- GPT-3少样本学习
- 核心突破
- 规模扩展
- 少样本学习
- 上下文学习
- 技术影响
- 无需微调
- 动态适应
- 基础模型
- 应用价值
- ChatGPT基础
- AI交互革命
金句 / Highlights
值得收藏与分享的关键句。
GPT-3表明,足够大的语言模型通常可以直接从提示中的示例学习新任务,无需重新训练或梯度更新。
无需为每个任务训练单独的模型,同一个模型可以根据接收到的指令和示例动态适应。
这个想法最终成为现代AI系统(如ChatGPT)的基础。

继GPT-2之后,语言模型的能力显然已远超研究者的最初预期。仅通过训练模型预测下一个词,就已开始展现出令人惊讶的能力,如翻译、摘要和问答——这些都不需要针对特定任务进行专门训练。
但仍存在一个主要局限。尽管GPT-2能够跨任务泛化,但它仍难以可靠地适应。性能往往依赖于精心编写的提示(prompts),并且在许多实际应用中,微调(fine-tuning)仍然是必要的。AI系统正变得更为灵活,但它们仍未能像人类那样真正从上下文中学习任务。
随后,GPT-3将这一理念推向了更远。论文不再探讨语言模型是否能在无需微调的情况下执行任务,而是探索了一个更为雄心勃勃的问题:
如果我们将语言模型扩展到极致规模,会发生什么?这个答案几乎让整个AI界都感到震惊。
GPT-3表明,一个足够大的语言模型通常可以直接从提示内部的示例中学习新任务。无需重新训练,无需梯度更新,仅需用自然语言写几个示例。
例如,如果你向模型展示几个英法翻译例句,它就能正确地按照这个模式翻译新句子。如果你给它一些问答示例,它通常能立即推断出任务并生成合理的回答。
这被称为小样本学习(few-shot learning)和上下文学习(in-context learning)。
更重要的是,GPT-3提出了一种与AI系统交互的全新方式。无需为每个任务单独训练一个模型,同一个模型可以根据接收到的指令和示例动态适应。
这一理念最终成为了现代AI系统(如ChatGPT)的基础。
与许多有影响力的AI论文一样,GPT-3的论文因其规模庞大、技术实验复杂以及冗长的基准评估而难以阅读。因此,在本文中,我将以清晰实用的方式解析所有内容。
我们将探讨论文试图解决什么问题、小样本学习如何工作、为什么扩展规模变得如此重要、GPT-3是如何训练的,以及为什么这篇论文从根本上改变了现代AI研究的方向。
到最后,你应该能理解GPT-3的核心思想,以及为什么这篇论文成为了大语言模型(LLM)历史上最重要的里程碑之一。
论文概述
在本文中,我们将回顾Open AI的Tom Brown等人发表的论文《语言模型是小样本学习者》。
这篇论文介绍了GPT-3,并展示了一个改变现代AI研究方向的现象:大语言模型可以直接从提示和示例中学习任务,而无需像GPT-1那样进行针对特定任务的微调。
GPT-3无需为每个新任务重新训练模型,而通常可以通过自然语言指令、单样本示例或小样本提示动态适应。
论文还引入了上下文学习(in-context learning)的概念,即模型在推理过程中有效地从提示内部的模式中学习。
如果你想直接阅读原论文,请点击:《语言模型是小样本学习者(PDF)》
以下是我们将在本次解读中涵盖内容的快速信息图:

目录:
预备知识
为了充分理解本文,最好先熟悉以下几个基础概念。
阅读本系列之前的解读会特别有帮助:
GPT-3直接建立在早期论文中提出的许多思想之上,特别是预训练、零样本学习(zero-shot learning)和大规模语言建模。
此外,最好具备:
- 对自然语言处理(NLP)以及机器如何处理文本的基本理解
- 对Transformer模型的高层次认识(不需要深入的数学细节)
- 熟悉监督学习、无监督学习和零样本学习
- 对提示(prompts)以及语言模型如何生成文本的基本了解
- 通用的机器学习概念,如训练数据、参数、扩展规模和推理
不过,你并不需要成为AI研究人员也能读懂本文。
我将保持解释的实用性和直观性,更侧重于理解GPT-3背后的核心思想,而不是陷入复杂的数学细节或学术术语中。
**内容概要**
在GPT-3之前,像GPT-2这样的模型已经展示了一个令人惊讶的现象:一个仅被训练来预测下一个词的语言模型,仍然可以执行许多它从未直接训练过的任务。翻译、摘要、问答——这些能力随着模型规模的增大开始自然涌现。
但仍存在一个局限。
即便对于 GPT-2,强劲的性能往往也依赖于精心设计的提示或额外的微调。实践中,大多数 NLP 系统仍遵循相同模式:先训练大型模型,然后为每个新任务单独重新训练或微调。
GPT-3 彻底颠覆了这一流程。
论文作者指出,当语言模型达到足够规模时,它就能仅通过上下文直接学习任务。无需更新模型参数,只需在提示中展示几个示例,模型就能延续该模式。
这一理念被论文称为 _少样本学习(few-shot learning)_。
例如,无需训练单独的翻译模型,只需输入:
- dog → chien
- cat → chat
- house → ?
GPT-3 通常能续写正确答案:_maison_。
关键在于模型在推理过程中并不通过梯度更新来学习。传统意义上的重新训练并未发生。学习过程完全在上下文窗口内通过提示中的示例实现。
这标志着语言模型使用方式的重大转变。
GPT-3 表明:无需为每个任务构建专用系统,单个足够大的模型通过阅读指令和示例即可动态适配。论文将这种行为称为 _上下文学习(in-context learning)_,而 GPT-3 的主要贡献正是展示了该理念在大规模应用时的强大潜力。
**论文目标**
作者认为,现有 NLP 系统的最大局限在于过度依赖任务特定训练。尽管在 GPT-3 问世时模型已日益强大,但大多数系统仍需要针对每个新任务进行单独的微调流程。
这在实际中引发诸多问题:
首先,每个任务都需要标注数据。若要让模型完成文章摘要、问答、情感分类或文本翻译等任务,通常需要数千甚至数百万精心准备的样本。数据收集成本高昂、耗时巨大,对于小众领域往往不切实际。
其次,每项新功能都需要额外训练。即使基础模型已通过海量文本预训练,开发者仍需要为特定用例反复重新训练或微调。
论文指出该工作流程本质上是低效的。更重要的是,作者强调这不符合人类学习方式——人类通常只需少量演示或简单指令就能理解任务,一般不需要成千上万的标注示例来理解要求。
这构成了 GPT-3 的核心研究问题:
语言模型能否不依赖参数更新和任务特定训练,直接通过上下文学习新任务?
该问题驱动了论文中几乎所有实验。作者并未测试 GPT-3 能否攻克某个精心优化的基准,而是探索更宏大的命题:扩大语言模型规模能否产生仅通过提示、示例和自然语言指令就能动态适配的系统?
**核心思想**
GPT-3 的核心仍延续 GPT-2 的基本理念:训练语言模型预测序列中的下一个词元(token)。其训练目标出奇简单:给定文本后,模型学习逐词元预测后续内容。
表面上看,GPT-3 似乎只是 GPT-2 的大规模升级版。某种程度上确实如此——模型参数量激增至 1750 亿,训练数据源也更多样化,包含 Common Crawl、WebText、图书和维基百科等。
但论文指出,随着语言模型规模扩大,更有趣的现象开始显现。
GPT-3 不仅更好地记忆文本模式,更展现出通过提示直接学习任务的能力。当模型在输入中看到示例时,通常无需额外训练或参数更新就能正确延续模式。
例如,若提示包含若干问答对或翻译示例,GPT-3 能推断任务结构并为新输入生成类似输出。换言之,提示成为了临时学习环境。
这是论文的关键概念转变。
传统机器学习通常将训练与推理分离:先通过权重更新学习,再部署模型进行预测。GPT-3 模糊了这一界限——模型虽在预训练阶段学习,但在推理时也能根据接收的上下文动态调整行为。
作者将这种行为定义为 _上下文学习_。
其重要意义在于模型无需为每个任务重新训练。处理提示时不会发生梯度更新,GPT-3 直接从上下文窗口内嵌入的示例中学习。
这标志着语言模型认知方式的微妙但重要的转变:提示不再仅是输入,它实际上成为了教导模型如何行动的轻量级接口。
**方法论**
GPT-3 产生巨大影响力的原因之一,是其训练过程本质上非常熟悉。与许多提出全新架构或复杂算法论文不同,GPT-3 主要基于既有理念进行极致规模化扩展。
作者指出,核心训练目标仍是标准的自回归语言建模。简言之,模型通过阅读文本持续学习预测序列中的下一个词元,这与 GPT-2 的基本方法一致。
这个过程在概念上非常直观:
- 训练一个超大规模的 Transformer 模型
- 向其输入海量的互联网文本
- 不断优化其预测下一个词的能力
真正发生巨变的是其规模。
GPT-3 使用来自 Common Crawl、WebText、书籍和维基百科等来源的数千亿个 token 进行训练。论文还指出,OpenAI 对大部分 Common Crawl 数据集进行了过滤和清理,以提高质量并减少重复。
但该方法论最重要的部分不仅在于模型的训练方式,更在于模型在训练完成后的使用方式。
传统上,NLP 系统严重依赖微调。在对语言模型进行预训练后,开发人员会针对每个特定任务,在一个较小的标注数据集上再次训练它。而 GPT-3 则完全尝试了一种不同的方法。
它不再重新训练模型,而是直接在提示(prompt)中描述任务。
论文研究了三种主要设置:
- 零样本学习(Zero-shot learning):模型仅接收自然语言指令
- 单样本学习(One-shot learning):模型接收该任务的一个示例
- 少样本学习(Few-shot learning):模型在解决新案例前会接收几个示例
例如,一个翻译提示可能如下所示:
dog → chien
cat → chat
house → ?
接着,GPT-3 会延续这个模式并预测:
maison
这一过程的非凡之处在于,期间没有发生任何重新训练。模型的权重完全保持不变。它仅仅是利用提示中的信息来推断被请求的是何种任务。
在实践中,这使提示转变为比普通输入强大得多的东西。它变成了一个临时工作区,模型可以在其中识别模式、调整行为并动态应用所学知识。
论文反复强调,这种行为是通过规模涌现出来的,而非针对特定任务进行工程设计。GPT-3 并非针对翻译、摘要、推理或问答进行单独训练。相反,当模型变得足够大时,相同的通用语言建模目标似乎就产生了所有这些能力。
**微调 vs 零样本 vs 少样本**
| 方面 | 微调 (Fine-Tuning) | 零样本学习 (Zero-Shot Learning) | 少样本学习 (Few-Shot Learning) | | :----------------------- | :----------------------------------------------- | :-------------------------------------------- | :-------------------------------------------------- | | 定义 | 模型在特定任务的标注数据上进行额外训练 | 模型仅使用指令执行任务,无需示例 | 模型通过提示中的少量示例学习任务 | | 训练要求 | 需要监督式的特定任务数据集 | 无需特定任务训练或示例 | 无需重新训练,但需要在提示中提供少量演示 | | 任务给定方式 | 通过单独的训练阶段 | 通过自然语言指令 | 通过指令加上少量输入-输出示例 | | 学习过程 | 训练期间更新模型权重 | 不更新权重 | 不更新权重;学习在上下文窗口内发生 | | 灵活性 | 通常专精于一项任务 | 跨多种任务高度灵活 | 灵活,同时仍能从演示中受益 | | 适应性 | 需要为新任务重新训练 | 通过提示即时适应 | 通过上下文示例快速适应 | | 数据依赖性 | 严重依赖标注数据集 | 主要依赖预训练知识 | 同时依赖预训练知识和提示中的示例 | | 性能 | 在狭窄的基准任务上通常最强 | 通常弱于微调 | 通常远强于零样本,有时接近微调 | | 跨任务可扩展性 | 昂贵且难以扩展 | 极具可扩展性 | 无需重新训练即可扩展 | | 计算成本 | 高(因为每个任务都可能需要新的训练) | 使用期间成本低 | 使用期间成本低 | | 示例 | 在情感分析数据集上微调模型 | “对这个句子的情感进行分类” | “正面: 我喜欢这部电影。负面: 这部电影很无聊。句子: 故事很精彩 →” | | 主要优势 | 在精心训练的任务上准确率高 | 简单且泛化能力强 | 灵活性与性能之间的强平衡 | | 主要弱点 | 跨越多任务的可扩展性差 | 可能误解任务格式或意图 | 对提示质量和示例选择敏感 | | 最常关联 | 传统 NLP 系统,GPT-1 时代 | GPT-2 风格的提示 | GPT-3 与上下文学习(in-context learning) | | 核心思想 | 为每个任务专门训练 | 从指令中推断任务 | 从上下文中的示例推断任务 |
**模型架构**
在架构上,GPT-3 并未引入全新的设计。事实上,论文最有趣的方面之一是,其核心架构与 GPT-2 几乎完全相同。OpenAI 继续使用仅包含解码器(decoder-only)的 Transformer 模型,并通过自回归(autoregressive)目标进行训练。
在高层次上,Transformer 架构使用一种称为注意力(attention) 的机制来处理文本。与旧的循环模型严格逐词阅读不同,Transformer 可以审视整个序列并确定哪些词彼此最相关。
更具体地说,GPT-3 依赖于自注意力(self-attention),这使得模型在生成文本时能够权衡上下文的不同部分。这有助于模型捕捉词、句和概念之间的长程关系。
该模型也是自回归(autoregressive) 的,这意味着它通过根据之前的所有内容预测下一个 token 来顺序生成文本。这种“预测下一个 token”的目标仍然是 GPT-3 的基础,就像它对 GPT-2 一样。
那么,如果架构大体相同,实际改变的是什么?
答案是规模。
GPT-3 极大地增加了模型的规模、训练数据的数量以及训练期间使用的计算资源。GPT-3 的最大版本包含 1750 亿个参数,远大于 GPT-2 的 15 亿参数模型。
该论文还尝试了多种模型规模,参数范围从1.25亿到1750亿不等。这一点非常重要,因为作者希望研究模型能力如何随着规模扩大而演进。
架构特点包括:
- 仅包含解码器的Transformer设计
- 2048个token的上下文窗口
- 在相似训练目标下构建的多尺度模型
- 使模型能高效处理上下文关系的注意力机制
论文最重要的发现是:性能随着规模扩大呈现平滑提升。在翻译、问答、推理和小样本学习等各类任务中,更大规模的模型始终表现更优。
这一观点成为整个GPT-3论文的核心思想。
作者指出,当语言模型达到足够大的规模并接受足够多元的数据训练时,许多高级能力会自然涌现,而无需依赖手工定制的任务专用系统。换言之,规模化本身开始成为一种研究策略。
这一转变的重要意义在于:GPT-3并非通过复杂的架构创新实现突破。论文提出的观点更为简洁,且在某种程度上更令人惊讶:
采用相对标准的Transformer架构,只要进行足够激进的规模扩展,就会开始展现出全新的行为模式。

注: 原图展示的是《Attention Is All You Need》中完整的Transformer架构(编码器-解码器)。为清晰体现与GPT类模型的相关性,本处使用的图像经过裁剪,仅聚焦架构中的解码器部分,因为GPT模型基于仅包含解码器的Transformer设计。
参考文献: Brownlee, J. Transformer模型中的编码器与解码器 Machine Learning Mastery.
**实验设计**
为验证GPT-3是否能真正仅通过上下文学习,作者在非常广泛的NLP任务中评估了模型。论文没有局限于单一基准测试,而是检验同一个预训练模型能否仅通过提示和示例适应多种不同类型的问题。
实验涵盖多个领域,包括:
- 语言建模与文本补全
- 问答系统
- 跨语言翻译
- 阅读理解
- 常识推理
- Winograd风格推理任务
- 完形填空与句子补全任务
- 算术运算和词汇处理等合成推理问题
这些实验的特殊重要性在于评估方式本身。
所有测试完全通过提示完成,没有对任何基准测试单独微调GPT-3。作者在三种不同设置下评估模型:
- _零样本学习_:仅向模型提供任务描述
- _单样本学习_:提供单个示例
- _小样本学习_:在提示中包含多个演示案例
例如在翻译任务中,提示内容可能包含几个英法翻译示例后再要求模型延续该模式;在问答任务中,模型可能在尝试新问题前先看到若干示例问题与答案。
关键在于:模型参数在这些评估过程中始终保持不变。没有梯度更新、没有重新训练步骤、没有任务特定优化。GPT-3使用完全相同的预训练权重执行所有任务。
这是该论文与传统NLP系统最大的区别之一。
当时最先进的模型通常通过在精心准备的数据集上进行监督微调来获得强劲的基准测试结果。而GPT-3则验证了单个大型语言模型能否仅通过理解提示中的模式来实现跨任务泛化。
论文还评估了模型规模扩大对性能的影响。OpenAI训练了多个版本的GPT-3(参数规模从1.25亿到1750亿),进而比较规模扩展对零样本、单样本和小样本学习的影响。
作者指出,更大规模的模型在利用上下文信息方面表现显著提升。小样本学习能力随着规模扩大尤其明显增强,这表明大型模型不仅仅是在记忆更多信息,而是在动态适应新任务方面变得更强。
**核心发现**
在这个部分,GPT-3不再像是"仅仅是更大的语言模型",而开始展现出根本性的不同。
论文指出,几乎所有实验中最清晰的模式是:性能随着模型规模扩大持续提升。当GPT-3的参数从数百万扩展到数千亿时,模型在理解提示、适应上下文和执行未经明确训练的任务方面表现出显著进步。
但最令人惊讶的并非仅仅是更高的基准测试分数。
真正的突破在于:_小样本学习在大规模模型中确实有效_。
在许多任务中,GPT-3的小样本学习性能接近经过精细调优的系统,某些情况下甚至达到或超越后者。这非常引人注目,因为GPT-3是在不针对单个任务更新权重的情况下取得这些结果的——一切仅通过提示实现。
最有力的例证之一出现在问答基准测试中。
在TriviaQA任务中,随着提示中提供更多示例,GPT-3的性能显著提升。论文指出,零样本性能已经具备竞争力,但单样本和少样本提示进一步推高了结果,最终在相同的闭卷设置下达到或超越了一些最先进的微调系统。

来源:Brown等人(2020)《语言模型是少样本学习者》图1.2
这种模式在论文中反复出现:
- 少样本提示持续优于零样本提示
- 更大规模的模型能更好地利用上下文示例
- 规模扩展不仅提升准确率,更增强了适应能力本身
最后一点尤为重要。
论文指出,规模扩展的作用不止于帮助模型记忆事实或生成更流畅的文本。随着模型规模增大,它们似乎发展出更强的上下文学习能力。换言之,更大的模型更擅长直接从提示中推断模式和任务结构。
作者甚至观察到,零样本与少样本性能之间的差距随着模型规模增大而扩大。较小模型难以从提示中有效学习,而较大模型往往仅通过几个示例就能推断出任务要求。
这一发现的历史意义在于它改变了研究者对AI系统能力增长方式的认知。在GPT-3之前,规模扩展通常被视为改进现有性能指标的手段。GPT-3则提出了另一种可能性:当模型达到足够规模时,可能涌现出全新的能力。
这正是该论文产生巨大影响力的原因。它不仅是报告更好的基准测试数字,更是提供了证据表明:规模本身能够解锁质变性的新型学习行为。
**任务特异性观察**
透过 headline 结果深入分析,论文揭示了关于GPT-3更细微的特征:其能力表现存在显著不平衡。该模型在某些领域表现惊人,却在其他领域仍存在明显缺陷。
GPT-3在与模式识别和语言延续紧密相关的任务中表现尤为突出。
翻译是典型范例。虽然GPT-3从未作为翻译系统进行专门训练,但当提示中提供少量示例时,模型仍能产出令人印象深刻的结果。论文指出,少样本翻译性能随着模型规模增大而显著提升,特别是在翻译成英语时。
该模型在问答基准测试中同样表现优异,尤其是在必须直接从模型参数内部存储信息获取答案的闭卷设置中。像TriviaQA这样的任务显示,当GPT-3从零样本提示转向少样本提示时,性能获得大幅提升。
文本补全和完形填空式任务是另一大优势领域。GPT-3展现出强大的模式延续、段落补全和上下文缺词推断能力。在LAMBADA等数据集上,少样本设置带来的改进尤为显著。
但论文也审慎记录了模型的弱点。
GPT-3在某些需要大量推理的基准测试中表现明显吃力,特别是涉及自然语言推理的任务。即使对最大规模的模型而言,ANLI等数据集仍然具有挑战性。
部分阅读理解任务也暴露出局限性。在多个案例中,GPT-3生成的答案听起来合理,但未能展现对文章的深度理解。这成为贯穿全文的一个 recurring 主题:流畅的语言生成并不总是意味着可靠的推理能力。
最有趣的发现之一是GPT-3对提示设计的敏感性。
性能表现往往因示例的撰写方式、格式编排或上下文窗口中的排序而发生显著变化。在许多任务中,仅添加少量演示样本就能显著提升准确率。
这揭示了关于GPT-3运作机制的重要特性:该模型并非简单地从记忆中检索固定知识,而是 heavily 依赖上下文线索来推断预期行为。微小的提示变更可能重塑模型对任务本质的理解。
实践中,这篇论文帮助AI社区引入了一个全新概念:提问方式的重要性几乎与模型本身相当。这一洞见最终演化为我们现在所称的提示工程。
**泛化与记忆之争**
围绕GPT-3的最大疑问是:该模型究竟是在学习有用模式,还是仅仅记忆了互联网的海量内容?
由于GPT-3是在包括Common Crawl在内的大规模网络数据集上训练的,这个问题显得尤为重要。对于如此庞大的模型,人们有理由质疑其强劲的基准测试表现是来自真正的泛化能力,还是训练过程中偶然见过部分评估数据。
作者严肃对待这个问题,专门用论文整个章节研究他们所称的数据污染现象。
根据论文所述,OpenAI搜索了训练数据与评估使用的基准数据集之间的重叠部分,发现确实存在某些污染。换言之,部分评估数据集的内容曾出现在模型的训练语料中。
但作者主张,这种重叠不足以完全解释GPT-3的结果。对于许多基准测试,即使考虑污染影响后,性能改进仍然保持一致。论文还指出,某些专门为测试适应性和推理能力设计的任务,尽管不太可能直接出现在训练数据中,仍展现出强大的少样本学习能力。
另一个重要的观察是,GPT-3 仍然对训练数据存在欠拟合现象。这意味着即使经过超大规模训练,模型也未能完美记忆所有已见内容。
这一细节很重要,因为它表明模型正在学习统计结构和语言模式,而非存储数据集的精确副本。
当然,一定程度上的记忆确实会发生。大型语言模型能够复现训练文本片段,尤其是在训练过程中频繁出现罕见或重复数据时。论文并未否认这一点,相反作者认为,仅凭记忆无法解释 GPT-3 在翻译、推理、问答和上下文学习等任务中的广泛性能表现。
实践证据指向了更复杂的机制。
GPT-3 似乎从大规模文本数据中吸收了模式、关系和任务结构,然后在新语境中灵活复用这些模式。这与简单复制存储答案有着本质区别。
这种区分已成为现代人工智能研究的核心争论点。GPT-3 迫使研究者更深入地思考:语言模型"理解"某事物的真实含义究竟是什么?记忆、模式识别与真正泛化之间的界限又在哪里?
**讨论**
论文在此处开始揭示 GPT-3 更广泛的影响。
作者认为,大型语言模型可能正在实现比单纯文本预测更通用的功能。通过海量语言数据训练,模型似乎学会了与任务本身相关的模式。
这一观点改变了我们对语言建模的认知。
传统 NLP 系统基于显式监督设计:若要让模型完成翻译、问答、文档摘要或情感分类等任务,需使用标注样本进行特定训练。
而 GPT-3 展现了另一种可能性。
论文指出,许多任务已隐式嵌入自然语言数据中。在预训练过程中,模型会遇到互联网上散布的数以亿计的解释案例、翻译文本、对话记录、推理模式、指令说明和问答对。随着规模扩大,模型开始间接学习这些行为模式。
实践中,这意味着模型执行新任务时并不总是需要显式再训练。通过提示和示例即可激活模型在预训练中已吸收的行为模式。
这就是为什么提示在 GPT-3 中如此强大。
提示不仅是在提供信息,更是在引导模型调用其已学习表征中存在的某种行为模式。
与此同时,作者谨慎避免过度夸大结果。
全文多次强调 GPT-3 的表现仍不一致:某些输出令人信服,而另一些则存在明显错误、逻辑缺陷或毫无意义。
这成为 GPT-3 的标志性特征。
模型经常表现出远超实际水平的自信。即使底层推理薄弱或事实错误,它也能生成流畅的解释和有说服力的答案。在某些任务(特别是深度推理和阅读理解基准测试)中,GPT-3 仍然表现欠佳。
因此论文并未将 GPT-3 描绘成已完善的智能形态。
而是通过证据表明:扩展语言模型规模能够解锁此前薄弱或缺失的新能力。这些成果足以预示方向的重大转变,但尚未强大到无需进一步研究的地步。
这种平衡性正是论文产生影响力的关键——既展现了雄心,又异常坦诚地承认了现存局限性。
**局限性**
GPT-3 论文在引发轰动的同时保持可信度,部分原因在于作者异常坦率地公开模型缺陷。论文既未宣称小样本学习能解决所有 NLP 问题,也未假装 GPT-3 在所有任务上都可靠。
多数情况下,传统微调系统仍表现更优。
尽管 GPT-3 在广泛基准测试中取得了令人印象深刻的小样本学习成果,但在需要大量推理的任务(特别是自然语言推理和某些阅读理解数据集)上仍然存在困难。
论文同时强调,GPT-3 的成功高度依赖规模。较小版本的模型小样本能力明显较弱,最强结果仅出现在超大规模参数条件下。
这带来了重大现实问题。
训练 GPT-3 需要巨大的计算资源、专用基础设施和海量数据。最大模型包含 1750 亿参数,使用大型 GPU 集群在庞大数据集上完成训练。
实际上,当时全球极少有机构能真正复现这项工作。
论文还讨论了关于偏见与公平的广泛担忧。由于 GPT-3 从互联网大数据中学习,不可避免地吸收了数据中存在的社会偏见、刻板印象和有问题的语言模式。
这一点尤其值得关注,因为模型能生成极具说服力的文本。错误或有偏见的输出可能听起来权威可靠,即使其内容具有误导性或危害性。
作者探讨的另一个问题是数据污染。由于 GPT-3 接受网络级语料训练,部分基准测试数据可能意外出现在训练集中。论文直接调查了该现象,承认确实存在部分重叠,但认为污染本身不能解释整体结果。
如此激进的模型扩展还伴随着环境与经济成本问题。
以 GPT-3 的规模训练系统会消耗巨大的计算资源和能源,这引发了关于 AI 研究可持续性和可及性的问题。随着模型变得越来越大,尖端进展日益依赖于工业级基础设施的获取。
这种矛盾至今依然存在。
GPT-3 证明了扩展规模的效果非凡,但同时也凸显出高级 AI 研究正变得多么集中。大型语言模型的未来显然充满希望,但也越来越昂贵。
**结论**
论文以一个出奇简单的结论收尾:扩展语言模型会改变它们的能力范围。
作者认为,GPT-3 证明了一个足够大的语言模型可以直接从上下文中学习任务,而无需梯度更新或针对特定任务进行微调。
这一观点代表了自然语言处理(NLP)方向的重大转变。
多年来,机器学习的标准工作流程大致如下:
- 预训练模型
- 针对特定任务进行微调
- 部署专用系统
GPT-3 引入了一种不同的范式。
无需为新任务反复重新训练模型,同一个预训练模型通常只需通过提示(prompt)就能适应。上下文窗口内的指令和示例足以引导模型产生有用的行为。
换句话说,工作流程开始变得更像这样:
- 一次性训练
- 通过提示动态适应
这不仅关乎便利性,更重要的意义在于它改变了研究人员对泛化(generalization)本身的思考方式。
论文指出,许多传统上与监督学习相关的能力,可以从大规模语言模型中自然涌现。翻译、问答、推理、摘要,甚至任务适应能力,都开始出现在仅通过下一词元预测(next-token prediction)训练的单一统一系统中。
与此同时,作者在结论中仍保持谨慎态度。
GPT-3 显然很强大,但其可靠性尚不足以被视为智能或推理的完整解决方案。论文多次承认了其在逻辑、事实准确性、偏见和一致性方面的弱点。
然而,其更广泛的影响难以忽视。
GPT-3 表明,扩展语言模型不仅仅提高了流畅度,还能产生在较小系统中微弱或根本不存在的全新行为。这一认识重塑了现代 AI 研究的轨迹,并为随后出现的提示驱动(prompt-driven)系统奠定了基础。
**最终洞见**
如果说 GPT-1 引入了大规模预训练后微调的理念,GPT-2 展示了语言模型无需特定任务训练也能出色泛化的能力,那么 GPT-3 则将这一理念推向了更远。
它表明,语言模型可以开始在推理过程中学习。
这才是这篇论文背后真正的概念转变。
在 GPT-3 之前,大多数 AI 系统从根本上仍是任务特定的。即使强大的预训练模型,通常也需要额外的监督训练才能用于特定应用。
GPT-3 开始打破这种模式。
无需为翻译、摘要、问答或推理分别构建模型,同一个模型可以根据接收到的提示动态适应。上下文窗口内的示例有效地成为了行为的临时指令。
在实践中,这将 AI 系统从狭窄的专业化转向了更灵活的方向:
- 从任务特定系统
- 转向可实时适应的通用模型
尤其重要的是,GPT-3 并非通过复杂的符号推理系统或手工制作的流程来实现这一点。该模型仍使用相对简单的下一词元预测目标进行训练。然而,在达到足够规模时,全新的行为开始涌现。
回顾过去,这篇论文不像是 GPT 系列的终点,而更像是一个新时代的开端。
许多定义现代 AI 的理念都可直接追溯至 GPT-3:
- 提示工程(Prompt engineering)
- 指令遵循系统(Instruction-following systems)
- 上下文学习(In-context learning)
- 对话式 AI 助手(Conversational AI assistants)
- 通用基础模型(General-purpose foundation models)
最终,像 ChatGPT 这样的系统之所以存在,是因为 GPT-3 证明了提示本身可以成为与智能交互的强大接口。
这就是这篇论文具有历史意义的原因。
它不仅仅是扩展了语言模型的规模,更改变了人们使用它们的想象方式。
**GPT-1、GPT-2 与 GPT-3 的主要区别**
方面GPT-1GPT-2GPT-3 核心思想预训练后微调仅通过预训练实现零样本行为大规模预训练实现少样本和上下文学习 训练方法两阶段流程:先预训练后微调单阶段语言建模相同的语言建模方法,但规模大幅扩展 监督方式下游任务需要标注数据无需监督微调即可执行任务通过提示和示例自适应,无需重新训练 任务处理每个任务单独微调主要通过零样本提示处理任务通过零样本、单样本和少样本提示处理任务 学习方式先学习表征后专业化学习通用语言模式学会直接从上下文推断任务 泛化能力微调任务外泛化有限更强的跨任务泛化能力更强的上下文适应和情境学习能力 提示使用重要性较低提示开始发挥作用提示成为系统行为核心 推理行为训练后基本静态推理时可泛化推理时可动态适应 架构Transformer(基于解码器)仅解码器Transformer仅解码器Transformer(大规模扩展) 模型规模约1.17亿参数最高15亿参数最高1750亿参数 上下文窗口较小上下文长度最高1024词元2048词元上下文窗口 训练数据书籍语料库和精选数据集WebText网络数据集大规模多源数据集(含Common Crawl、WebText、书籍和维基百科) 核心能力迁移学习零样本学习少样本和情境学习 性能表现微调后表现强劲无需任务特定训练即表现强劲仅通过提示常可与微调系统竞争 扩展重要性中等重要本文核心研究策略 主要局限需要标注数据集和重新训练推理能力弱且零样本行为不一致计算成本极高且存在持续推理局限 主要贡献引入现代NLP预训练范式展示多任务零样本行为展示大规模涌现的情境学习能力 历史影响现代Transformer NLP基础推动通用语言模型发展为提示驱动AI系统和现代LLM应用奠定基础 领域变革预训练成为标准范式提示方法变得可行提示成为AI系统主要交互方式 遗产影响启发现代迁移学习流程启发大规模生成模型直接影响ChatGPT、指令微调和基础模型
GPT架构演变的PyTorch实现
GPT-1:预训练+微调架构
class GPT1(nn.Module):
def __init__(self, vocab_size, d_model, n_layers):
super().__init__()
self.token_embedding = nn.Embedding(vocab_size, d_model)
self.position_embedding = nn.Embedding(512, d_model)
self.transformer_blocks = nn.ModuleList([
TransformerBlock(d_model)
for _ in range(n_layers)
])
self.ln_f = nn.LayerNorm(d_model)
# Language modeling head
self.lm_head = nn.Linear(d_model, vocab_size)
def forward(self, input_ids):
positions = torch.arange(input_ids.size(1))
x = (
self.token_embedding(input_ids)
+ self.position_embedding(positions)
)
for block in self.transformer_blocks:
x = block(x)
x = self.ln_f(x)
logits = self.lm_head(x)
return logitsGPT1继承自nn.Module,这是PyTorch中构建神经网络的基础类。构造函数(__init__)定义了模型使用的所有可训练层。
nn.Embedding(vocab_size, d_model)创建可学习的查找表,将词符ID转换为稠密向量。词汇表中的每个词符都被映射到大小为d_model的向量。
位置嵌入层添加了词符顺序信息。由于Transformer并行处理词符,需要显式的位置信息来理解序列结构。
nn.ModuleList([...])存储多个Transformer块,同时确保PyTorch在训练期间正确跟踪其参数。每个TransformerBlock通常包含掩码自注意力机制和前馈网络。
nn.LayerNorm(d_model)在输出投影前应用层归一化。这有助于稳定训练并改善深度Transformer架构中的梯度流动。
语言建模头(nn.Linear)将隐藏表征投影回词汇空间。输出大小等于vocab_size,为每个可能的下一个词符生成预测分数。
在forward()方法内部,input_ids.size(1)获取序列长度,torch.arange(...)为每个词符位置生成位置索引。
词符嵌入和位置嵌入相加后产生初始Transformer输入表征。
模型随后将表征顺序通过每个Transformer块:
for block in self.transformer_blocks:
x = block(x)这种迭代堆叠使得GPT模型能够学习日益抽象的上下文表征。
经过归一化后,最终隐藏状态传入lm_head,生成logits。这些logits是未归一化的预测分数,用于计算下一个词符生成的概率。
模型最终返回logits张量,通常在推理时通过softmax处理,或在训练时直接与CrossEntropyLoss配合使用。
GPT-2:零样本多任务架构
class GPT2(nn.Module):
def __init__(self, vocab_size, d_model, n_layers):
super().__init__()self.token_embedding = nn.Embedding(vocab_size, d_model)
self.position_embedding = nn.Embedding(1024, d_model)
self.transformer_blocks = nn.ModuleList([
TransformerBlock(
d_model=d_model,
pre_layer_norm=True
)
for _ in range(n_layers)
])
self.final_layer_norm = nn.LayerNorm(d_model)
self.lm_head = nn.Linear(d_model, vocab_size, bias=False)
def forward(self, input_ids):
positions = torch.arange(input_ids.size(1))
x = (
self.token_embedding(input_ids)
+ self.position_embedding(positions)
)
for block in self.transformer_blocks:
x = block(x)
x = self.final_layer_norm(x)
logits = self.lm_head(x)
return logits与 GPT-1 类似,模型从词元嵌入和位置嵌入开始。nn.Embedding 将词元 ID 转换为密集向量,而位置嵌入则提供序列中词元顺序的信息。
一个显著区别是更大的位置嵌入尺寸(1024 而非 512),这使得 GPT-2 能够处理更长的上下文。
Transformer 层使用 nn.ModuleList 存储,但每个 TransformerBlock 现在使用:
pre_layer_norm=True这意味着层归一化在注意力和前馈操作之前应用,而不是之后。这种“Pre-LN”设计显著改善了更深层 Transformer 模型中的梯度流动和训练稳定性。
前向传播遵循相同的整体流程:
- 使用
torch.arange()生成位置索引 - 添加词元和位置嵌入
- 通过堆叠的 Transformer 块传递表示
- 应用最终归一化
- 将输出投影到词汇空间
顺序块处理在此处进行:
for block in self.transformer_blocks:
x = block(x)GPT-2 还在输出层引入了一个小优化:
self.lm_head = nn.Linear(d_model, vocab_size, bias=False)移除了偏置项,因为它在大型语言模型设置中益处不大,且略微减少了参数数量。
最后,模型返回 logits,其中包含每个序列位置中词汇表中每个词元的预测分数。
GPT-3:少样本/上下文学习架构
class GPT3(nn.Module):
def __init__(
self,
vocab_size=50257,
d_model=12288,
n_layers=96,
n_heads=96,
context_length=2048
):
super().__init__()
self.token_embedding = nn.Embedding(vocab_size, d_model)
self.position_embedding = nn.Embedding(context_length, d_model)
self.transformer_blocks = nn.ModuleList([
TransformerBlock(
d_model=d_model,
n_heads=n_heads,
pre_layer_norm=True,
sparse_attention=True
)
for _ in range(n_layers)
])
self.final_layer_norm = nn.LayerNorm(d_model)
self.lm_head = nn.Linear(
d_model,
vocab_size,
bias=False
)
def forward(self, input_ids):
positions = torch.arange(input_ids.size(1))
x = (
self.token_embedding(input_ids)
+ self.position_embedding(positions)
)
for block in self.transformer_blocks:
x = block(x)
x = self.final_layer_norm(x)
logits = self.lm_head(x)
return logits与早期 GPT 版本相比,该模型显著扩大了规模。嵌入尺寸(d_model=12288)和 Transformer 层数(96)使网络能够学习高度复杂的语言模式和长距离依赖关系。
该模型还使用了 96 个注意力头:
n_heads=96多头注意力使模型能够同时关注词元之间的不同关系,从而改善上下文理解。
位置嵌入长度扩展到 2048,使模型能够处理比 GPT-2 长得多的序列。
每个 Transformer 块配置为:
pre_layer_norm=True,
sparse_attention=True预层归一化改善了极深网络中的训练稳定性,而稀疏注意力通过限制词元之间的关注范围来降低注意力计算成本。这在 GPT-3 规模下变得尤为重要,因为对长序列进行完全注意力的计算成本极高。
前向传播遵循标准 GPT 流程:
- 将词元 ID 转换为嵌入
- 添加位置信息
- 通过堆叠的 Transformer 块传递表示
- 应用最终层归一化
- 生成词汇 logits
核心迭代处理在此处进行:
for block in self.transformer_blocks:
x = block(x)最后,输出层将隐藏状态投影到词汇空间,产生用于训练期间下一词元预测和文本生成的 logits。
**资源:**
联系我
- * *
- * *
免费学习编程。freeCodeCamp的开源课程已帮助超过40,000人成为开发人员。立即开始