返回学习地图
trainingPhase D · 第 26

D1.4 LayerNorm + 残差连接

为什么训练 100 层不崩?

3 个章节·按类别展开/折叠
知识

为什么需要 LayerNorm + 残差

问题:把 100 个 Transformer Block 堆叠,没有残差 + LN,梯度会指数级消失或爆炸(vanishing/exploding gradients)。

LayerNorm(LN):对每个 token 单独做归一化(不依赖 batch)。公式:x_norm = (x - mean) / std * gamma + beta。让每一层输入分布稳定。

残差连接:output = x + Sublayer(LN(x))。梯度可以通过「+」号无损反传(dL/dx = dL/d(x+...) + 1),至少能传 1。

对比

Pre-Norm vs Post-Norm 对比

对比

Post-Norm:LN 在残差之后,原始 Transformer 用。训练需 warmup。

Pre-Norm:LN 在 Sublayer 之前(GPT-2/Llama 用)。训练更稳定,可以不用 warmup,支持深层网络(100+ 层)。

现代 LLM 几乎全用 Pre-Norm,因为:训练稳定、收敛更快、可以去掉 warmup。代价是表示能力略弱,但实测影响不大。

实例

数值例子:残差如何救命

实例

100 层网络,无残差,最末层梯度传到第一层时乘了 100 次 Jacobian,norm 会缩到 1e-100 或涨到 1e100。

加残差后,每层梯度 = 本层梯度 + 1,至少保留 1,不会消失。

类比:电梯 vs 楼梯。电梯有「直降」通道(残差),楼梯要一步步走(无残差)。