很多初学者以为 Transformer 只有自注意力。但如果你把模型里的参数切开看,自注意力只占了约 1/3 的参数,剩下约 2/3 的参数全在 FFN(前馈网络)里!今天我们把注意力、残差连接(Residual Connection)、LayerNorm 和 FFN 组装成一个完整的标准 Transformer 块,看懂每个部件到底在各司何职。
一个完整的 Transformer 层,分工极其明确:
| 你已经会的 | AI 世界里对应的东西 |
|---|---|
| 小组讨论与个人消化:先跟同学对笔记,再回座位独立刷题 | MHA 与 FFN 的交替:多头注意力负责跨 token 通信,FFN 负责单 token 知识加工 |
| 高速公路高架桥:地面修路堵车,高架桥一路畅通直达 | 残差连接(x + f(x)):让输入信号和反向梯度无损直达深层 |
| 考试标准分(Z-Score):减去均值除以标准差,消除难度波动 | LayerNorm 归一化:把每个 token 的特征拉回到标准正态分布 |
| 四倍扩容:先把零件拆散到大桌子上加工,再拼回原样 | FFN 中间升维:维度从 512 升到 2048,经过 ReLU 后降回 512 |
| 先洗手再吃饭,还是先吃饭再洗手:顺序换了,结果完全不同 | Pre-LN 与 Post-LN:LayerNorm 放在子层前还是残差相加后,深层训练的稳定性天差地别 |
自注意力解决了「token 与 token 之间的联系」,但注意:自注意力本身不改变每个 token 的独立知识深度。真正的知识沉淀与非线性变换,发生在紧随其后的逐位置前馈网络(Position-wise FFN)中。
FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
• 输入维度:d_model = 512;
• 中间隐层维度:d_ff = 2048(整整放大了 4 倍!);
• 经过 ReLU 非线性激活后,再用 W₂ 投射回 512 维。
W₁ 像是在查字典(检索「法国的首都是什么?」);
W₂ 把知识写回特征向量(输出「巴黎」)。
在 2015 年何恺明提出 ResNet 之前,深度神经网络堆叠到十几层就会发生梯度消失而彻底崩溃。Transformer 深度能轻松叠到几十甚至上百层,全靠残差连接(Residual Connection)。
x + SubLayer(x)。
∏W,极易梯度爆炸或归零。
x 顺着高速直通线一直向前传,当前层 SubLayer(x) 只需要负责在上面轻微修改增补一笔(加法累积)。
∂(x + f(x))/∂x = 1 + ∂f(x)/∂x。即使 f(x) 的梯度算没了,前面那个坚挺的 +1 也能保证梯度无损倒灌回最浅层!
随着网络加深,各层输出的数值可能越来越大或漂移不定。Layer Normalization(层归一化)在每个 token 自身的 512 个特征维度上独立计算均值 μ 和方差 σ²:
LayerNorm(x) = ((x − μ) / √(σ² + ε)) ⊙ γ + β
把特征拉回均值为 0、方差为 1 的平稳分布,再通过可学习参数 γ(缩放)和 β(平移)恢复模型的表达弹性。
在 2017 年原版论文中,作者把 LayerNorm 放在了残差相加的后面(即 LayerNorm(x + SubLayer(x))),这在历史上被称为 Post-LN。
逐词翻译:「除了注意力子层之外,我们编码器和解码器中的每一层都包含一个全连接前馈网络,该网络分别且相同地应用于每个位置。它由两次线性变换组成,中间带有 ReLU 激活函数:FFN(x) = max(0, xW₁ + b₁)W₂ + b₂。」
W₁ 和 W₂,token 之间在这一步完全不发生横向交流。x + f(x) 是怎么解决梯度消失的?∂(x + f(x))/∂x = 1 + f′(x)。即使神经网络非线性分支 f′(x) 梯度极小,常数项 1 也能保证梯度无衰减地直接倒灌回前层。LN(x + f(x))。深层梯度在顶层被放大、底层被严重缩小,导致训练极其敏感,严重依赖学习率预热(Warmup)。