预训练范式
为什么需要预训练
迁移学习的动机
传统监督学习面临一个根本矛盾:高质量标注数据稀缺且昂贵,但深度模型需要大量数据才能学到好的表示。
预训练的核心思想是:
先在海量无标注数据上学习通用表示,再在少量标注数据上适配到具体任务。
这种方式的优势体现在:
- 数据效率:下游任务只需少量标注数据即可达到良好效果
- 表示质量:预训练模型学到的特征比随机初始化的模型更具语义结构
- 泛化能力:预训练表示可迁移到多种不同的下游任务
形式化地,预训练可以看作学习一个好的参数初始化 \(\theta_0\):
然后在下游任务上微调:
自监督学习:预训练的关键
核心思想
自监督学习 (Self-Supervised Learning, SSL) 的本质是:
从数据本身构造监督信号,无需人工标注。
具体做法是对输入数据施加某种变换或遮蔽,然后让模型预测被隐藏的部分:
自监督学习的一般框架:
输入 x → 变换/遮蔽 → 部分观测 x̃
模型目标:从 x̃ 恢复/预测 x 的缺失部分
自监督信号的分类
| 类型 | 方法 | 预测目标 |
|---|---|---|
| 生成式 | GPT, MAE | 预测被遮蔽/未来的 token |
| 对比式 | SimCLR, MoCo, CLIP | 拉近正样本对,推远负样本对 |
| 预测式 | BERT (MLM), BEiT | 预测被遮蔽的 token/patch |
语言模型预训练
语言模型预训练是 Foundation Model 最成功的范式。根据预训练目标的不同,可以分为三大类。
1. 自回归语言模型 (Autoregressive LM)
代表模型:GPT 系列
自回归模型从左到右逐个预测下一个 token:
架构特点:
- 使用 Transformer Decoder 结构
- Causal attention mask:每个位置只能看到之前的 token
- 天然适合文本生成任务
输入: [The] [cat] [sat] [on] [the]
目标: [cat] [sat] [on] [the] [mat]
← 逐步预测下一个 token →
优势:生成能力强,支持 in-context learning。
劣势:单向编码,无法同时利用上下文信息。
2. 掩码语言模型 (Masked LM)
代表模型:BERT
随机遮蔽输入中 15% 的 token,让模型预测被遮蔽的 token:
其中 \(\mathcal{M}\) 是被遮蔽位置的集合,\(x_{\backslash \mathcal{M}}\) 是未被遮蔽的部分。
架构特点:
- 使用 Transformer Encoder 结构
- 双向注意力:每个位置可以看到所有其他位置
- 适合自然语言理解 (NLU) 任务
输入: [The] [cat] [MASK] [on] [the] [MASK]
目标: 预测 [MASK] → "sat", "mat"
优势:双向编码,理解能力强。
劣势:生成能力弱,预训练与下游任务存在 mismatch(下游没有 [MASK] token)。
3. 序列到序列模型 (Seq2Seq)
代表模型:T5, BART
将预训练任务统一为 "text-to-text" 格式:
T5 的 Span Corruption 目标:随机遮蔽输入中的连续 span,在 decoder 端生成被遮蔽的内容。
输入 (Encoder): "The <X> sat on <Y> mat"
输出 (Decoder): "<X> cat <Y> the"
架构特点:
- Encoder-Decoder 结构
- 同时具备理解和生成能力
- 统一的 text-to-text 框架
语言预训练目标对比
| 方法 | 架构 | 注意力 | 适合任务 | 代表模型 |
|---|---|---|---|---|
| Autoregressive | Decoder-only | Causal | 生成、对话 | GPT, LLaMA |
| Masked LM | Encoder-only | Bidirectional | 分类、NER | BERT, RoBERTa |
| Seq2Seq | Encoder-Decoder | Mixed | 翻译、摘要 | T5, BART |
视觉预训练
1. 对比学习 (Contrastive Learning)
核心思想:拉近同一图像不同增强版本 (正样本对) 的表示,推远不同图像 (负样本对) 的表示。
InfoNCE 损失函数:
其中 \(\tau\) 是温度参数,\(\text{sim}(\cdot, \cdot)\) 通常用余弦相似度。
SimCLR (Chen et al., 2020):
- 对同一图像做两次不同的数据增强,得到正样本对
- 使用大 batch size 提供足够的负样本
- 结构:Encoder → Projection Head → 对比损失
MoCo (He et al., 2020):
- 引入 momentum encoder 和动态队列
- 解决了 SimCLR 对大 batch size 的依赖
- 动量更新:\(\theta_k \leftarrow m \theta_k + (1 - m) \theta_q\),其中 \(m = 0.999\)
对比学习框架:
Image → Augment1 → Encoder → z_1 ─┐
├→ 拉近 (正样本)
Image → Augment2 → Encoder → z_2 ─┘
Other Images → Encoder → z_neg ───→ 推远 (负样本)
2. 掩码图像建模 (Masked Image Modeling)
MAE (He et al., 2022):Masked Autoencoder
- 随机遮蔽 75% 的图像 patch
- Encoder 只处理可见 patch(节省计算)
- Decoder 重建被遮蔽的 patch
BEiT (Bao et al., 2022):
- 使用 discrete visual tokenizer(如 dVAE)将 patch 编码为离散 token
- 预训练目标变为预测被遮蔽 patch 对应的离散 token
- 类似于 BERT 的 MLM,但应用在视觉领域
多模态预训练
1. 对比式多模态预训练
CLIP (Radford et al., 2021):Contrastive Language-Image Pretraining
核心思想:对齐图像和文本的表示空间。
其中 \(s_{ij} = \text{sim}(f_{\text{image}}(I_i), f_{\text{text}}(T_j))\)。
CLIP 使用 4 亿图文对训练,实现了强大的 zero-shot 视觉分类能力。
2. 生成式多模态预训练
通过让模型生成一种模态的内容(给定另一种模态),来学习跨模态对齐。
代表方法:CoCa (Contrastive Captioner),同时使用对比损失和生成损失。
预训练目标总结
| 预训练范式 | 模态 | 目标 | 代表方法 | 特点 |
|---|---|---|---|---|
| Autoregressive LM | 语言 | 预测下一个 token | GPT | 生成能力强 |
| Masked LM | 语言 | 预测遮蔽 token | BERT | 理解能力强 |
| Span Corruption | 语言 | 预测遮蔽 span | T5 | 理解 + 生成 |
| Contrastive Learning | 视觉 | 正负样本对比 | SimCLR, MoCo | 判别式表示 |
| Masked Image Modeling | 视觉 | 重建遮蔽 patch | MAE, BEiT | 像素/token 级重建 |
| Cross-modal Contrastive | 多模态 | 图文对齐 | CLIP | Zero-shot 迁移 |
| Cross-modal Generative | 多模态 | 跨模态生成 | CoCa | 理解 + 生成 |
微调范式
预训练完成后,需要将模型适配到下游任务。主要的微调策略包括:
1. 全参数微调 (Full Fine-tuning)
更新模型所有参数。效果最好但成本最高,且可能导致灾难性遗忘。
2. 线性探测 (Linear Probing)
冻结预训练模型,只训练一个线性分类头。用于评估预训练表示的质量。
3. LoRA (Low-Rank Adaptation)
Hu et al. (2022) 提出的参数高效微调方法。核心思想:用低秩矩阵近似权重更新。
其中 \(B \in \mathbb{R}^{d \times r}\),\(A \in \mathbb{R}^{r \times k}\),\(r \ll \min(d, k)\)。
只训练 \(A\) 和 \(B\),大幅减少可训练参数量(通常只有原模型的 0.1%-1%)。
4. Prompt Tuning
在输入前添加可学习的 soft prompt token,只训练这些 prompt 参数。
5. Adapter
在 Transformer 层中间插入小型可训练模块(通常是 down-project → nonlinearity → up-project),冻结其余参数。
微调策略对比
| 方法 | 可训练参数 | 效果 | 内存 | 适用场景 |
|---|---|---|---|---|
| Full Fine-tuning | 100% | 最优 | 高 | 数据充足 |
| Linear Probing | <0.01% | 较弱 | 低 | 表示评估 |
| LoRA | 0.1%-1% | 接近全微调 | 低 | 资源受限 |
| Prompt Tuning | <0.1% | 中等 | 低 | 多任务切换 |
| Adapter | 1%-5% | 良好 | 中等 | 多任务适配 |
总结
预训练范式的核心贡献在于:
将 "从数据中学习表示" 和 "适配到具体任务" 解耦为两个独立阶段。
这使得大规模无标注数据的价值被充分释放,同时大幅降低了下游任务对标注数据的需求。预训练范式是 Foundation Model 成功的技术基石。