深度学习中的规范化(BN、LN等四种规范化)

这篇文章介绍深度学习四种主流的规范化, 分别是Batch Normalization(BN[9]), Layer Normalization(LN[7]), Instance Normalization(IN[8])以及Group Normalization(GN[2])。

1. 作用

为啥用Normalization? 这是因为训练深度神经网络会收敛很慢,很有可能发生梯度弥散或者梯度爆炸。用了Normalization可以训练得很快,学习更好。

2. 做法

在这里插入图片描述
下面这张图[2]很直观地解释了各种Normalization处理张量的不同之处。
在这里插入图片描述

给定一个四维张量x,四维依次代表[batchsize,channel,height,width], 简单起见,表示为(N,C,H,W),上图中,张量的第三个维度以及第四个维度合起来组成了一个维度,方便展示。

BN:可以看到BN是以C为滑动轴,对BHW三个维度求和取平均,所以期望的维度是(1,C,1,1),然后利用期望求出方差。

LN: LN与BN刚好是垂直的位置,是以B为滑动轴,对CHW三个维度求和取平均,期望的维度是(N,1,1,1)。

IN: IN则是LN和BN的交汇,以B和C双轴滑动,对HW两个维度求和取平均,期望的维度是(N,C,1,1)。

GN: GN则是IN和LN的一种折中考虑,对C维度进行了分组,上图中是分成了两组,所以最后期望的维度是(N,2,1,1)。

3. 原理与使用

深度神经网络中的Normalization最先是出现在AlexNet网络中的LRN(local response normalization), 而LRN计算的是像素局部的统计量,对加速收敛没有什么作用。开山加速收敛的Normalization方法是BN,那么它是怎么加速收敛的呢?首先要弄清楚为什么没有BN,收敛会慢,对于一个深层网络来说,会发生梯度弥散, 这样在反向传播更新梯度时,会更新得非常慢,收敛也会变得慢,而BN将原来要变小的activation通过规范化操作,使activation的尺度变大,这样就消除了梯度弥散而导致参数更新慢的影响。

参考:https://blog.csdn.net/weixin_34414650/article/details/94529982

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值