引言
2017 年的原始 Transformer 是一个编码器-解码器的整体。但在随后的岁月里,这个架构像一颗种子,分裂出三条截然不同的进化路线:BERT 走向深度理解,GPT 走向无限生成,T5 试图统一一切。最终,Decoder-only 路线成为了大模型的赢家——但胜利的背后,是一系列精妙的架构创新在支撑。这是一个关于「简单为什么赢」的故事。
三大架构家族
原始 Transformer(2017)
│
├── Encoder-only → BERT 家族
│ 「理解」路线
│
├── Decoder-only → GPT 家族
│ 「生成」路线 ← 成为主流
│
└── Encoder-Decoder → T5 家族
「序列转换」路线2017原始 Transformer:编码器-解码器架构,为机器翻译设计
2018GPT-1(Decoder-only)和 BERT(Encoder-only)分道扬镳
2019T5 提出「文本到文本」统一框架(Encoder-Decoder 路线)
2019-2020GPT-2/3 证明 Decoder-only 的 Scaling 能力,路线之争初见分晓
2022Flash Attention 发布,解决注意力计算效率瓶颈
2023LLaMA、Mistral 等开源模型统一采用 Decoder-only + RoPE + SwiGLU
2024Decoder-only 架构成为行业事实标准,架构创新聚焦于效率优化
Encoder-only:BERT 家族
代表模型
| 模型 | 年份 | 创新 |
|---|---|---|
| BERT | 2018 | 双向编码,MLM 预训练 |
| RoBERTa | 2019 | 更多数据、更长训练、去掉 NSP |
| ALBERT | 2019 | 参数共享,降低参数量 |
| DeBERTa | 2020 | 解耦注意力,更好的位置编码 |
| SpanBERT | 2019 | 针对抽取式任务优化 |
核心特点
双向注意力:每个位置可以看到所有位置(包括未来)
→ 适合「理解」任务
典型任务:
├── 文本分类(情感分析、主题分类)
├── 命名实体识别(NER)
├── 问答系统(提取答案)
├── 语义相似度
└── 信息检索BERT 家族的时间线
BERT (2018)
│
├── RoBERTa (2019) — 更多数据,更优训练策略
├── DistilBERT (2019) — 蒸馏压缩,速度提升 60%
├── ALBERT (2019) — 参数共享,参数量减少 18x
├── SpanBERT (2019) — 针对 span 任务的改进
└── DeBERTa (2020) — 解耦注意力,性能进一步提升Decoder-only:GPT 家族
代表模型
| 模型 | 年份 | 参数量 | 关键突破 |
|---|---|---|---|
| GPT-1 | 2018 | 117M | 预训练-微调范式 |
| GPT-2 | 2019 | 1.5B | Zero-shot 学习 |
| GPT-3 | 2020 | 175B | Few-shot + 涌现能力 |
| GPT-4 | 2023 | 未公布 | 多模态 + 强推理 |
| LLaMA | 2023 | 7-65B | 开源标杆 |
| Mistral | 2023 | 7B | 高效架构 |
| Qwen | 2023- | 0.5-72B | 中文能力强 |
核心特点
因果(单向)注意力:每个位置只能看到之前的 token
→ 适合「生成」任务
训练目标:预测下一个 token
P(text) = ∏ P(wₜ | w₁, ..., wₜ₋₁)
为什么 Decoder-only 胜出?
├── 生成能力天然适配对话、写作等高价值应用
├── 简单的架构更容易扩展到超大规模
├── 「预测下一个词」是天然的海量自监督任务
└── 理解能力可以通过规模涌现出来Decoder-only 的胜利不是因为它在某个维度上更强,而是因为它的简单性使得扩展变得容易。 当规模足够大时,一个「只会预测下一个词」的模型,竟然也能理解语言——理解是生成的副产品。
Encoder-Decoder:T5 家族
代表模型
| 模型 | 年份 | 创新 |
|---|---|---|
| T5 | 2019 | 「文本到文本」统一框架 |
| BART | 2019 | 去噪自编码器 |
| mBART | 2020 | 多语言版本 |
| PEGASUS | 2020 | 专为摘要设计 |
| Flan-T5 | 2022 | 指令微调 |
T5 的「文本到文本」框架
T5 将所有 NLP 任务统一为「输入文本 → 输出文本」:
翻译:
输入:"translate English to German: That is good"
输出:"Das ist gut"
摘要:
输入:"summarize: [长文章]"
输出:"[摘要]"
分类:
输入:"cola sentence: The course is jumping well."
输出:"unacceptable"Encoder-Decoder 的优势与局限
| 优势 | 局限 |
|---|---|
| 输入和输出可以不同长度 | 架构比 Decoder-only 复杂 |
| 适合翻译、摘要等序列转换 | 扩展到超大规模不如 Decoder-only 顺畅 |
| 编码器提供完整输入理解 | 在纯生成任务上不一定优于 Decoder-only |
架构选择的决定因素
选择哪个架构?
需要理解文本 → Encoder-only(BERT)
需要生成文本 → Decoder-only(GPT)
需要转换序列 → Encoder-Decoder(T5)
不确定/想要通用 → Decoder-only(趋势)现代 Transformer 的改进
注意力效率
| 技术 | 解决的问题 | 方法 |
|---|---|---|
| Flash Attention | 注意力计算内存效率 | 分块计算,减少显存访问 |
| 稀疏注意力 | 长序列的计算复杂度 | 只关注部分位置 |
| 线性注意力 | O(n²) 复杂度 | 用核函数近似 |
架构改进
| 改进 | 说明 |
|---|---|
| Pre-LN vs Post-LN | 层归一化的位置影响训练稳定性 |
| RoPE 旋转位置编码 | 更好的相对位置表示 |
| GQA 分组查询注意力 | 减少 KV Cache 大小 |
| SwiGLU 激活函数 | 替代 ReLU 的更好选择 |
这些改进看似零散,但共同指向一个目标:让 Transformer 在保持架构简洁性的同时,跑得更快、吃得更少、走得更远。
本节小结
| 架构 | 代表 | 优势领域 | 趋势 |
|---|---|---|---|
| Encoder-only | BERT | 文本理解 | 理解任务仍被使用 |
| Decoder-only | GPT | 文本生成 | 当前主流 |
| Encoder-Decoder | T5 | 序列转换 | 特定任务 |
思考题
- 为什么 Decoder-only 架构最终成为主流,而不是最初看起来最「完整」的 Encoder-Decoder?
- 现代 AI 应用中,哪些任务仍然适合用 BERT(Encoder-only)而不是 GPT?
- Transformer 的架构还有多大的改进空间?我们需要全新的架构吗?
延伸阅读
- Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, 2019 — T5 论文
- Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness, 2022 — Flash Attention 论文
- Su et al., RoFormer: Enhanced Transformer with Rotary Position Embedding, 2021 — RoPE 论文