当前位置: 首页 > news >正文

深度拆解transformer第09章:架构选择的分野——Decoder-only为什么赢了通用语言建模?

第09章:架构选择的分野——Decoder-only为什么赢了通用语言建模?

论文链接:Attention Is All You Need (Vaswani et al., NIPS 2017)
本章对应:原论文的Encoder-Decoder架构(作为对比基准)

核心困惑

为什么GPT、Claude、Gemini都选择Decoder-only架构?Encoder-Decoder架构死了吗?

原论文的Transformer是Encoder-Decoder架构,专为机器翻译设计。但2018年之后,语言建模领域出现了分野:

  • BERT(2018):只用Encoder
  • GPT(2018-2024):只用Decoder
  • T5(2019):继续用Encoder-Decoder

到了2024年,几乎所有的大语言模型(GPT-4、Claude、Gemini、LLaMA)都选择了Decoder-only。

这是为什么?Encoder-Decoder架构真的过时了吗?

前置知识补给站

1. 三种架构的定义

Encoder-Decoder(原论文):

  • Encoder:处理输入序列,输出上下文表示
  • Decoder:根据Encoder输出,自回归生成目标序列
  • 用途:机器翻译、语音识别

Encoder-only(BERT):

  • 只有Encoder,没有Decoder
  • 双向注意力:每个token可以看到所有其他token
  • 用途:文本分类、命名实体识别、问答

Decoder-only(GPT):

  • 只有Decoder,没有Encoder
  • 单向注意力:每个token只能看到之前的token(因果mask)
  • 用途:文本生成、对话、代码生成

2. 自回归 vs 自编码

自回归(Autoregressive)

  • 训练目标:预测下一个token
  • 公式:P ( x 1 , . . . , x n ) = ∏ i = 1 n P ( x i ∣ x 1 , . . . , x i − 1 ) P(x_1, ..., x_n) = \prod_{i=1}^n P(x_i | x_1, ..., x_{i-1})P(x1,...,xn)=i=1nP(xix1,...,xi1)
  • 代表:GPT

自编码(Autoencoding)

  • 训练目标:重建被mask的token
  • 公式:给定x 1 , [ M A S K ] , x 3 , . . . , x n x_1, [MASK], x_3, ..., x_nx1,[MASK],x3,...,xn,预测x 2 x_2x2
  • 代表:BERT

为什么BERT不能直接用于生成

  • BERT的Masked LM假设被mask的位置相互独立
  • 要生成文本,需要知道"要生成多少个token",然后一次性预测所有位置——这不现实
  • GPT的自回归生成每次只预测一个token,天然适合生成任务

3. 训练目标的区别

架构训练目标输入输出注意力类型
Encoder-Decoder条件生成源序列目标序列Encoder双向,Decoder单向
Encoder-onlyMasked LM带mask的序列重建原序列双向
Decoder-onlyNext token prediction前缀下一个token单向(因果)

三种架构的数据流对比

为什么Decoder-only在通用语言建模中胜出?

1. 训练目标的统一性

Encoder-Decoder的问题

  • 需要成对的数据(源序列 → 目标序列)
  • 机器翻译有这样的数据(英语 → 法语)
  • 但通用语言建模没有明确的"源"和"目标"

Decoder-only的优势

  • 训练目标统一:next token prediction
  • 任何文本都可以用:给定前缀,预测下一个token
  • 互联网文本是连续的,天然适合自回归训练

GPT-2论文的选择(Radford et al., 2019):

GPT-2选择Decoder-only架构,核心理由是:语言建模任务本身是自回归的(给定前缀预测下一个token),Decoder-only的因果mask天然匹配这个任务。

数学表达

Decoder-only的训练目标:
L = − ∑ i = 1 n log ⁡ P ( x i ∣ x 1 , . . . , x i − 1 ) \mathcal{L} = -\sum_{i=1}^n \log P(x_i | x_1, ..., x_{i-1})L=i=1nlogP(xix1,...,xi1)

