Attention→K3 三十天课 · Day 14 / 30 课程首页 面试速查 周测验
Day 14 · 第 2 周里程碑复盘

徒手搭出 2017 Transformer,填写设计存活表 v1

恭喜你完成了整门课程最硬核的一周!在过去 6 天里,你把 Transformer 的每一个核心零件——点积注意力、QKV、因果掩码、多头切分、正弦波位置编码、残差连接与 LayerNorm 逐一拆解到了螺丝钉级别。今天我们做两件大事:徒手搭出一台完整的 2017 原版机器,并首次开启我们的镇课之宝——「设计存活表」。

学完你能回答
徒手画出 2017 Transformer 的完整数据流动
学完你能回答
设计存活表 v1:2017 原版有哪些核心设计?
学完你能回答
本周 6 道高频面试题,各用三句话答透「为什么」

1本周串讲:2017 Transformer 完整总装

现在,我们把前 13 天的所有模块组装在一起。一段文字进入 Transformer 到最终吐出一个 token,走完如下全程:

2017 原版 Transformer 完整数据流向总装图 输入文本经 Embedding 和 Positional Encoding 相加,经过 6 层 Encoder,右侧 Target 经过 6 层带因果掩码的 Decoder,最后经 Linear 和 Softmax 输出概率 2017 原版 Transformer 架构全景(《Attention Is All You Need》§3.1) 编码器(Encoder,6 层堆叠) FFN (4x 升维) + 残差 & LN 多头双向自注意力 (MHA, 8头) + 残差 & LN 输入嵌入 (Embedding) + 正弦位置编码 输入:源端英文整句(双向无掩码) K, V 解码器(Decoder,6 层堆叠) FFN + 残差 & LN 交叉注意力 (Cross-Attn) + 残差 & LN 带因果掩码的多头自注意力 (Masked MHA) 输出嵌入 + 正弦位置编码 (PE) 线性层 Linear + Softmax → 预测概率
图 14.1:2017 Transformer 架构总装图。左侧 Encoder 负责全局理解,右侧 Decoder 通过因果掩码自注意力与交叉注意力负责自回归逐 token 生成。
核心类比
这台机器像一座双层面包房:左塔(编码器)把整袋原料一次性看全、揉成面团——这就是「双向理解」;右塔(解码器)一炉一炉地烤面包,每烤新的一炉只能参考已经出炉的——这就是因果掩码;两座塔之间还有一条传送带,把左塔揉好的面团(K、V)送进右塔每一层——这就是交叉注意力。
严格来说:面包房像是「左边做完、右边开工」,真实机器却不是——训练时两座塔同时并行运转,解码器参考的是已生成的 token 序列,不是可以回头翻找的实体面包;而且每座塔内部是 6 层完全相同的子层堆叠,不是一道工序。
第 2 周里程碑达成检查:如果你能不看书画出图 14.1 的数据流——输入嵌入 + 位置编码 → 6 层编码器 → K/V 传送带 → 6 层带掩码解码器 → Linear + Softmax 输出概率,并且讲清每一步「为什么要有」,第 2 周就算毕业了。

2独家记忆点:设计存活表 v1(2017 原版状态)

现在,我们正式填下整门课程最重要的一张总表——「近十年大模型设计存活表」的第 1 列。请盯紧这张表里的每一个名字,因为在接下来的第 3 周(Day 15–21),这里的几乎每一个设计都将被革命性地推翻或重构:

模块部件 2017 原版(本周所学) 近十年接力改进(下周剧透) 2026 K3 的终极选择
注意力机制 全量缩放点积 (MHA) MQA → GQA → 线性化 KDA + Gated MLA (3:1双轨)
位置信息 正弦绝对位置编码 相对位置 → RoPE NoPE(衰减隐式编码)
归一化 Post-LayerNorm Pre-LN → RMSNorm RMSNorm(含 LatentMoE 插入)
前馈网络 单路密集 FFN MoE(1991思想复兴) Stable LatentMoE (896选16)
层间连接 标准残差 (x + f(x)) (长期无人改动) AttnRes 块级注意力残差
架构形态 Encoder-Decoder Decoder-only(GPT 系列统一) Decoder-only 原生多模态

