2023年5月28日

预训练目标 — CLM / MLM / Seq2Seq

预训练目标定义了模型从无标注数据中学习什么:CLM 预测下一个 token,MLM 预测被遮盖的 token,Seq2Seq 从噪声输入重建原始序列——不同的目标塑造模型完全不同的能力。

知识库大模型训练与对齐llmpretrainingobjectiveCLMMLMseq2seq

先说结论

预训练目标定义了模型从无标注数据中学习什么: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% 保持不变
  • 注意力机制:全连接(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,加噪后得到 ,训练目标是最小化 -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 为例)

  1. 数据准备:将全部文本拼接为一个长序列(或按文档分割),加上 eos_token 分隔
  2. 打包(packing):将多个短文档 pack 到同一序列中,最大化 GPU 利用率
  3. 构建输入-目标对input = tokens[:-1]target = tokens[1:](shift by one)
  4. 损失计算:只对非 padding 位置计算交叉熵损失
  5. 优化:AdamW + Cosine LR Schedule + Gradient Clipping + ZeRO/FSDP 分布式

MLM 训练流程(以 BERT 为例)

  1. 遮盖:对每个输入序列,随机选择 15% 的 token 进行遮盖处理
  2. 构建目标:只对被遮盖位置计算损失
  3. NSP(Next Sentence Prediction,BERT 特有):判断两个句子是否相邻(后被证明不太有用)

Seq2Seq 训练流程(以 T5 为例)

  1. Span corruption:随机选择 15% 的 token,按几何分布组成连续 span
  2. Sentinel token:用 <extra_id_0>, <extra_id_1>, ... 标记被遮盖的 span
  3. Decoder 目标:生成 sentinel + 原始 span 内容 + 结束 sentinel
  4. 损失:对 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] 只在训练时出现,存在不一致

容易踩的坑

  1. 用 MLM 模型做生成:BERT 无法自回归生成文本,硬做效果极差
  2. 用 CLM 模型做分类时不加 pooling 策略:直接取最后一个 token 的表示做分类,不如取 mean pooling 或加 [CLS]
  3. 忽略 padding token 的损失:对 padding 位置也计算损失会导致模型学偏
  4. MLM 遮盖策略不当:只替换为 [MASK] 而不混合随机替换和保持原词,导致预训练-微调 gap 过大
  5. 在 T5 上用错误的 sentinel 格式:不同 T5 版本 sentinel token 名称不同,搞混会导致训练完全失败

工程落地时我会怎么做

  1. 2024 年的默认选择是 CLM + Decoder-only,除非有特殊理由用其他架构
  2. 如果任务是纯 NLU(分类、NER、抽取式 QA),BERT 系列仍然高效且经济
  3. 如果任务是条件生成(翻译、摘要),考虑 T5/BART 系列
  4. CLM 训练时使用 document-level packing(而非 sentence-level),避免跨文档信息泄露
  5. 大规模 CLM 训练必须用 Flash AttentionFSDP/ZeRO 以降低显存开销

如果要对外讲,可以怎么概括

预训练目标决定了模型的"基因"。CLM(因果语言建模)是当前主流,训练模型预测下一个 token,天然适合生成任务。MLM(BERT)用双向注意力预测被遮盖的 token,擅长理解任务但不擅长生成。Seq2Seq(T5)结合了两者但架构更重。关键 trade-off 是:你需要模型会"说"还是会"懂"?当前行业趋势明确指向 CLM + Decoder-only,因为它的 scaling 特性更好、训练-推理一致、架构更简洁。

最后记几条

  1. CLM 训练-推理完全一致,MLM 存在 [MASK] 的 train-test mismatch
  2. CLM 已成为 2024 年 LLM 的绝对主流(GPT/LLaMA/Mistral/Qwen/DeepSeek)
  3. MLM 的核心优势是双向理解,适合 NLU 任务
  4. Seq2Seq 的 span corruption 同时训练理解和生成,但参数效率不如 Decoder-only
  5. 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)

---