当前位置:   article > 正文

神经网路:批归一化_批归一化和组归一化

批归一化和组归一化

批归一化(Batch Normalization,BN)是一种常用的正则化技术,用于加速深度神经网络的训练过程和提高模型的收敛性。它的主要作用包括以下几个方面:

1. 加速收敛:
BN层通过将输入数据进行标准化,使得各个特征维度具有相似的分布,从而加速模型的收敛速度。

2. 缓解梯度消失/爆炸问题:
在深层神经网络中,梯度消失和梯度爆炸是常见的问题。通过在每个批次数据上进行归一化,BN层可以将梯度范围限制在一个合理的范围内,缓解梯度消失和梯度爆炸问题。

3. 提高模型的鲁棒性:
BN层对输入数据的微小扰动具有一定的鲁棒性,可以提高模型对输入数据的适应能力和泛化能力。

常见的批归一化方法包括以下几种:

1. 批标准化(Batch Normalization,BN):
对每个特征维度进行标准化,通过学习得到每个特征维度的缩放因子和偏移量。

3. 层归一化(Layer Normalization,LN)
对每个样本的所有特征进行标准化,通过学习得到每个样本的缩放因子和偏移量。

5. 组归一化(Group Normalization,GN):
将特征分成若干组,对每组内的特征进行标准化,通过学习得到每组的缩放因子和偏移量。

这些批归一化方法都有各自的优缺点和适用情况:

- BN优点:

  • 加速模型收敛速度。
  • 缓解梯度消失和梯度爆炸问题。
  • 提高模型的鲁棒性。

- BN的缺点:

  • 需要计算每个批次数据的均值和方差,增加了计算开销。
  • 在较小的批次大小下可能引入噪声。

- LN的优点:

  • 不依赖于批次大小,适用于小批次或单样本的情况。
  • 对于逐样本的序列数据,比如自然语言处理任务,表现较好。

- LN的缺点:

  • LN对每个样本的所有特征进行标准化,这在图像数据中可能不太适用。因为图像的不同位置可能具有不同的特征分布,全局归一化可能无法捕捉到局部特征的差异性。
  • LN在处理较大的图像数据时,计算代价较高,因为需要计算每个样本的均值和方差。

- GN的优点:

  • 不受批次大小限制,适用于小批次或单样本的情况。
  • 对于较大的卷积神经网络,可以减少计算开销。

-GN的缺点

  • GN对每个组内的特征进行标准化,这可能导致组间信息的丢失。在图像中,不同组之间可能存在相关性,组归一化可能无法充分利用这种相关性。
  • GN对于小批量训练和小数据集上的表现可能较差,因为每个组内的样本数较少,难以准确估计组内的均值和方差。

当进行批归一化时,我们需要对输入数据进行一系列的计算和转换。下面我将更详细地介绍每个批归一化方法的计算公式和步骤:

1. 批标准化(Batch Normalization,BN):

输入: x = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) x = (x^{(1)}, x^{(2)}, ..., x^{(m)}) x=(x(1),x(2),...,x(m)) m m m为批次大小
计算:

  • 计算均值: μ = 1 m ∑ i = 1 m x ( i ) \mu = \frac{1}{m}\sum_{i=1}^{m}x^{(i)} μ=m1i=1mx(i)
  • 计算方差: σ 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \sigma^2 = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)^2 σ2=m1i=1m(x(i)μ)2
  • 标准化: x ^ ( i ) = x ( i ) − μ σ 2 + ϵ \hat{x}^{(i)} = \frac{x^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}} x^(i)=σ2+ϵ x(i)μ ϵ \epsilon ϵ为一个小的常数(用于数值稳定性)
  • 缩放和平移: y ( i ) = γ x ^ ( i ) + β y^{(i)} = \gamma\hat{x}^{(i)} + \beta y(i)=γx^(i)+β γ \gamma γ为缩放因子, β \beta β为偏移量

在训练过程中,每个批次的均值和方差会被用于标准化,而在推断过程中,使用累积的均值和方差进行标准化。

2. 层归一化(Layer Normalization,LN):

输入: x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) ) x = (x^{(1)}, x^{(2)}, ..., x^{(n)}) x=(x(1),x(2),...,x(n)) n n n为特征维度
计算:

  • 计算均值: μ = 1 n ∑ i = 1 n x ( i ) \mu = \frac{1}{n}\sum_{i=1}^{n}x^{(i)} μ=n1i=1nx(i)
  • 计算方差: σ 2 = 1 n ∑ i = 1 n ( x ( i ) − μ ) 2 \sigma^2 = \frac{1}{n}\sum_{i=1}^{n}(x^{(i)}-\mu)^2 σ2=n1i=1n(x(i)μ)2
  • 标准化: x ^ ( i ) = x ( i ) − μ σ 2 + ϵ \hat{x}^{(i)} = \frac{x^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}} x^(i)=σ2+ϵ x(i)μ ϵ \epsilon ϵ为一个小的常数
  • 缩放和平移: y ( i ) = γ x ^ ( i ) + β y^{(i)} = \gamma\hat{x}^{(i)} + \beta y(i)=γx^(i)+β γ \gamma γ为缩放因子, β \beta β为偏移量

层归一化对每个样本的所有特征进行标准化,适用于逐样本的序列数据,如自然语言处理任务。

3. 组归一化(Group Normalization,GN):

输入: x = ( x ( 1 ) , x ( 2 ) , . . . , x ( g ) ) x = (x^{(1)}, x^{(2)}, ..., x^{(g)}) x=(x(1),x(2),...,x(g)) g g g为分组数
计算:

  • 将特征分组:将特征 x x x分成 g g g组,每组包含 n / g n/g n/g个特征
  • 计算均值: μ = 1 n / g ∑ i = 1 n / g x ( i ) \mu = \frac{1}{n/g}\sum_{i=1}^{n/g}x^{(i)} μ=n/g1i=1n/gx(i)
  • 计算方差: σ 2 = 1 n / g ∑ i = 1 n / g ( x ( i ) − μ ) 2 \sigma^2 = \frac{1}{n/g}\sum_{i=1}^{n/g}(x^{(i)}-\mu)^2 σ2=n/g1i=1n/g(x(i)μ)2
  • 标准化: x ^ ( i ) = x ( i ) − μ σ 2 + ϵ \hat{x}^{(i)} = \frac{x^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}} x^(i)=σ2+ϵ x(i)μ ϵ \epsilon ϵ为一个小的常数
  • 缩放和平移: y ( i ) = γ x ^ ( i ) + β y^{(i)} = \gamma\hat{x}^{(i)} + \beta y(i)=γx^(i)+β γ \gamma γ为缩放因子, β \beta β为偏移量

组归一化将特征分成若干组,对每组内的特征进行标准化。这种方法适用于计算资源受限的情况或具有较大网络的情况。

这些批归一化方法的选择取决于任务和网络架构的需求。一般来说,批标准化(BN)是最常用的批归一化方法,适用于大多数深度神经网络。层归一化(LN)适用于逐样本的序列数据,如自然语言处理任务。组归一化(GN)适用于计算资源受限的情况或具有较大网络的情况。根据实际情况,可以尝试不同的批归一化方法并选择最适合的方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/213446
推荐阅读
相关标签
  

闽ICP备14008679号