← 返回题目列表

encoder-only、decoder-only、encoder-decoder 三种架构有什么区别?为什么通用生成模型常用 decoder-only?

高频 中等 第 4 / 25 题 更新于 2026/09/25
decoder-onlyencoder-decoderBERTGPTT5
学习 AI 实战项目

简化版

Transformer 有三种用法:

  • encoder-only(如 BERT):双向注意力,常用于分类、抽取、检索等表示任务;经典 BERT 用 MLM,但 encoder-only 并不限定为一种预训练目标。它没有现成的自回归生成端。
  • decoder-only(如 GPT/Llama):因果(单向)注意力,逐 token 自回归生成,擅长「生成」,也能靠上下文学习做各种任务。
  • encoder-decoder(如 T5/BART):编码器双向理解输入 + 解码器自回归生成输出,中间用交叉注意力连接,擅长「输入到输出」的序列转换(翻译、摘要)。

许多通用生成式大模型选择 decoder-only,主要因为单一因果栈、next-token 数据管线和生成服务接口容易统一并规模化。它不是所有“大模型”的唯一选择:表示模型仍常用 encoder,翻译、语音和条件生成系统也会采用 encoder-decoder。架构优劣必须在相近参数、数据与计算预算下比较。

详细版

三种架构的机制对比

架构注意力预训练任务强项代表
encoder-only双向(全可见)掩码语言建模 MLM理解、分类、抽取、句向量BERT、RoBERTa
decoder-only因果(只看左侧)下一个 token 预测生成、对话、少样本学习GPT、Llama、Qwen
encoder-decoder编码双向 + 解码因果 + 交叉注意力去噪 / seq2seq翻译、摘要等输入→输出转换T5、BART

为什么 LLM 选 decoder-only(核心理由)

  1. 训练接口密集且简单:标准因果 LM 几乎每个非首 token 都提供目标;经典 BERT MLM 只在采样的遮盖位置计损失,但不能直接由目标数推出总体数据效率。
  2. 任务统一、通用性强:万物皆「续写」,分类/翻译/问答都能写成文本生成,无需为每类任务设计不同头。
  3. 上下文学习接口自然:示例与待答输入可串成同一因果序列;上下文学习不是 decoder-only 独占能力。
  4. 结构简单、易扩展:没有编码器—解码器分工和交叉注意力,训练与服务栈更统一;这属于工程优势,不证明同计算下质量必然最高。
  5. KV Cache 友好:自回归 + 因果掩码天然配合 KV 缓存,推理高效。

完整版教学

一、三种架构其实是”注意力可见性 + 有无生成端”的排列组合

理解三者,抓两个维度:

  • 注意力能看到哪些位置:双向(每个 token 看全序列)还是因果(只看自己及左侧)。
  • 有没有独立的生成端:是否需要一个自回归解码器产出新序列。

由此:

  • encoder-only = 纯双向、无生成端(只出表示)。
  • decoder-only = 纯因果、生成端即全部(边理解边生成)。
  • encoder-decoder = 双向编码端 + 因果解码端,二者用交叉注意力桥接。

二、encoder-only(BERT):为”理解”而生

BERT 用双向注意力,每个 token 能同时看到左右全部上下文,因此对语义的「理解」很充分。预训练用掩码语言建模(MLM):随机遮住一些词让模型还原,配合双向上下文学到深层表示。

  • 强项:文本分类、命名实体识别、句子相似度/检索(句向量)、阅读理解等「输入 → 标签/片段」的判别任务。
  • 短板:没有独立自回归生成端,不能直接按经典 decoder 的方式逐 token 续写。它可用于迭代填空或接上解码器,但那已经改变了生成算法或系统结构。

三、encoder-decoder(T5/BART):为”序列转换”而生

它把任务显式建模成「一段输入 → 一段输出」:

  • 编码器:双向注意力充分理解输入(如源语言句子)。

  • 解码器:因果注意力自回归生成输出(如目标语言句子),且每步通过交叉注意力去「看」编码器的输出。

  • 预训练:T5 用「填空式去噪」(把连续片段替换成哨兵符再还原),统一成 text-to-text。

  • 强项:机器翻译、摘要、语法纠错这类输入和输出边界清晰的转换任务,编码端的双向理解是加分项。

  • 代价:有两套栈与交叉注意力,训练、缓存和部署路径更复杂;但在条件生成上可能更高效或更合适,不能概括为开放任务必然不如 decoder-only。

