更新于 2026年7月11日

批归一化#


术语解释#

批归一化(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

相关术语#

  • 层归一化

  • 组归一化

  • 批归一化

  • 均方根归一化

阅读 --

6.3 批归一化

在本节内容中,我们首先介绍了批归一化算法提出的原因和动机;然后详细介绍了批归一化的原理及过程,包括训练时的归一化和预测时的归一化等;进一步,介绍了如何从零开始在PyTorch框架中实现批归一化算法的计算过程;最后,以LeNet5模型为例对批 …

6.4 层归一化

在上一节内容中,我们详细介绍了批归一化的动机原理及实现过程,总体来讲批归一化的核心思想是以一个小批量数据样本为单位在对应维度上进行标准化。但也正是由于这一特性使得批量归一化会受到小批量样本数量的影响,同时,显而易见批归一化也不能直接用于循环 …

6.5 组归一化

组归一化 GroupNorm 教程,讲解提出动机、计算公式、与 BatchNorm 和 LayerNorm 的区别,以及 PyTorch 实现。