3映射到原文:论文 §3.1 说的就是这张图

图 14.1 不是我们编的示意图——它就是《Attention Is All You Need》图 1 的中文重画版。论文 §3.1(编码器与解码器堆栈)里这句话,说的正是今天的总装:

论文原文(§3.1 编码器与解码器堆栈)
「Transformer 沿用了这一整体架构,编码器和解码器均采用堆叠的自注意力层和逐位置全连接层,分别对应图 1 的左半部分和右半部分。」

逐词翻译:

  • 「沿用了这一整体架构」:指上一句说的编码器-解码器结构——2017 年的 Transformer 并没有发明两塔形态,它沿用了当时序列转导模型的标准结构;后来 GPT 系列砍掉左塔的 Decoder-only,是 D10 讲的后话。
  • 「堆叠的自注意力层」:就是 D9–D11 拆过的多头自注意力——同样的层,原样叠 6 次(论文写作 N = 6)。
  • 「逐位置全连接层」:D13 讲的 FFN——对每个位置的 token 独立地做同一套升维-降维变换,不看左右邻居。
  • 「图 1 的左半部分和右半部分」:左半 = 编码器 6 层,右半 = 解码器 6 层加交叉注意力——正是图 14.1 的两座塔。
6 层
编码器/解码器各堆叠
N = 6(论文配置,§3.1)
512
d_model 全层统一宽度
(论文配置,§3.1)
8 头
多头注意力 h = 8
(论文配置,§3.2.2)
10000
正弦位置编码波长基数
(论文配置,§3.5)

4第 2 周面试题速查(D8–D13 核心 6 题)

本周 6 天的核心面试题浓缩卡,随身查阅:

D8 · 为什么 Transformer 颠覆了 RNN?核心赢在哪?
八股背诵:RNN 有长程遗忘且不能并行,Transformer 靠自注意力实现了全局交互和并行加速。
深刻回答:核心是两笔账:① 硬件吞吐账:RNN 的时间步依赖锁死了 GPU 并行,Transformer 将时序展开为矩阵内积,训练时间步复杂度降为 O(1),完美吃满 GPU 矩阵算力;② 信息路径账:将任意两个 token 之间的信息路径从 O(n) 缩短为 O(1),彻底消除长程梯度衰减。
D9 · 缩放点积注意力为什么要除以 √dₖ?
八股背诵:防止点积过大导致 Softmax 梯度消失。
深刻回答:独立同分布下向量内积方差会随维度 dₖ 线性膨胀。除以 √dₖ 将方差标准化回 1,避免极大点积将 Softmax 推入两端导数近乎为 0 的平坦饱和区,保护反向传播梯度。
D10 · 为什么大模型全面倒向 Decoder-only,放弃了 Encoder-Decoder?
八股背诵:Decoder-only 结构简单,Scaling Law 效果最好。
深刻回答:① 任务范式大一统:将一切理解与生成任务统一为无监督 Next-Token 接龙;② 分布式并行极简:剔除 Cross-Attention 异构子层,网络拓扑完全同构,极大降低流水线与张量并行通信开销;③ KV Cache 管理优雅:长上下文自回归生成时显存不发生跨层碎裂。
D11 · Multi-Head Attention 的本质优势是什么?头越多越好吗?
八股背诵:在不同子空间联合关注不同位置信息。单头会平均化。头数过多会导致每个头太小。
深刻回答:在总维度 h · dₖ = d_model 保持算力绝对守恒的前提下,将特征拆分到多个独立投影空间,避免单一权重加权平均造成的语义/语法特征混淆;但头数过多(如 32 头 16 维)会导致单头内积空间过窄、表征能力下降。
D12 · 为什么 Transformer 需要位置编码?2017 原版正弦编码有什么局限?
八股背诵:自注意力是置换不变的。正弦编码用多频三角函数表示相对位置,局限是外推性差。
深刻回答:纯注意力是无序集合计算,必须引入位置破除对称性。2017 版利用三角和差化积构造线性相对距离表示,但直接加在 Embedding 上导致位置信号在深层被稀释,且面对未见长度无法有效泛化,催生了后续在 Q/K 上旋转的 RoPE。
D13 · FFN 在 Transformer 块中扮演什么角色?LayerNorm 为什么优于 BatchNorm?
八股背诵:FFN 负责非线性变换和 4 倍升维。LayerNorm 沿特征维度归一化,适合变长文本。
深刻回答:自注意力仅负责跨 token 动态信息路由,FFN 承担了约 2/3 参数量,扮演知识沉淀与 Key-Value 记忆库角色;LayerNorm 仅在单个 token 内部计算统计量,完全与批次大小解耦,避免了变长文本 padding 带来的批次统计污染与推理单样本时的行为漂移。

