BERT、T5 与 GPT 为什么是三种结构
到目前为止我们一直学习 Decoder-only 自回归语言模型,因为它最直接地支持逐 token 生成。但 Transformer 不只有这一种组装方式。
本页用同一个问题区分三大家族:模型在每个位置能看到什么,训练时被要求输出什么?
三句话先建立直觉
- Encoder-only:整段输入互相可见,重点是得到适合理解任务的上下文表示。
- Encoder–Decoder:Encoder 先完整理解来源,Decoder 再因果地生成目标,并通过 cross-attention 读取来源。
- Decoder-only:把所有条件和输出放进一条序列,只用因果遮罩继续预测下一个 token。
这不是“旧模型、新模型、最新模型”的时间排名,而是信息流和目标不同的结构选择。
固定任务:把“我喜欢猫”翻译成英文
Encoder-only
输入可能是:
[CLS] 我 喜欢 猫 [SEP]每个 token 可以双向读取整段输入。模型输出每个位置的上下文表示,随后接分类头、序列标注头或其他任务头。
它本身没有一个天然的“逐 token 英文生成循环”。可以额外设计生成系统,但这不是标准 Encoder-only 预训练的直接接口。
典型预训练目标是遮住部分 token 再恢复:
我 [MASK] 猫 → 预测“喜欢”Encoder–Decoder
Encoder 输入中文:
我 喜欢 猫Decoder 逐步生成:
<BOS> → I → like → cats → <EOS>Decoder 有两类注意力:
- masked self-attention:只能读取已生成的英文;
- cross-attention:可以读取 Encoder 的全部中文表示。
输入和输出天然分区,适合翻译、摘要等“给定来源 → 生成目标”的任务。
Decoder-only
把任务写进同一条上下文:
翻译成英文:我喜欢猫
答案:I like cats模型从左到右预测每个 token。生成答案时,后面的英文可以读取前面的指令与中文,但前面的内容不能读取尚未出现的答案。
这种统一 next-token 接口很容易把问答、翻译、代码和对话都表示成文本序列。
对照表
| 维度 | Encoder-only | Encoder–Decoder | Decoder-only |
|---|---|---|---|
| 代表性模型 | BERT | T5、原始 Transformer | GPT 类 |
| 主体可见性 | 输入内双向 | Encoder 双向;Decoder 因果 | 全序列因果 |
| 输入/输出 | 输入表示 → 任务头 | 来源序列 → 目标序列 | 一个前缀后继续生成 |
| 常见预训练目标 | masked token | 去噪/文本到文本 | next-token |
| 擅长接口 | 分类、抽取、检索表示 | 翻译、摘要、条件生成 | 开放生成、对话、代码 |
| 生成时是否逐 token | 通常不是核心接口 | Decoder 是 | 是 |
“擅长”不等于“只能”。现代系统可以改变目标、增加头或组合模型;选择仍要从信息流和任务接口出发。
Mask 决定的不是模型名字,而是信息边界
同一个注意力公式,通过不同 mask 可以产生不同信息流:
- 双向:所有有效输入位置互相可见;
- 因果:位置
t只能看≤t; - Prefix/分块:一部分位置双向,后续位置因果;
- Cross-attention:Query 来自 Decoder,K/V 来自 Encoder。
因此看到模型实现时,不要只找类名 Transformer;要检查 Q、K、V 分别来自哪里,以及 mask 允许哪些位置连接。
训练目标与架构要一起看
两个模型即使都使用 Decoder Block,只要训练数据和目标不同,最终行为也可能不同。同样,Encoder 与 Decoder 的结构差异不会自动告诉你数据质量、参数规模或是否经过指令对齐。
至少分开记录:
架构:Encoder-only / Encoder–Decoder / Decoder-only
目标:masked token / span corruption / next-token / 其他
数据:哪些语料与任务混合
后训练:是否微调、偏好优化或工具训练
接口:输出表示、类别还是 token 分布怎样选择
需要固定表示或分类
例如文本检索向量、情感分类、实体标注。Encoder-only 能让每个位置综合左右文,通常是自然起点。
输入与输出边界非常明确
例如翻译、摘要、语音转文本中的编码—解码。Encoder–Decoder 让来源表示只算一次,目标 Decoder 通过 cross-attention 读取。
希望统一成提示词并开放生成
例如对话、续写、代码生成和 in-context learning。Decoder-only 的单一 next-token 接口更直接。
选择还要考虑可用预训练权重、数据、延迟、部署生态与评测结果,不能只凭架构标签。
常见误解
- BERT 没有 Decoder,所以不是 Transformer:错误。Transformer 是一组注意力与前馈结构,BERT使用其 Encoder 家族。
- 双向一定比因果更强:取决于任务。生成时未来 token 不存在,不能依赖双向读取未来答案。
- T5 的 Decoder 不需要 causal mask:错误。它对目标序列仍然自回归,只是还能 cross-attend Encoder。
- GPT 只能续写,不能分类:可以把分类表示成 next-token 或读取隐藏表示;这是接口设计问题。
- 架构决定全部能力:数据、规模、目标和后训练同样重要。
本节自测
先作答,再查看解释。记录只保存在当前浏览器。
打印版答案:1. Encoder–Decoder;2. 对;3. masked language modeling;4. 按来源/目标是否分区及注意力来源比较。
来源与下一步
- BERT: Pre-training of Deep Bidirectional Transformers
- Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
- Language Models are Few-Shot Learners
下一课Scaling 与 MoE 怎样扩展模型容量解释“结构确定之后,模型怎样继续扩大”。