[李沐] 批量规范化一

 由于神经网络的表达能力大多来自激活函数的非线性,所以让输入数据“适应于”激活函数是很重要的,具体而言:

  1. 对于sigmoid系列的激活函数而言,由于函数两端过于平坦,所以为了不陷入梯度消失的窘境,我们希望神经元的输入集中在函数中央,而不希望神经元的输入(绝对值)过大。
  2. 对于Relu激活函数而言,由于函数在输入小于0的区域恒等于0,那么从直观上来说,如果一个很大的梯度把某个神经元的输入拉到了小于0很多的区域,该神经元从此以后的输出将永远是0了,因为他基本不可能回到大于0的区域。这就是著名的“Dying Relu问题”,这通常会导致最后很多神经元处于“死亡”状态。
     

简单的将每层得到的数据进行直接的标准化操作显然是不可行的,因为这样会破坏每层自身学到的数据特征。为了使“规范化”之后不破坏层结构本身学到的特征,BN引入了两个可以学习的“重构参数”以期望能够从规范化的数据中重构出层本身学到的特征。 

BN层的优缺点总结
优点:

1、缓解梯度消失,加速网络收敛。

 2、简化调参,网络更稳定。BN层抑制了参数微小变化随网络加深而被放大的问题,对参数变化的适应能力更强,更容易调参。

3、防止过拟合。BN层将每一个batch的均值和方差引入到网络中,由于每个batch的这俩个值都不相同,可看做为训练过程增 加了随机噪声,可以起到一定的正则效果,防止过拟合。

缺点:

1、由于是在batch的维度进行归一化,BN层要求较大的batch才能有效的工作,而物体检测等任务由于占用内存过高,限制了batch的大小,这回限制BN层有效的发挥归一化的功能。

2、数据的batch大小在训练和测试时往往不一样。在训练时一般采用滑动来计算平均值与方差,在测试时直接拿训练集的平均值与方差来使用。这种方式会导致测试集依赖与训练集,然而有时测试集与训练集的数据分布并不一致。

针对上述缺点,GN(Group Normalization)算法从通道方向计算均值和方差,避开了batch大小对归一化的影响。
 

直观地说,这种标准化可以很好地与我们的优化器配合使用,因为它可以将参数的量级进行统一。

请注意,如果我们尝试使用大小为1的小批量应用批量规范化,我们将无法学到任何东西。 这是因为在减去均值之后,每个隐藏单元将为0。 所以,只有使用足够大的小批量,批量规范化这种方法才是有效且稳定的。 请注意,在应用批量规范化时,批量大小的选择可能比没有批量规范化时更重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值