BatchNormalization、LayerNormalization、InstanceNormalization和GroupNormalization四者的比较

神经网络中有各种归一化算法:Batch Normalization (BN)、Layer Normalization (LN)、Instance Normalization (IN)、Group Normalization (GN)
在这里插入图片描述
从公式看它们都差不多:无非是减去均值,除以标准差,再施以线性映射:
y = γ ( x − μ ( x ) σ ( x ) ) + β y=\gamma (\frac{x-\mu (x)}{\sigma (x)})+\beta y=γ(σ(x)xμ(x))+β
这些归一化算法的主要区别在于操作的 feature map 维度不同。

  • Batch Normalization

Batch Normalization (BN) 是最早出现的,也通常是效果最好的归一化方式。feature map x∈RN×C×H×W 包含 N 个样本,每个样本通道数为 C,高为 H,宽为 W。对其求均值和方差时,将在 N、H、W上操作,而保留通道 C 的维度。具体来说,就是把第1个样本的第1个通道,加上第2个样本第1个通道 … 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。具体公式为:
μ c ( x ) = 1 N × H × W ∑ n = 1 N ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{c}(x) = \frac{1}{N\times H\times W}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{nchw} μc(x)=N×H×W1n=1Nh=1Hw=1Wxnchw
σ c ( x ) = 1 N × H × W ∑ n = 1 N ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ c ( x ) ) 2 + ε \sigma_{c}(x) = \sqrt{\frac{1}{N\times H\times W}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W} (x_{nchw} - \mu_{c}(x))^{2} + \varepsilon } σc(x)=N×H×W1n=1Nh=1Hw=1W(xnchwμc(x))2+ε

如果把 feature map x 类比为一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 W 个字符。BN 求均值时,相当于把这些书按页码一一对应地加起来(例如第1本书第36页,第2本书第36页…),再除以每个页码下的字符总数:N×H×W,因此可以把 BN 看成求“平均书”的操作(注意这个“平均书”每页只有一个字),求标准差时也是同理。

  • Layer Normalization

BN 的一个缺点是需要较大的 batchsize 才能合理估训练数据的均值和方差,这导致内存很可能不够用,同时它也很难应用在训练数据长度不同的 RNN 模型上。Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。

对于 x∈RN×C×H×W ,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。其均值和标准差公式为:

μ n ( x ) = 1 C × H × W ∑ c = 1 C ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{n}(x) = \frac{1}{C \times H \times W}\sum_{c=1}^{C}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{nchw} μn(x)=C×H×W1c=1Ch=1Hw=1Wxnchw
σ n ( x ) = 1 C × H × W ∑ c = 1 C ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ n ( x ) ) 2 + ε \sigma_{n}(x) = \sqrt{\frac{1}{C \times H\times W}\sum_{c=1}^{C}\sum_{h=1}^{H}\sum_{w=1}^{W} (x_{nchw} - \mu_{n}(x))^{2} + \varepsilon } σn(x)=C×H×W1c=1Ch=1Hw=1W(xnchwμn(x))2+ε
继续采用上一节的类比,把一个 batch 的 feature 类比为一摞书。LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,求标准差时也是同理。

  • Instance Normalization

Instance Normalization (IN) 最初用于图像的风格迁移。作者发现,在生成模型中, feature map 的各个 channel 的均值和方差会影响到最终生成图像的风格,因此可以先把图像在 channel 层面归一化,然后再用目标风格图片对应 channel 的均值和标准差“去归一化”,以期获得目标图片的风格。IN 操作也在单个样本内部进行,不依赖 batch。

对于 x∈RN×C×H×W ,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式为:
μ n c ( x ) = 1 H × W ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{nc}(x) = \frac{1}{H \times W}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{nchw} μnc(x)=H×W1h=1Hw=1Wxnchw
σ n c ( x ) = 1 H × W ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ n c ( x ) ) 2 + ε \sigma_{nc}(x) = \sqrt{\frac{1}{H\times W}\sum_{h=1}^{H}\sum_{w=1}^{W} (x_{nchw} - \mu_{nc}(x))^{2} + \varepsilon } σnc(x)=H×W1h=1Hw=1W(xnchwμnc(x))2+ε
IN 求均值时,相当于把一页书中所有字加起来,再除以该页的总字数:H×W,即求每页书的“平均字”,求标准差时也是同理。

  • Group Normalization

Group Normalization (GN) 适用于占用显存比较大的任务,例如图像分割。对这类任务,可能 batchsize 只能是个位数,再大显存就不够用了。而当 batchsize 是个位数时,BN 的表现很差,因为没办法通过几个样本的数据量,来近似总体的均值和标准差。GN 也是独立于 batch 的,它是 LN 和 IN 的折中。
GN 计算均值和标准差时,把每一个样本 feature map 的 channel 分成 G 组,每组将有 C/G 个 channel,然后将这些 channel 中的元素求均值和标准差。各组 channel 用其对应的归一化参数独立地归一化。
μ n g ( x ) = 1 ( C / G ) × H × W ∑ c = ( g ) C / G ( g + 1 ) C / G ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{ng}(x) = \frac{1}{(C/G) \times H \times W}\sum_{c=(g)C/G}^{(g+1)C/G}\sum_{h=1}^{H}\sum_{w=1}^{W} x_{nchw} μng(x)=(C/G)×H×W1c=(g)C/G(g+1)C/Gh=1Hw=1Wxnchw
σ n g ( x ) = 1 ( C / G ) × H × W ∑ c = ( g ) C / G ( g + 1 ) C / G ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ n g ( x ) ) 2 + ε \sigma_{ng}(x) = \sqrt{\frac{1}{(C/G) \times H\times W}\sum_{c=(g)C/G}^{(g+1)C/G}\sum_{h=1}^{H}\sum_{w=1}^{W} (x_{nchw} - \mu_{ng}(x))^{2} + \varepsilon } σng(x)=(C/G)×H×W1c=(g)C/G(g+1)C/Gh=1Hw=1W(xnchwμng(x))2+ε
继续用书类比。GN 相当于把一本 C 页的书平均分成 G 份,每份成为有 C/G 页的小册子,求每个小册子的“平均字”和字的“标准差”。

  • 比较

