Attention→K3 三十天课 · Day 10 / 30 课程首页 面试视角 自测题
Day 10 · 架构演进分水岭

因果掩码与架构分叉:GPT 为什么只留下了一半?

打开 2017 年的 Transformer 论文架构图,映入眼帘的是左右对称的「编码器(Encoder)」和「解码器(Decoder)」。但到了今天,从 GPT-4、Claude 到 DeepSeek、Kimi K3,几乎所有大语言模型全把左半边的编码器扔了,只留下了纯解码器(Decoder-only)。这是怎么发生的?因果掩码在其中扮演了什么魔法?

学完你能回答
2017 原版为什么要有两半?各管什么?
学完你能回答
因果掩码在矩阵里是怎么实现「遮挡未来」的?
学完你能回答
为什么后来的大模型全面倒向 Decoder-only?

1起点:这些你早就会了

架构分叉与掩码机制,本质是「做题姿势」的切换:

你已经会的AI 世界里对应的东西
阅读理解试卷:可以来回反复看全篇材料(双向可见)编码器(Encoder / BERT):无掩码,所有 token 可以双向自由交互
闭卷默写作文:写到当前字,不能偷看后面的字因果掩码解码器(Decoder / GPT):单向因果,只能看上文
数学里的负无穷大:e^(-∞) = 0Masking 矩阵实现:把非法连接的分数设为 -∞,Softmax 后概率严格为 0
边听发言边写纪要:落笔时可以随时回看速记稿交叉注意力(Cross-Attention):Decoder 逐 token 生成时,回头查询 Encoder 整理好的输入表示
一体机设计:把两台机器(翻译机+打字机)合二为一Decoder-only 架构:统一用「单向接龙」包揽理解与生成所有任务

22017 原版的双塔结构:为什么要有两半?

2017 年的这篇论文全名叫《Attention Is All You Need》,但它当初要解决的具体靶子其实是机器翻译(英译德、英译法)。

业务场景:同声传译与听写打字
机器翻译天然分为两半:
1. 编码器(Encoder,左半部):负责「听懂英文输入」。英文原句是整句摆在那里的,所以它可以用双向自注意力,每个 token 可以同时看左边和右边的所有 token,把整句话融会贯通;
2. 解码器(Decoder,右半部):负责「逐个 token 输出德文翻译」。德文是自回归一个 token 一个 token 蹦出来的,所以它必须带因果掩码;同时还要通过交叉注意力(Cross-Attention)去偷看编码器整理好的英文大意。
严格来说(类比的边界):编码器与解码器并不是两台不同的机器——两者由同一类自注意力层堆叠而成,差别只在「能不能看未来」的掩码规则和连接方式;「听懂」与「打字」只是功能分工的比喻,两半内部都是同质的矩阵运算,并没有谁在真正理解语义。

3因果掩码的矩阵实现:下三角阵与 -∞

在矩阵并行计算中,计算机怎么做到「让前面的 token 看不到后面的 token」?秘密就在一个极其精妙的数学技巧:加上一个上三角全是 -∞ 的掩码矩阵。

因果掩码原理:打分矩阵加上负无穷大,Softmax 后右上角未来连接全部归零 左侧为原始打分矩阵,中间为加上负无穷掩码矩阵,右侧为 Softmax 后的下三角概率矩阵 因果掩码(Causal Masking)在矩阵中的工作过程 原始打分 QKᵀ 1.2 3.4 0.8 2.1 0.5 1.9 0.4 1.7 2.2 + 因果掩码 Mask 0 -∞ -∞ 0 0 -∞ 0 0 0 → Softmax 后的权重矩阵(下三角) 100% 0% 0% (只看自己) 83% 17% 0% (看 1 和 2) 9% 34% 56% (看全历史)
图 10.1:因果掩码的实现细节。借助数学性质 e^(-∞) = 0,右上角代表未来的连接在 Softmax 后权重绝对为 0,彻底切断了向未来的信息流动。

4历史的三岔路口:BERT、T5 与 GPT

Transformer 提出后的前三年(2018–2020),AI 工业界经历了激烈的架构派系争夺:

5为什么 Decoder-only 最终一统江湖?

2020 年后,随着 GPT-3、LLaMA、Kimi K3 的相继问世,行业达成终极共识:Decoder-only 赢麻了。原因不是运气,而是底层工程与算法的双重降维打击:

