阶段 3 · 处理序列

预训练:先读三千亿字
再去学具体任务

2018 年之前,每个任务都要从头训练一个模型。之后变了: 先用海量无标注文本训练一个通用模型,再针对具体任务微调——像先读完 16 年通识教育,再接受入职培训。 这里的「三千亿」是 GPT-3 的量级;今天的大模型会读到 15 万亿,第 1 节那把尺子上有。 上一章《位置编码与长上下文》拼齐了模型零件,这一章把它们开一次机。 这个"两阶段"范式,就是今天所有大模型的地基。

1

先通识,再入职:两阶段范式

① 预训练 Pretrain 用海量无标注文本(不需要人工打标签)训练一个通用模型。
任务很简单:预测被遮住的词或预测下一个词。
② 微调 Fine-tune 用少量的有标注数据,在具体任务上再训练一小会儿。
从"什么都会一点"变成"这件事很擅长"。
对比项预训练之前预训练之后
数据要求每个任务都要收集标注数据,常常要成千上万条 预训练用无标注数据(要多少有多少),微调只用几千条
训练成本每个任务都从头训一遍 预训练训一次,微调很便宜,可以复用到几十个任务
效果数据少就训不好,也不会迁移到别的任务几乎所有 NLP 任务上大幅提升
本质每个任务独立学 把"语言的通用规律"抽出来复用
🎯 类比

像一个从小学读到大学的人,再去应聘具体岗位。 公司不需要从"认字"开始教他——他已经有了通用的语言能力和常识, 只要短时间培训一下业务就行。
预训练就是那 16 年的通识教育,微调就是入职培训。
不一样的地方:人上学有老师出题、批改;这里没有人出题——题目直接从文本里挖出来,下一节看怎么挖。

互动 · 两者要的数据量,差在一把对数尺子上

2

三种预训练目标:出的"题"不一样

预训练到底让模型做什么题?这是三条路线的分水岭: MLM 挖词、CLM 猜下一个词、Span Corruption(挖掉一整段再还原)。 点击切换,看同一句话在三种目标下变成什么样。

互动 · 同一句话,三种出题方式

三种目标用的其实是同一条公式:把「要猜的位置」的对数概率加起来。 差别在于:猜哪里(下一个词 / 被挖掉的词 / 被挖掉的一段)和能看哪边(左边还是两边看)。 这条公式的完整拆解在数学那节;本节先看三种目标的区别。

对比项MLM 掩码语言模型CLM 因果语言模型Span Corruption
做什么题挖掉几个词,猜它们是什么 猜下一个词挖掉一整段,用哨兵 token 猜整段
看得见哪边左右都能看(双向) 只能看左边(单向)编码器双向,解码器单向
训练效率一句话只学 15% 的位置(BERT 论文的设定:每句话随机选 15% 的位置来猜) 每个位置都学一次和 MLM 相当(都只学一部分位置),但整段一起学
天生适合理解(分类、抽取、匹配) 生成(写作、对话、代码)两者都行
代表模型BERT、RoBERTaGPT 全系列、LLaMAT5、mT5
今天还用吗理解类任务里还有 几乎全部大模型都用它少了
💡 CLM 的三个优势

三个原因:
① 训练效率最高——CLM 每个位置都是一个训练信号,MLM 只有一小部分位置算损失(见上表)。
② 和"生成"这个核心能力天然一致——语言模型的本质就是预测下一个词。
③ 可以做 in-context learning——看着几个例子就学会新任务, 这是 GPT-3 之后引爆一切的能力。只会编码、不能生成的 BERT 做不到。

3

三分天下:BERT / GPT / T5

对比项BERT (2018)GPT (2018→)T5 (2019)
结构只用 Encoder只用 DecoderEncoder + Decoder
注意力双向因果(单向)编码器双向 / 解码器单向
目标MLMCLMSpan Corruption
性格理解专家生成专家万能转换器
历史地位把"预训练"这个概念打出来了 今天几乎所有 LLM 的直系祖先统一了"所有任务都是文本到文本"
今天状态被编码器型模型继承——今天那些把文字变成向量、用来检索和匹配的嵌入模型 绝对主流主流大模型没有沿用
📜 T5 的标题

T5 论文的标题是 "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer", 核心主张是:把所有 NLP 任务都改写成"文本进、文本出"。 分类?输出"positive"。翻译?输出译文。摘要?输出摘要。
这个"统一接口"的思想活了下来——今天的指令微调(用「指令 + 回答」的数据再训一遍,阶段 5 细讲)本质上就是它。

4

规模带来的意外:涌现能力

2020 年之后出现了一件没人预料到的事:模型大到一定程度,会突然学会训练里没教过的能力。

互动 · 能力不是线性增长的(示意图)

