迁移学习在 NLP 中的典型应用形式
一、迁移学习的基本框架
源领域(Source Domain) 目标领域(Target Domain) 大量数据/通用任务 →迁移→ 少量数据/特定任务 学到的通用知识 适配到具体应用 核心公式: θ_target = θ_source + Δθ(微调调整量)迁移学习在 NLP 中的演进经历了从浅层到深层、从静态到动态的过程:
Word2Vec (2013) → ELMo (2018) → ULMFiT (2018) → GPT/BERT (2018) → T5/GPT-3 (2019-2020) 静态词向量 上下文向量 预训练-微调流程 预训练-微调范式 统一框架/提示学习二、六大典型形式
1. Feature-based Transfer(特征迁移)
原理:冻结预训练模型,将其作为特征提取器,只训练下游任务分类器。
预训练模型(冻结,不更新参数) ↓ 提取特征向量 ↓ ┌────────────┐ │ 新分类头 │ ← 只训练这一部分 │ (Linear) │ └────────────┘ ↓ 任务输出代表:ELMo + 任务特定架构
ELMo 特征提取示例: 输入: "The cat sat on the mat" ↓ ELmo 输出: [h₁, h₂, h₃, h₄, h₅, h₆] (每层 LSTM 的隐状态) ↓ 任务使用方式: • 分类任务: h_avg = mean(h₁..h₆) → Linear → softmax • 序列标注: 每个 h_i → Linear → CRF → 标签 • QA 任务: h_i 与问题表示做注意力 → 答案边界| 优点 | 缺点 |
|---|---|
| 训练快,计算开销小 | 预训练特征非任务最优 |
| 不需要大显存 | 特征表达能力受限 |
| 适合小数据集 | 无法适配任务特定模式 |
2. Fine-tuning Transfer(微调迁移)
原理:在预训练参数基础上,用目标任务数据更新全部参数。
预训练模型参数 θ_source ↓ 加载为初始参数 ↓ 目标任务数据训练 (所有参数均可更新,学习率通常较小) ↓ θ_target = θ_source + Δθ代表:BERT、GPT、T5
BERT 微调示例: 预训练 BERT ┌───────────┐ 输入文本 ──────→│ Encoder │──────→ [CLS] 表示 │ (微调) │ ↓ └───────────┘ Linear + Softmax ↓ 分类标签 全部参数(含 BERT 12层 Transformer)一起更新| 优点 | 缺点 |
|---|---|
| 效果通常最优 | 需要较大显存 |
| 充分适配目标任务 | 小数据上可能过拟合 |
| 实现简单 | 多任务需保存多份模型副本 |
3. Parameter-Efficient Fine-tuning(参数高效微调)
原理:冻结预训练主干参数,仅训练少量新增的适配器参数。
┌─────────────────────────────────────────┐ │ 冻结的预训练主干(99%+ 参数不更新) │ │ │ │ Layer 1 ──→ [Adapter A] ──→ Layer 2 │ │ ↑ 可训练 │ │ Layer 2 ──→ [Adapter B] ──→ Layer 3 │ │ ↑ 可训练 │ │ ... │ │ Layer N ──→ [Adapter N] ──→ 输出 │ │ ↑ 可训练 │ └─────────────────────────────────────────┘主要方法:
| 方法 | 核心思想 | 可训练参数 | 原理示意 |
|---|---|---|---|
| Adapter | 在每层插入小型瓶颈网络 | ~1% | h → W_down → ReLU → W_up → h + residual |
| LoRA | 用低秩矩阵近似参数更新 | ~0.1% | W' = W + BA,B、A 为低秩矩阵 |
| Prefix Tuning | 在输入前加可学习的前缀向量 | <0.1% | [prefix₁...prefix_k, x₁...x_n] |
| Prompt Tuning | 仅优化连续提示向量 | ~0% | [soft_prompt, input_text] |
| BitFit | 仅训练 bias 参数 | ~0.1% | 冻结所有 W,只更新 b |
LoRA 原理(最常用的 PEFT 方法): 原始: h = W·x W ∈ R^(d×d), 参数量 d² LoRA: h = (W + B·A)·x B ∈ R^(d×r), A ∈ R^(r×d), r << d 参数量 = 2×d×r(远小于 d²) W 冻结,只训练 B 和 A r=8, d=768 时:参数量从 590K 降至 12K| 优点 | 缺点 |
|---|---|
| 显存占用极低 | 效果略低于全量微调 |
| 多任务可共享主干 | 需要选择适配器类型和位置 |
| 避免灾难性遗忘 | 超参数(秩 r、瓶颈维度)需调优 |
4. Multi-Task Transfer(多任务迁移)
原理:一个预训练模型同时微调到多个任务,任务间相互促进。
方式1:联合训练(Joint Training) 任务A数据 ─┐ 任务B数据 ─┼─→ 共享编码器 → 各任务输出头 任务C数据 ─┘ (交替采样不同任务的数据) 方式2:渐进式训练(Progressive Training) 任务A(大数据)→ 微调 → 任务B(中等数据)→ 微调 → 任务C(小数据) (依次迁移,每步在前一个任务基础上继续)代表:T5 的统一多任务框架
T5 多任务统一为文本到文本: 翻译: "translate English to German: The cat" → "Die Katze" 摘要: "summarize: [长文本]" → "[摘要文本]" 分类: "sentence: This is great" → "positive" QA: "question: ... context: ..." → "answer" 所有任务共享同一个 Encoder-Decoder,通过任务前缀区分5. Domain Adaptation(领域自适应迁移)
原理:通用预训练模型适配到特定垂直领域(医疗、法律、金融等)。
通用语料预训练 → 领域语料继续预训练 → 下游任务微调 Wikipedia + Books PubMed 论文 医疗 NER (通用领域) (领域自适应) (任务微调)典型路径:
阶段1: 通用预训练 BERT (Wikipedia + BookCorpus) ↓ 阶段2: 领域继续预训练(Domain-Adaptive Pretraining, DAPT) BioBERT ← PubMed 摘要 + PMC 全文 SciBERT ← 科学论文 (Semantic Scholar) LegalBERT ← 法律文书 FinBERT ← 财报 + 金融新闻 ↓ 阶段3: 下游任务微调 医疗: NER、关系抽取、临床文本分类 法律: 判决预测、条款分类 金融: 情感分析、风险检测| 领域 | 模型 | 领域语料 | 提升任务 |
|---|---|---|---|
| 生物医学 | BioBERT | PubMed | NER、关系抽取 |
| 科学 | SciBERT | Semantic Scholar | 论文分类、实体识别 |
| 法律 | LegalBERT | 法律文书 | 判决预测、条款相似 |
| 金融 | FinBERT | 财报+新闻 | 情感分析、事件检测 |
6. Cross-Lingual Transfer(跨语言迁移)
原理:在资源丰富语言(英语)上训练,迁移到低资源语言。
方式1:零样本跨语言迁移(Zero-Shot Cross-Lingual) 英语标注数据 → 微调多语言预训练模型 → 直接用于其他语言 (mBERT / XLM-R) 训练: "This movie is great" → positive 推理: "这部电影很好" → positive(无需中文标注数据) 方式2:翻译迁移(Translate-Train / Translate-Test) Translate-Train: 将英语训练数据翻译为目标语言 → 在翻译后数据上训练 Translate-Test: 将目标语言测试数据翻译为英语 → 用英语模型推理代表模型:
mBERT: BERT 的多语言版本,110 种语言 Wikipedia XLM-R: RoBERTa 的多语言版本,100 种语言 Common Crawl XLM: 跨语言语言模型,含 TLM(翻译语言模型)预训练目标 关键能力:跨语言对齐 "king" 和 "国王" 在表示空间中距离接近 → 英语上学到的语义关系可迁移到中文三、各形式的关系与演进
迁移学习在 NLP 中的演进: Word2Vec ELMo BERT/GPT T5/GPT-3 │ │ │ │ 静态特征 动态特征 微调迁移 提示迁移 (Feature-based) (Feature-based) (Fine-tuning) (Prompt-based) │ │ │ │ └─────────────────┴───────────────┴─────────────────┘ ↓ PEFT 方法 (LoRA, Adapter) 高效微调迁移 ↓ 指令微调 + RLHF (对齐迁移)按迁移自由度排列
迁移自由度低 ←─────────────────────────────→ 迁移自由度高 Feature-based Fine-tuning PEFT Prompt-tuning In-Context (冻结+分类头) (全量更新) (适配器) (软提示) (零样本) 0% 参数更新 100% 参数更新 ~1% 参数更新 ~0% 参数更新 0% 参数更新 效果: ★★☆ 效果: ★★★★ 效果: ★★★★ 效果: ★★★☆ 效果: ★★★☆ (小模型) (通用) (大模型) (超大模型) (超大模型)四、选择指南
┌──────────────────────────────────────────────────────────┐ │ 场景 推荐形式 │ ├──────────────────────────────────────────────────────────┤ │ 通用任务 + 充足标注数据 Fine-tuning(全量微调) │ │ │ │ 通用任务 + 标注数据少 PEFT(LoRA) │ │ │ │ 垂直领域(医疗/法律/金融) DAPT + Fine-tuning │ │ (领域语料充足) (领域继续预训练+微调) │ │ │ │ 多任务联合优化 Multi-Task Transfer │ │ │ │ 低资源语言 Cross-Lingual Transfer │ │ (有英语标注数据) (零样本跨语言迁移) │ │ │ │ 超大模型 + 多任务部署 PEFT(LoRA/Adapter) │ │ (显存受限) (共享主干+多适配器) │ │ │ │ 超大模型 + 零样本 In-Context Learning │ │ (GPT-3+ 级别) (提示学习,无需微调) │ └──────────────────────────────────────────────────────────┘五、总结
迁移学习在 NLP 中的六种典型形式: ① Feature-based → 冻结提取特征,训练分类头(ELMo 时代) ② Fine-tuning → 全量参数微调(BERT/GPT/T5 主流方式) ③ PEFT → 冻结主干+适配器(LoRA 等高效方法) ④ Multi-Task → 多任务共享模型(T5 统一框架) ⑤ Domain Adaptation → 通用→垂直领域(BioBERT/SciBERT) ⑥ Cross-Lingual → 跨语言零样本迁移(mBERT/XLM-R) 本质: 将"每个任务从零训练"转化为"一次预训练 + 轻量适配" 迁移形式的选择取决于:数据量、计算资源、领域差异、语言资源一句话概括:迁移学习在 NLP 中从早期的静态词向量特征迁移,发展到全量微调、参数高效微调、领域自适应、多任务联合和跨语言零样本迁移,核心目标始终是"用通用知识降低下游任务的标注和计算成本",选择哪种形式取决于数据规模、计算资源和任务特性。