这个目标可以应用于任何文本,不需要成对数据。

2. 架构的简洁性

Encoder-Decoder的复杂性

  • 两个子网络:Encoder + Decoder
  • 三种Attention:Encoder Self-Attention、Decoder Masked Self-Attention、Cross-Attention
  • 参数分布不均:Encoder和Decoder的参数量需要平衡

Decoder-only的简洁性

  • 一个子网络:只有Decoder
  • 一种Attention:Masked Self-Attention
  • 参数分布均匀:所有层都是相同的结构

参数量对比(假设d m o d e l = 512 , d f f = 2048 , N = 6 d_{model}=512, d_{ff}=2048, N=6dmodel=512,dff=2048,N=6):

架构Encoder参数Decoder参数总参数
Encoder-Decoder~30M~30M~60M
Decoder-only0~60M~60M

Decoder-only把所有参数都用在生成上,没有"浪费"在编码上。

3. 扩展性

Encoder-Decoder的扩展困难

  • Cross-Attention的计算成本:每个Decoder层都要访问完整的Encoder输出
  • 内存占用:需要存储Encoder的输出(n × d m o d e l n \times d_{model}n×dmodel
  • 训练不平衡:Encoder和Decoder的梯度流不同

Decoder-only的扩展优势

  • 只有一种层:容易堆叠到96层(GPT-3)、120层(GPT-4)
  • 没有Cross-Attention:减少计算和内存开销
  • 训练稳定:所有层的结构相同,梯度流一致

GPT系列的参数量演进

模型层数参数量架构
GPT-112117MDecoder-only
GPT-2481.5BDecoder-only
GPT-396175BDecoder-only
GPT-4?~1.8T (MoE)Decoder-only + MoE

从117M扩展到1.8T,架构没有本质变化。

4. 推理效率

Encoder-Decoder的推理流程

  1. Encoder前向传播:处理输入序列
  2. Decoder自回归生成:每次生成一个token
  3. 每次生成都要访问Encoder输出(Cross-Attention)

Decoder-only的推理流程

  1. 自回归生成:每次生成一个token
  2. 只需要访问之前生成的token(KV Cache)

推理成本对比(生成m mm个token):

架构Encoder成本Decoder成本总成本
Encoder-DecoderO ( n 2 d ) O(n^2 d)O(n2d)O ( m ⋅ ( n + m ) ⋅ d ) O(m \cdot (n + m) \cdot d)O(m(n+m)d)O ( n 2 d + m ⋅ ( n + m ) ⋅ d ) O(n^2 d + m \cdot (n + m) \cdot d)O(n2d+m(n+m)d)
Decoder-only0O ( ( n + m ) 2 d ) O((n + m)^2 d)O((n+m)2d)O ( ( n + m ) 2 d ) O((n + m)^2 d)O((n+m)2d)

:这是理论上界(假设每次生成都重新计算全部序列)。实践中使用KV Cache,解码阶段每步只计算新token对历史的attention,总成本为O ( n 2 d + m ⋅ n ⋅ d ) O(n^2 d + m \cdot n \cdot d)O(n2d+mnd),大幅降低。详见第11章。

m mm很大时(长文本生成),Decoder-only更高效。

Encoder-Decoder并没有死

关键洞察:这不是"Encoder死了",而是任务决定架构

Encoder-Decoder仍然是最优选择的领域

1. 机器翻译

为什么Encoder-Decoder更好

  • Cross-Attention直接建模源语言和目标语言的对齐关系
  • Encoder可以双向理解源语言(不需要因果mask)
  • 在WMT等翻译任务上,Encoder-Decoder仍然是SOTA

数据支撑(WMT’14 EN-DE):

  • 原论文Transformer(Encoder-Decoder):BLEU 28.4
  • GPT-3(Decoder-only,zero-shot):BLEU ~20
  • 专门的翻译模型(Encoder-Decoder):BLEU 30+
2. 语音识别

为什么Encoder-Decoder更好

  • 需要将音频特征对齐到文本
  • Encoder处理音频(连续信号),Decoder生成文本(离散token)
  • Cross-Attention建模音频-文本对齐

代表模型

  • Whisper(OpenAI, 2022):Encoder-Decoder架构,1.5B参数
  • 在多语言语音识别上达到SOTA
3. 多模态模型

为什么Encoder-Decoder更好

  • 需要融合不同模态的信息(视觉 + 语言)
  • 视觉Encoder处理图像,语言Decoder生成文本
  • Cross-Attention建模视觉-语言对齐

代表模型

  • Flamingo(DeepMind, 2022):视觉Encoder + 语言Decoder
  • LLaVA(2023):CLIP视觉Encoder + LLaMA语言Decoder
4. 文档理解

为什么Encoder-Decoder更好

  • 需要理解结构化文档(表格、布局)
  • Encoder处理文档结构,Decoder生成答案
  • Cross-Attention建模文档-答案对齐

代表模型

  • LayoutLM(Microsoft, 2020):Encoder-Decoder架构

各大模型的架构选择

模型架构参数量为什么选择这个架构
GPT-3/4Decoder-only175B / ~1.8T统一的自回归训练,易扩展
ClaudeDecoder-only?主打长上下文和安全性
GeminiDecoder-only?原生多模态(但语言部分是Decoder-only)
LLaMADecoder-only7B-70B开源,通用语言建模
WhisperEncoder-Decoder1.5B语音识别需要显式对齐
T5Encoder-Decoder11B统一的text-to-text框架

2026年的批判性视角

1. Decoder-only的局限

问题1:双向理解能力

  • Decoder-only只能单向看(因果mask)
  • 对于需要双向理解的任务(如填空、纠错),不如Encoder-only

解决方案

  • 用更大的上下文窗口弥补
  • 用prompt engineering引导模型"回看"

问题2:推理成本

  • Decoder-only的推理成本是O ( n 2 ) O(n^2)O(n2)
  • 长文本生成时,KV Cache占用大量内存

解决方案

  • KV Cache压缩(MQA、GQA)
  • Sparse Attention
  • MoE(第10章)

2. Encoder-Decoder的复兴?

T5的尝试(2019):

  • 统一的text-to-text框架
  • 所有任务都转化为"输入文本 → 输出文本"
  • 在某些任务上超过Decoder-only

为什么没有流行

  1. 扩展困难:Encoder-Decoder的Cross-Attention在扩展到175B时成为瓶颈
  2. 竞争压力:GPT-3(175B,2020)的出现展示了Decoder-only的扩展潜力
  3. 任务匹配:通用语言建模(对话、代码生成)天然适合自回归,不需要显式的"输入-输出"对齐

结论:Encoder-Decoder在特定任务上仍然有优势,但在通用语言建模上,Decoder-only是更好的选择。

3. 架构选择的权衡

Decoder-only的优势领域

  • 通用语言建模:对话、代码生成、创意写作
  • 训练数据丰富:互联网文本
  • 易扩展:从117M到1.8T

Encoder-Decoder的优势领域

  • 需要显式对齐的任务:翻译、语音识别
  • 需要双向理解的任务:文档理解
  • 多模态任务:视觉-语言

关键洞察

  • 不是"哪个架构更好",而是"哪个架构更适合这个任务"
  • Decoder-only在通用语言建模中胜出,是因为任务的性质(连续文本、自回归生成)
  • Encoder-Decoder在需要显式对齐的任务上仍然是最优选择

面试追问清单

⭐ 基础必会

  1. Encoder-Decoder、Encoder-only、Decoder-only的区别是什么?

    • 提示:注意力类型、训练目标
  2. 为什么GPT选择Decoder-only而不是Encoder-Decoder?

    • 提示:训练目标统一、架构简洁
  3. BERT和GPT的训练目标有什么区别?

    • 提示:Masked LM vs Next token prediction

⭐⭐ 进阶思考

  1. Decoder-only在推理时比Encoder-Decoder更高效吗?

    • 提示:取决于生成长度m mm和输入长度n nn
  2. 为什么Whisper(语音识别)用Encoder-Decoder而不是Decoder-only?

    • 提示:音频-文本对齐、双向理解音频
  3. 如果让你设计一个多模态模型(图像 → 文本),你会选择什么架构?

    • 提示:视觉Encoder + 语言Decoder

⭐⭐⭐ 专家领域

  1. Decoder-only能否用于机器翻译?效果如何?

    • 提示:可以,但不如Encoder-Decoder(BLEU差距)
  2. T5的text-to-text框架为什么没有流行?

    • 提示:训练成本、推理成本、在通用语言建模上不如Decoder-only
  3. 如何用Decoder-only实现双向理解?

    • 提示:更大的上下文窗口、prompt engineering、prefix LM

下一章预告:第10章将深入拆解MoE架构,回答"DeepSeek V3如何用671B参数达到GPT-4的效果,但推理成本只有1/10?"

论文原文传送门

  • Transformer原论文:https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
  • GPT-1论文:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf
  • BERT论文:https://arxiv.org/abs/1810.04805
http://www.jsqmd.com/news/737747/

相关文章:

  • TrueNAS SCALE存储池避坑指南:从RAIDZ选择到SSD缓存,我的12块硬盘配置心得
  • 初创团队如何借助 Taotoken 实现多模型 API 的成本精细化管理
  • 4.k8s部署zipkin
  • AI代理安全密码管理:AgentPassVault架构设计与实战部署
  • 技能化框架设计:从插件化架构到自动化任务编排
  • 拆解一个真实的医院HIS系统:从挂号到药房,看SpringBoot如何支撑核心医疗业务
  • 3M GROTE VHB胶带的自我革命 上海普轩电子科技革命的工具 - 自动化老兵
  • [AI生成] IPVS性能高于iptables原因
  • 终极实战:将闲置电视盒子变身高性能Armbian服务器完全指南
  • markdown公式中按需编号
  • G-Helper:让华硕笔记本告别Armoury Crate的轻量级控制方案
  • Windows音频路由神器:Audio Router实现多程序音频智能分流指南
  • 2026小程序开发服务商盘点:技术深度与业务适配性成选型关键
  • 5.k8s部署sentinel
  • 别再写 `int rand = 0;` 了!C++命名空间实战避坑指南(从冲突到优雅解决)
  • k8s部署nacos单机版
  • ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本散热更智能安静
  • Vision Mamba项目实战:用PyCharm+AutoDL调试Mamba SSM核心模块(附调试代码片段)
  • 微信聊天记录永久备份终极指南:免费开源工具WeChatExporter完整解决方案
  • 2026年4月273*8钢制袖阀管源头厂家推荐,根管/超前根管/无缝根管/隧道根管/边坡支护土钉,钢制袖阀管生产厂家推荐 - 品牌推荐师
  • 浏览器Canvas渲染劫持与文档批量下载性能优化:kill-doc架构设计与实现原理深度解析
  • 面试官最爱问的跨时钟域问题:从单bit握手到异步FIFO深度计算,一次讲透
  • 微软生成式AI入门课程实战指南:从环境配置到RAG应用开发
  • 基于LangChain.js与Azure Serverless构建智能聊天应用实战指南
  • 不止于RGB:深入‘同色异谱’与CIE XYZ,为你揭开色彩科学在数字产品中的隐藏逻辑
  • Hitboxer:游戏键盘冲突终极解决方案,四种模式提升操作精度
  • 别再乱放了!Android系统应用预装,/system/priv-app和/system/app到底怎么选?(附实战测试结果)
  • NCM文件解密技术深度解析:纯C语言实现的音乐格式转换引擎
  • 切实有效的RAG文本分块:语义分割、上下文重叠与评估驱动调优
  • 别再只用Gazebo了!用ADAMS 2020和Solidworks给你的机器人做个‘全身CT’(附四旋翼模型)