Batch Normalization理解总结

一、问题的提出

        在训练深度神经网络时,随着梯度的下降,网络中的参数会不断更新。当前面网络的参数发生微小变化时,随着每一层的前向传播(线性层和激活函数等)而会使该微小的变化随网络的加深而变大,同时参数的改变会使得每一层的数据分布发生变化,这就是 Internal Covariate Shift(内部协变量偏移)。由于内部协变量偏移问题,后面层的网络需要不断调整以适应前面层输入数据分布(参数)的变化,因而在训练网络时需要使用低的学习率并且谨慎选择初始化参数,这使得模型训练的很慢。而且,在深度神经网络中,若使用饱和非线性激活函数(sigmoid,tanh等),可能会导致梯度消失。

        举两个例子:例1:如图一,当输入两组数据大小相差很大时(x1>>x2),在x2上梯度下降快,但在x1上无明显变化。其梯度下降图左下方所示,传统做法是对输入数据进行特征缩放,使其梯度下降如图右下方所示。但由于ICS(内部协变量偏移),若对每层做特征缩放,则很难达到所有层同步变化,因而我们必须降低学习率,谨慎选择初始化参数,致使网络训练较慢。

图一
图二

例2:以使用sigmoid激活函数为例,如上图2二所示,当输入信号值很大(右侧蓝色虚线所标)或者输入信号很小(左侧蓝色虚线所标)时,梯度接近于零,因而容易产生梯度离散现象。

二、以往的解决办法——白化

        白化是机器学习规范数据分布的方法,主要有PCA白化和ZCA白化。它们的目的是去除特征间的相关性,并且使得输入特征分布具有相同的均值和方差。PCA白化和ZCA白化的主要区别是PCA处理后数据服从均值为0,方差为1的标准正态分布;ZCA处理后数据服从均值为0,方差为任意一个值的正态分布。白化通过固定输入特征的分布,加速了模型的训练,但白化也存在一定的问题,如:计算成本高,改变了神经网络本身层的数据表达能力(表达意义)。

三、Batch Normalization的直观思想

        BN就是将打乱的数据集分为若干batch,对于每一个batch单独做normaliazation,使其输入特征服从均值为0,方差为1的标准正态分布。为了保证数据能够表达出原有的含义,对normalization后的数据作线性变换,使其能够表达出原有含义。BN的目的就是通过改变输入数据分布来得到较优梯度。

normalization:

线性变换:

 四、Batch Normalization步骤

 在训练集上,BN步骤为,输入一个mini-batch,求出mini-batch的均值和方差,进行标准化处理,线性变化(变换和平移)。

在测试集上,记录训练集上每个batch均值的期望和方差的期望作为测试集的均值和方差。

使用训练好的β,γ进行线性变换

 训练一个Batch Normalization网络完整算法

 

注:μ,𝞼 由batch中的data决定;β,γ 是网络中的参数,是学习得到的;ε防止方差为0,保持数值的稳定性。

五、Batch Normalization的优缺点

 优点:

        1、对模型初始化和超参数的影响不敏感。如下图所示,将参数乘以k倍,最后结果不变。

             

        2、加速模型的收敛,能使用大的学习率。

        3、有一定的正则化作用,不用dropout,减少正则化的使用,不易过拟合。batch中的数据都是从总体样本中抽样,但不同的mini-batch的均值方差不同,这就相当于增加了随机噪声,与dropout关闭神经元带来噪声类似,有一定正则化效果。

        4、去除局部响应归一化(Alexnet用到的方法),相当于做了数据增强。

缺点:

        1、batchsize 选择要慎重,太小的batch可能得到的均值方差不准确,影响训练。

        2、不太适用于RNN。

参考

1、https://arxiv.org/abs/1502.03167  《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》

2、https://www.bilibili.com/video/BV1Ey4y1y7g1/?share_source=copy_web&vd_source=18dcc28103cc0293145a663372a414fa

3、Batch Normalization(批量归一化)的作用_真心乖宝宝的博客-CSDN博客_批量归一化的作用a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值