深度学习的归一化方法

目录

  • 1 为什么使用 Normalization?
  • 2 BatchNorm vs. LayerNorm
    • 适用场景
    • 工作原理
  • 3 GroupNorm

  本次介绍一下各种归一化方法,包括 BatchNorm、LayerNorm、InstanceNorm、GroupNorm

深度学习的归一化方法_第1张图片

  • BatchNorm:batch 方向做归一化;
  • LayerNorm:channel 方向做归一化;
  • InstanceNorm:一个 channel 内做归一化;
  • GroupNorm:将 channel 方向分组,然后每个组内做归一化;

1 为什么使用 Normalization?

  当使用梯度下降时,数据的特征分布会发生变化,为了保证数据特征分布的稳定性,则会使用归一化操作,将数据转换为均值为1、方差为0,从而加速模型的收敛速度、减少梯度消失的问题、使训练过程更加平稳。

2 BatchNorm vs. LayerNorm

适用场景

  在 CNN 中一般采用 BatchNorm,而在 Transformer 中一般采用 LayerNorm。
  BN 在 mini-batch 较小的情况下不太适用,BN 是对整个 mini-batch 的样本统计均值和方差,当训练样本数很少时无法反映全局的统计分布信息;
  BN 无法应用于 RNN,不同句子的长度不一样,对所有的样本统计均值是无意义的;
  LN 特别适合处理变长数据,对 channel 维度(即 NLP 中的 hidden 维度) 做操作,与句子长度和 batch size 无关,因此 Transformer 一般使用的是 Layer Normalization。

工作原理

先来看看二者的公式:
B N : y i = x i − μ B σ B 2 + ϵ ∗ γ + β L N : y i = x i − μ L σ L 2 + ϵ ∗ γ + β BN: \quad y_{i} = \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} * \gamma + \beta \quad \quad \quad LN: \quad y_{i} = \frac{x_i-\mu_L}{\sqrt{\sigma_L^2+\epsilon}} * \gamma + \beta BN:yi=σB2+ϵ xiμBγ+βLN:yi=σL2+ϵ xiμLγ+β
都是将输入特征转换为均值为1,方差为0的数据,不同在于
深度学习的归一化方法_第2张图片
BN 是对不同样本的同一特征做归一化,即在每个维度上统计所有样本的均值和方差;
LN 是对每个样本的所有特征做归一化,不受样本数量的限制,即在每个样本上统计所有维度的均值和方差;
所以 BN 在每个维度上分布是稳定的,LN 在每个样本的分布是稳定的。

3 GroupNorm

  上面提到了 BN 在 mini-batch 较小的情况下不太适用,而 GN 便解决了 BN 对 batch size 依赖的影响。
  GN 将通道分组,计算每组的均值和方差,进行归一化操作。GN 的计算与 batch size 无关。通过文章第一张图可以看出,GN 和 LN 相似。

你可能感兴趣的:(深度学习,深度学习,自然语言处理)