1、先看三种架构的结构差异
(1)Encoder-only
- 只有 Encoder,没有 Decoder。
- 注意力是双向的:每个 token 能看到左右两边所有 token。
- 训练目标通常是掩码语言模型(MLM):随机遮住一些 token,让模型预测。
- 代表:BERT、RoBERTa、DeBERTa。
(2)Decoder-only
- 只有 Decoder,没有 Encoder。
- 注意力是单向的(因果掩码):每个 token 只能看到自己和左边。
- 训练目标是自回归语言模型:预测下一个 token。
- 代表:GPT 系列、LLaMA、Qwen、Mistral。
(3)Encoder-Decoder
- 同时有 Encoder 和 Decoder。
- Encoder 双向,Decoder 单向。
- Decoder 通过交叉注意力(Cross-Attention) 看 Encoder 输出。
- 训练目标通常是序列到序列(Seq2Seq)。
- 代表:原始 Transformer、T5、BART、mT5。
2、各自适合什么任务
(1)Encoder-only 适合什么
- 自然语言理解(NLU):分类、情感分析、蕴含判断。
- 序列标注:NER、POS 标注。
- 抽取式问答:从原文中找答案片段。
- 句子相似度、检索匹配:Embedding 模型常用。
- 特点:双向注意力,理解能力强,但不擅长生成。
(2)Decoder-only 适合什么
- 文本生成:对话、写作、摘要、翻译。
- 代码生成:Copilot、代码补全。
- 通用任务:通过 prompt 做分类、问答、推理。
- 多模态生成:图像、语音、视频生成。
- 特点:自回归生成,通用性强,但理解任务不如 Encoder 直接。
(3)Encoder-Decoder 适合什么
- 序列到序列任务:翻译、摘要、改写。
- 输入输出长度差异大:如长文摘要。
- 需要显式编码输入的任务:如语音识别、OCR。
- 特点:输入编码和输出生成分离,适合“输入→输出”映射。
(4)对比总结
| 架构 | 注意力 | 训练目标 | 适合任务 | 代表 |
|---|
| Encoder-only | 双向 | MLM | 理解、分类、标注、检索 | BERT |
| Decoder-only | 单向 | 自回归 | 生成、对话、通用任务 | GPT、LLaMA |
| Encoder-Decoder | 双向+单向 | Seq2Seq | 翻译、摘要、改写 | T5、BART |
3、为什么现在大模型主流是 Decoder-only
这是这道题的核心。原因可以从几个层面说。
(1)训练目标统一,天然适合规模化
- Decoder-only 只做一件事:预测下一个 token。
- 这个目标不需要标注数据,任何文本都能拿来训。
- 互联网上的海量文本天然就是训练数据。
- Encoder-only 需要遮词,Encoder-Decoder 需要配对数据,数据获取更难。
- 所以 Decoder-only 最容易 scale。
(2)Scaling Law 验证最好
- GPT 系列证明了:Decoder-only 参数量、数据量、计算量越大,效果越好。
- 这种可预测的 scaling 让大公司敢投入。
- Encoder-only 和 Encoder-Decoder 的 scaling 研究相对少。
(3)上下文学习与 Prompt 能力
- Decoder-only 天然支持上下文学习(In-Context Learning)。
- 给几个例子,模型就能做新任务,不用微调。
- 这种“通用接口”极大扩展了应用范围。
- Encoder-only 更依赖微调,Encoder-Decoder 也可以但不如 Decoder-only 灵活。
(4)生成任务更通用
- 很多任务可以统一成“生成”:
- 分类 → 生成类别词
- 翻译 → 生成译文
- 问答 → 生成答案
- Decoder-only 用同一个模型、同一个接口就能做。
- Encoder-only 不擅长生成,Encoder-Decoder 结构更复杂。
(5)工程和生态优势
- 训练:Decoder-only 结构简单,并行和优化更成熟。
- 推理:KV Cache、MQA/GQA、PagedAttention 都围绕 Decoder-only 优化。
- 生态:工具链、框架、社区都围绕 GPT/LLaMA 系积累。
- 惯性一旦形成,切换成本高。
(6)多模态统一
- 图像、语音、视频都可以 token 化,然后用 Decoder-only 自回归生成。
- 一个架构统一多模态,工程上更简洁。
- 这也是 GPT-4o、Gemini 等走的方向。
(7)缺点与代价
Decoder-only 不是没有缺点:
- 双向理解能力不如 Encoder-only。
- 对某些 NLU 任务,BERT 类模型更高效。
- 生成慢,自回归逐个 token。
- 但综合来看,通用性和可扩展性胜出。
(8)历史脉络
- 2018:BERT(Encoder-only)在 NLU 上统治。
- 2018~2020:GPT-1/2/3 证明 Decoder-only 可 scale。
- 2020 后:GPT-3、ChatGPT 引爆,Decoder-only 成为主流。
- 现在:LLaMA、Qwen、Mistral、DeepSeek 几乎都是 Decoder-only。
- Encoder-only 退居 Embedding、检索、分类等特定场景。
- Encoder-Decoder 在翻译、摘要等任务仍有使用,但不再是通用大模型首选。
4、一句话总结
Encoder-only 适合理解类任务,Decoder-only 适合生成和通用任务,Encoder-Decoder 适合序列到序列任务。Decoder-only 成为主流,是因为训练目标统一、易于规模化、支持上下文学习、生成接口通用、工程生态成熟、能统一多模态。代价是双向理解稍弱,但综合收益更大。
5、这道面试题的质量点评
优点
- 宏观视野题:不只考细节,考候选人对架构演进的整体理解。
- 区分度好:
- 初级:能说三种架构分别是什么。
- 中级:能说各自适合的任务。
- 高级:能说 Scaling Law、上下文学习、生态惯性、多模态统一。
- 贴近前沿:直接关系到大模型技术路线选择。
- 有追问空间:可以追问 PrefixLM、T5、BERT 的现状、Decoder-only 的局限。
缺点
- 第二问偏开放:原因很多,容易泛泛而谈。
- 容易背结论:可能只答“Decoder-only 能 scale”。
- 缺少场景:没问“你实际选型时会怎么选?”
- 没覆盖 PrefixLM、UL2 等变体:这些是中间路线,题目没提。
总体评价
质量:上。 适合中高级岗位,能有效区分“知道三种架构”和“理解技术路线演进”的人。建议追问:
- “BERT 现在还有用吗?用在哪?”
- “Encoder-Decoder 还有哪些场景不可替代?”
- “Decoder-only 做 NLU 有什么劣势?”
- “PrefixLM 和 Decoder-only 有什么区别?”
- “多模态为什么也走 Decoder-only?”
6、怎么回答才是最好的
回答原则
- 先给结构差异:注意力方向、训练目标。
- 说清适合任务:理解、生成、Seq2Seq。
- 讲 Decoder-only 主流原因:分点,从数据、scale、ICL、工程、多模态。
- 主动提代价:双向理解弱、生成慢。
- 结合实践:说“我们选型时怎么考虑”。
推荐回答结构
“三种架构的区别主要在注意力方向和训练目标。Encoder-only 是双向注意力,做 MLM,代表 BERT;Decoder-only 是单向因果注意力,做自回归,代表 GPT、LLaMA;Encoder-Decoder 是双向编码 + 单向解码,做 Seq2Seq,代表 T5、BART。”
“任务上,Encoder-only 适合理解类,分类、NER、抽取式问答、Embedding;Decoder-only 适合生成和通用任务,对话、写作、代码;Encoder-Decoder 适合翻译、摘要这种输入到输出的映射。”
“Decoder-only 成为主流,我认为有几个原因。第一,训练目标统一,预测下一个 token,任何文本都能训,最容易 scale。第二,Scaling Law 在 Decoder-only 上验证最充分。第三,天然支持上下文学习,prompt 就能做新任务。第四,很多任务都能统一成生成,接口通用。第五,工程生态成熟,KV Cache、GQA、PagedAttention 都围绕它优化。第六,多模态也能统一到自回归生成。”
“代价是双向理解不如 Encoder-only,生成也慢。所以 BERT 类模型现在还在 Embedding、检索、分类场景用,Encoder-Decoder 在翻译摘要还有位置。但通用大模型基本都选 Decoder-only。”
“我们选型时,如果是检索或分类,可能用 Encoder 类;如果是通用生成和 Agent,就选 Decoder-only。”
加分点
- 提到 MLM、自回归、因果掩码、Cross-Attention。
- 提到 Scaling Law、In-Context Learning、数据获取难度。
- 提到 KV Cache、GQA、PagedAttention 生态。
- 提到 多模态统一、BERT 现状、PrefixLM。
- 结合真实选型经验。
减分点
- 只答“Decoder-only 能 scale”,不展开。
- 不知道 Encoder-only 现在用在哪。
- 把 Encoder-Decoder 说成“过时”。
- 不知道上下文学习为什么重要。
评论专区
评论加载中...登录后即可发表评论