跳到主要内容

预训练时代 — 从 RNN 语言模型到 GPT-3

这一章讲三件事: 为什么语言模型是天生的「自学素材」;ELMo 怎么让同一个词 在不同句子里拥有不同的向量;GPT 三部曲如何一步步走向「不微调、直接用」。 这是全书的叙事高潮,也是书成稿(2022)之前 NLP 的全部主线。

1. 这一章讲什么

第 09、10 章解决了「网络怎么读句子」。这一章解决「拿什么喂它」——答案是: 语言自己就是教材。书里列了三种天然的练习题:用前文猜下一个词(传统语言模型)、 遮住一个词猜它(掩码语言模型)、判断两句话是不是上下文(下一句预测)1。 这些题不需要人工打标签,所以这一整套路数被叫作自监督(自己造标签:拿文本自己的 一部分当答案)2。2018 年因此被称作「NLP 的 ImageNet 时刻」——从此大家都在 用语言模型从海量文本里提特征3

2. 顶层全景:三代人的接力

RNN 语言模型(2010) 前文 → 猜下一个词(练手框架)
ELMo(2018) 双向 LSTM,一词多义各配各的向量
GPT-1(2018) Transformer 解码器,预训练+微调
GPT-2(2019) 更大更多数据:零样本直接干活
GPT-3(2020) 1750 亿参数:给几个例子就会任务(情境学习)

图说:每一代都在回答同一个问题——「不写任务专用的代码,
模型能不能自己学会干活?」答案从「不能」一路变成「基本能」。

主走查走第一代:一条训练样本怎么在 RNN 语言模型里变成一次参数更新(3.1 节)。

3. 核心原理

3.1 主走查:一条样本喂进 RNN 语言模型

书里复原了 Mikolov 式的最简版本4:

句子:我 今天 很 开心
└──────┬──────┘
取「我 今天 很」三个词(各自先变成一串数,即嵌入;词表 3 万~20 万词)

RNN 逐词读入,隐层 30~500 个节点,t=0 时用 0.1 初始化

读到「很」时输出一层 softmax:给词表里每个词打一个「下一个词」的分数

正确答案是「开心」——它与打分之间的差距(交叉熵,衡量两套打分差多远的
损失)反向传播回去,更新全部权重

训练细节书里交底很实在:学习率从 0.1 起步、验证集不再提升就减半,10~20 轮收敛; 加正则帮助不大;真正立功的是两个工程花招——「动态模型」(测试时遇到反复出现的新词, 比如人名,允许边测边学,困惑度(衡量语言模型「惊讶程度」的量,越低越好)大幅下降) 和稀有类合并(低频词打包成一类,概率均分)5

3.2 ELMo:同一个词,不同句子,不同向量

在 ELMo 之前,词的表示是静态的:Word2vec 一类方法给每个词一个固定的词向量(把一个词翻译成一串数的固定表示)。书里点出 两个病:「不能捕获上下文的相关性」与「不能解决单词多义性的问题」——「苹果」在 「吃苹果」和「苹果发布」里是两个意思,静态向量只能二选一6

ELMo(名字就是 Embeddings from Language Model 的缩写)的方案:训练一个双向 LSTM 语言模型(第 09 章的正读反读两套),每个词的向量 = 词本身的嵌入 + 各层隐层状态的 加权组合7。加权还是任务相关的:浅层偏句法——词与词怎么搭配;

深层偏语义(在说什么), 「相当于注意力」的可学习权重按下游任务自动调配——不同任务学出的权值差异很大8。 书里总结的三大优点:处理一词多义、分层表征、插入灵活(输入层、隐层、输出层都能加)9

3.3 GPT-1:预训练+微调,但仍是「领域专家」

GPT-1(2018)把主干从 LSTM 换成 Transformer 解码器(第 10 章的结构,只用一半: 没有编码器),在 BooksCorpus 图书语料上做「猜下一个词」的预训练,再对每个任务微调。 书里列举了它处理四类任务的输入拼装法(分类加起止符、句子推理用分隔音符号(把两段输入隔开的特殊记号)、相似度正反 各拼一次、问答拆成多个二选一)10。战绩:12 个任务里 9 个超过当时最优; 微调只需 3 轮、很小的学习率——「表明模型在自监督部分学到了大量有用的特征」11