四、decoder-only(GPT/Llama):为什么它成为通用生成的常见选择

decoder-only 只有一个因果解码器:每个 token 只能看它左边的,逐个预测下一个词。它成为 LLM 主流,是多重优势叠加的结果:

① 训练目标密集且统一。 自回归序列里几乎每个 token 都可作为下一 token 目标;经典 MLM 只在采样位置计损失。目标更多不等于自动“学习效率更高”,因为双向上下文、目标难度和计算分配也不同。

② 任务大一统。 把所有任务都写成「续写文本」:问答=续写答案,翻译=续写译文,分类=续写标签词。不需要针对每类任务设计不同输出头,一个模型通吃。

③ 上下文学习接口自然。 把示例、问题和答案依次放入同一序列,训练目标与推理接口一致。能力随规模和数据变化,不能把 in-context learning 当作只属于 decoder-only 的证明。

④ 结构与服务路径简单。 同构因果层便于并行、复用训练语料和统一生成服务。但 Scaling Law 描述经验关系,不推出该拓扑在所有预算下最优。

⑤ 推理高效。 因果掩码 + 自回归天然配合 KV Cache,历史算过的 K/V 可复用,逐 token 生成成本低。

面试时应把“生态与工程统一”同“模型质量”分开:因果注意力矩阵是否满秩不能单独解释架构胜负,真实选择还受数据目标、参数分配、输入输出比例和部署栈影响。

五、那 encoder 系彻底没用了吗

并非。理解类任务里 encoder 仍有价值:

  • 做检索/嵌入(如句向量、RAG 的 embedding 模型),双向编码器(BERT 系、E5、BGE)通常比同规模 decoder 更强、更省。
  • 判别式任务(分类、NER)在数据充足时,微调 BERT 往往又快又好。

现实是分工共存:通用文本生成常用 decoder-only,检索、排序与判别常用 encoder,条件生成也可用 encoder-decoder。decoder 同样可改造成 embedding 模型;最后应比较质量、吞吐和运维成本,而不是按架构名称预判赢家。

六、用翻译任务比较两条计算路径

假设输入是 128 个 token,要生成 32 个 token。encoder-decoder 先让编码器双向处理 128 个输入 token,解码器的 32 个位置通过 cross-attention 读取固定的编码结果;decoder-only 通常把输入和输出串成一条 160-token 的因果序列。前者把“读输入”和“写输出”明确分工,后者则用同一套堆叠和同一个 next-token 目标统一所有任务。

Encoder-Decoder: source(128) -> encoder states -> decoder generates 32
Decoder-Only:    [source(128), target(32)] -> one causal token stream
比较项Encoder-DecoderDecoder-Only
输入可见性编码器内双向全程因果
条件复用编码结果可被每个输出步复用输入 K/V 保存在同一缓存中
训练接口编码、解码两套路径单一续写接口
典型优势条件转换、输入理解充分扩展简单、统一生成范式

不能仅凭总长度断言谁更快:参数分配、cross-attention 实现、输入输出长度比例都会改变结果。选型时应在同等质量与相近参数预算下比较吞吐、首 token 延迟和部署复杂度。

七、常见误区与追问

  • 误区:Decoder-Only 不能做理解任务。 它可以通过生成标签、答案或结构化结果完成理解任务,只是输入采用因果可见性。
  • 追问:Encoder-Decoder 为什么适合翻译和摘要? 编码器能双向压缩完整输入,解码器再通过交叉注意力按需读取,天然匹配条件序列生成。
  • 误区:相同参数量下两种架构的推理成本只由总 token 数决定。 参数在编码器与解码器间的分配、交叉注意力和输入输出比例都会改变成本。
  • 追问:Decoder-Only 为什么更容易统一多任务? 所有任务都可序列化为上下文续写,训练目标、模型堆叠和服务接口都更统一。
  • 追问:什么时候仍优先 Encoder-Only? 固定表示、检索向量、分类和抽取等无需生成的任务,双向编码通常更直接且吞吐更高。

八、加强记忆

三种架构记「表示 / 自回归 / 条件生成」:encoder-only 用双向表示服务分类检索,decoder-only 用因果栈统一续写与生成,encoder-decoder 用双向编码、因果解码和交叉注意力明确分开输入输出。decoder-only 常见,是因为 next-token 数据、同构堆叠、上下文接口和 KV Cache 服务链路容易统一;这不是“所有大模型都用它”,也不证明同预算必胜。选型应结合任务、输入输出长度、参数分配、质量与部署基准。