预训练-微调范式
概述
预训练-微调范式(Pre-training and Fine-tuning)是 BERT 确立的 NLP 标准方法论:先在大规模无标注语料上通过自监督任务学习通用语言表示,再在下游任务上用少量标注数据进行参数微调,彻底改变了 NLP 的开发模式。
关键内容
两阶段流程
第一阶段:大规模无监督预训练
- 语料:33 亿词(Wikipedia 25 亿 + BooksCorpus 8 亿),无需人工标注
- 任务:掩码语言模型(MLM) + 下一句预测(NSP)(自监督)
- 产物:预训练模型权重(通用语言表示)
- 计算规模:64 块 TPU v2,训练 4 天(BERT-Large)
第二阶段:小规模有监督微调
- 数据:只需少量标注数据(几百到几万条)
- 方法:添加一个简单的任务特定输出层,在下游任务上 fine-tune 几个 epoch
- 成本:单 GPU 数小时即可完成
第一阶段:大规模无监督预训练
─────────────────────────────────────
语料:33 亿词(无需人工标注!)
任务:MLM + NSP(自监督)
产物:预训练模型权重(通用语言表示)
↓ 迁移(参数初始化)
第二阶段:小规模有监督微调
─────────────────────────────────────
只需少量标注数据(几百到几万条)
添加一个简单的任务特定输出层
在下游任务上 fine-tune 几个 epoch
下游任务适配方式
| 任务类型 | 适配方式 | 示例 |
|---|---|---|
| 单句分类 | [CLS] → Linear → 类别 | 情感分析、垃圾邮件检测 |
| 句对分类 | [CLS] 句子A [SEP] 句子B → Linear → 关系 | NLI、文本蕴含 |
| 序列标注 | 每个 Token 位置 → Linear → 标签 | NER、词性标注 |
| 阅读理解 | 两个线性层分别预测答案的起止位置 | SQuAD |
与传统方法的对比
| 维度 | 传统方法 | 预训练-微调范式 | |------|---------|----------------| | 数据需求 | 大量标注数据 | 少量标注数据 + 大量无标注数据 | | 模型训练 | 每个任务从头训练 | 共享预训练权重 | | 特征工程 | 手工设计特征 | 自动学习表示 | | 泛化能力 | 任务特定 | 跨任务迁移 |
与 迁移学习 的关系
预训练-微调范式是 迁移学习 在 NLP 领域的具体实现: - 源任务:大规模自监督语言建模(MLM + NSP) - 目标任务:各种下游 NLP 任务 - 迁移方式:参数初始化(预训练权重作为微调的起点)
范式的确立与演进
BERT(2018)首次系统性展示了这一范式的威力,一次性刷新 11 项 NLP 基准。后续模型沿此路径持续演进:
- RoBERTa(2019):更大的数据、更长的训练、动态掩码
- DistilBERT(2019):知识蒸馏压缩,66% 参数量保持 97% 性能
- GPT 系列:将范式应用于 Decoder-only 架构,侧重生成能力
- T5(2020):统一框架,所有 NLP 任务都转化为文本到文本
为什么有效?
- 表示学习:预训练学到的是通用的语言结构知识(语法、语义、世界知识)
- 参数初始化:预训练权重提供了远优于随机初始化的起点
- 数据效率:无标注数据远多于标注数据,预训练充分利用了这一优势
- 任务无关性:同一套预训练权重可适配多种下游任务
来源
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2019 论文) — 首次系统性提出并验证
- raw/articles/ai-papers/machine-learning/15_bert_2018.md — 范式详解与下游任务适配模板
相关
- BERT — caused(BERT 确立并推广了这一范式)
- 掩码语言模型(MLM) — depends_on(预训练阶段的核心任务之一)
- 词嵌入(Word Embedding) — extends(从静态词向量到上下文相关的预训练表示)
- Word2Vec — extends(预训练思想的早期探索)
- GPT — relates_to(GPT 将同一范式应用于 Decoder-only 架构)
- 迁移学习 — part_of(预训练-微调是迁移学习在 NLP 的具体实现)