涌现出来的能力大概从什么规模开始
上下文学习(看几个例子就会做新任务)约 100 亿参数
多步算术约 130 亿参数(三位数加减,GPT-3,2.3×10²² FLOPs 即浮点运算次数)
思维链推理(先写出中间步骤再作答)约 1000 亿参数
按指令执行没见过的任务需要指令微调(见阶段 5)
⚠️ 但"涌现"这个说法有争议

2023 年有论文(Are Emergent Abilities a Mirage?)指出: 所谓"突然出现",很可能只是评测指标选择的假象——如果用"答案完全正确"这种 0/1 指标, 曲线看起来就像断崖;但如果换成"部分正确的程度",曲线其实是平滑上升的。
这提醒我们:看到"能力跃迁"时,先检查一下是不是指标造成的错觉。

M

数学 · 一句话出几道题,每题值多少分

前面几节一直在说「给模型出题、答对了就奖」。这句话背后只有一条公式, 它回答的问题也只有一个:模型给正确的词打了多大概率,这道题就丢多少分。

互动 · 一句话被考几个位置、每题丢多少分(拖滑块看总分)

🎯 用「老师改卷」理解这条公式

每个空都是一道题。老师只做两件事:
① 看你把多少「把握」放在正确答案上——这就是 P,也就是下面图上那根柱子的长度。
② 把握越小,扣分越狠,而且是「越小越陡」地狠——这就是 −ln 那条曲线: 概率 1.0 时丢 0 分、0.25 时丢 1.4 分、0.01 时丢 4.6 分。
然后把一句话里所有空的分加起来,就是这句话的损失。 预训练要做的,只是把每一根「正确答案」的柱子推高一点。
不一样的地方:老师改卷是人工的;这里的题是机器从文本里自动挖出来的。

公式卡 · 预训练的损失函数(每个符号都在上面的图上有一块)

公式卡 · 一次预训练要花多少算力

工业界怎么写 · 那条公式在代码里就是一行

把输出往左错一位,和原文对齐着算损失——这条公式在代码里的样子:

loss = loss_fn(logits[:, :-1].reshape(-1, V), input_ids[:, 1:].reshape(-1))

logits 是每个位置的预测分数,input_ids 是原文编号;[:-1] 和 [1:] 就是错开的那一位,reshape(-1, V) 把两堆分数摊平成「一行一个预测」,V 是词表大小(程序里由数据定)。完整程序(能直接跑)在页面末尾的工业界怎么写。

微型图解 · 标签是从哪来的:两行只差一格

5

代价与终局

问题具体表现什么时候真的会痛 → 换什么
预训练成本极高 一次完整预训练可能几百万到上亿美元,数据、算力、人力缺一不可 你想从零训一个通用模型 → 绝大多数人只做微调,不做预训练
数据会用完 高质量文本总量有限:研究者预测过"数据墙"——按当前速度,公开可用的高质量文本可能在几年内被用尽 想再靠"多喂数据"换能力 → 转向合成数据、多模态数据
预训练目标 ≠ 人类偏好 "预测下一个词"训练出来的模型只会接话,不会听话:它可能生成有害内容、可能胡编乱造 要模型按人的意图办事 → 阶段 5 的对齐(用人类反馈告诉它什么回答好)
无法更新知识 训练完之后知识就冻结了,想更新必须重训或微调 知识天天在变(股价、新闻)→ RAG(把外部资料查出来喂给模型,阶段 7)
💡 这条线的终点

三条路线最后收敛到了 decoder-only(只保留解码器、一路往右生成的那种结构,就是第 3 节的 GPT)。 今天的 GPT、Claude、Gemini、Qwen、DeepSeek、LLaMA——无一例外都是 decoder-only 的 CLM 模型。
第 3 节说的「性格」是三家早期的分工;规模上去之后,一个 decoder-only 结构就能同时做理解、生成、翻译、写代码—— 不用再为每个任务各做一种结构。统一和简单赢了。
BERT 的思想活在了嵌入模型里(阶段 7 的向量检索),T5 的思想活在了指令微调里。

6

小结

它站在《第一性原理》那七条线里唯一一条只谈物理量的线上——参数量、token 数、FLOPs,全是能乘出来的数。 说白了还是开头那个类比:先攒够通识,再学具体手艺。

它对应哪条线 ③ 规模会赢——这一章没有发明任何新层、新激活,只是把同一套东西放大了三个数量级。
一句话 不再为每个任务设计结构,把「猜下一个词」当成唯一任务、把练习堆到几十亿道——赌注是:做到足够大,能力会自己长出来。
它牺牲了什么 用可控性和新鲜度换通用能力:没人能逐条解释它的本事从哪来,也没人能保证下一次放大不会放大出有害的东西; 训完知识就冻住了,成本以百万美元计。但一次训练能摊到几十个任务和几亿次调用上,是全书 ROI 最高的一笔交易。
🎬 自己验一遍

回到第 4 节那个互动(标题是「能力不是线性增长的(示意图)」): 先看默认的「0/1 指标」,再点一下「连续指标(部分正确给分)」。

