Attention→K3 三十天课 · Day 13 / 30 课程首页 面试视角 自测题
Day 13 · 完整层架构组装

FFN、残差与 LayerNorm:一个 Transformer 块的完整生命周期

很多初学者以为 Transformer 只有自注意力。但如果你把模型里的参数切开看,自注意力只占了约 1/3 的参数,剩下约 2/3 的参数全在 FFN(前馈网络)里!今天我们把注意力、残差连接(Residual Connection)、LayerNorm 和 FFN 组装成一个完整的标准 Transformer 块,看懂每个部件到底在各司何职。

学完你能回答
自注意力只管通信,真正的「知识」存在哪?
学完你能回答
残差连接是如何让梯度畅通无阻的?
学完你能回答
2017 原版的 Post-LayerNorm 埋下了什么暗坑?

1起点:这些你早就会了

一个完整的 Transformer 层,分工极其明确:

你已经会的AI 世界里对应的东西
小组讨论与个人消化:先跟同学对笔记,再回座位独立刷题MHA 与 FFN 的交替:多头注意力负责跨 token 通信,FFN 负责单 token 知识加工
高速公路高架桥:地面修路堵车,高架桥一路畅通直达残差连接(x + f(x)):让输入信号和反向梯度无损直达深层
考试标准分(Z-Score):减去均值除以标准差,消除难度波动LayerNorm 归一化:把每个 token 的特征拉回到标准正态分布
四倍扩容:先把零件拆散到大桌子上加工,再拼回原样FFN 中间升维:维度从 512 升到 2048,经过 ReLU 后降回 512
先洗手再吃饭,还是先吃饭再洗手:顺序换了,结果完全不同Pre-LN 与 Post-LN:LayerNorm 放在子层前还是残差相加后,深层训练的稳定性天差地别

2FFN:每个 token 的独立知识加工厂

自注意力解决了「token 与 token 之间的联系」,但注意:自注意力本身不改变每个 token 的独立知识深度。真正的知识沉淀与非线性变换,发生在紧随其后的逐位置前馈网络(Position-wise FFN)中。

FFN(x) = max(0, xW₁ + b₁)W₂ + b₂

• 输入维度:d_model = 512;
• 中间隐层维度:d_ff = 2048(整整放大了 4 倍!);
• 经过 ReLU 非线性激活后,再用 W₂ 投射回 512 维。

前沿研究视角:知识的键值对存储库(Key-Value Memory)
现代大模型可解释性研究(如 Geva 等人)发现:FFN 层的本质就是一个巨大的外挂百科词典!
• 第一层矩阵 W₁ 像是在查字典(检索「法国的首都是什么?」);
• 激活函数过滤出最相关的条目;
• 第二层矩阵 W₂ 把知识写回特征向量(输出「巴黎」)。
大模型脑子里背下来的海量事实知识(如历史年份、科学常识、语法规则),绝大部分都死死烙印在 FFN 的权重矩阵里!

严格来说,「FFN 是知识存储库」是可解释性研究提出的一种解读,并非学界定论;FFN 更稳妥的定义是「对每个位置独立施加的非线性变换」,知识具体怎么存在里面,目前仍在研究中。

3残差连接:加性累积与梯度直通车

在 2015 年何恺明提出 ResNet 之前,深度神经网络堆叠到十几层就会发生梯度消失而彻底崩溃。Transformer 深度能轻松叠到几十甚至上百层,全靠残差连接(Residual Connection)。

核心类比:加性修改而非重画画布
残差连接的公式只有两个字母:x + SubLayer(x)。

• 没有残差:每一层都要从零重新画一张全新的画。只要其中一层画坏了,整张画就毁了;反向传播求导是连乘链条 ∏W,极易梯度爆炸或归零。
• 有了残差:主画布 x 顺着高速直通线一直向前传,当前层 SubLayer(x) 只需要负责在上面轻微修改增补一笔(加法累积)。

反向传播求导时:∂(x + f(x))/∂x = 1 + ∂f(x)/∂x。即使 f(x) 的梯度算没了,前面那个坚挺的 +1 也能保证梯度无损倒灌回最浅层!

严格来说,残差连接保住的是梯度的「直达通路」,并不改变子层内部的计算;极深网络要训得稳,还得靠 LayerNorm、合适的学习率等一起配合,残差不是一劳永逸的万能药。
标准 Transformer 块的完整内部拓扑:MHA、FFN、残差直通线与 LayerNorm 输入通过残差分支直通加法节点,主分支经过多头注意力和 FFN,两处均有 Add and Norm 标准 Transformer 层(Layer)内部拓扑 子层 1:多头自注意力 + 残差 Multi-Head Attn 残差跳连 (Identity: +x) Add & Norm 子层 2:前馈网络 (FFN) + 残差 FFN (4x 升维) 残差跳连 (Identity: +x) Add & Norm
图 13.1:一个标准 Transformer 块的双子层结构。每个子层都紧密配合「残差直通 + LayerNorm 归一化」两件套。

