引言
2018 年,NLP 领域迎来了自己的「ImageNet 时刻」。两条平行的研究路线正在殊途同归:在旧金山,OpenAI 的 Alec Radford 带领一个小团队,默默打磨 GPT-1;在山景城的 Google 总部,Jacob Devlin 正在构思一个更激进的想法——让模型同时「看」到句子的前后两个方向。两家公司,两种哲学,一场竞赛即将改变整个 NLP 的格局。
JD-
Jacob Devlin
BERT 的创造者,Google 研究科学家
"BERT showed that bidirectional pre-training is crucial for language understanding."
预训练的核心思想
传统方法(每个任务从头训练):
任务 A 数据 → 从随机初始化开始训练 → 模型 A
任务 B 数据 → 从随机初始化开始训练 → 模型 B
问题:每个任务数据量有限,模型难以学好语言理解
预训练-微调范式:
海量文本 → 预训练通用语言模型(学习语言知识)
│
┌───────┼───────┐
▼ ▼ ▼
微调A 微调B 微调C
(少量 (少量 (少量
标注数据) 标注数据) 标注数据)
关键洞察:语言知识是通用的,可以在大量数据上学一次,然后迁移到各种任务两条路线的诞生
2018.6OpenAI 发布 GPT-1(1.17 亿参数),采用 Decoder-only 架构,自回归语言建模
2018.10Google 发布 BERT(1.1 亿/3.4 亿参数),采用 Encoder-only 架构,双向编码
2018.10BERT 在 11 项 NLP 基准测试上全部刷新纪录,在 SQuAD v1.1 上超越人类表现(F1=93.2)
2018 底「下载 BERT → 微调 → 完成」 成为 NLP 新标准工作流
2019BERT 成为 Google 搜索引擎的核心组件,影响数十亿次查询
GPT-1(2018.6)
OpenAI 的选择:Decoder-only
AR-
Alec Radford
OpenAI 研究员,GPT-1 和 GPT-2 的核心贡献者
"Language models are unsupervised multitask learners."
GPT-1 使用了 Transformer 的解码器部分(去掉了编码器-解码器注意力):
GPT-1 架构:
输入文本 → Transformer Decoder 层 ×12 → 输出
预训练任务:语言建模
给定前文,预测下一个词
P(wₜ | w₁, w₂, ..., wₜ₋₁)
这是「自回归」语言模型——从左到右逐词生成预训练数据
| 数据集 | token 数量 |
|---|---|
| BookCorpus | 约 7,000 本书 |
| 总量 | ~5GB 文本 |
微调方式
预训练好的 GPT-1
│
▼ 加上任务特定的输入格式和输出层
┌─────────────────┐
│ 分类任务:文本 → [Transformer] → CLS token → 分类器 │
│ 相似度:两段文本 → [Transformer] → 相似度分数 │
│ 问答:上下文+问题 → [Transformer] → 答案位置 │
└────────────────┘GPT-1 的贡献
- 证明了预训练-微调范式在 NLP 中的有效性
- 证明了 Decoder-only 架构的通用性
- 在 12 个 NLP 任务中的 9 个上取得了 SOTA
BERT(2018.10)
Google 的选择:Encoder-only
BERT(Bidirectional Encoder Representations from Transformers)使用了 Transformer 的编码器部分。Jacob Devlin 的洞察在于:GPT 只能从左到右"看"文本,但真正的语言理解需要同时看到前后文。
BERT 架构:
输入文本 → Transformer Encoder 层 ×12/24 → 输出
关键创新:双向(Bidirectional)编码
GPT 只能看左侧上下文(从左到右)
BERT 可以同时看左侧和右侧上下文两个预训练任务
1. Masked Language Model(MLM)
随机遮盖 15% 的词,让模型预测被遮盖的词:
输入: "我 [MASK] 吃 [MASK] 果"
目标: 预测 [MASK] = "喜欢",[MASK] = "苹"
好处:模型必须理解整个句子的含义才能正确填空
→ 双向理解2. Next Sentence Prediction(NSP)
判断两个句子是否相邻:
输入:[CLS] 句子A [SEP] 句子B [SEP]
输出:IsNext(相邻)或 NotNext(不相邻)
好处:模型学习句子间的关系BERT 的输入表示
Token Embeddings: 词的嵌入向量
Segment Embeddings: 区分句子 A 和 B
Position Embeddings: 位置信息
[CLS] 我 喜 欢 AI [SEP] 它 很 有 趣 [SEP]
A A A A A A B B B B BBERT 的影响:横扫一切
BERT 在 11 个 NLP 基准测试上全部刷新记录,其中最令人震撼的是在 SQuAD v1.1 阅读理解测试中,BERT 达到了 93.2 的 F1 分数——超越了人类的表现(91.2)。
| 任务 | 提升 |
|---|---|
| SQuAD v1.1(问答) | +7.4% F1,超越人类 |
| GLUE(通用理解) | +7% |
| SRL(语义角色标注) | +2.4% |
BERT 之后,NLP 的标准工作流程变成了:下载预训练 BERT → 在你的数据上微调 → 完成。 这个范式如此简洁高效,以至于一位研究者将其形容为「NLP 工程师的工作从造引擎变成了装方向盘」。
GPT-1 vs BERT 对比
| 维度 | GPT-1 | BERT |
|---|---|---|
| 架构 | Transformer Decoder | Transformer Encoder |
| 注意力方向 | 单向(左→右) | 双向 |
| 预训练任务 | 预测下一个词 | MLM + NSP |
| 优势方向 | 文本生成 | 文本理解 |
| 参数量 | 1.17 亿 | 1.1 亿 / 3.4 亿 |
| 发布方 | OpenAI |
两种路线的深远影响
GPT 路线(Decoder-only):
GPT-1 → GPT-2 → GPT-3 → GPT-4 → ChatGPT
走向了「越大越好」的生成式路线
BERT 路线(Encoder-only):
BERT → RoBERTa → ALBERT → DeBERTa
走向了「更高效的理解」路线
后来,GPT 路线逐渐成为主流——
大模型+足够的数据,生成能力也隐含了理解能力本节小结
| 概念 | 要点 |
|---|---|
| 预训练-微调 | 先在大数据上预训练,再在特定任务上微调 |
| GPT-1 | Decoder-only,自回归语言模型,预测下一个词 |
| BERT | Encoder-only,双向编码,MLM+NSP 预训练 |
| 影响 | 确立了预训练范式,改变了 NLP 的整个工作流程 |
| 两条路线 | GPT(生成)vs BERT(理解),后来 GPT 路线胜出 |
思考题
- BERT 的 MLM(完形填空)和 GPT 的「预测下一个词」训练目标各有什么优劣?
- 为什么 BERT 的双向注意力不适合生成任务?单向注意力对于生成是必要的吗?
- 「预训练-微调」范式与迁移学习(第四阶段学到的)有什么联系和区别?
延伸阅读
- Radford et al., Improving Language Understanding by Generative Pre-Training, 2018 — GPT-1 论文
- Devlin et al., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2018 — BERT 论文