5第 2 周测验:10 题综合验收

Q1 简述 RNN 串行递推与 Transformer 矩阵并行的根本区别。
解析:RNN 的当前时间步依赖前一步的隐状态,导致时间步上必须串行排队;Transformer 通过自注意力矩阵把所有位置的交互解绑为全矩阵乘法,单步耗时为 O(1),能跑满 GPU 所有并行核心。
Q2 在注意力打分中,Q、K、V 三个矩阵分别起到什么作用?
解析:Q(Query)代表查询诉求,K(Key)代表索引特征,V(Value)代表实际承载的信息内容。Q 和 K 点积算权重,按照权重提取并混合 V。
Q3 为什么自回归生成式模型必须带有因果掩码(Causal Mask)?
解析:因为物理因果律——生成当前位置 token 时,未来的 token 尚未诞生;如果不加掩码遮挡未来,就会发生信息泄露,模型无法学会真实世界的自回归推理。
Q4 为什么因果掩码要在打分矩阵上加上 -∞?
解析:因为在经过 Softmax 指数运算时,e⁻∞ = 0,能精准将未来非法连接的注意力权重归零,彻底切断反向梯度的未来反扑。
Q5 Base 模型中 d_model = 512、h = 8,请问为什么 8 个头的总计算量和 1 个 512 维单头几乎相同?
解析:因为每个头的维度缩减为 dₖ = 512/8 = 64。计算量公式为 h × (n · dₖ · n) = (h · dₖ) · n² = 512 · n²,在代数上完全守恒。
Q6 什么是注意力的「置换不变性(Permutation Invariance)」?如何破除它?
解析:如果不加位置信息,打乱输入句子的语序,自注意力输出的集合完全不变。通过向输入向量中叠加位置编码(Positional Encoding)来注入物理空间顺序。
Q7 2017 正弦位置编码中,为什么要采用从 2π 到 10000 · 2π 几何递增的多频率波长?
解析:高频短波长剧烈震荡,负责捕捉相邻近距离语序;低频长波长缓慢变化,负责标识文章宏观全局位置,并通过三角和差化积性质线性表达相对偏移。
Q8 残差连接公式 x + f(x) 中的 +x 对反向传播梯度的最大贡献是什么?
解析:求导后产生恒定的保底项 +1(∂(x + f(x))/∂x = 1 + f′(x)),彻底打通了一条无衰减直通前层的梯度高速公路,解决了深层网络梯度消失问题。
Q9 为什么大模型中的海量事实知识主要存储在 FFN 层而不是注意力层?
解析:注意力层主要负责动态计算当前序列中 token 之间的路由权重;FFN 占了全模型约 2/3 参数量,其升维-降维矩阵扮演了静态知识的 Key-Value 记忆库角色。
Q10 什么是 2017 原版的 Post-LN?为什么现代大模型都抛弃了它?
解析:Post-LN 把 LayerNorm 放在残差相加之后:LN(x + f(x))。深层网络中顶层梯度过大、浅层梯度过小,极易训练崩溃且严重依赖 Warmup,后来被 Pre-LN 和 RMSNorm 取代。

6下周预告:近十年改进接力(每个部件为什么被换掉)

第 2 周我们掌握了 2017 年的原版 Transformer。但在过去的近十年里,这个架构经历了一场波澜壮阔的「全面升级改造」:

《从 Attention 到 K3 · 大模型近十年设计演进》30 天课 · Day 14 / 30 · 返回课程首页