批归一化#
术语解释#
批归一化(Batch Normalization, BN) 是一种在神经网络中添加的归一化操作,旨在使网络中每一层输入的分布都尽可能地接近标准高斯分布,由谷歌于2015年发表在ICML上。
批归一化通常以一个小批量(Mini-batch)数据样本为单位,在对应的特征维度上进行标准化处理。其核心计算逻辑是先计算小批量样本的均值和方差,然后对数据进行标准化,最后加入一组可学习的参数 $\gamma$(缩放)和 $\beta$(平移)来执行线性变换,以恢复网络的表示能力并适应不同的数据分布。它显著加快了收敛速度,让每层输入分布更稳定,并让更大学习率、更深网络成为可能。

关于这部分内容可参见深度学习栏目 「第6.3节 BatchNorm原理:批归一化为什么能加速训练」内容。
出现动机#
批归一化提出的动机主要体现在如下两个维度:
-
内部协变量偏移(Internal Covariate Shift):随着网络加深,前一层参数的微小变化会导致后一层输入分布发生剧烈波动。这迫使深层网络需要不断重新适应新的分布,增加了训练难度和收敛耗时。
-
梯度更新不均衡:在深层网络中,靠近输出层的参数容易训练,而靠近输入层的参数由于梯度在反向传播中逐层衰减,更新速度非常缓慢。两端更新节奏的不一致加大了网络的训练难度。
优点缺点#
-
优点:
-
显著加速模型收敛:实验表明,加入 BN 的模型(如 LeNet5)在较少的迭代次数内即可进入收敛阶段,训练速度大幅提升。
-
支持更大的学习率:BN 使得网络对学习率的敏感度降低,允许使用较大的学习率而不会导致目标函数发散。
-
减少对参数初始化的依赖:合理的初始化对深层网络至关重要,BN 减轻了这种依赖,增强了训练的鲁棒性。
-
具有正则化效果:BN 在一定程度上能够提高模型的泛化能力,缓解过拟合现象。
-
-
缺点:
- 高度依赖批大小(Batch Size):由于均值和方差是基于小批量样本估计的,当 Batch Size 过小时(例如由于显存限制设为 2),估计值会严重偏离真实分布,导致聚类或分类精度下降。
- 不适用于变长序列(RNN):在循环神经网络中,每个样本的序列长度不同。如果推理时的序列长度超过训练时的最大长度,BN 将无法工作。此外,对每个时间步进行归一化的计算开销也较大。
- 增加计算开销:虽然 BN 能减少训练步数,但在“每一步”前向传播中都增加了额外的计算逻辑,使得单步推理速度略微变慢。
术语别名#
- BN
相关术语#
-
层归一化
-
组归一化
-
批归一化
-
均方根归一化