训练深层网络时,输入分布会随着前面层的更新不断漂移,让学习变得困难。归一化技术把每层的数据重新拉回稳定范围。本文对比批归一化与层归一化的做法差异,并说明后者为何成了大模型的默认选择。
核心要点
- 归一化把每层输入拉回稳定分布,让训练更快、更稳、更敢用大学习率。
- 批归一化沿批次维度统计,依赖批量大小,小批量时效果会明显下降。
- 层归一化对单个样本统计,对变长序列和超大模型更加友好。
数据分布为什么会漂
训练深层网络时,每层都在根据误差调整参数。问题是前一层参数一改,它输出的数据分布就变了,后面的层要不断适应一个移动的目标。这被称为内部协变量偏移,层数越多越严重,训练因此缓慢脆弱,对学习率也格外挑剔。
一个直观的缓解办法是:在每层输入之前,先把数据重新拉回到均值附近、范围稳定的状态,再做后面的计算。这样一来,后面的层面对的输入分布始终规整,可以用更大的学习率、更少的轮数收敛。这就是各类归一化方法的共同出发点。
批归一化:看一批数据
批归一化的做法是,对一批样本在同一个特征维度上统计均值和方差,把该维度标准化,再用两个可学习的参数做缩放和平移。缩放与平移很重要,它保留了模型把数据还原成任意分布的能力,不至于因为强制标准化而削弱表达力。
它的软肋是依赖批量大小:批量太小,统计量就不可靠;序列长度不一时如何统计也很别扭;训练与推理使用的统计量不同,还需额外维护滑动平均。它也有个常被利用的副作用——每批统计量略有差异,等于给训练加了噪声,起到轻微正则化效果。
层归一化:看一个样本
层归一化换了个统计方向:不再跨样本统计,而是在单个样本内部、跨特征维度统计均值和方差。这样一来,每个样本的计算完全独立,不需要等一批数据到齐,也不受批量大小影响,训练和推理的行为一致,实现起来干净得多。
这些特性让它在序列建模和大模型中成为默认选择:长度不一的句子、逐词生成的推理过程都不会破坏统计口径,小批量甚至单条样本的微调场景同样稳定。另外,归一化放在残差连接的哪个位置会影响训练稳定性,这也是不同实现之间存在差异的地方之一。
常见问题
归一化和标准化是一回事吗?
在输入预处理层面,两者常被混用,都指把数据缩放到相近量级。在网络内部这个语境下,归一化泛指让每层输入分布保持稳定的一类操作,除了减去均值、除以标准差,还包括只缩放不平移等变体,目的都是让训练更稳更快。
本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。