2015年,Sergey Ioffe和Christian Szegedy在论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中提出了批归一化(Batch Normalization)。这项技术在ImageNet分类任务上将训练步数减少了14倍,迅速成为计算机视觉领域的标配。然而,当Transformer架构在2017年横空出世时,论文作者们却选择了另一种归一化方式——层归一化(Layer Normalization)。这个选择并非偶然,背后隐藏着NLP数据与CV数据的本质差异,以及深度网络训练稳定性的深刻洞见。
两种归一化的数学本质
在深入讨论之前,首先需要理解BatchNorm和LayerNorm的计算方式。假设有一个形状为 $(B, L, d)$ 的张量,其中 $B$ 是批量大小,$L$ 是序列长度,$d$ 是隐藏维度(特征数)。
Batch Normalization 对每个特征维度独立地计算批量统计量:
$$\mu_j = \frac{1}{B \cdot L} \sum_{i=1}^{B} \sum_{t=1}^{L} x_{i,t,j}$$$$\sigma_j^2 = \frac{1}{B \cdot L} \sum_{i=1}^{B} \sum_{t=1}^{L} (x_{i,t,j} - \mu_j)^2$$归一化后的输出为:
$$\hat{x}_{i,t,j} = \frac{x_{i,t,j} - \mu_j}{\sqrt{\sigma_j^2 + \epsilon}}$$这里的关键是:均值和方差是在整个批量的所有位置上计算的,对每个特征维度 $j$ 得到一个标量。
Layer Normalization 则完全不同,它对每个样本独立计算统计量:
$$\mu_{i,t} = \frac{1}{d} \sum_{j=1}^{d} x_{i,t,j}$$$$\sigma_{i,t}^2 = \frac{1}{d} \sum_{j=1}^{d} (x_{i,t,j} - \mu_{i,t})^2$$归一化后的输出为:
$$\hat{x}_{i,t,j} = \frac{x_{i,t,j} - \mu_{i,t}}{\sqrt{\sigma_{i,t}^2 + \epsilon}}$$关键区别在于:LayerNorm为每个样本的每个位置计算独立的均值和方差,与批量大小和其他样本完全无关。

