“预训练”这个词很容易把问题说得太宽。很多人会把它概括成一句话:先拿大量无标注文本训一遍,再做下游任务。这个说法只描述了训练阶段,却没有回答更关键的问题:模型在预训练阶段到底被要求预测什么?
同样都是喂海量文本,不同目标学到的其实是三种不同接口:
- 预测下一个 token,学的是续写和生成;
- 猜被遮住的 token,学的是双向理解;
- 从被破坏的序列恢复原文,学的是条件重建。
这不是小差别,而是直接决定了模型架构、推理方式、下游迁移路径,甚至决定了后来哪条路线能扩到几百亿参数、几万亿 token。
这一篇只做一件事:把 GPT、BERT、T5/BART 这三条主线放在同一张坐标系里,看清它们各自优化什么任务接口、为什么会推着模型架构分化、又为什么通用 LLM 最后大多落到 decoder-only 的 next-token prediction 上。
讨论范围:本文只比较文本模型里的三类主流预训练目标:自回归语言建模(Causal Language Modeling, CLM)、掩码语言建模(Masked Language Modeling, MLM)与去噪式序列到序列(Denoising Seq2Seq)。ELECTRA、XLNet、UL2、PrefixLM、多模态预训练不在本文展开;模型家族本身放到 37|BERT、38|GPT 系列、39|T5、40|三大路线之争 细讲。
一、预训练目标就是“让模型在自监督里学什么任务”
预训练的数据通常没有人工标签,所以监督信号必须从数据本身构造出来。这就是自监督学习。
对文本来说,最关键的不是“先训一下”,而是先决定模型通过什么接口接收上下文、又通过什么接口给出答案。先把结论压成一张表:
| 路线 | 代表论文 | 训练时看到什么 | 要预测什么 | 最顺手的下游接口 | 主要代价 |
|---|---|---|---|---|---|
| GPT / CLM | GPT-1、GPT-2、GPT-3 | 左侧前缀 | 下一个 token | 开放式生成、对话、补全 | 双向上下文不是结构内建 |
| BERT / MLM | BERT、RoBERTa | 带 mask 的完整序列 | 被选中的 token | 分类、抽取、检索编码 | 训练接口和生成接口不一致 |
| T5/BART / Denoising Seq2Seq | BART、T5 | 被破坏的输入序列 | 原文或被遮盖的 spans | 摘要、翻译、条件生成 | 结构更重,统一成单一开放式接口更复杂 |
最常见的构造方式有三类:
- 自回归语言建模(Causal Language Modeling,
CLM)
给历史,预测下一个 token。 - 掩码语言建模(Masked Language Modeling,
MLM)
把一部分 token 遮住,预测被遮住的内容。 - 序列到序列去噪(Denoising
Seq2Seq)
先把输入破坏,再让模型恢复原文。
1.1 它们不只是 loss 不一样,连模型最擅长的行为都不一样
这是理解预训练目标最重要的一点。
- CLM 让模型学会“接着往下写”;
- MLM 让模型学会“读完整句后填空”;
- Denoising Seq2Seq 让模型学会“从坏输入里重建正确输出”。
你训练时逼模型做什么,它就会把参数预算主要花在那件事上。所以预训练目标本身就会把后续架构、推理方式和微调习惯一起推向不同方向。
二、GPT 路线:自回归语言建模为什么最终赢成主航道
先看最简单也最有统治力的一条路线:next-token prediction。
2.1 目标定义非常朴素
GPT-1(Radford et al., 2018)把预训练主线定义成左到右语言建模。给定 token 序列 \((x_1, x_2, \dots, x_T)\),训练目标是最大化:
\[ \sum_{t=1}^{T} \log p(x_t \mid x_{<t}) \]
也就是:当前位置只能看左边,预测自己是什么。这正好对应 decoder-only 结构。
2.2 它最强的地方是训练和推理完全一致
这是 CLM 路线最关键的工程优势。
训练时模型学的是:
给前缀,预测下一个 token
推理时模型做的也是:
给前缀,采样下一个 token
目标和用法天然一致,这让 CLM 路线特别容易扩展到通用生成模型。
2.3 它对互联网文本尤其自然
网页、书籍、论坛、代码、对话记录,几乎都可以直接串成 token 流来做 next-token prediction,不需要额外构造 mask、span 或重写输入输出格式。
这带来三点优势:
- 数据管线简单。
- 训练吞吐高。
- 模型接口统一。
这也是 GPT 路线后来越做越大的关键背景:它特别适合把“任何文本数据”都转成统一训练任务。
2.4 它的代价:双向理解不是结构内建的
CLM 只能看左上下文,这意味着模型如果想在理解任务上用好右上下文,只能靠更长上下文建模、提示工程或额外技巧。它不是做不到理解,而是在结构上不如 encoder-only 那么“天生对口”。
但随着模型规模变大、训练数据暴涨,这个代价在很多场景下被统一接口的好处压过去了。
三、BERT 路线:掩码语言建模为什么一度统治理解任务
和 GPT 相比,BERT 的目标完全换了视角。
3.1 MLM 的核心:把一部分位置挖空,再用双向上下文补回来
BERT(Devlin et al., 2019)最经典的训练方式,是先随机选出约 15% 的 token 作为预测目标,然后对这 15% 的位置做三种处理:
- 80% 替换成
[MASK]; - 10% 替换成随机 token;
- 10% 保持原词不变,但仍然要求模型预测它原本是什么。
这不是细枝末节,而是在尽量缓和“训练时总见到
[MASK],推理时几乎看不到
[MASK]”这条分布裂缝。目标可以写成:
\[ \sum_{i \in \mathcal{M}} \log p(x_i \mid x_{\setminus \mathcal{M}}) \]
其中 \(\mathcal{M}\) 是被 mask 的位置集合。
BERT 原论文还带了一个 next sentence prediction(NSP)辅助目标,但后来的 RoBERTa 基本保留 MLM 主线并去掉了 NSP。换句话说,这条路线真正稳定下来的核心,还是“挖空再补”的双向建模。
3.2 它的优势:天然双向
因为模型在预测某个被遮住位置时,可以同时看左边和右边,所以它特别适合理解任务:
- 分类;
- 命名实体识别(NER);
- 抽取式问答;
- 文本匹配;
- 检索。
这就是为什么 BERT 一出来,几乎把那一代 NLP 理解榜单横扫了一遍。
3.3 它的代价:训练接口和生成接口不一致
MLM 最大的问题不是效果不好,而是接口不统一。
训练时模型看到的是带 [MASK]
的序列;推理时真实文本里通常没有
[MASK]。这会导致两个问题:
- 预训练-微调分布裂缝(pretrain-finetune gap):训练分布和使用分布不完全一致;
- 直接生成文本很不自然。
你当然可以让 BERT 做生成,但那不是它最顺手的工作方式。
3.4 这条路线为什么后来没有扩成通用 LLM 主航道
原因不是它不强,而是它太偏“理解器”。
在 2018-2020 那个阶段,理解任务是 NLP 的主战场,所以 BERT 路线极其成功;但当行业开始追求:
- 多任务统一接口;
- 对话与写作;
- 代码补全;
- agent 式交互;
next-token prediction 的统一性优势就越来越大,BERT 这条路线逐渐退到专用 encoder 模型的位置。
四、T5 / BART 路线:去噪序列到序列,其实更像“条件重建”
除了 GPT 和 BERT,还有一条很重要的中间路线:用 encoder-decoder 做去噪恢复。
4.1 它的基本思路是“故意破坏,再恢复原文”
这类方法先对输入做 corruption,再让模型输出原始文本。常见破坏方式包括:
- 随机 mask token;
- mask 整个 span;
- 打乱句子顺序;
- 删除片段;
- 插入噪声。
于是训练目标不再是“预测单个缺失 token”,而更像“把一个坏掉的输入修回来”。对 BART 而言,这件事可以概括成最大化 \(\log p(x \mid \tilde{x})\),其中 \(\tilde{x}\) 是被破坏后的输入。
4.2 BART 和 T5 的差别,不只是破坏方式不同
- BART 更像“通用去噪自编码器”:输入可以被多种方式破坏,但输出目标仍然是完整原文。
- T5 则把所有任务都统一成 text-to-text:它通常做 span corruption,用特殊 sentinel token 标出每一段缺口,目标序列只串起那些被挖掉的 spans。
例如 T5 的 span corruption 更接近这样:
输入: The <extra_id_0> walks in <extra_id_1> park.
输出: <extra_id_0> dog <extra_id_1> the <extra_id_2>
这不是小实现差别,而是在定义输出接口:BART 倾向于“把完整答案再说一遍”,T5 倾向于“把缺掉的部分组织成目标文本”。这类目标对摘要、翻译、问答等条件生成任务都很友好,因为模型从一开始就是 encoder-decoder。
4.3 它的优势:生成和理解都照顾到了
这条路线的好处是平衡:
- encoder 负责双向编码输入;
- decoder 负责自回归生成输出;
- 很多任务都能自然转成 seq2seq。
所以在摘要、翻译、条件生成上,这条路线长期都很强。
4.4 它的代价:结构和工程更重
相比 decoder-only:
- 两套 tower 更重;
- 推理缓存更复杂;
- 大规模统一预训练的数据组织也更麻烦。
所以它很强,但在“大一统通用 LLM”这条路上不如 decoder-only 干净。
五、三条路线的真正差别,不在名字,而在接口哲学
把三种目标压成一张表,差别就非常清楚了:
| 路线 | 训练目标 | 典型架构 | 最强能力 | 最大代价 |
|---|---|---|---|---|
| GPT / CLM | 预测下一个 token | decoder-only | 生成、续写、统一接口 | 双向理解不是结构内建 |
| BERT / MLM | 预测被 mask 的 token | encoder-only | 双向理解、判别任务 | 不自然支持生成 |
| T5/BART / Denoising | 从破坏输入恢复原文 | encoder-decoder | 条件生成、任务统一 | 结构更重、工程更复杂 |
这张表里最关键的一列是“最大代价”。因为预训练目标的竞争,最终往往不是谁单点指标最好,而是谁在能力覆盖、数据管线、推理接口、规模扩展这四件事上更均衡。
从这个角度看,GPT 路线后来赢成主航道,就没那么神秘了。
六、为什么最后是 GPT 路线越走越宽
下面这四点是结合 GPT-3 之后的训练实践、产品接口和规模化工程得到的综合判断,不是某一篇论文原文直接写下来的结论。把这件事分清楚很重要:这里讨论的是“为什么它成了通用 LLM 主航道”,不是“另外两条路线从此没价值”。
把过去几年发生的事浓缩一下,原因主要有四个。
6.1 数据利用最直接
互联网文本天然就是一个长 token 流。CLM 不需要人为造 mask、造 span、造 corruption,几乎可以直接开训。
6.2 产品接口最统一
无论是:
- 问答;
- 对话;
- 摘要;
- 翻译;
- 代码补全;
- 工具调用;
最后都能包装成“给前缀,继续生成”。
6.3 规模化规律更干净
当参数量、数据量、计算量一起往上堆时,decoder-only 的训练目标和推理目标始终对齐。工程复杂度相对也低,这让它特别适合大规模扩展。
6.4 指令微调和 RLHF 把“不会听话”这个短板补上了
GPT 路线最大的早期缺点是:虽然会续写,但不一定按你想要的方式回答问题。后来指令微调、偏好优化把这个缺口补上,于是它从“会写”变成“会按指令写”,统一接口优势进一步放大。
七、预训练目标会如何影响下游迁移
这件事非常实际。不同目标,不只是预训练阶段不同,微调习惯也会不同。
7.1 BERT 路线更适合挂任务头
句分类、token 分类、span 抽取,往往直接在 encoder 输出上挂一个小头就行。
7.2 GPT 路线更适合提示(prompt)/指令(instruction)接口
你给它一个自然语言前缀,它就继续生成。这让“统一成自然语言交互”变得极其方便。
7.3 Seq2Seq 路线更适合显式输入输出分离
翻译、摘要、数据到文本、问答生成,天然就是一段输入到一段输出。encoder-decoder 在这类任务上往往更顺手。
所以不能说某个预训练目标“绝对更先进”,而要看你最后想把模型当成什么工具。
八、几个常见误解
8.1 “预训练就是无监督地先把模型训一下”
太笼统了。关键不是“先训一下”,而是“让模型在无标注数据上做什么自监督任务”。
8.2 “BERT 比 GPT 更懂语义,所以路线更高级”
BERT 在理解任务上结构更对口,但这不代表 GPT 不懂语义。随着规模提升,GPT 也能学出很强的语义能力。真正差别在于目标和接口。
8.3 “MLM 只是把 next-token prediction 换了个写法”
不是。它彻底改变了上下文可见性、模型架构和下游适配方式。
8.4 “T5/BART 只是 BERT 和 GPT 的折中版”
也不准确。它们有自己的训练哲学:通过去噪恢复学习条件生成,而不是简单混合前两者。
8.5 “今天大模型都用 GPT 目标,所以别的路线没价值了”
不对。encoder-only 在检索、分类、多模态编码等场景仍然非常重要;encoder-decoder 在翻译、摘要、语音和一些结构化生成任务里也长期有竞争力。
九、结语
预训练目标之争,本质上是在回答一个很朴素但后果极大的问题:让模型在大规模文本上先学会什么动作。 GPT 让它学会续写,BERT 让它学会补缺,T5/BART 让它学会条件重建。三条路线都成功过,但当行业目标从“单项任务最优”转向“一个模型覆盖尽量多任务”时,next-token prediction 的统一接口优势最终胜出。
下一篇我们就沿着这条胜出的路线往下走:模型已经会续写了,为什么还不够“听话”?答案就是后来改变 LLM 产品形态的那一步——微调,以及再下一步的指令微调。
十、参考资料
下面几篇是一手材料,已经足够支撑本文的关键判断;如果你要继续看模型家族本身,可以直接接本系列的 37|BERT、38|GPT 系列、39|T5、40|三大路线之争。
10.1 论文与技术报告
- Radford, A. et al. “Improving Language Understanding by Generative Pre-Training.” OpenAI Technical Report, 2018. GPT 路线的起点。
- Devlin, J. et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” NAACL 2019. MLM 路线的标志性论文。
- Liu, Y. et al. “RoBERTa: A Robustly Optimized BERT Pretraining Approach.” arXiv:1907.11692, 2019. MLM 路线的强化版代表。
- Lewis, M. et al. “BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension.” ACL 2020. 去噪 seq2seq 路线代表。
- Raffel, C. et al. “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.” JMLR 2020. T5 的统一 text-to-text 路线。
- Brown, T. et al. “Language Models are Few-Shot Learners.” NeurIPS 2020. decoder-only 规模化后的代表结果。
← 上一篇:29|Tokenization | 下一篇:31|微调演进 →
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
【Transformer 与注意力机制】39|T5:把所有 NLP 任务统一成 Text-to-Text
T5 的核心不是又发明了一种 Transformer,而是把翻译、摘要、分类、问答都改写成“输入文本到输出文本”的统一格式。本文解释 T5 为什么选择 Encoder-Decoder 架构,span corruption 和 BERT/GPT 的目标有什么差异,C4 和系统化消融实验为什么让 T5 成为迁移学习路线的重要基准。
【Transformer 与注意力机制】37|BERT:双向编码器为什么适合理解任务
BERT 不是“早期大模型”的历史遗物,而是 Encoder-only Transformer 路线的代表。本文解释为什么 BERT 选择双向编码器,Masked Language Modeling 到底在学什么,Next Sentence Prediction 为什么后来被质疑,以及为什么 BERT 天然适合分类、匹配、抽取这类理解任务,却不是自回归生成模型。
【Transformer 与注意力机制】22|Encoder 详解:6 层堆叠到底在做什么
把 Transformer encoder 从“左半边”这个模糊概念拆成可操作的结构:单层里 self-attention、FFN、残差、LayerNorm 各做什么;6 层堆叠为什么不是重复劳动;encoder 输出为什么适合理解任务而不直接擅长生成;以及它和 decoder-only、encoder-decoder 两条路线到底差在哪。