Decoder-only 获胜的三大根本支柱
  1. 预训练目标极致统一:只要在海量无标注互联网文本上做「下一个 token 预测」(Next-Token Prediction),模型就能同时自发学会语法、推理、常识、翻译和编程。不需要区分哪段是输入材料、哪段是输出;
  2. 工程架构极其干净:没有交叉注意力(Cross-Attention)层,全网所有注意力层的结构完全同构,在 GPU 集群上做流水线并行(Pipeline Parallelism)和张量并行(Tensor Parallelism)极易优化;
  3. 推理 KV Cache 管理极简:只需要维护单一一条因果链条的 Key/Value 缓存,极大节省了推理显存和延迟(Day 17 详拆)。

6面试视角

面试视角 · 高频考点
面试官可能会问:「为什么当今主流大语言模型(如 GPT、Claude、K3)几乎全部采用 Decoder-only 架构,而不是 2017 年论文的 Encoder-Decoder?」
八股答「因为 Decoder-only 结构简单,适合做生成任务,而且 Scaling Law(规模定律,Day 22 讲)在 Decoder-only 上表现最好,算力效率最高。」——只给结论,没有说清为什么结构简单能带来算力优势。
本课答「核心在于三点:① 任务范式的泛化统一:Decoder-only 将所有自然语言任务(理解、翻译、问答、代码)统一抽象为单向自回归的 Next-Token 预测,天然适配海量无监督预训练;② 系统工程与分布式并行极简:去掉了 Cross-Attention 异构子层,使所有网络层具有完全同构的计算与通信图谱,能极大降低张量/流水线并行的通信开销;③ KV Cache 内存管理优雅:在长上下文自回归解码时,只需维护单一维度的因果前缀缓存,避免了 Encoder 静态输出与 Decoder 动态生成的跨模块显存碎裂。」

7映射到原文:Attention 论文 §3.1 与 K3 架构

论文原文对照 · 《Attention Is All You Need》§3.1 解码器掩码
“We also modify the self-attention sub-layer in the decoder stack to prevent positions from attending to subsequent positions. This masking, combined with fact that the output embeddings are offset by one position, ensures that the predictions for position i can depend only on the known outputs at positions less than i.”

逐词翻译:「我们修改了解码器堆栈中的自注意力子层,以防止当前位置关注到后续位置。这种掩码配合输出向右偏移一个位置的设计,确保对位置 i 的预测只能依赖于小于 i 的已知输出。」

-∞
因果掩码在矩阵中注入的非法值
e^-∞=0
Softmax 转换后未来位置的实际权重
1
Decoder-only 中唯一的预训练核心目标
0
K3 中 Cross-Attention 跨层注意力的数量

8自测题(先自己答,再点开看解析)

Q1 编码器(Encoder)和解码器(Decoder)的核心区别是什么?
解析:编码器使用无掩码的双向自注意力,每个 token 可以看全句所有位置;解码器使用因果掩码,每个 token 只能看自己和历史位置。
Q2 掩码矩阵为什么要把未来的位置设为 -∞ 而不是 0?
解析:因为掩码是在输入 Softmax 之前加到打分上的。如果设为 0,过 Softmax 后依然有 e^0 = 1 的非零概率;只有设为 -∞,经过 Softmax 才会精准变成 e^(-∞) = 0。
Q3 BERT 属于什么架构?它为什么无法做长文本对话生成?
解析:BERT 属于 Encoder-only 架构。它在预训练时采用双向完形填空(Masked LM),没有因果掩码,缺乏自回归单向生成能力。
Q4 什么是交叉注意力(Cross-Attention)?现代 Decoder-only 模型里还有它吗?
解析:交叉注意力是 Decoder 用自己的 Q 去查询 Encoder 的 K 和 V。在当今纯 Decoder-only 架构(如 GPT-4、K3)中,由于没有独立 Encoder,交叉注意力已被彻底移除。
Q5 用最通俗的话说,Decoder-only 为什么胜过了 Encoder-Decoder?
解析:因为它用最纯粹的「Next-Token 接龙」统一了理解与生成的所有任务,而且模型层完全同构,在工业集群训练和 KV Cache 推理显存管理上极具工程优势。
《从 Attention 到 K3 · 大模型近十年设计演进》30 天课 · Day 10 / 30 · 返回课程首页