2.5 三类架构:Encoder-only / Decoder-only / Encoder-Decoder
BERT、GPT/LLaMA、T5/BART 三类 Transformer 架构的掩码差异、适用任务与模型选型对照
同样的 Block,三种拼法
Transformer Block 是一个通用组件。根据如何拼装、用什么掩码、预训练目标是什么,整个模型可以落到三类架构中的某一类。这三类架构分别对应了 NLP 领域的三种主流"使用方式":
- Encoder-only:理解任务(分类、抽取、检索)
- Decoder-only:生成任务(对话、创作、代码)
- Encoder-Decoder:序列到序列任务(翻译、摘要、结构化生成)
三者的本质差别不在堆了多少 Block,而在 Attention 里用什么掩码。
掩码(Mask)是灵魂
Self-Attention 的核心公式中有一个 Mask 参数:
其中 是一个 的矩阵,被屏蔽的位置置为 (softmax 后即 0),未屏蔽的位置置为 0。三类架构用的掩码如下:
双向掩码(Bidirectional):BERT
每个 token 可以看到序列中所有位置——包括它后面的。这对"理解"任务是理想的:做情感分类要看完整句话,做命名实体识别要看上下文。
因果掩码(Causal / Unidirectional):GPT、LLaMA
token 只能看到自己和之前的位置。这是自回归语言建模的数学约束——预测第 个 token 时不能"偷看"第 个。因果掩码保证了训练时的 teacher forcing 与推理时逐 token 生成的等价性。
# 因果掩码的实现
def causal_mask(n):
return torch.tril(torch.ones(n, n)).view(1, 1, n, n) # 下三角为 1,上三角为 0
# 在 attention 中应用
scores = scores.masked_fill(causal_mask(n) == 0, float("-inf"))混合掩码:Encoder-Decoder(T5)
在 Encoder-Decoder 架构里,掩码情况更复杂:
- Encoder Self-Attention:双向掩码(对整个输入完全可见)
- Decoder Self-Attention:因果掩码(目标序列只能看前面)
- Decoder Cross-Attention:Decoder 的 Query 看 Encoder 输出的 Key/Value,不需要掩码(输入对 Decoder 完全可见)
还有一类前缀语言模型(Prefix LM)——输入部分用双向注意力,输出部分用因果注意力。代表模型 GLM 和 UniLM。可以看作是 Encoder-Decoder 的简化版(共享参数,一个塔)。
Encoder-only:BERT 家族
代表模型:BERT(2018)、RoBERTa(2019)、DeBERTa(2020)、XLNet(2019)、ELECTRA(2020)。
结构: 层双向 Transformer Encoder,顶部接 [CLS] token 的分类头或逐 token 的序列标注头。
预训练目标:Masked Language Modeling(MLM)——随机掩 15% 的 token 让模型预测(下节详述)。
优势与劣势:
| 优势 | 劣势 |
|---|---|
| 双向建模,对理解任务最优 | 不能生成(预测要一次输出整序列) |
| 训练目标与下游任务匹配好 | 参数规模通常较小(BERT-large 只有 340M) |
| 微调后单任务效果强 | 不能扩展到对话等生成场景 |
适合的任务:分类、序列标注、语义相似度、信息抽取、检索重排序。
Decoder-only:GPT / LLaMA 家族
代表模型:GPT-1/2/3/4(2018–2023)、LLaMA 1/2/3(2023–2024)、Qwen(2023–2026)、DeepSeek(2024–2026)、Claude(Anthropic,2023–2026)。
结构: 层因果 Transformer Decoder,顶部接 LM Head(与词嵌入共享权重)。
预训练目标:Causal Language Modeling(CLM)——从左到右预测下一个 token。
优势与劣势:
| 优势 | 劣势 |
|---|---|
| 任务统一为"生成" | 双向上下文要靠 prompt 技巧模拟 |
| 同一个模型可做所有任务(靠 prompt) | 早期版本(GPT-2)规模小效果差 |
| 易扩展到万亿参数(LLaMA-405B) | 推理时要逐 token 生成,成本高 |
| 天然支持 Few-shot 和 CoT | — |
适合的任务:对话、创作、代码、Chain-of-Thought 推理、Agent——今天 90% 的"大模型"属于这类。
Encoder-Decoder:T5 / BART 家族
代表模型:T5(2019)、BART(2019)、mT5(2020)、FLAN-T5(2022)、NLLB(2022)。
结构:Encoder 把输入编码成上下文表示,Decoder 基于上下文自回归生成目标序列。Decoder 的每层有Self-Attention(因果) 和 Cross-Attention(看 Encoder) 两个注意力子层。
预训练目标:去噪(Denoising)——给输入加噪声(随机删除、打乱、掩蔽片段),让 Decoder 还原原文。
优势与劣势:
| 优势 | 劣势 |
|---|---|
| 显式区分输入和输出,适合翻译、摘要 | 参数翻倍(Encoder + Decoder) |
| Encoder 侧双向,理解能力强 | 训练和推理工程更复杂 |
| 在结构化输入 → 输出任务上优势明显 | 在纯生成任务上被 Decoder-only 超越 |
适合的任务:机器翻译、摘要、结构化文档重写、Text-to-SQL(早期)。
为什么 Decoder-only 赢了
2022 年之后,Decoder-only 几乎"一家独大"。原因不是 Decoder 更强,而是:
- 任务统一:把所有 NLP 任务重写成"给定 prompt,生成回答",一个模型打天下
- 扩展性:加参数、加数据就能变强(Scaling Laws);Encoder-Decoder 架构的 Scaling 实验远不如 Decoder-only 充分
- 对齐友好:RLHF、DPO、偏好学习等对齐方法天然适合生成模型
- 工程生态:KV Cache、推测解码、vLLM 等推理优化都围绕 Decoder-only 展开
这不意味着 Encoder-only 和 Encoder-Decoder 过时。在效率敏感的场景(大规模向量检索、线上分类),BERT-base(110M)比 LLaMA-8B 便宜两个数量级;在翻译、摘要、纠错等经典 seq2seq 任务上,T5 系列仍有竞争力。选模型的第一问题永远是"任务是什么",而不是"哪个最新"。
模型选型对照表
| 任务类型 | 首选架构 | 推荐模型 | 备注 |
|---|---|---|---|
| 文本分类 | Encoder-only | RoBERTa / DeBERTa-v3 | 10ms 级推理、0.1B 参数 |
| 命名实体识别 / 序列标注 | Encoder-only | DeBERTa-v3 / XLM-R | 多语言选 XLM-R |
| 语义相似度 / 向量检索 | Encoder-only | bge-m3 / e5 / GTE | 一般用双塔 |
| 重排序(Cross-encoder) | Encoder-only | bge-reranker / mxbai | 单塔效果更好 |
| 机器翻译 | Encoder-Decoder | NLLB / M2M-100 / GPT-4 | 专用模型仍有优势 |
| 摘要 / 改写 | Encoder-Decoder / Decoder-only | T5 / FLAN-T5 / GPT-4 | 长文档选 Decoder |
| 对话 / 问答 / Chat | Decoder-only | Qwen3 / LLaMA-3 / GPT-4 | 默认选择 |
| 代码生成 | Decoder-only | Qwen-Coder / DeepSeek-Coder | 专用 checkpoint |
| 复杂推理 / Agent | Decoder-only(+ 推理强化) | Qwen3-Thinking / o1 / Claude | 要支持 CoT |
一个常被混淆的问题:"BERT 能做生成吗?"
可以,但很别扭。BERT 的 MLM 目标是填空,不是下一个 token 预测。硬要让 BERT 生成,有两种方式:
- 迭代掩码填充:从全
[MASK]开始,每次选一个 token 填回去——极慢且质量差 - 后续工作如 BART / MASS:已经等于 Encoder-Decoder 了
现代实践中,需要生成就用 Decoder-only,需要双向理解就用 Encoder-only。中间灵活地带(Prefix LM、UniLM)在工程上几乎被遗忘。
本节小结
| 架构 | 掩码 | 代表 | 预训练目标 | 适用 |
|---|---|---|---|---|
| Encoder-only | 双向 | BERT、RoBERTa、DeBERTa | MLM | 理解、分类、检索 |
| Decoder-only | 因果 | GPT、LLaMA、Qwen | CLM | 生成、对话、CoT |
| Encoder-Decoder | 混合 | T5、BART、NLLB | Denoising | 翻译、摘要、seq2seq |
下一节我们把"预训练目标"单独拉出来讲——MLM / CLM / Denoising / Prefix LM 这四种到底在训练什么、规模律是什么样的、怎样过渡到后训练。