4LayerNorm:每个 token 的动态标准分

随着网络加深,各层输出的数值可能越来越大或漂移不定。Layer Normalization(层归一化)在每个 token 自身的 512 个特征维度上独立计算均值 μ 和方差 σ²:

LayerNorm(x) = ((x − μ) / √(σ² + ε)) ⊙ γ + β

把特征拉回均值为 0、方差为 1 的平稳分布,再通过可学习参数 γ(缩放)和 β(平移)恢复模型的表达弹性。

52017 原版的暗坑:Post-LayerNorm(伏笔)

在 2017 年原版论文中,作者把 LayerNorm 放在了残差相加的后面(即 LayerNorm(x + SubLayer(x))),这在历史上被称为 Post-LN。

为什么 Post-LN 后来被淘汰了? 在深层网络中,Post-LN 会让最靠近输出的顶层梯度极大,而最底层的梯度极小,导致模型非常难收敛,训练时必须小心翼翼地配置极长的 Warmup(学习率预热),否则前几步就会发生数值溢出崩溃!

这也为后来整个 AI 工业界全面转向 Pre-LN 以及 Kimi K3 采用的 RMSNorm 埋下了决定性的伏笔(第 3 周 Day 15 深度拆解)。

6面试视角

面试视角 · 高频考点
面试官可能会问:「Transformer 里的 FFN 起什么作用?LayerNorm 和 BatchNorm 有什么区别?」
八股答「FFN 提供非线性变换,先升维到 4 倍再降维。BatchNorm 是在 batch 维度算均值方差,LayerNorm 是在单个样本的通道特征维度算,NLP 里因为序列长度不固定,所以必须用 LayerNorm。」——回答很标准,若能补充 FFN 知识存储视角更佳。
本课答「核心是两点:① FFN 的定位:自注意力主要负责跨 token 的全局动态路由与上下文混合,而 FFN 负责对每个 token 进行独立的深度非线性特征变换与世界知识记忆(扮演 Key-Value Memory 的角色),参数量占全层约 2/3;② LayerNorm 的必然性:CV 图像常用 BatchNorm,是因为图片尺寸固定且依赖批次统计;而 NLP 中文本序列长度变化大且存在因果填充,若跨样本沿 Batch 归一化会引入填充污染与显存抖动,LayerNorm 仅在单个 token 内部的特征维度计算 μ 和 σ,完全不依赖 batch size 和序列长度,推理单样本时行为完全一致。」

7映射到原文:Attention 论文 §3.3

论文原文对照 · 《Attention Is All You Need》§3.3 前馈网络
“In addition to attention sub-layers, each of the layers in our encoder and decoder contains a fully connected feed-forward network, which is applied to each position separately and identically. This consists of two linear transformations with a ReLU activation in between: FFN(x) = max(0, xW1 + b1)W2 + b2.”

逐词翻译:「除了注意力子层之外,我们编码器和解码器中的每一层都包含一个全连接前馈网络,该网络分别且相同地应用于每个位置。它由两次线性变换组成,中间带有 ReLU 激活函数:FFN(x) = max(0, xW₁ + b₁)W₂ + b₂。」

4x
FFN 隐层维度的膨胀倍数(2048/512)
~67%
FFN 在标准 Transformer 层中的参数占比(按论文 base 配置估算)
1 + f'(x)
残差连接给反向传播提供的梯度保底项
Post-LN
2017 原版采用的归一化拓扑(后被淘汰)

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

Q1 在一个 Transformer 块中,自注意力和 FFN 的分工是什么?
解析:自注意力负责跨 token 的全局信息交换与上下文融合(通信);FFN 负责在每个 token 内部进行非线性特征投影与知识提取(消化与记忆)。
Q2 为什么 FFN 被称为「Position-wise(逐位置)」的?
解析:因为 FFN 是对序列中每一个 token 独立应用相同的参数矩阵 W₁ 和 W₂,token 之间在这一步完全不发生横向交流。
Q3 残差连接公式 x + f(x) 是怎么解决梯度消失的?
解析:求导时 ∂(x + f(x))/∂x = 1 + f′(x)。即使神经网络非线性分支 f′(x) 梯度极小,常数项 1 也能保证梯度无衰减地直接倒灌回前层。
Q4 为什么 NLP 任务用 LayerNorm 而不是 BatchNorm?
解析:BatchNorm 依赖同一个 batch 内多个样本的统计量,而在 NLP 中句子长短不一、填充 padding 较多且推理时常为单样本生成;LayerNorm 在每个 token 内部独立归一化,与 batch 大小和序列长短完全解耦。
Q5 什么是 Post-LN?它有什么缺点?
解析:Post-LN 把 LayerNorm 放在残差相加之后:LN(x + f(x))。深层梯度在顶层被放大、底层被严重缩小,导致训练极其敏感,严重依赖学习率预热(Warmup)。
《从 Attention 到 K3 · 大模型近十年设计演进》30 天课 · Day 13 / 30 · 返回课程首页