Batch Normalization解读

介绍

每一层的输入被之前所有层的参数影响着,所以当网络中的参数有一个很小的变化时,这个变化会随着网络的加深而变大。

covrate shift

令q1(x)表示对预测表现进行评价时,x的密度。令q0(x)表示观测数据x的密度。当q1(x)不等于q0(x)就叫做covrate shift。covrate shift 是怎么产生的呢,因为q0(x)是由采样方式决定的,q1(x)是由总体决定的,在回归分析中,covrate shift经常发生,因为实际情况会受资源限制或者实验方式影响。在人工神经网络中,“动态学习”是一种典型的情况,我们控制q0(x)为了更好地预测。我们可以说,未来x的观测分布和过去是不同的,未来的x分布没有必要和q1(x)相同,但是我们可以给一个虚拟的q1(x)去限制x在一个预测精度可控的范围内。

为什么会产生梯度消失导致训练速度下降

解决方法:激活函数用ReLu、小心的初始化

因此,作者提出了消除内部方差漂移的方法。使用一个新的机制来实现这个想法。它是通过归一化步骤固定每一层的输入的均值和方差。而且此方法可以不受参数规模的限制,或者参数的初始化值的限制,可以减少Dropout的使用。

减少内部方差

内部方差漂移:在训练期间网络参数的改变导致的网络激活值分布的改变。

怎么消除他呢,在训练过程中固定输入x的分布。众所周知,乐村在一篇文章中提过,如果输入是白化的话,网络训练就会收敛的更快,比如,线性的变换为零均值,单位方差,去相关就可以。如果每一层观察到的输入是由底下每一层产生的,这将有利于对每一层的输入实现白化。通过白化每一层的输入,我就可以达到固定输入分布的目的,就可以消除内部方差漂移的不好影响。

我们想白化激活值在训练的每一步,或者是间隔,通过直接修改网络或者改变优化算法的参数去依赖网络的激活值。然而,如果这些修改散布在优化步骤中,那么梯度下降中也许企图更新参数用要求被更新的归一化的方法,这样就会减少梯度的影响。

看不懂待续。。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值