深度学习各种normalization

各种Normalization层出不穷,现做一下总结,以供大家学习参考

深度学习各种normalization

1. BN:Batch Normalization

这是大家最熟悉的了,结合上图

针对每一批, 正规化,减少前一层对后层的影响

   针对一批中的 每一个 feature进行 normalization(也即每一个 feature采用不同的规范化操作),而 normal后是一个向量,向量的维度是 feature的个数,故而 又可以称其 纵向规范化

2. BR: Batch Renormalization

通过渐进式的移动平均来接近全局正规化 来修复在 训练和预测时 参数(b &W)的不一致问题(在每次计算时,均会包括上一次的normalization params),实际是对BN的改进

3.LN: layer normalization 

对比BN

     它是一种横向规范化,他综合考虑一层所有维度的输入,计算该层的平均输入值和输入方差,然后用、同一个规范化操作来转换各个维度的输入,LN 针对单个训练样本,不依赖其它数据,因此可以避免BN中受mini-batch的数据分布影响的问题,可以用于 小mini-batch, 动态网络  和RNN,此外 LN不需要存储mini-batch的均值和方差

深度学习各种normalization

4. IN: Instance normalization; 

他计算均值和标准差 是基于 每一个训练样本的 每一个channel而言。它解决的问题是网络与原始图片的对比度无关。适用于styletransfer ,目前 在GAN中用它来代替BN

5. GN : Group normalization 

他计算均值和标准差 是基于每一个训练样本 的 多个channels而言。也就是说,他结合了LN和IN.例如,将所有的channel都放在一个group中,那么就变成了LN,如果将每一个channel分别放入不同的group,则变成了IN

6.WN: weight normalization

针对的是 权重(参数)的规范化,WN不直接使用输入数据的统计量,避免了BN过于依赖mini-batch的不足,以及LN每层唯一转换器的限制,可用于动态网络

原理:

深度学习各种normalization

作者建议 结合 mean-only batch normalization一块使用

7. CN:cosine normalization 余弦规范化

主要是针对W*X这个点积操作,数据无范围;而换为CN后,数据范围在[-1,1]之间,可以防止出现梯度爆炸

深度学习各种normalization

 

    

 

知乎: https://zhuanlan.zhihu.com/albertwang

微信公众号:AI-Research-Studio

深度学习各种normalization ​​

下面是赞赏码

深度学习各种normalization