Transformer Block:残差与 LayerNorm 的骨架

02-架构解剖 核心 约 25 分钟 #Block#残差连接#LayerNorm#架构 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),Block 结构建议对照原论文 §3.1 与 GPT-2/Llama 实现复核。

一句话定义

Transformer Block 是堆叠的基本单元:注意力(混合 token 间信息)→ 残差 → FFN(逐 token 加工)→ 残差,每个子层前/后配 LayerNorm(位置由 kp-007 讨论)——残差连接是信息与梯度的高速路,让几十上百层的堆叠成为可能。

为什么重要

Block 是"可复制粘贴"的容量单元:GPT-3 堆 96 层、Llama-2 70B 堆 80 层——堆叠能成立的全部功劳归残差与归一化。理解 Block 内的信息流(注意力混合、FFN 加工、残差保底),就理解了"深度"在 Transformer 中的含义:每过一层,表示被精化一次。

前置知识

kp-002/003(注意力)、残差网络概念(ResNet 的直觉:恒等捷径)。

核心概念

  • Block 公式(Post-LN 原版):

$$x_1=\text{LN}(x+\text{Attn}(x)),\quad x_2=\text{LN}(x_1+\text{FFN}(x_1))$$

  • 残差的两大功能:

1. 梯度高速路:反向传播时梯度可直接流过恒等捷径,缓解深层梯度消失(ResNet 的核心遗产); 2. 增量学习:每个子层学的是"对输入的修正量"(残差)而非全新表示——默认什么都不做(输出≈输入),训练稳定。

  • 注意力的角色:token 间信息混合(空间维度);FFN 的角色:逐 token 独立加工(通道维度,两层 MLP+非线性,kp-008)——"混合-加工"交替是信息精化的节奏。
  • 残差流视角(可解释性):把残差路径视为"信息主干道",每个子层向主干道"读写"信息(加法注入)——可解释性研究(residual stream 框架)的基本图像。
  • 堆叠:L 个 Block 串联,输入嵌入(token emb+位置编码 kp-009)、输出经最终 LayerNorm+投影头(词表 logits)。

原理与机制

为什么残差让深度的含义改变:无残差时,每层是对输入的非线性重写——深层信息被反复"覆盖",梯度经连乘衰减;有残差时,第 L 层输出 = 输入 + Σ(各层修正)——信息是累加的,梯度对恒等项直通(偏导≈1)。深度从"重写深度"变为"修正深度"——百层网络因此可训。

为什么"注意力+FFN"是必要配对:只有注意力则 token 间信息混合但无逐 token 的非线性加工(表达能力受限,理论上有"注意力是低通滤波"的分析);只有 FFN 则 token 互不相通。两者交替=「先开会交换信息,再各自消化」的节奏,缺一不可(消融实验:去 FFN 或去注意力都显著掉点)。

LayerNorm 的角色:稳定各层激活的尺度(均值/方差归一)——深度网络中激活尺度漂移是训练不稳定的来源之一;Pre/Post 位置的差异是 kp-007 的专题。

图示

x ─┬─► LN ► Attn ─┐
   └──────────────+──► h₁   (残差: x + Attn)
h₁ ─┬─► LN ► FFN ─┐
    └─────────────+──► h₂   (残差: h₁ + FFN)
×L 层堆叠 → 最终LN → 词表投影
残差 = 信息主干道 ; 子层 = 向主干道写入修正

直观类比

残差像"文档保留修订痕迹":每一层不重写全文,只在旁边加批注(修正量)——正文永远是"原文+所有批注"的累积,任何一层的信息都可无损追溯。注意力批注是"跨段落引用",FFN 批注是"逐段润色"。

实例或案例

  • 规模对照:GPT-2 small(12 层×768)到 GPT-3(96 层×12288)——同一 Block 模板的纯堆叠。
  • 去残差实验:移除残差的 Transformer 数层内即训不动——残差是深度的开关。
  • 可解释性应用:logit lens(直接读残差流中间状态)——残差流视角的实用产出。

常见误区

  • 误区一:"FFN 与注意力必须这个顺序"。顺序可换(有研究互换仍可训);不变的是"每个子层都带残差+归一化"。
  • 误区二:"残差只是防止梯度消失的小技巧"。它是"增量式表示学习"的结构承诺——影响信息流、可解释性与训练动力的全方位设计。
  • 误区三:"层数越多一定越好"。固定参数预算下深度/宽度有最优配比(缩放定律 kp-015 的分配结论)。

与其他知识点的关系

  • kp-002/003/008:Block 的两个子层。
  • kp-007:归一化位置的专门讨论。
  • kp-013/015:Block 均匀性支撑训练与缩放。

自测题

  1. 写出 Post-LN Block 的公式并指出残差位置。

答:x₁=LN(x+Attn(x));x₂=LN(x₁+FFN(x₁))——残差在 LN 之前相加。

  1. 为什么说残差让"深度=修正深度"?

答:输出=输入+各层修正之和(累加而非重写);信息可无损追溯,梯度经恒等路径直通。

  1. 注意力与 FFN 在 Block 中各自负责什么?

答:注意力做 token 间信息混合(序列维度);FFN 做逐 token 独立非线性加工(通道维度)——混合与加工交替。

延伸阅读

  • He 等, "Deep Residual Learning"(2015,残差源头)。
  • Elhage 等, "Transformer Circuits"(残差流框架)。
  • Xiong 等, "On Layer Normalization in the Transformer Architecture"(2020,Pre/Post-LN,kp-007)。