Weight Normalization和Layer Normalization 都是Batch Normalization的变体。Batch Normalization和Weight Normalization都是属于参数重写(Reparameterization)的方法,Layer Normalization不是。
1、Weight Normalization与Batch Normalization对比

Weight Normalization和Batch Normalization都属于参数重写的方法,只是采用的方式不同,Weight Normalization是对网络权值W进行normalization(L2 norm),因此也称为Weight Normalization;Batch Normalization是对网络某一层输入数据进行normalization。

    Weight Normalization相比Batch Normalization有以下三点优势:

    Weight Normalization通过重写深度学习网络的权重W的方式来加速深度学习网络参数收敛,没有引入minbatch的依赖,适用于RNN(LSTM)网络(Batch Normalization不能直接用于RNN,进行normalization操作,原因在于:1、RNN处理的Sequence是变长的;2、RNN是基于time step计算,如果直接使用Batch Normalization处理,需要保存每个time step下,mini btach的均值和方差,效率低且占内存)。Batch Normalization基于一个mini batch的数据计算均值和方差,而不是基于整个Training set来做,相当于进行梯度计算式引入噪声。因此,Batch Normalization不适用于对噪声敏感的强化学习、生成模型(Generative model:GAN,VAE)使用。相反,Weight Normalization对通过标量g和向量v对权重W进行重写,重写向量v是固定的,因此,基于Weight Normalization的Normalization可以看做比Batch Normalization引入更少的噪声。不需要额外的存储空间来保存mini batch的均值和方差,同时实现Weight Normalization时,对深度学习网络进行正向信号传播和反向梯度计算带来的额外计算开销也很小。因此,要比采用Batch Normalization进行normalization操作时,速度快。 但是, Weight Normalization不具备Batch Normalization把网络每一层的输出Y固定在一个变化范围的作用。因此,采用Weight Normalization进行Normalization时需要特别注意参数初始值的选择。

2、Layer Normalization与Batch Normalization对比

BN针对一个minibatch的输入样本,计算均值和方差,基于计算的均值和方差来对某一层神经网络的输入X中每一个case进行归一化操作。

    但BN有两个明显不足:

    1、高度依赖于mini-batch的大小,实际使用中会对mini-Batch大小进行约束,不适合类似在线学习(mini-batch为1)情况;

    2、不适用于RNN网络中normalize操作:BN实际使用时需要计算并且保存某一层神经网络mini-batch的均值和方差等统计信息,对于对一个固定深度的前向神经网络(DNN,CNN)使用BN,很方便;但对于RNN来说,sequence的长度是不一致的,换句话说RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一个特殊sequence比其的sequence长很多,这样training时,计算很麻烦。但LN可以有效解决上面这两个问题。 LN适用于LSTM的加速,但用于CNN加速时并没有取得比BN更好的效果。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Batch Normalization(批归一化)、Layer Normalization(层归一化)、Instance Normalization(实例归一化)、Group Normalization(组归一化)是常用的归一化技术,用于在神经网络中提升训练效果和稳定性。它们的区别如下: 1. Batch Normalization(批归一化): - 对每个批次的样本进行归一化,即在每个批次上计算均值和方差。 - 在训练过程中,使用当前批次的均值和方差来进行归一化;在测试过程中,使用整个训练集的均值和方差来进行归一化。 - 常用于卷积神经网络中,对每个通道进行归一化。 2. Layer Normalization(层归一化): - 对每个样本的特征维度进行归一化,即在每个样本上计算均值和方差。 - 在训练和测试过程中都使用当前样本的均值和方差来进行归一化。 - 主要应用于循环神经网络(RNN)等不同长度序列数据中。 3. Instance Normalization(实例归一化): - 对每个样本的每个通道进行归一化,即在每个样本的每个通道上计算均值和方差。 - 在训练和测试过程中都使用当前样本的均值和方差来进行归一化。 - 主要应用于图像风格迁移等任务。 4. Group Normalization(组归一化): - 将通道分成多个组,然后在每个组内对每个样本进行归一化,即在每个样本的每个组上计算均值和方差。 - 在训练和测试过程中都使用当前样本的均值和方差来进行归一化。 - 主要用于通道数较少的情况,例如小型网络或者输入数据通道较少的情况。 总结起来,这些归一化方法的区别在于对数据的归一化范围和维度的不同处理方式,适用于不同类型的神经网络和数据。具体选择哪种归一化方法取决于具体的应用场景和网络结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值