先说结论
预训练目标定义了模型从无标注数据中学习什么:CLM 预测下一个 token,MLM 预测被遮盖的 token,Seq2Seq 从噪声输入重建原始序列——不同的目标塑造模型完全不同的能力。
为什么我会单独记这一篇
深度学习模型需要大量数据来学习语言表示,但标注数据稀缺且昂贵。预训练目标的核心问题是:如何设计自监督任务,让模型从海量无标注文本中高效学习? 不同的目标选择会根本性地决定模型擅长的任务类型:
- 想要一个会"说话"的模型(生成式)→ 用 CLM
- 想要一个会"理解"的模型(判别式)→ 用 MLM
- 想要一个会"翻译/转换"的模型 → 用 Seq2Seq
选错预训练目标,意味着在架构层面就埋下了能力缺陷,无法通过后训练弥补。
先把核心脉络捋清楚
CLM — Causal Language Modeling(因果语言建模)
- 又称 Autoregressive Language Modeling(自回归语言建模)
- 目标:给定前文 token
x_1, ..., x_{t-1},预测x_t - 数学形式:
P(x) = ∏ P(x_t | x_1, ..., x_{t-1}) - 注意力机制:因果掩码(causal mask),每个位置只能看到自己及之前的 token
- 架构:Decoder-only Transformer
- 代表模型:GPT 全系列(GPT-2/3/4)、LLaMA、Mistral、Qwen、DeepSeek、Claude
- 时代地位:2020 年后成为主流 LLM 的标准预训练目标
MLM — Masked Language Modeling(掩码语言建模)
- 由 BERT(Devlin et al., 2019)引入
- 目标:随机遮盖输入中约 15% 的 token,用双向上下文预测被遮盖的原始 token
- 遮盖策略(BERT 原始设计):
- 80% 替换为
[MASK] - 10% 替换为随机 token
- 10% 保持不变
- 80% 替换为
- 注意力机制:全连接(bidirectional),每个位置可以看到所有位置
- 架构:Encoder-only Transformer
- 代表模型:BERT、RoBERTa、ALBERT、DeBERTa、ELECTRA
- 改进变体:
- RoBERTa:动态遮盖(每次输入重新随机遮盖)、去掉 NSP 任务
- ELECTRA:用生成器-判别器框架,判别器判断每个 token 是否被替换(更高效)
- SpanBERT:遮盖连续片段而非随机 token
Seq2Seq — 序列到序列预训练
- 架构:Encoder-Decoder Transformer
- 编码器:双向注意力,完整理解输入
- 解码器:因果注意力,自回归生成输出
- 预训练目标变体:
| 模型 | 预训练目标 |
|---|---|
| T5 | Span Corruption:随机遮盖 15% 的 span,用 sentinel token 标记,decoder 重建 |
| BART | 文本去噪:token masking、sentence permutation、document rotation、token infilling、text deletion |
| Pegasus | Gap Sentence Generation:遮盖整句,decoder 生成被遮盖的句子(适合摘要) |
| mBART | 多语言 BART,对各语言做去噪自编码 |
- 代表模型:T5、mT5、Flan-T5、BART、mBART、Pegasus
原理拆开看
CLM 的直觉
CLM 本质上在模拟人类的"接话"能力:给你一段话的前半段,你预测下一个词。这种 left-to-right 的结构与文本生成天然对齐。从信息论角度,CLM 在最小化 H(x) = -∑ log P(x_t | x_{<t}),即最小化语料的交叉熵。
关键洞察:CLM 的训练过程与推理过程完全一致——都是给定前文预测下一个 token。这消除了训练-推理的不一致(train-test mismatch)。
MLM 的直觉
MLM 的直觉来自完形填空(Cloze test):理解一个词的含义需要同时看它的左右上下文。BERT 的 bidirectional attention 使得 [MASK] 位置的表示融合了来自两个方向的信息,产生了比单向 CLM 更丰富的语境表示。
然而 MLM 存在一个根本性的 train-test mismatch:[MASK] 只在训练时出现,推理时不存在。这是 BERT 后续改进(如 RoBERTa 动态遮盖、ELECTRA 替换检测)试图缓解的问题。
Seq2Seq Span Corruption 的直觉
T5 的 span corruption 可以理解为"压缩理解测试":模型需要先理解整段文本的含义(encoder bidirectional),然后从压缩的输入中恢复原始内容(decoder autoregressive)。这同时训练了理解能力和生成能力。
数学形式:给定输入 x,加噪后得到 x̃,训练目标是最小化 -log P(x | x̃)。
三者的信息流对比
CLM: x_1 → x_2 → x_3 → ... → x_T (单向流)
MLM: x_1 ↔ x_2 ↔ x_3 ↔ ... ↔ x_T (双向流)
Seq2Seq: encoder(x_1 ↔ x_2 ↔ ...) → decoder(y_1 → y_2 → ...) (先双向后单向)
放到工程里怎么落
CLM 训练流程(以 LLaMA 为例)
- 数据准备:将全部文本拼接为一个长序列(或按文档分割),加上
eos_token分隔 - 打包(packing):将多个短文档 pack 到同一序列中,最大化 GPU 利用率
- 构建输入-目标对:
input = tokens[:-1],target = tokens[1:](shift by one) - 损失计算:只对非 padding 位置计算交叉熵损失
- 优化:AdamW + Cosine LR Schedule + Gradient Clipping + ZeRO/FSDP 分布式
MLM 训练流程(以 BERT 为例)
- 遮盖:对每个输入序列,随机选择 15% 的 token 进行遮盖处理
- 构建目标:只对被遮盖位置计算损失
- NSP(Next Sentence Prediction,BERT 特有):判断两个句子是否相邻(后被证明不太有用)
Seq2Seq 训练流程(以 T5 为例)
- Span corruption:随机选择 15% 的 token,按几何分布组成连续 span
- Sentinel token:用
<extra_id_0>,<extra_id_1>, ... 标记被遮盖的 span - Decoder 目标:生成 sentinel + 原始 span 内容 + 结束 sentinel
- 损失:对 decoder 输出计算标准交叉熵
与相邻概念的区别
| 概念 | 区别 |
|---|---|
| 分词器 | Tokenizer 决定"输入是什么"(token 表示),预训练目标决定"学什么" |
| 基座与指令模型 | Base model 通常指 CLM 预训练后的模型;Instruct model 是在其基础上的后训练 |
| SFT(Supervised Fine-Tuning) | SFT 是预训练之后的有监督训练阶段,不是预训练目标 |
设计时真正要权衡什么
| 取舍 | 分析 |
|---|---|
| CLM vs MLM | 2024 年的共识:生成式 AI 时代选 CLM。MLM 适合 NLU 任务但无法自然生成 |
| Decoder-only vs Encoder-Decoder | Decoder-only 架构更简单、推理更友好、scaling 更可预测,已成为主流 |
| MLM 遮盖比例 | 15% 是经典值;太高导致信息丢失,太低训练信号不足 |
| T5 span 长度 | 短 span 适合 NLU,长 span 适合生成任务;T5 默认均值 3 tokens |
| 训练-推理一致性 | CLM 天然一致;MLM 的 [MASK] 只在训练时出现,存在不一致 |
容易踩的坑
- 用 MLM 模型做生成:BERT 无法自回归生成文本,硬做效果极差
- 用 CLM 模型做分类时不加 pooling 策略:直接取最后一个 token 的表示做分类,不如取 mean pooling 或加
[CLS] - 忽略 padding token 的损失:对 padding 位置也计算损失会导致模型学偏
- MLM 遮盖策略不当:只替换为
[MASK]而不混合随机替换和保持原词,导致预训练-微调 gap 过大 - 在 T5 上用错误的 sentinel 格式:不同 T5 版本 sentinel token 名称不同,搞混会导致训练完全失败
工程落地时我会怎么做
- 2024 年的默认选择是 CLM + Decoder-only,除非有特殊理由用其他架构
- 如果任务是纯 NLU(分类、NER、抽取式 QA),BERT 系列仍然高效且经济
- 如果任务是条件生成(翻译、摘要),考虑 T5/BART 系列
- CLM 训练时使用 document-level packing(而非 sentence-level),避免跨文档信息泄露
- 大规模 CLM 训练必须用 Flash Attention 和 FSDP/ZeRO 以降低显存开销
如果要对外讲,可以怎么概括
预训练目标决定了模型的"基因"。CLM(因果语言建模)是当前主流,训练模型预测下一个 token,天然适合生成任务。MLM(BERT)用双向注意力预测被遮盖的 token,擅长理解任务但不擅长生成。Seq2Seq(T5)结合了两者但架构更重。关键 trade-off 是:你需要模型会"说"还是会"懂"?当前行业趋势明确指向 CLM + Decoder-only,因为它的 scaling 特性更好、训练-推理一致、架构更简洁。
最后记几条
- CLM 训练-推理完全一致,MLM 存在
[MASK]的 train-test mismatch - CLM 已成为 2024 年 LLM 的绝对主流(GPT/LLaMA/Mistral/Qwen/DeepSeek)
- MLM 的核心优势是双向理解,适合 NLU 任务
- Seq2Seq 的 span corruption 同时训练理解和生成,但参数效率不如 Decoder-only
- Decoder-only 胜出的原因:架构简洁、scaling 可预测、推理友好、训练-推理一致
延伸阅读
参考资料
- Radford et al., "Improving Language Understanding by Generative Pre-Training" (GPT-1, 2018)
- Devlin et al., "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding" (NAACL 2019)
- Raffel et al., "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer" (T5, JMLR 2020)
- Lewis et al., "BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension" (ACL 2020)
- Liu et al., "RoBERTa: A Robustly Optimized BERT Pretraining Approach" (2019)
- Clark et al., "ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators" (ICLR 2020)
---