Batch Normalization2025 年 2 月 3 日 | 阅读 9 分钟 什么是批量归一化?批量归一化是一种深度学习过程,它通过缓解训练期间内部协变量偏移的问题,从而提高神经网络的性能并使其更准确,尤其是在训练深度网络时。换句话说,批量归一化是一种监督学习技术,它对神经网络层之间的激活进行归一化。这种归一化“重置”了层能够操作的分布范围,使数据分析更有效。 内部协变量偏移是指由于训练变化影响了上层,导致当前层输入分布的变化。这可能不利于优化,从而减慢模型收敛速度,可能导致次优解。归一化有助于将激活值保持在一定范围内,如果超出范围,可能会减慢各层的学习速率,使各层能够独立学习。 批量归一化可以主要降低 dropout 率,因为它以标准格式对输入进行归一化;这使得精度水平有了巨大提升。 批量归一化如何工作?批量归一化通过减去批量均值,然后除以批量标准差来归一化,从而改进深度学习网络。如果损失函数很大,随机梯度下降会通过修改或归一化输出(通过影响下一层权重精度的参数)来固定标准化。 当应用于某一层时,批量归一化会将其输出的每个元素除以该批量归一化层的输出标准差,然后乘以该批量归一化层的输出均值。这里有两个可训练的参数,它们允许数据“恢复到原始尺度”,从而使批量归一化与梯度下降协调一致。因此,在调整相应权重时,数据损失最小化,网络稳定性得到增强。 批量归一化的主要目的是稳定学习过程并提高模型性能质量。它消除了微调的问题,并允许更高的学习率和更快的训练。批量归一化通常在非线性激活函数之前执行,并且通常与其他技术(如 dropout)结合使用。在图像分类、自然语言处理和机器翻译任务中的巨大性能使其成为现代深度学习方法中的标准程序。 批量归一化的优点批量归一化的优点如下:
批量归一化的缺点批量归一化的缺点如下:
批量归一化与过拟合批量归一化在减少过拟合方面可能有一些有益的作用,但它仍然不能保证模型不会过拟合。然而,如果模型相对于训练数据过于复杂,如果数据质量差,或者模型训练过程中存在问题,仍然会发生过拟合。因此,除了描述的 L1 正则化之外,还可以使用其他技术,如 dropout;在训练过程中使用单独的验证集来评估模型性能以避免过拟合也是必要的。 TensorFlow 中的批量归一化代码步骤
代码片段 说明 此代码展示了使用 TensorFlow 的 Keras 编程接口构建神经网络的基本结构。在此之后,是一个具有 64 个单元的层和一个用于规范化激活的批量归一化层。之后,它使用 ReLU 激活函数;然后它使用另一个具有十个单元的密集层并应用 softmax 激活函数。该模型使用 Adam 优化器进行训练,并使用稀疏分类交叉熵作为编译中使用的损失函数。最后,它将模型拟合到给定训练数据,训练五个 epoch,批量大小为 32。 PyTorch 中的批量归一化代码步骤
代码片段 说明 此 PyTorch 代码通过创建一个继承自 nn.Module 的自定义类来描述基本的神经网络架构。该架构包括一个全连接层,带有一个批量归一化层、ReLU 激活、第二个全连接层以及用于输出的最终 softmax 激活层。这会创建模型,损失函数设置为 CrossEntropyLoss,使用的优化器为 Adam。模型训练了 5 个 epoch,基于提供的数据加载器,并包括前向传播、计算损失、反向传播误差以及更新权重。 批量归一化方程在训练期间,使用以下方程对每个 mini-batch 数据进行层激活的归一化: ![]() 在推理期间,层激活的归一化是使用训练期间计算的激活的均值和方差,而不是使用 mini-batch 的均值和方差。 ![]() 缩放和平移的激活:zi = γyi + β,其中 γ 是输入特征的可学习参数,β 是输出特征的可学习权重。 批量归一化变体层归一化
![]() 其中,μ 和 σ2 是在特征维度上取的平均值;ϵ(epsilon)是一个小的常数,用于避免数值不稳定性。 优点
实例归一化
![]() 其中 μi 和 σi2 是为每个实例 iii 和每个通道计算的均值和方差。 优点
分组归一化
![]() 其中 µg 和 σ2 g 是在每个组 g 内计算的均值和方差。 优点
结论批量归一化是一种非常有效的增强深度学习模型的技术,因为它包含在激活的 mini-batch 归一化中,解决了内部协变量偏移问题并加速了训练。它还使训练更稳定,提高了模型的泛化能力,减轻了初始权重的影响,并允许使用更高的学习率进行训练。同样,它也有缺点,包括对批量大小的依赖、计算时间增加和复杂性,尤其是在 RNN 中。 在 TensorFlow 中,批量归一化通过 tf.keras.layers 提供。它可以轻松地融入模型:Batch Normalization。PyTorch 使用 nn。展示了 BatchNorm1d 在一维数据集上的应用以及在不同框架上执行的能力。然而,尽管其有效性,在使用批量归一化时经常会出现过拟合,并且有必要添加其他形式的正则化并关注模型在训练期间的表现。 下一个主题自然语言处理 Python 最佳书籍 |
我们请求您订阅我们的新闻通讯以获取最新更新。