但书里给的结论更冷:「GPT-1 只是一个简单的领域专家,而非通用的语言学家」—— 没微调过的任务上,泛化远不及微调后12

3.4 GPT-2:一场豪赌——所有任务都是语言模型的子集

GPT-2 在结构上几乎没有创新,赌的是另一件事:规模。书里把它的核心思想压缩成一句: 「任何有监督任务都是语言模型的子集,当模型的容量非常大且数据量足够丰富时,仅仅靠 训练语言模型的学习便可以完成其他有监督任务」13。书里举的例子极妙:语料里见过 「Michael Jordan is the best basketball player in the history」,模型自然就会了 「谁是历史最佳?」这道问答14

数据换成了 Reddit 高赞文章(WebText,约 800 万篇、40GB,还特意移除 Wikipedia 防 泄题)15。成绩:8 个语言模型任务里,零样本——不举任何例子、只给任务描述—— 就拿下 7 个当时最优;LAMBADA 数据集的困惑度从 99.8 降到 8.616。书里的定位 同样清醒:「很多实验也表明,GPT-2 的自监督学习的能力还有很大的提升空间,甚至在有些 任务上的表现不比随机的好」17

3.5 GPT-3:不微调了,给例子就行

GPT-3 把规模推到 1750 亿参数、45TB 数据、1200 万美元训练费18。结构照抄 GPT-2(96 层、96 头、上下文 2048、交替的密集与局部带状稀疏注意力——稀疏注意力就是一部分连全图、一部分只连邻近区段)19

真正的新概念是情境学习(in-context learning):不更新任何权重,只在输入里给几个 示例,模型照猫画虎完成新任务。书里用元学习来解释它:GPT-3 的预训练相当于外循环 (学着「怎么快速适应任务」),推理时的示例相当于内循环(现场适应)20。 三种用法的排序是:少样本(给 10~100 个例子)> 一次(给 1 个)> 零样本,且三种都随 模型变大而变强21

然后是书里著名的泼冷水段:GPT-3「可以说并没有创新性的模型架构设计。在 Microsoft 的资金支持下,这更像是一场『赤裸裸的炫富』」——1750 亿参数、31 位作者、28.5 万个 CPU、1 万个 GPU、1200 万美元、45TB 数据(Wikipedia 全量只占其中 0.6%),训练途中 出了 bug 甚至「OpenAI 自己也没有资金重新训练了」22。缺点清单同样具体: 无意义的问题照答不误;45TB 数据无法保证不带偏见;长文「存在下文不停重复上文的问题」。 书里还预判了产业后果:「长此以往,恐怕会形成 AI『巨头』对算力要求高的算法的技术垄断」23

判断(我们的,不是书里的): 三代 GPT 的递进,其实是「任务信息的存放位置」 三次搬家:GPT-1 存在权重里(微调),GPT-2 存在数据分布里(零样本硬猜), GPT-3 挪到输入里(示例即程序)。后来一切用提示词(喂给模型的指令文本)榨能力的做法,行话叫提示工程,都是第三条路线的延伸。 如果错,会错在: 如果模型微调的成本随规模下降(比如只调一小部分参数就够), 第一条路线可能复活;书里 5.5 节的 ALBERT 恰好埋了这个伏笔。

4. 作者的判断与证据

书里给了实验证据的: RNN 语言模型各训练技巧(动态模型、稀有类)的消融;ELMo 不同任务权值差异的可视化;GPT-1 的 12 任务 9 超、GPT-2 的 7/8 零样本、GPT-3 的 三种用法排序(全部转述论文)。

书里署名的判断: 「炫富」「技术垄断」「别神化」全部是作者自己的评论口吻; 对 GPT-2「有些任务不比随机好」也是书里主动点破的负面证据——这份克制是本书 区别于媒体叙事的地方。

