Skip to content

预训练范式

为什么需要预训练

迁移学习的动机

传统监督学习面临一个根本矛盾:高质量标注数据稀缺且昂贵,但深度模型需要大量数据才能学到好的表示。

预训练的核心思想是:

先在海量无标注数据上学习通用表示,再在少量标注数据上适配到具体任务。

这种方式的优势体现在:

  • 数据效率:下游任务只需少量标注数据即可达到良好效果
  • 表示质量:预训练模型学到的特征比随机初始化的模型更具语义结构
  • 泛化能力:预训练表示可迁移到多种不同的下游任务

形式化地,预训练可以看作学习一个好的参数初始化 \(\theta_0\)

\[ \theta_0 = \arg\min_\theta \mathcal{L}_{\text{pretrain}}(\theta; \mathcal{D}_{\text{unlabeled}}) \]

然后在下游任务上微调:

\[ \theta^* = \arg\min_\theta \mathcal{L}_{\text{task}}(\theta; \mathcal{D}_{\text{labeled}}) \quad \text{starting from } \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:

\[ \mathcal{L}_{\text{AR}} = -\sum_{t=1}^{T} \log P(x_t | x_1, x_2, \ldots, x_{t-1}; \theta) \]

架构特点:

  • 使用 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{L}_{\text{MLM}} = -\sum_{i \in \mathcal{M}} \log P(x_i | x_{\backslash \mathcal{M}}; \theta) \]

其中 \(\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" 格式:

\[ \mathcal{L}_{\text{S2S}} = -\sum_{t=1}^{T_{\text{out}}} \log P(y_t | y_{<t}, x; \theta) \]

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 损失函数

\[ \mathcal{L}_{\text{InfoNCE}} = -\log \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbb{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k) / \tau)} \]

其中 \(\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
\[ \mathcal{L}_{\text{MAE}} = \frac{1}{|\mathcal{M}|} \sum_{i \in \mathcal{M}} \| \hat{x}_i - x_i \|_2^2 \]

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

核心思想:对齐图像和文本的表示空间。

\[ \mathcal{L}_{\text{CLIP}} = -\frac{1}{N} \sum_{i=1}^{N} \left[ \log \frac{\exp(s_{ii}/\tau)}{\sum_j \exp(s_{ij}/\tau)} + \log \frac{\exp(s_{ii}/\tau)}{\sum_j \exp(s_{ji}/\tau)} \right] \]

其中 \(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)

更新模型所有参数。效果最好但成本最高,且可能导致灾难性遗忘。

\[ \theta^* = \arg\min_\theta \mathcal{L}_{\text{task}}(\theta; \mathcal{D}_{\text{task}}) \]

2. 线性探测 (Linear Probing)

冻结预训练模型,只训练一个线性分类头。用于评估预训练表示的质量。

\[ \theta^*_{\text{head}} = \arg\min_{\theta_{\text{head}}} \mathcal{L}(W \cdot f_{\theta_{\text{frozen}}}(x) + b, y) \]

3. LoRA (Low-Rank Adaptation)

Hu et al. (2022) 提出的参数高效微调方法。核心思想:用低秩矩阵近似权重更新。

\[ W' = W_0 + \Delta W = W_0 + BA \]

其中 \(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 参数。

\[ \hat{y} = f_{\theta_{\text{frozen}}}([\underbrace{p_1, p_2, \ldots, p_m}_{\text{learnable prompts}}; x_1, x_2, \ldots, x_n]) \]

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 成功的技术基石。


评论 #