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 楼梯。电梯有「直降」通道(残差),楼梯要一步步走(无残差)。