5. 边界与局限

  • 本章止于 GPT-3(2020):对话式调教、能同时看文字和图像的模型、让模型把中间步骤写出来再答的套路,都不在书里;
  • 书里 GPT-3 的「1200 万美元」是论文推算口径,不同口径数字差异大;
  • ELMo 的加权聚合在 Transformer 时代已被注意力机制整体取代,但其「分层各管一层」 的观察(浅句法、深语义)在后续可解释性研究里反复出现。

6. 可带走的

  1. 语言模型是天然的自动化练习题生成器:前文出题、后文当答案,零标注成本;
  2. 「MLM 其实不是无监督,是自监督」——有明确的输入输出对和损失,这个澄清影响 对所有预训练论文的读法;
  3. 静态词向量处理不了一词多义;ELMo 的解法是「多层状态按任务加权」;
  4. GPT-1 证明预训练的特征好迁移,但「领域专家」必须微调;
  5. GPT-2 的赌注:任务都是语言模型的子集——赌赢一半(7/8 零样本最优),另一半 「不比随机好」;
  6. GPT-3 的情境学习:示例即程序;少样本>一次>零样本,且都随规模上升;
  7. 规模叙事要配成本叙事:参数、数据、美元三者一起看,才不被「惊艳」绑架。

7. 原文地图

主题原书节原文位置
三种天然练习题与自监督5.1 RNN 语言模型text/11-p201-220.txt:65(搜「常见的上下文关系」) · text/11-p201-220.txt:72(搜「自监督任务」) · text/11-p201-220.txt:72(搜「NLP 的 ImageNet」)
主走查:RNN 语言模型与训练细节5.1.1 / 5.1.3text/11-p201-220.txt:102(搜「30 ~ 500」) · text/11-p201-220.txt:126(搜「减半」) · text/11-p201-220.txt:131(搜「动态模型」) · text/11-p201-220.txt:132(搜「困惑度」)
Word2vec 两病与 ELMo 方案5.2 ELMotext/11-p201-220.txt:152(搜「单词多义性的问题」) · text/11-p201-220.txt:154(搜「Embedding from Language」)
任务相关加权5.2.2 ELMo 详解text/11-p201-220.txt:207(搜「句法表征能力」) · text/11-p201-220.txt:212(搜「相当于注意力」)
ELMo 三优点5.2.4 小结text/11-p201-220.txt:239(搜「一词多义」)
GPT-1 两缺点与拼装5.3.1 GPT-1text/11-p201-220.txt:288(搜「领域专家」) · text/11-p201-220.txt:298(搜「通用预训练」) · text/11-p201-220.txt:329(搜「将起始和终止标志」)
GPT-1 战绩与定语5.3.1 GPT-1text/11-p201-220.txt:362(搜「6.25」) · text/11-p201-220.txt:365(搜「9 个任务上的表现」) · text/11-p201-220.txt:372(搜「通用的语言学家」)
GPT-2 核心思想5.3.2 GPT-2text/11-p201-220.txt:389(搜「都是自监督语言模型的子集」) · text/11-p201-220.txt:393(搜「其他有监督任务」) · text/11-p201-220.txt:396(搜「WebText」)
GPT-2 战绩与清醒5.3.2 GPT-2text/11-p201-220.txt:366(搜「零样本学习」) · text/11-p201-220.txt:426(搜「LAMBADA」) · text/11-p201-220.txt:435(搜「不比随机的好」)
GPT-3 成本与情境学习5.3.3 GPT-3text/11-p201-220.txt:445(搜「1200 万美元」) · text/11-p201-220.txt:447(搜「情境学习」) · text/11-p201-220.txt:475(搜「内循环」) · text/11-p201-220.txt:496(搜「一次学习 > 零样本学习」)
炫富段与垄断担忧5.3.4 小结text/11-p201-220.txt:528(搜「赤裸裸的炫富」) · text/11-p201-220.txt:532(搜「没有资金重新训练」) · text/11-p201-220.txt:550(搜「技术垄断」)

