问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深度学习中的归一化层:BN、LN、IN和GN详解

创作时间:
作者:
@小白创作中心

深度学习中的归一化层:BN、LN、IN和GN详解

引用
1
来源
1.
https://www.cnblogs.com/sdlwh/articles/16793746.html

在深度学习中,归一化层是优化神经网络训练过程的关键技术。本文将详细介绍BN(批量归一化)、LN(层归一化)、IN(实例归一化)和GN(组归一化)等不同类型的归一化方法,帮助读者理解这些技术的原理、优势和适用场景。

内部协变量偏移(Internal Covariate Shift)

在深层神经网络中,由于前输出为后节点输入,使用梯度下降更新参数进而改变前一层输出,会导致后续的输入分布 在每层之间发生较大的变化。这种现象称为内部协变量偏移(Internal Covariate Shift)。越深的层,其偏移的越明显。简单理解可以为“高层大厦底部发生了微小偏移,楼层越高,偏移越严重”。

解决问题的方法

本质:使得每一层的输入分布在训练过程保持一致。

2.1 批量归一化(Batch Normalization,BN)

某层的计算公式,表示为第 $l$ 层的净输入为 ${z}^{\left(l\right)}$,神经元的输出为 ${a}^{\left(l\right)}$ ,其中 ${z}^{\left(l\right)}=W{a}^{\left(l-1\right)}+b$ 。

${a}^{\left(l\right)}=f\left({z}^{\left(l\right)}\right)=f\left(W{a}^{\left(l-1\right)}+b\right)$

要解决内部协变量偏移问题,需要使 ${z}^{\left(l\right)}$ 的分布一致。一般使用标准归一化,将净输入 ${z}^{\left(l\right)}$ 的每一维都归一到标准正态分布。

${\overline{z}}^{\left(l\right)}=\frac{{z}^{\left(l\right)}-E\left({z}^{\left(l\right)}\right)}{\sqrt{var\left({z}^{\left(l\right)}+\epsilon \right)}}$

均值期望和方差哪里来? 按批次或者样本数量去求。给定一个包含 $K$ 个样本的小批量样本集合,第 $l$ 层神经元的净输入 的均值和方差为:

${u}_{\left(l\right)}=\frac{1}{K}\sum _{k=1}^{K}{z}^{\left(k,l\right)}$

${\sigma }{\left(l\right)}^{2}=\frac{1}{K}\sum {k=1}^{K}\left({z}^{\left(k,l\right)}-{\mu }{\left(l\right)}\right)\odot \left({z}^{\left(k,l\right)}-{\mu }{\left(l\right)}\right)$

对净输入的标准归一化会使得其取值集中在0附近,如果使用sigmoid型函数时,这个取值区间刚好接近线性变换区间,减弱了神经网络的非线性性质,因此,为了使得归一化不对网络的表示能力造成负面影响,我们可以通过一个附加的缩放和平移变换改变取值区间。

${\overline{z}}^{\left(l\right)}=\frac{{z}^{\left(l\right)}-{\mu }{\left(l\right)}}{\sqrt{{\sigma }{\left(l\right)}^{2}+\epsilon }}\odot \gamma +\beta ⇒BN_{r,\beta}\left({z}^{\left(l\right)}\right)$

其中$\gamma$和$\beta$分别代表缩放和平移的参数向量,当$\gamma =\sqrt{{\sigma }{\left(l\right)}^{2}}$, $\beta ={\mu }{\left(l\right)}$时, ${\overline{z}}^{\left(l\right)}={z}^{\left(l\right)}$。

批量归一化可以看作是一个特殊的神经层,加在每一层非线性激活函数之前,即

${a}^{\left(l\right)}=f\left(BN_{\gamma ,\beta }\left({z}^{\left(l\right)}\right)\right)=f\left(BN_{\gamma ,\beta }\left(W{a}^{\left(l-1\right)}\right)\right)$

2.1.1 BN 的优势
  • 解决“internal covariate shift”的问题。
  • $\gamma$ 和 $\beta$ 的作用:
    • γ 和 β 作为调整参数,既可以统一分布,同时也可以保持原输入,提升模型的容纳能力(capacity)。
    • 如果是 sigmoid 函数,BN后的分布在0-1之间,在接近0的地方趋于线性,通过 γ 和 β 可以自动调整输入分布,使得其非线性能力不至于减弱。
    • 如果为 ReLU 函数,意味着将有一半的激活函数无法使用,那么通过 β 可以进行调整参与激活的数据的比例,防止 dead-Relu 问题。
  • 可以控制数据的分布范围,避免了梯度消失和爆炸。
  • 降低权重初始化的困难。
  • BN 可以起到和 dropout 一样的正则化效果,一般全连接层用dropout,卷积层用 BN。

2.2 层归一化(Layer Normalization,LN)

LN的思路和BN相似,只不过归一化的整体选取不同。

看出 BN 是 N 和 F 上归一化,LN 是 C 和 F 上归一化。

如果结合到时间序列预测 [N, C, F] 对应 [batch_size, seq_len, hidden_dim],即总时间步长上进行归一化。

何时要用 LN?

BN 是按照样本数计算归一化统计量。

  • 所以当样本数很少时,其均值和方差便不能反映全局的统计分布息,效果会变得很差。
  • 在一些场景中,比如说硬件资源受限,在线学习等场景,BN是非常不适用的。
  • 其次像 RNN 这种类型的网络,每个bacth的样本长度可能不一样长度,所以 BN 再次不能代表全体,转换到每层去处理的 LN 更合理一些。

2.3 其他归一化(IN/GN)比较

其实思路都一样,只不过是归一化的部分不同。

四种归一化比较:

  • BN:batch方向做归一化,计算NHW的
  • FN:channel方向做归一化,计算CHW的
  • InstanceNorm:一个channel内做归一化,计算H*W的
  • GroupNorm:先将channel方向分group,然后每个group内做归一化,计算(C//G)HW的

GN 与 LN 和 IN 有关,LN 和 IN 在 RNN 系列 或 GAN 模型方面特别成功。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号