术语表

批量标准化

利用批量规范化提升深度学习性能!了解这项技术如何提高人工智能模型的训练速度、稳定性和准确性。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

批量归一化(Batch Normalization)是深度学习中广泛使用的一种技术,它可以稳定学习过程,并显著加快深度神经网络的训练速度。由 Sergey Ioffe 和 Christian Szegedy 在 2015 年的论文《批量归一化》中提出Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift》一文中提出的,它解决了网络深层输入分布在训练过程中发生变化的问题,即所谓的内部协变量偏移(internal covariateshift)。通过对每个迷你批次的每个层的输入进行归一化处理,批归一化有助于保持更稳定的激活值分布,从而实现更平滑、更快速的收敛。

批量规范化如何工作

在训练过程中,"批次归一化 "会对每个迷你批次的层输入进行标准化处理。这包括计算整个小批量激活的平均值和方差,然后这些激活进行归一化。最重要的是,该技术还为每个激活通道引入了两个可学习的参数--规模参数(伽马参数)和移位参数(贝塔参数)。这些参数允许网络学习归一化输入的最佳规模和平均值,从而使网络在证明有利于学习的情况下灵活地撤销归一化。通过将激活保持在合理范围内,这一过程有助于解决梯度消失梯度爆炸等问题。在推理过程中,平均值和方差是固定的,通常使用训练过程中估算出的群体统计数据。

使用批量标准化的好处

在神经网络中应用批量归一化技术有几个主要优势:

  • 更快的培训:通常可以大大提高学习率,从而加快训练过程的收敛速度。更多优化策略,请参阅模型训练技巧
  • 改进梯度流:通过稳定激活分布,它可以缓解梯度消失和爆炸的问题,从而实现更稳定的训练,尤其是在深度网络中。
  • 正则化效果:由于采用了迷你批次统计,批次归一化会给图层输入增加轻微的噪音成分。这可以作为一种正则化形式,从而减少对其他技术(如 "滤除")的需求。
  • 降低对初始化的敏感度:采用批量归一化的网络通常对训练开始前选择的初始权重不那么敏感。
  • 实现更深入的网络:通过解决与训练深度架构相关的问题,它有助于成功训练更深度的模型。

应用与实例

批量规范化是许多最先进的深度学习模型的主要组成部分,尤其是在计算机视觉领域。

  1. 图像识别和物体检测卷积神经网络(CNN)中,批量归一化通常应用于卷积层之后和激活函数(如ReLU)之前。ResNet 等模型在很大程度上依赖于它。在物体检测模型中,如 Ultralytics YOLO等对象检测模型中,批归一化有助于稳定训练、提高准确性并加快收敛速度,从而在COCO 等复杂数据集上实现有效检测。在YOLOv4等模型中,还使用了交叉小型批归一化(CmBN)等变体来进一步提高性能。
  2. 生成式对抗网络(GANs):批量归一化通常用于生成式对抗网络(GANs)的生成器和判别器网络,以稳定对抗训练过程。它有助于防止模式崩溃,并确保更平滑的训练动态。

相关概念和变体

虽然批量归一化被广泛使用,但也存在几种相关的归一化技术,每种技术都适用于不同的场景:

  • 层归一化:对单个数据样本的特征输入进行归一化处理,与批次无关。在序列长度可能不同的递归神经网络(RNN)变换器中,它通常是首选。请参阅原始论文"层归一化"。
  • 实例归一化:对每个数据样本的每个通道在空间维度上进行独立归一化。它通常用于风格转换任务(神经风格转换),以去除特定实例的对比度信息。请参阅论文"实例归一化:快速风格化的缺失要素》。
  • 组归一化:将通道分成若干组,并在每组内对单个数据样本进行归一化处理。它是层归一化和实例归一化之间的折衷方案,即使批量较小也能很好地发挥作用。请参阅论文"组归一化"。

考虑因素和实施

批量归一化的一个主要考虑因素是它与训练过程中的迷你批量大小有关。如果批次规模太小(如 1 或 2),性能就会下降,因为批次统计量会成为对总体统计量的噪声估计。此外,训练(使用批次统计数据)和推理(使用估计的群体统计数据)的行为也不尽相同。标准深度学习框架,如 PyTorch (torch.nn.BatchNorm2d)和 TensorFlow (tf.keras.layers.BatchNormalization)提供了稳健的实现方法。尽管有其他替代方案,批量归一化仍是有效训练许多现代深度学习模型的基本技术。

阅读全部