大模型训练里,层归一化干的是流水线上的称重分装:每一层开工前,把进来的数值调成同一规格。它不产生任何智能,但少了这一步,几十层的网络很难训到收敛。理解它的关键是三件事:进来的是什么数、做了什么变换、出去之后谁受益。
它改的是进入下一层之前的数
一层网络先做线性变换,把输入乘上权重、加上偏置,得到一组激活值。这组数的均值和方差取决于权重和输入,层与层之间并不统一。层归一化就在激活值进入激活函数之前,按单个样本自己的所有特征算均值和方差,减掉均值、除以标准差,再乘一个可学习的缩放、加一个可学习的偏移。
缩放和偏移这两个参数很关键。没有它们,归一化会把表达范围压死;有了它们,模型可以自己决定每一层要多大范围的数。所以它留了一个可恢复的出口。
出去的是一组均值接近 0、方差接近 1、再经过缩放偏移的数,进入下一层时尺度稳定,不会因为前面几十层的累积而爆掉或消失。
数值漂移为什么会让训练跑飞
训练时权重在更新,每一层的输入分布也跟着变。前一层稍微调整,后一层收到的数值范围就整体偏移;层数越多,偏移被放大得越厉害。表现是损失突然变成 NaN,或者梯度大到把权重推到一个再也回不来的位置。
归一化把这个链条切断:不管前面怎么变,进入每一层的数都被拉回统一尺度。学习率可以设得大一些,因为不用担心某一层的激活值突然放大几百倍;初始化也不用精挑细选,起点差一点,归一化会把尺度拉回来。
它带来的副作用是梯度更好传。减均值和除标准差都可导,梯度经过时被重新缩放,不会在深层里指数级衰减。这是深层网络能训起来的基础之一,和残差连接各管一段。
和批归一化的差别在统计范围
批归一化按一个批次里的所有样本统计,用批均值、批方差做归一化。好处是噪声带来正则效果,坏处是依赖批大小:批次太小,统计量不稳;批次里样本长度不一,统计量更没意义。
层归一化按单个样本自己的所有特征统计,和批次里其他样本无关。批大小为 1 也能算,变长序列也不用对齐。大模型处理文本时,一个批次里每句话长度不同,批归一化的统计口径直接失效,这是层归一化成为默认选择的原因。
代价也有:少了批统计的噪声,正则效果弱一些;逐样本计算,吞吐略低。这些代价在大模型场景里可以接受。
四种归一化方式对照
| 方式 | 统计范围 | 依赖批大小 | 变长序列 | 常见位置 |
|---|---|---|---|---|
| 批归一化 | 一个批次内同一特征维度的所有样本 | 依赖,批次小则统计不稳 | 需要对齐或掩码,处理麻烦 | 卷积网络为主的视觉模型 |
| 层归一化 | 单个样本的所有特征 | 不依赖,批大小为 1 也可用 | 天然适配,逐样本计算 | Transformer 类模型 |
| RMSNorm | 单个样本的所有特征,只算均方根 | 不依赖 | 天然适配 | 部分开源权重模型采用 |
| 组归一化 | 单个样本内按通道分组统计 | 不依赖 | 不涉及序列维度 | 小批次视觉任务 |
看这张表只需要记一件事:统计范围决定它能不能处理变长输入。序列任务选层归一化或它的变体,基本不会错。
放在残差之前还是之后
同一个归一化,放的位置不同,稳定性差很多。放在子层之前,残差通路是一条干净的直接连接,梯度可以从末层直通到首层;放在子层之后,残差要穿过归一化,深层时容易不稳,通常要靠学习率预热来压。
这就是为什么现在的深层模型多用前置归一化。代价是表达上略有不同:前置结构里,残差主干的数值会随层数累积变大,末尾需要一个额外的归一化收束。这点代价换来的是训练不用小心翼翼。
RMSNorm 省掉了什么
RMSNorm 只除以均方根,不减均值。省掉一次求均值和一次减法,计算量小一点,在长序列上累积起来不少。它成立的前提是:激活值的均值接近 0,减不减差别不大;真正影响尺度的是方差。
这个前提在多数训练好的模型里近似成立,所以 RMSNorm 能用。但它不是任何场景都等价替换:如果某一层的激活值整体偏移很大,不减均值就会把偏移带进下一层。换归一化方式时,要用同一套评测对比,别只看训练损失。
归一化管不了的事
它不解决数据质量。标注错了、样本重复、分布太窄,归一化一层也救不了。它也不防过拟合,正则要靠权重衰减、丢弃和早停。它更不能替代残差连接:归一化管尺度,残差管梯度通路,两件事。
训练出现 NaN 时,也别先怀疑归一化。常见原因:学习率过大、数据异常值、混合精度数值溢出、梯度裁剪没开。归一化能降低这些问题出现的概率,但不能确保不发生。排查时先看损失在第几步开始异常,再对照那一步的数据和学习率。
还有一层边界:归一化的统计在训练时逐样本计算,推理时行为一致,不依赖批统计。这正是它适合变长输入的原因,也是它和批归一化在部署阶段表现不同的地方。不同开源权重模型的实现细节不完全一样,开源权重模型的差别不只在参数量,也在这些层上。
它和参数量、精度的关系
归一化层参数量很小,每层只有两组向量,和模型参数量相比可以忽略。但它对数值范围敏感,做模型量化时,归一化前后的激活值分布决定了量化误差有多大;有些方案会把归一化层留在高精度,就是为了保住这个尺度。
看懂这一点,看结构表就不会只数参数量。层数、宽度、归一化位置、残差结构,这几项一起决定了训练难度和推理特性。
层归一化速查
- 统计范围:单个样本的所有特征,不看批次
- 两个可学习参数:缩放与偏移,用来恢复表达范围
- 作用:稳住尺度、允许更大学习率、降低初始化敏感
- 变体:RMSNorm 只除均方根,省计算但依赖均值接近 0
- 不管的事:数据质量、过拟合、梯度通路
归一化不产生智能,它让训练从反复试参数变成能按流程跑完。基础组件的价值往往在这里:平时看不见,缺了才知道整栋楼立不住。


