pre-LN 和 post-LN 的利弊已经被前两篇拆清楚了:前者梯度通、范数胀、有效深度不足;后者输出有界、梯度被投影吃掉。这两个点之间不是空白,2021 年之后出现了一批"中间态"方案,改动的全部是同一个东西——归一化 op 在残差块里的位置。这篇文章按改动量从小到大梳理三个代表:sandwich LN、peri-LN、ResiDual。
问题的统一表述
先把各种变体要优化的目标写成一个式子。一个残差块里归一化的摆放决定了两件事的量级:主干梯度回传的收缩因子,和分支贡献在累加向量中的占比(即有效深度)。pre-LN 把前者优化到 1,后者随深度衰减到 $O(1/\sqrt{l})$;post-LN 把后者保持在 $O(1)$,前者指数收缩。所有变体的努力方向都是:让两个量同时接近理想值。
Sandwich LN:前后都放
改法最直接:每个残差块在 pre-LN 的基础上,分支输出回加之前再过一次归一——$x_{l+1} = \mathrm{LN}(x_l + f_l(\mathrm{LN}(x_l)))$。Ding et al.(2021)提出,动机来自对 pre-LN 的一个观察:分支输出直接以原始尺度累加进主干,第 $l$ 层的贡献范数相对存量是 $O(1/\sqrt{l})$,深度利用率因此不足;给分支输出套一个 LN(后一个 LN 无仿射参数),累加进来的增量被归一到单位范数,深层贡献不再被膨胀的存量淹没。
梯度账:主干梯度多穿一个投影 $J$。Ding 的分析显示这个投影对主干通路的伤害远小于 post-LN——因为 sandwich 的第二个 LN 只作用在分支输出上,$x_l$ 本身不穿过它,主干梯度是沿 $x_l$ 方向的分量为主,而投影面 $\hat u$ 与 $x_l$ 方向并不对齐($u=x_l+f$ 里 $f$ 已单独归一),方向失配的惩罚 $c$ 比 post-LN 小一个量级。实测上 sandwich LN 在 BERT 规模的 MLM 上优于 pre-LN,深度越深差距越大。代价:每个块多一个 LN 的计算与显存,以及第二个 LN 无参数、不能学通道缩放。
Peri-LN:把归一化挪到残差连线中间
Xu et al.(2022, DeepNet 同组)对 post-LN 做解剖后发现一个精细的中间态:post-LN 的梯度消失主要发生在每个块的第二个 LN(FFN 分支之后那个),第一个 LN(attention 分支之后)反而对梯度通路伤害不大。peri-LN 据此把伤人的 LN 挪走:attention 分支保持 post-LN 式($x+f$ 后归一),FFN 分支改成 pre-LN 式(归一放进分支),即"peri"(周围)的意思——每个块的两种摆法各取一半。
这个结果有意思的地方在于它把"post-LN 不好"这个笼统结论细化了:伤害梯度的是主干上的归一化,但归一化在分支入口是有益的(钉住分支输入尺度)。peri-LN 在 WMT 翻译任务上用 1/4 的 warmup 步数达到与 post-LN 相当的收敛,且深模型更稳。它后来没有广泛流行,原因是结构不对称带来的工程麻烦(两种摆法共存,kernel 融合与代码路径都复杂),收益相比纯 pre-LN 不够压倒性。
ResiDual:两条残差流
Zhang et al.(2023)的方案最激进:干脆开两条残差通路。
$$ x_l = x_{l-1} + f_l(\mathrm{LN}_1(x_{l-1})),\qquad y_l = y_{l-1} + \mathrm{LN}_2(x_l). $$
$x$ 是 pre-LN 式的流(分支入口归一,主干无损),$y$ 是 post-LN 式的流(每个块的输出先归一再累加),最终输出从 $y_L$ 出。两条流各自保留一种架构的好处:$x$ 保证梯度沿主干无损回传到每个分支入口(训练信号通),$y$ 保证累加进输出的每个增量都被归一化、不被范数膨胀稀释(有效深度足)。论文在 BERT 与 LLaMA 规模的实验上显示 ResiDual 同时改善了 pre-LN 的下游任务表现和 post-LN 的训练稳定性。
代价也一目了然:每块多一条累加链与第二个 LN,显存与计算各涨几个百分点;更深的理论分析("residual stream 被拆成信号流与归一流")对调参与 debug 提出新要求。它代表这类变体的终点思路:当两种摆法的矛盾被证明不可调和,就用结构冗余把两个性质都买下来——这个"冗余买性质"的思路和 mixture-of-depths、多残差流的新架构探索一脉相承。
怎么选:一个务实的判断顺序
如果在做架构选型或读新模型的技术报告,建议的判断顺序:默认 pre-LN(生态最成熟、深度无关、kernel 支持最全);若实测深层模型下游任务明显欠拟合、且确认不是数据问题,先试残差分支加可学习标量或 $1/\sqrt{L}$ 初始化,再考虑 sandwich 或 DeepNorm;ResiDual 类多流结构适合有显存余量、追求最后几个点性能的场合,不适合需要极致推理速度的场景。归一化位置的探索至今没有终点,但它始终围绕同一张资产负债表——梯度通路与有效深度,新方案的出现只是把这张表的两列数字又组合了一遍。
小结
归一化摆放变体谱系:sandwich LN 在分支出口补一个 LN 救有效深度;peri-LN 按"哪个 LN 伤人"做不对称拆分;ResiDual 用两条残差流把两种架构的性质都买下。它们和 DeepNorm 一样,都是对"梯度通 vs 深度足"这对矛盾的记账方式,区别只在改动的位置与工程量。读任何新架构的归一化设计时,先问它把账记在了哪一列。