Footnotes

  1. 出处:「5.1 RNN 语言模型」(text/11-p201-220.txt:66,搜「传统语言模型」)。

  2. 出处:「5.1 RNN 语言模型」(text/11-p201-220.txt:71,搜「监督学习。其实从本质上说」)。原文:「MLM 并不是传统意义上的无监督任务,因为它有明确的 (x, y) 数据-标签对以及对应的损失函数,这种任务通常被叫作自监督任务」。

  3. 出处:「5.1 RNN 语言模型」(text/11-p201-220.txt:72,搜「2018 年被称作」)。

  4. 出处:「5.1.1 语言模型中的 RNN」(text/11-p201-220.txt:92,搜「最简单的 RNN 版本」)与(text/11-p201-220.txt:102,搜「0.1 进行初始化」)。

  5. 出处:「5.1.3 训练细节」(text/11-p201-220.txt:126,搜「减半」)、(text/11-p201-220.txt:131,搜「动态模型」)、(text/11-p201-220.txt:133,搜「稀有类」)。

  6. 出处:「5.2 ELMo」(text/11-p201-220.txt:152,搜「上下文的相关性」)与(text/11-p201-220.txt:152,搜「单词多义性的问题」)。

  7. 出处:「5.2.1 双向语言模型」(text/11-p201-220.txt:162,搜「双向的 LSTM」)与(text/11-p201-220.txt:197,搜「2L + 1 个特征向量」)。

  8. 出处:「5.2.2 ELMo 详解」(text/11-p201-220.txt:207,搜「句法表征能力」)与(text/11-p201-220.txt:214,搜「不同的值」)。

  9. 出处:「5.2.4 小结」(text/11-p201-220.txt:239,搜「一词多义」)、(text/11-p201-220.txt:242,搜「不同层次的表征能力」)与(text/11-p201-220.txt:247,搜「非常强大的灵活性」)。

  10. 出处:「5.3.1 GPT-1」(text/11-p201-220.txt:326,搜「任务相关的输入变换」)。

  11. 出处:「5.3.1 GPT-1」(text/11-p201-220.txt:362,搜「6.25」)。

  12. 出处:「5.3.1 GPT-1」(text/11-p201-220.txt:371,搜「远远低于经过微调的有监督」)与(text/11-p201-220.txt:372,搜「通用的语言学家」)。

  13. 出处:「5.3.2 GPT-2」(text/11-p201-220.txt:392,搜「任何有监督任务都是语言模型的子集」)。

  14. 出处:「5.3.2 GPT-2」(text/11-p201-220.txt:390,搜「basketball player」)。

  15. 出处:「5.3.2 GPT-2」(text/11-p201-220.txt:395,搜「Reddit」)与(text/11-p201-220.txt:396,搜「Wikipedia」)。

  16. 出处:「5.3.2 GPT-2」(text/11-p201-220.txt:422,搜「8 个语言模型任务」)与(text/11-p201-220.txt:426,搜「LAMBADA」)。

  17. 出处:「5.3.2 GPT-2」(text/11-p201-220.txt:435,搜「不比随机的好」)。

  18. 出处:「5.3.3 GPT-3」(text/11-p201-220.txt:445,搜「1200 万美元」)。

  19. 出处:「5.3.3 GPT-3」(text/11-p201-220.txt:516,搜「96 层」)与(text/11-p201-220.txt:519,搜「局部带状稀疏注意力」)。

  20. 出处:「5.3.3 GPT-3」(text/11-p201-220.txt:482,搜「内循环」)与(text/11-p201-220.txt:493,搜「少样本学习」)。

  21. 出处:「5.3.3 GPT-3」(text/11-p201-220.txt:495,搜「3 种学习方式分别进行了实验」)。

  22. 出处:「5.3.4 小结」(text/11-p201-220.txt:528,搜「赤裸裸的炫富」)与(text/11-p201-220.txt:532,搜「没有资金重新训练」)。

  23. 出处:「5.3.4 小结」(text/11-p201-220.txt:541,搜「种族歧视」)与(text/11-p201-220.txt:550,搜「技术垄断」)。