曲线的形状换了(从断崖变成平滑上升),但不管用哪个指标,它都在往右上走。 这是一张示意图:真实实验里,不同规模的模型跑的是完全相同的代码、相同的层、相同的损失函数, 唯一的区别就是横轴上的一个数字。这一章从头到尾没有任何一处是为"翻译"或"算术"设计的—— 那些能力是从横轴上长出来的。

它在暗线里站在哪

全站每一章都用同一张表,从六个角度看这一章: A 信息流动 · B 什么被牺牲了 · C 参数账本 · D 跑在什么上 · E 它假设了什么 · F 违背了哪个直觉。

暗线这一章的回答
A 信息流动 数据形状:这一章最特别的地方是它什么都没改。 文本 → [n] 个 token → [n, d] → N 层 Transformer → [n, d] → LM head → [n, V] → 交叉熵。LM head 是最后一层:把每个位置的向量翻成词表上每个词的分数, V 就是词表大小。
预训练和下游任务用的是同一段代码,区别只在损失掩码 (哪些位置算损失、哪些不算:MLM 只对挖掉的位置算,CLM 对每个位置算但用因果掩码)和最后接哪一层。
所以暗线 A 在这一章的答案是:形状没变,变的是权重里装了什么
B 什么被牺牲了 牺牲了可控性(能力是规模换来的,没人能逐条解释)与知识新鲜度 (训完就冻结,这就是 RAG 存在的理由)。还牺牲了数据:高质量文本有限,它从工程细节变成了瓶颈。
换回来的是一个可复用的通用底座——全书 ROI 最高的一次交易
C 参数账本 这条线上的数字很好记:BERT-base 1.1 亿 → BERT-large 3.4 亿 → GPT-2 15 亿 → GPT-3 1750 亿。 另一个容易忽略的数:BERT-base 的嵌入层就是 30522×768 ≈ 2340 万,占全模型的 21%—— 嵌入层就是前面讲的词向量表:30522 是词表大小,768 是每个词的向量长度。
真正量级跳跃的是算力:GPT-3 约 3.14×10²³ FLOPs, 训练数据约 3000 亿 token,成本在几百万美元量级。 而微调一个 BERT 只要一张卡几十分钟——两者差六七个数量级, 这就是“两阶段”能成立的全部数学原因
D 跑在什么上 训练时 GPU 忙着算:预训练的主成本就是那个乘法 FLOPs = 6 × 参数量 × token 数(第 M 节有完整拆解和滑块)。 矩阵巨大、尺寸整齐,所以利用率可以很高;但模型大到一张卡装不下, 参数、梯度、优化器状态就得切开放在几千张卡上——分布式训练这道题从这一章开始。
生成时反过来:大部分时间不是在算,而是在等数据从显存搬过来。 两笔账都在 《硬件与算力账本》
E 它假设了什么 四条,一条比一条大胆:
① “预测下一个词”这个任务足以承载语言、知识和推理—— 这就是 CLM 赢的那个赌注,2018 年时没人敢确定。
② “语言能力可以跨任务迁移”——两阶段范式的全部前提。
③ “规模带来的提升是平滑可预测的”—— 涌现现象反过来质疑了这条:有些能力在某个规模以下完全为 0。
④ MLM 假设“[MASK] 这个符号不会被学成特征”—— 但它在真实文本里根本不存在:训练时句子里总能看到 [MASK],真正用的时候一个都没有, 它面对的和练习时不一样,效果会打折。BERT 为此把一部分该挖的词换成随机词或保留原词
F 违背了哪个直觉 “无标注数据没什么价值”——正好相反。 它比标注数据便宜好几个数量级,却贡献了几乎全部能力。
第二个:“猜下一个词能学到什么?”——它自己学会了翻译、算术、改错。 要把下一个词猜准,就得把文本背后的规律也学进去,翻译和算术是其中一部分。
第三个:“调参和微调才是主要工作”——实际上预训练决定能力上限, 后训练(预训练之后的所有训练,比如微调和对齐)只决定你多大程度能用出这个上限
🎯 前后钩子

它接住了上一章的什么:位置编码(《位置编码与长上下文》) 把模型结构的最后一块拼图补完了。这一章把这些零件拿去真的开了一次机。

它给下一章留了什么:预训练出来的模型只会照着上文往下写, 下一章《文本生成与采样》就看它怎么把话说出来。 至于怎么把它变成会办事的模型,那是更后面的阶段 5 的问题。

一句话带走预训练语言模型

两阶段范式 = 通识教育 + 入职培训:用无标注数据学通用语言规律,再用少量标注数据学具体任务。
三种出题方式(MLM / CLM / Span Corruption)决定了模型的"性格": MLM 会理解,CLM 会生成,Span Corruption 什么都能转;最后 CLM + decoder-only 赢了。
代价是可控性差、知识冻结、成本极高——分别由阶段 5 的对齐和阶段 7 的 RAG 来解。

7

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式