深圳Yolo 视觉
深圳
立即加入
词汇表

批量归一化

通过批量归一化提升深度学习性能!了解这项技术如何提高 AI 模型的训练速度、稳定性和准确性。

批量规范化(Batch Normalization),通常缩写为 BatchNorm,是深度学习(DL)中的一项基础技术。 深度学习(DL)中的基础技术,旨在提高 深度神经网络训练的稳定性和速度 深度神经网络的稳定性和训练速度。在 2015 年由 Sergey Ioffe 和 Christian Szegedy 发表的一篇开创性研究论文中提出的。 解决了 "内部协变量偏移 "的难题--这种现象是指网络层的输入分布会随着前一个网络层参数的变化而不断变化。 网络层的输入分布会随着前几层参数的更新而不断变化的现象。通过对 BatchNorm 允许模型利用更高的学习率,并显著降低了模型的运行成本。 学习率,并显著降低 对初始参数权重的敏感性。

批量标准化的功能

在典型的 在典型的卷积神经网络(CNN)中,紧接在卷积层或全连接层之后,在非线性激活函数如 ReLU 或 ReLU之前,会插入一个批量归一化层。 非线性激活函数(如 ReLU 或 SiLU)之前。该过程包括在模型训练阶段执行的两个主要步骤 模型训练阶段:

  1. 归一化:该层计算当前批次大小内激活的均值和方差。 批次大小。然后减去批次平均值,再除以批次标准差。 除以批次标准差,从而有效地将输入标准化为零均值和单位方差。
  2. 扩展和转移:为了防止归一化限制网络的表现力,该层引入了两个可学习的参数:缩放因子(gamma)和移动因子(beta)、 层引入了两个可学习的参数:缩放因子(gamma)和移动因子(beta)。这两个参数允许 网络在最佳情况下恢复身份转换,确保模型权重仍能代表复杂的特征。 模型权重仍能代表复杂的特征。

推理过程中,使用批量统计是不切实际的 因为预测通常是针对单个项目进行的。取而代之的是,模型使用训练期间积累的均值和方差的移动平均值 的移动平均值来对输入进行确定性归一化。

深度学习的主要优势

将批量规范化集成到架构设计中具有几个明显的优势,使其成为现代人工智能的标准 现代人工智能的标准:

  • 加速收敛:通过稳定层输入的分布,BatchNorm 可使优化结果更加平滑。 优化景观。这使得 梯度下降算法更快地收敛 快速收敛,从而减少总的训练时间。
  • 减少消失的梯度:在深度网络中,梯度会变得微不足道 小,从而停止学习。BatchNorm 有助于将激活保持在非饱和区域,从而有效解决梯度消失问题。 梯度消失问题。 或 tanh 架构中常见的梯度消失问题。
  • 正则化效应:对迷你批次进行统计估算时引入的噪声是一种温和的 正则化。这可以减少 过度拟合,在某些情况下,还能减少对其他技术的依赖。 对其他技术(如 "剔除 "层)的依赖。

实际应用

批量规范化在计算机视觉 (CV) 及其他领域无处不在。 计算机视觉 (CV)及其他领域,使 最先进模型的性能。

  • 高级物体检测现代架构,如 Ultralytics YOLO11等现代架构在很大程度上依赖于 BatchNorm 层。在 在这些模型中,归一化可确保在不同尺度上检测到的特征(如边缘或纹理)保持一致,即使图像对比度或光照发生变化 在图像对比度或光照变化的情况下保持一致,从而在不同的环境中实现高精度。 精度
  • 医学图像分析:在诸如 人工智能医疗保健等领域,分析 CT 或 MRI 扫描的模型必须处理来自不同机器、不同强度范围的数据。BatchNorm 可帮助神经网络 在这些领域进行泛化,支持关键任务,如 肿瘤检测 肿瘤检测等关键任务。

与相关概念的区别

必须将批量规范化与类似的预处理和架构技术区分开来:

  • 数据规范化 数据规范化数据预处理步骤。 例如,将像素值缩放为 [0,1])。反之,BatchNorm 则在整个网络的层与层之间进行内部操作。 在整个网络各层之间进行内部操作。
  • 与层归一化的对比批次归一化在批次维度上进行归一化、 层归一化计算的是单个样本在特征维度上的统计数据。层归一化 通常在 递归神经网络(RNN)和 转换器 自然语言处理 (NLP) 中使用的转换器中,批次依赖性可能会成为问题。

实施实例

流行的框架,如 PyTorchTensorFlow 提供内置实现(如 torch.nn.BatchNorm2dtf.keras.layers.BatchNormalization).下面的示例 演示了如何检查YOLO11 模型,以观察其架构中集成的 BatchNorm 层。

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Display the model summary
# Look for 'BatchNorm2d' in the output to see where normalization is applied
model.info()

# Example output line from info():
# 0  -1  1  464  ultralytics.nn.modules.conv.Conv  [3, 16, 3, 2]
# The Conv module in Ultralytics typically includes Conv2d + BatchNorm2d + SiLU

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入