encoder-only、decoder-only、encoder-decoder 三种架构有什么区别?为什么大模型都用 decoder-only?
简化版
Transformer 有三种用法:
- encoder-only(如 BERT):双向注意力,擅长「理解」类任务(分类、抽取、检索),用掩码语言建模预训练,但不能直接做生成。
- decoder-only(如 GPT/Llama):因果(单向)注意力,逐 token 自回归生成,擅长「生成」,也能靠上下文学习做各种任务。
- encoder-decoder(如 T5/BART):编码器双向理解输入 + 解码器自回归生成输出,中间用交叉注意力连接,擅长「输入到输出」的序列转换(翻译、摘要)。
现代大语言模型几乎都选 decoder-only,因为它结构简单、训练高效(每个 token 都是预测目标)、天然支持上下文学习、任务统一为”续写”、且规模化效果最好。
详细版
三种架构的机制对比
| 架构 | 注意力 | 预训练任务 | 强项 | 代表 |
|---|---|---|---|---|
| encoder-only | 双向(全可见) | 掩码语言建模 MLM | 理解、分类、抽取、句向量 | BERT、RoBERTa |
| decoder-only | 因果(只看左侧) | 下一个 token 预测 | 生成、对话、少样本学习 | GPT、Llama、Qwen |
| encoder-decoder | 编码双向 + 解码因果 + 交叉注意力 | 去噪 / seq2seq | 翻译、摘要等输入→输出转换 | T5、BART |
为什么 LLM 选 decoder-only(核心理由)
- 训练信号密集:每个位置都预测下一个词,简要说里每个 token 都提供监督,样本利用率高;而 BERT 的 MLM 只对被掩码的 ~15% token 计算损失。
- 任务统一、通用性强:万物皆「续写」,分类/翻译/问答都能写成文本生成,无需为每类任务设计不同头。
- 上下文学习(in-context learning):decoder-only 在规模化后涌现出「看几个例子就会做新任务」的能力,zero/few-shot 极强。
- 结构简单、易扩展:没有编码器-解码器的分工和交叉注意力,堆同构的层最省心,最契合 Scaling Law。
- KV Cache 友好:自回归 + 因果掩码天然配合 KV 缓存,推理高效。
完整版教学
一、三种架构其实是”注意力可见性 + 有无生成端”的排列组合
理解三者,抓两个维度:
- 注意力能看到哪些位置:双向(每个 token 看全序列)还是因果(只看自己及左侧)。
- 有没有独立的生成端:是否需要一个自回归解码器产出新序列。
由此:
- encoder-only = 纯双向、无生成端(只出表示)。
- decoder-only = 纯因果、生成端即全部(边理解边生成)。
- encoder-decoder = 双向编码端 + 因果解码端,二者用交叉注意力桥接。
二、encoder-only(BERT):为”理解”而生
BERT 用双向注意力,每个 token 能同时看到左右全部上下文,因此对语义的「理解」很充分。预训练用掩码语言建模(MLM):随机遮住一些词让模型还原,配合双向上下文学到深层表示。
- 强项:文本分类、命名实体识别、句子相似度/检索(句向量)、阅读理解等「输入 → 标签/片段」的判别任务。
- 短板:不能自然地生成文本。因为它没有自回归机制,且双向注意力和「逐词生成」不兼容(生成时右侧还不存在)。硬要生成要额外改造,别扭。
三、encoder-decoder(T5/BART):为”序列转换”而生
它把任务显式建模成「一段输入 → 一段输出」:
-
编码器:双向注意力充分理解输入(如源语言句子)。
-
解码器:因果注意力自回归生成输出(如目标语言句子),且每步通过交叉注意力去「看」编码器的输出。
-
预训练:T5 用「填空式去噪」(把连续片段替换成哨兵符再还原),统一成 text-to-text。
-
强项:机器翻译、摘要、语法纠错这类输入和输出边界清晰的转换任务,编码端的双向理解是加分项。
-
代价:结构更复杂(两套栈 + 交叉注意力),参数和工程更重;在「开放式生成 + 通用任务」上不如 decoder-only 灵活。
四、decoder-only(GPT/Llama):为什么它赢下了大模型时代
decoder-only 只有一个因果解码器:每个 token 只能看它左边的,逐个预测下一个词。它成为 LLM 主流,是多重优势叠加的结果:
① 训练信号最密集。 自回归让序列里每一个 token 都是一次预测,都贡献损失;一句 1000 词的话提供近 1000 个监督信号。而 BERT 的 MLM 一次只预测被遮的 ~15%,同样数据的学习效率更低。
② 任务大一统。 把所有任务都写成「续写文本」:问答=续写答案,翻译=续写译文,分类=续写标签词。不需要针对每类任务设计不同输出头,一个模型通吃。
③ 上下文学习涌现。 decoder-only 规模化后展现出强大的 in-context learning——在 prompt 里给几个示例,模型就能模仿完成新任务,无需微调。这种 few-shot 通用性是它统治的关键。
④ 结构简单、最利于 Scaling。 没有编码/解码分工、没有交叉注意力,全是同构的因果 Transformer 层,堆叠、并行、扩展都最省心,最契合「加规模就变强」的规律。
⑤ 推理高效。 因果掩码 + 自回归天然配合 KV Cache,历史算过的 K/V 可复用,逐 token 生成成本低。
有一个常被引用的理论视角:因果掩码让 decoder-only 的注意力矩阵是下三角满秩的,表达能力上不易退化;加上上述工程与训练优势,共同促成了它的胜出。面试点到「训练信号密集 + 任务统一 + in-context learning + 易扩展」这几条即可。
五、那 encoder 系彻底没用了吗
并非。理解类任务里 encoder 仍有价值:
- 做检索/嵌入(如句向量、RAG 的 embedding 模型),双向编码器(BERT 系、E5、BGE)通常比同规模 decoder 更强、更省。
- 判别式任务(分类、NER)在数据充足时,微调 BERT 往往又快又好。
现实是分工共存:生成和通用智能用 decoder-only 大模型;检索、排序、轻量判别用 encoder。近年也有把 decoder 改造成 embedding 模型的趋势,但 encoder 的「双向理解」在表示任务上仍有天然优势。
六、面试拆解算例
这类题最怕只讲术语,最好把它落成一次资源账。假设模型有 32 层、hidden size 为 4096、序列长度从 2K 增到 16K,标准注意力的相关度矩阵规模会从 2K × 2K 变成 16K × 16K,理论元素数量放大 64 倍。即使具体算子不会真的把所有中间矩阵都落到 HBM,复杂度曲线仍然决定了 prefill 延迟和显存压力会快速上升。
attention_scores_per_head = seq_len * seq_len
2K -> 2,048 * 2,048 ≈ 4.19M
16K -> 16,384 * 16,384 ≈ 268.44M
放大倍数 ≈ 64
| 观察维度 | 面试要说清的问题 | 工程判断 |
|---|---|---|
| 张量形状 | Q/K/V、hidden state 或路由权重怎样变化 | 能否解释实现差异 |
| 复杂度 | 随层数、序列长度、head 数怎样增长 | 谁先成为瓶颈 |
| 质量风险 | 是否改变训练分布或表达能力 | 会不会掉点 |
| 部署代价 | 算子、框架、缓存是否支持 | 能不能稳定上线 |
输入 token -> embedding -> 注意力/FFN/归一化模块 -> hidden state -> logits
| | |
位置/掩码 显存与吞吐 质量与稳定性
所以回答「encoder-only、decoder-only、encoder-decoder 三种架构有什么区别?为什么大模型都用 decoder-only?」时,推荐先讲结构变化,再讲这条变化怎样影响资源曲线,最后补一句质量和部署的边界。这样比单纯背「某某结构更快、更省」更像工程答案。
七、常见误区与追问
- 误区:decoder-only 只能生成、不能理解。 它同样有很强的理解力(生成好答案需先理解),只是用「因果单向」的方式;只是在纯表示/检索任务上,双向 encoder 更专精。
- 误区:encoder-decoder 一定更强。 在边界清晰的转换任务上有优势,但通用性、扩展性和 few-shot 不如 decoder-only。
- 追问:BERT 为什么不能像 GPT 那样生成? 双向注意力 + MLM 训练不含自回归,生成时右侧上下文不存在,机制不匹配。
- 追问:为什么 decoder-only 训练效率更高? 每个 token 都是预测目标,监督信号密集;MLM 只用被掩码的一小部分。
- 追问:T5 的 text-to-text 是什么意思? 把所有任务统一成「输入文本 → 输出文本」,用同一模型和损失处理。
- 追问:现在还用 encoder-decoder 吗? 翻译、语音、部分多模态仍用;但通用大模型基本是 decoder-only。
八、加强记忆
三种架构记「理解 / 生成 / 转换」:encoder-only(BERT,双向,理解判别,不擅生成)、decoder-only(GPT,因果,自回归生成,通用)、encoder-decoder(T5,双向编码+因果解码+交叉注意力,输入到输出的转换)。 大模型选 decoder-only 的五个理由串成一句:训练信号密集(每 token 都预测)+ 任务统一为续写 + 上下文学习涌现 + 结构简单易扩展 + KV Cache 推理高效。 但别忘了 encoder 在检索/嵌入等理解任务上仍有一席之地——这是加分的「反直觉」认知。