论文 · arXiv 1502.03167
Batch Normalization: 通过减少内部协变量偏移加速深度网络训练
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
三句话总结
- 🎯 深度网络训练受到内部协变量偏移(internal covariate shift)的阻碍,即前层参数更新导致各层输入分布持续发生改变。
- 🔧 提出了 Batch Normalization (BN) 架构层,将 mini-batch 的激活值标准化为零均值和单位方差,随后进行可学习的仿射缩放和平移(γ 和 β)。
- 📈 仅需 1/14 的步数即可达到 Inception 基线的 72.2% 验证准确率,并通过模型集成在 ImageNet 测试集上达到 4.82% 的 top-5 误差。
摘要
在深度神经网络的训练过程中,由于前层参数的变化,各层输入的分布在训练期间也会随之改变,这使得训练变得尤为复杂。这种现象需要采用更低的学习率和精细的参数初始化,从而减慢了训练速度,并且使得训练具有饱和非线性激活函数的模型变得极其困难。我们将这一现象称为内部协变量偏移(internal covariate shift),并通过对各层输入进行归一化来解决这一问题。我们的方法优势在于将归一化作为模型架构的一部分,并对每个训练 mini-batch 执行归一化。Batch Normalization 允许我们使用大得多的学习率,同时降低对初始化的敏感度。它还具有正则化作用,在某些情况下可以免除 Dropout 的使用。应用于最先进的图像分类模型时,Batch Normalization 仅需原来的 1/14 训练步数即可达到相同的准确率,并以显著优势超越原始模型。利用经过批量归一化的网络集成,我们刷新了 ImageNet 分类任务的最佳公开纪录:达到了 4.9% 的 top-5 验证误差(以及 4.8% 的测试误差),超越了人类评估者的准确率。
英文原文摘要
Training Deep Neural Networks is complicated by the fact that the distribution of each layer's inputs changes during training, as the parameters of the previous layers change. This slows down the training by requiring lower learning rates and careful parameter initialization, and makes it notoriously hard to train models with saturating nonlinearities. We refer to this phenomenon as internal covariate shift, and address the problem by normalizing layer inputs. Our method draws its strength from making normalization a part of the model architecture and performing the normalization for each training mini-batch. Batch Normalization allows us to use much higher learning rates and be less careful about initialization. It also acts as a regularizer, in some cases eliminating the need for Dropout. Applied to a state-of-the-art image classification model, Batch Normalization achieves the same accuracy with 14 times fewer training steps, and beats the original model by a significant margin. Using an ensemble of batch-normalized networks, we improve upon the best published result on ImageNet classification: reaching 4.9% top-5 validation error (and 4.8% test error), exceeding the accuracy of human raters.
论文解读
问题与动机
在使用 SGD 优化深度网络的过程中,较早层参数的更新会改变后续层输入的分布。作者将这一现象称为内部协变量偏移(Internal Covariate Shift)。
内部协变量偏移引发了两个核心挑战:
- 子网络必须持续适应不断漂移的激活值分布。
- 激活值极易漂移至非线性函数(如 sigmoid 函数)的饱和区,导致梯度消失,迫使人们使用较小的学习率以及严苛的参数初始化策略。
虽然对整个数据集的各层输入进行白化(去相关和标准化)可以稳定分布,但在每次参数更新时计算完整的协方差矩阵及其逆平方根在计算上是不可行的;此外,若归一化步骤未融入反向传播中,还可能导致梯度爆炸。
核心思想
- 可微归一化层(Differentiable Normalization Layer):不再在优化流程之外单独标准化激活值,而是将归一化直接集成到模型架构中,确保反向传播能够考量层激活值与 mini-batch 统计量之间的依赖关系。
- 按维度归一化(Per-Dimension Normalization):为了避免代价高昂的联合全白化,仅对每个标量特征维度独立进行标准化,使其具有零均值和单位方差。
- 恢复表达能力(Restoring Representational Capacity):为确保归一化不会破坏层的表达能力(例如将 sigmoid 限制在纯线性区间内),引入了可学习参数 (缩放)和 (平移),允许网络在必要时恢复恒等变换。
- 确定性推理(Deterministic Inference):训练期间,统计量是在每个 mini-batch 上计算的。在测试时,使用固定的总体统计量(通过滑动平均或跨训练批次计算)代替 mini-batch 统计量,以确保单样本推理的确定性。
- 参数尺度不变性(Parameter Scale Invariance):层权重的尺度变换满足 ,这意味着更大的权重反而会产生更小的有效梯度,从而防止梯度爆炸。
方法(及核心公式)
对于对应单个激活维度的 mini-batch :
- 计算 mini-batch 均值:
- 计算 mini-batch 方差:
- 归一化激活值(加入稳定常数 ):
- 使用可学习参数 和 进行缩放和平移:
在各层中的应用
- 放置位置:紧接在非线性激活函数之前应用:。由于均值相减操作会消除偏置,原始层的偏置参数 可以省略(其作用被 取代)。
- 卷积层:为保持平移等变性,归一化是按特征图(feature map)而非按空间位置应用的。对于 batch 大小为 、空间分辨率为 的情况,有效 mini-batch 大小为 ,每个特征图共享一对 。
推理期变换
在测试期,利用总体统计量 和 ,该变换退化为一个静态的线性操作:
结果(及关键实验数据)
- 基于 Sigmoid 的 MNIST:配备 Batch Normalization 的网络在整个训练过程中保持了稳定的激活分布,与未归一化的网络相比,加速了收敛并获得了更高的测试准确率。
- ImageNet 训练速度(单网络):
- 未归一化的 Inception 在 步后达到 72.2% 的验证准确率。
- 基线 Batch-Normalized Inception 在 步即达到 72.2%。
- 在学习率提高 5 倍(BN-x5)的情况下,仅需 步即可达到 72.2%——所需训练步数减少了 14 倍,最终峰值准确率达到 73.0%。
- 在学习率提高 30 倍(BN-x30)时,模型在 步后达到了 74.8% 的最高准确率。
- 饱和非线性函数:使用 sigmoid 激活函数的未归一化 Inception 训练失败(准确率维持在 0.1% 左右的随机水平),而 BN-x5-Sigmoid 达到了 69.8% 的 top-1 准确率。
- ImageNet SOTA 集成:由 6 个 batch-normalized 网络组成的集成模型在 ILSVRC 测试服务器上达到了 4.9% 的 top-5 验证误差和 4.82% 的测试误差,超越了人类评估者的基准水平。
局限性与开放问题
- Batch 大小依赖性:由于归一化依赖 mini-batch 的样本统计量,极小的 mini-batch 大小可能会降低均值和方差估计的质量。
- 循环神经网络(RNN):该论文测试了前馈和卷积模型,指出循环神经网络是一个尚未测试的开放课题,在 RNN 中内部协变量偏移可能同样十分关键。
- 理论机理:作者推测 Batch Normalization 会使层的雅可比矩阵奇异值接近 1,但指出关于梯度行为的精确理论验证仍有待未来进一步分析。
关键术语
- Internal Covariate Shift (内部协变量偏移)
- 在训练过程中,由于前层参数更新导致的网络内部激活值分布发生变化的现象。
- Batch Normalization (批量归一化)
- 一种将 mini-batch 的层输入标准化为零均值和单位方差,随后利用可学习参数进行缩放和平移的机制。
- Scale and Shift Parameters (γ and β) (缩放和平移参数)
- 针对每个激活维度的可学习参数,能够恢复网络的表达能力,包括表示恒等变换的能力。
- Whitening (白化)
- 一种对输入进行变换以产生零均值、单位方差且各特征维度相互去相关的处理方法。
- Batch Normalizing Transform (批量归一化变换)
- 计算 mini-batch 均值与方差、归一化输入并应用可学习仿射缩放与平移的精确可微算法。
- Population Statistics (总体统计量)
- 在整个训练 mini-batch 过程中跟踪记录的累计期望均值与无偏方差,用于在确定性推理时固定归一化参数。
- Feature Map Normalization (特征图归一化)
- 联合 mini-batch 样本和空间位置共同执行归一化,使得卷积特征图内的所有激活值共享同一组统计量和仿射参数。
常见问题
Batch Normalization 相对于激活函数和偏置应放置在什么位置?
它直接应用在非线性激活函数之前()。前序线性变换的偏置参数 可以省略,因为均值相减操作会消除偏置,其作用由 承担。
Batch Normalization 在训练和推理期间的行为有何不同?
训练期间,均值和方差直接在当前 mini-batch 上计算以标准化激活值。在推理期间,它们被固定的总体统计量(跨训练批次的无偏滑动平均)替代,从而将该层转变为静态的线性变换。
为什么 Batch Normalization 允许使用更高的学习率?
标准化激活值可以防止微小的参数变化累积演变为饱和区或梯度爆炸。此外,通过某一层反向传播的梯度在尺度上对权重是不变的:更大的权重会产生比例更小的梯度,从而避免了不稳定性。
Batch Normalization 可以替代 Dropout 吗?
在许多场景下是可以的。由于单个样本的归一化激活值取决于 mini-batch 中同时出现的其他随机样本,这引入了随机噪声并起到了有效的正则化作用,从而可以减少或不再需要 Dropout。
本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。