归一化 Normalization

date
Jan 9, 2024
slug
normalization_summary
status
Published
tags
Deep Learning
summary
type
Post

BatchNorm 的特点

💡
BatchNorm 针对批数据进行归一化,针对对当批数据的每个特征通道
 
Batch Normalization(批量归一化)是一种在深度学习中常用的归一化方法,由 Sergey Ioffe 和 Christian Szegedy 在 2015 年提出。Batch Normalization 的主要目标是解决深度神经网络训练过程中的内部协变量偏移问题。
Batch Normalization 的基本思想是对每个特征在一个小批量样本上进行归一化。具体来说,假设我们有一个小批量的输入 ,其中 是批量大小, 是特征的维度。Batch Normalization 的计算过程如下:
  • 计算输入 批量维度上的均值 和方差 :这里, 是输入 的第 个样本。
  • 使用均值 和方差 对输入 进行归一化:其中, 是一个很小的数,防止分母为零。
  • 最后,将归一化的 线性变换到另一个空间,这是通过学习两个参数 来完成的:这里, 是可学习的参数, 负责调整归一化后的比例 (scale), 负责调整偏移 (shift)。
值得注意的是,在测试阶段,我们通常不能计算出完整的批量统计量,因此我们需要在训练阶段保存下来这些统计量的移动平均值,然后在测试阶段使用这些移动平均值来进行归一化。这就是所谓的 "population statistics"。
Batch Normalization 的主要优点是,它可以使深度神经网络的训练更加稳定,加快训练速度,同时还可以起到一定的正则化效果。
 

LayerNorm 的特点

💡
LayerNorm 针对单个样本进行归一化,针对当前样本的所有特征通道
 
Layer Normalization(层归一化)是一种在深度学习中常用的归一化方法,它是由 Jimmy Ba 和 Geoffrey Hinton 在 2016 年提出的。Layer Normalization 主要用于处理深度神经网络训练过程中的内部协变量偏移问题。
Layer Normalization 的基本思想是在一个样本内部对各个特征进行归一化。具体来说,假设我们有一个输入 ,其中 是特征的维度。Layer Normalization 的计算过程如下:
  • 计算输入 在所有特征维度上的均值 和方差
  • 使用均值 和方差 对输入 进行归一化: 是一个很小的数,用于防止分母为零。
 
  • 最后,将归一化的 线性变换到另一个空间,这是通过学习两个参数 来完成的:其中, 是可学习的参数, 负责调整归一化后的比例 (scale), 负责调整偏移 (shift)。
Layer Normalization 的主要优点是,它的归一化操作是在单个样本内部进行的,因此它对于批量大小不敏感,这使得它在训练 RNNs 和 Transformer 等模型时特别有用。
 

LayerNorm 与 BatchNorm 的区别

Batch Normalization(批量归一化)和 Layer Normalization(层归一化)都是深度学习中常用的归一化方法,它们都是为了解决深度神经网络训练过程中的内部协变量偏移问题。然而,它们在操作方式和使用场景上有一些主要的区别。
  1. 操作方式的区别
      • Batch Normalization 是在一个小批量样本上对每个特征进行归一化,即在批量维度进行归一化。具体来说,对于每个特征,它会计算这个小批量样本上该特征的均值和方差,并使用这些统计量来进行归一化。
      • Layer Normalization 是在一个样本内部对所有特征进行归一化,即在特征维度进行归一化。具体来说,对于每个样本,它会计算这个样本上所有特征的均值和方差,并使用这些统计量来进行归一化。
  1. 使用场景的区别
      • Batch Normalization 通常在卷积神经网络(CNNs)中使用,因为在这些网络中,每个特征通常对应一个特定的空间位置,因此在一个小批量样本上对每个特征进行归一化是有意义的。
      • Layer Normalization 通常在循环神经网络(RNNs)和 Transformer 中使用,因为在这些网络中,每个特征不再对应一个特定的空间位置,而且对于不同的时间步,同一个特征可能有不同的含义。因此,在一个样本内部对所有特征进行归一化更为合理。
  1. 对批量大小的敏感性
      • Batch Normalization 对批量大小敏感,因为它是在一个小批量样本上进行归一化的。如果批量大小太小,那么计算出的均值和方差可能会有较大的噪声。
      • Layer Normalization 对批量大小不敏感,因为它是在一个样本内部进行归一化的。这使得 Layer Normalization 在批量大小变化较大或者批量大小较小的情况下,比如在训练 RNNs 和 Transformer 时,特别有用。
  1. 对输入分布的敏感性
      • Batch Normalization 对输入分布敏感,因为它是在一个小批量样本上进行归一化的。如果在训练和测试阶段,输入分布有较大的变化,那么 Batch Normalization 的效果可能会受到影响。
      • Layer Normalization 对输入分布不敏感,因为它是在一个样本内部进行归一化的。这使得 Layer Normalization 在处理具有动态长度或者不同分布的输入时,比如在处理自然语言处理任务时,特别有用。

© Mrzz 2022 - 2025