图中蓝色部分表示参与计算统计量的元素。左侧BatchNorm沿批量维度计算,右侧LayerNorm沿特征维度计算。对于Transformer处理的序列数据,这个差异会产生深远影响。
NLP数据的批量统计量波动问题
2020年,UC Berkeley的研究团队在ICML上发表了一篇题为《PowerNorm: Rethinking Batch Normalization in Transformers》的论文,系统性地研究了为什么BatchNorm在Transformer中表现不佳。他们的发现令人惊讶:NLP数据的批量统计量在训练过程中呈现出剧烈波动。
研究团队比较了ResNet20在CIFAR-10上和Transformer在IWSLT14机器翻译任务上的批量统计量行为。结果显示,ResNet的批量统计量与运行统计量之间的距离在整个训练过程中几乎为零,而Transformer的批量统计量则表现出极端的波动,存在大量异常值。
这种差异的根源在于NLP数据的特性:
变长序列问题:自然语言句子的长度差异很大。如果使用BatchNorm,不同批量的"归一化常数"(参与计算均值和方差的元素总数)会不同,导致训练不稳定。更棘手的是,padding位置的值通常为零,这些无效位置被纳入统计量计算会引入噪声。
语义分布差异:不同文档、不同领域的文本在特征分布上可能存在系统性差异。一个包含技术论文的批量和一个包含日常对话的批量,其统计特性可能完全不同。相比之下,图像数据(尤其是经过数据增强后)在批量间的分布更加均匀。
位置信息敏感:在Transformer中,不同位置的token承担不同的角色(如句首的主语、句末的标点)。BatchNorm将所有位置的激活混合计算统计量,可能破坏位置相关的语义信息。
研究团队提出了Power Normalization作为改进方案,但更重要的是,这项研究揭示了LayerNorm在NLP场景下的根本优势:它不依赖于批量统计量,每个样本独立归一化,完全规避了上述问题。
训练与推理的一致性
BatchNorm在设计上存在一个尴尬的不对称:训练时使用当前批量的统计量,推理时使用训练过程中累积的移动平均统计量。这种设计在计算机视觉中工作良好,因为图像数据的批量统计量相对稳定,移动平均能够很好地近似真实分布。
但在NLP中,情况完全不同。由于前述的批量统计量波动问题,移动平均统计量可能与实际推理数据的统计特性相差甚远。这意味着模型在训练和推理时的行为存在不一致性——一种难以调试的隐蔽问题。
LayerNorm完全避免了这个问题。无论训练还是推理,它使用完全相同的计算方式:对每个样本独立计算统计量。这种一致性不仅简化了实现,还消除了一个潜在的误差来源。
更重要的是,LayerNorm与批量大小完全解耦。在训练超大模型时,由于内存限制,往往需要使用很小的批量大小(如1或2)。BatchNorm在小批量场景下表现极差,因为样本统计量无法可靠估计真实分布。LayerNorm则完全不受此限制,批量大小为1时同样能正常工作。
分布式训练的便利性
现代大模型训练几乎都采用分布式策略,将模型参数或数据切分到多个计算设备上。BatchNorm在这里遇到了另一个障碍:每个设备只看到部分批量数据,无法计算全局统计量。
解决方案有两种:一是同步计算全局统计量(需要跨设备通信),二是使用同步批归一化(SyncBatchNorm)。无论哪种方案,都会引入额外的通信开销和实现复杂度。
LayerNorm天然适合分布式训练。由于统计量在每个样本内部计算,不需要跨样本、跨设备的任何通信。在数据并行场景下,每个设备独立计算其上样本的LayerNorm,梯度聚合时也不涉及归一化层的相关同步。这个特性在大规模训练中尤为重要——通信开销往往是分布式训练的主要瓶颈之一。
Pre-LN与Post-LN:归一化位置的关键抉择
选择了LayerNorm之后,下一个问题就是:应该把它放在哪里?原始Transformer论文采用Post-LN设计,即先执行子层(注意力或前馈网络),再与残差连接相加,最后归一化。而后来广泛采用的Pre-LN设计则将归一化移到子层之前。
2020年,北京大学和微软研究院的研究团队在论文《On Layer Normalization in the Transformer Architecture》中,从理论上分析了两种设计的梯度行为差异。他们的发现解释了为什么现代大模型普遍采用Pre-LN。
Post-LN的梯度问题
在Post-LN设计中,第 $l$ 层的输出可以表示为:
$$x^{l+1} = \text{LayerNorm}(x^l + \text{Sublayer}(x^l))$$研究团队使用平均场理论分析发现,在初始化时,靠近输出层的参数梯度期望值很大。具体而言,对于最后一层的前馈网络参数,梯度范数的期望值为 $O(d\sqrt{\ln d})$,与层数 $L$ 无关。
这意味着什么?使用大学习率直接训练会导致靠近输出的层参数更新过猛,破坏网络的初始状态,引发训练不稳定。这就是为什么原始Transformer需要学习率预热(warm-up)阶段:先使用极小的学习率训练几千步,让网络"适应"初始梯度分布,再逐步提升到目标学习率。
Pre-LN的梯度稳定性
Pre-LN的设计将归一化放在子层之前:
$$x^{l+1} = x^l + \text{Sublayer}(\text{LayerNorm}(x^l))$$理论分析显示,这种设计下最后一层的梯度范数期望值为 $O\left(\frac{d}{\sqrt{\ln d \cdot L}}\right)$,随着层数 $L$ 增加而减小。更关键的是,所有层的梯度范数在初始化时都保持在一个合理的范围内,不存在靠近输出层梯度爆炸的问题。
核心机制在于"梯度高速公路":在Pre-LN中,残差连接提供了一条直接、未经变换的梯度路径。反向传播时,梯度可以通过恒等映射 $x^{l+1} \to x^l$ 无衰减地流向前一层,完全绕过子层和LayerNorm。这条路径确保了即使子层存在梯度消失或爆炸问题,至少有一条"安全通道"保持梯度流动。
实验结果令人信服:在IWSLT14德英翻译任务上,Post-LN Transformer不使用预热只能达到8.45的BLEU分数,而使用预热可以达到34分以上。相比之下,Pre-LN Transformer无需预热即可达到相当的性能,且收敛速度更快——在第9个检查点就达到了Post-LN在第15个检查点的性能。
现代大模型的归一化选择
如今主流的大语言模型已经形成了两种归一化风格的流派:
GPT派系:GPT-2、GPT-3及其后续版本采用Pre-LN LayerNorm。OpenAI在GPT-2论文中明确指出:“Layer normalization…was moved to the input of each sub-block, similar to a pre-activation residual network…and an additional layer normalization was added after the final self-attention block。“这一设计使得GPT系列能够成功训练数十甚至近百层的深度网络。
LLaMA派系:LLaMA系列采用了一种称为RMSNorm的变体。RMSNorm于2019年由Zhang和Sennrich提出,核心思想是移除LayerNorm中的均值中心化操作:
$$\text{RMSNorm}(x) = \gamma \odot \frac{x}{\sqrt{\frac{1}{d}\sum_{j=1}^{d} x_j^2 + \epsilon}}$$作者假设LayerNorm的"重中心化不变性”(re-centering invariance)并非稳定训练的关键,只有"重缩放不变性”(re-scaling invariance)才是本质。实验表明,RMSNorm在各种任务上与LayerNorm性能相当,但计算更高效——原论文报告了7%~64%的训练加速。
LLaMA的设计者解释了选择RMSNorm的原因:“LayerNorm stabilizes training but introduces additional overhead, which becomes substantial for deeper networks.” 在数百亿参数、数十层的模型规模下,即使是每个子层的微小开销也会累积成可观的计算成本。
两种风格各有千秋。LayerNorm的零均值特性有利于量化精度和数值稳定性;RMSNorm的计算简洁性在大模型训练中更具吸引力。有趣的是,2025年的一项研究发现,随着优化的实现,LayerNorm与RMSNorm的性能差距已接近消失,但RMSNorm因其历史上的效率优势继续被广泛采用。
归一化层与训练稳定性的深层联系
归一化技术在深度学习中的核心作用是稳定训练。但要真正理解它为什么有效,需要从优化动力学角度思考。
2018年,MIT的研究团队在论文《How Does Batch Normalization Help Optimization?》中提出了一个颠覆性的观点:BatchNorm的有效性可能并非来自其原作者声称的"减少内部协变量偏移",而是因为它让损失曲面更加平滑。具体而言,BatchNorm使损失函数的Lipschitz常数更小,梯度的预测性更强,从而允许使用更大的学习率。
类似的分析同样适用于LayerNorm。在Transformer中,LayerNorm确保了每个子层的输出具有稳定的统计特性(零均值、单位方差),无论输入如何变化。这种稳定性意味着后续层不需要不断适应输入分布的变化,优化问题变得更加well-behaved。
Pre-LN的设计进一步增强了这种稳定性。通过在子层之前归一化,输入到注意力机制和前馈网络的数据始终保持良好的尺度,避免了深层网络中常见的激活值爆炸或消失问题。同时,残差连接提供的梯度高速公路确保了反向传播的有效性。
实践建议
基于上述分析,归一化层的选择和配置可以遵循以下原则:
架构设计:对于需要训练深度的模型(超过12层),Pre-LN是更安全的选择。它消除了复杂的学习率预热需求,简化了超参数调优。对于较浅的模型(如BERT的12/24层),Post-LN仍然可行,但需要仔细配置预热策略。
归一化类型:如果计算效率是首要考虑,RMSNorm是一个值得尝试的选择。如果量化兼容性更重要,或者希望确保激活值中心化,LayerNorm更为合适。两种方法在最终性能上差异不大,选择往往取决于架构传承和工程便利性。
分布式训练:无论选择哪种归一化方式,LayerNorm类方法(包括RMSNorm)都比BatchNorm更适合分布式训练。它们不需要跨设备同步统计量,简化了实现并减少了通信开销。
推理优化:值得注意的是,一些研究发现,训练完成后可以移除LayerNorm层而不显著影响性能。这表明归一化层的主要作用在于稳定训练过程,而非在最终模型中提供必要的计算。但这种做法需要额外的微调步骤,在实际应用中需要权衡收益和成本。
Transformer选择LayerNorm而非BatchNorm,是NLP数据特性与深度网络训练动力学的双重选择。序列数据的变长特性、批量统计量的不稳定性、训练推理的一致性需求、分布式训练的便利性,这些因素共同指向了LayerNorm作为更优解。而Pre-LN设计的兴起,则进一步解决了深层Transformer的训练稳定性问题,为现代大语言模型的成功奠定了基础。理解这些选择背后的原理,不仅有助于更好地使用现有模型,也为设计新的架构提供了指导。
参考文献
- Ioffe, S., & Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. ICML.
- Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization. arXiv:1607.06450.
- Xiong, R., et al. (2020). On Layer Normalization in the Transformer Architecture. ICML.
- Shen, S., et al. (2020). PowerNorm: Rethinking Batch Normalization in Transformers. ICML.
- Zhang, B., & Sennrich, R. (2019). Root Mean Square Layer Normalization. NeurIPS.
- Santurkar, S., et al. (2018). How Does Batch Normalization Help Optimization? NeurIPS.
- Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.
- Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners. OpenAI.
- Touvron, H., et al. (2023). LLaMA: Open and Efficient Foundation Language Models. arXiv:2302.13971.