Skip to content

引言

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  B

BERT 的影响:横扫一切

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-1BERT
架构Transformer DecoderTransformer Encoder
注意力方向单向(左→右)双向
预训练任务预测下一个词MLM + NSP
优势方向文本生成文本理解
参数量1.17 亿1.1 亿 / 3.4 亿
发布方OpenAIGoogle

两种路线的深远影响

GPT 路线(Decoder-only):
  GPT-1 → GPT-2 → GPT-3 → GPT-4 → ChatGPT
  走向了「越大越好」的生成式路线

BERT 路线(Encoder-only):
  BERT → RoBERTa → ALBERT → DeBERTa
  走向了「更高效的理解」路线

后来,GPT 路线逐渐成为主流——
大模型+足够的数据,生成能力也隐含了理解能力

本节小结

概念要点
预训练-微调先在大数据上预训练,再在特定任务上微调
GPT-1Decoder-only,自回归语言模型,预测下一个词
BERTEncoder-only,双向编码,MLM+NSP 预训练
影响确立了预训练范式,改变了 NLP 的整个工作流程
两条路线GPT(生成)vs BERT(理解),后来 GPT 路线胜出

思考题

  1. BERT 的 MLM(完形填空)和 GPT 的「预测下一个词」训练目标各有什么优劣?
  2. 为什么 BERT 的双向注意力不适合生成任务?单向注意力对于生成是必要的吗?
  3. 「预训练-微调」范式与迁移学习(第四阶段学到的)有什么联系和区别?

延伸阅读

  • 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 论文