神经网络知识补充(一)之Batch Normalization的理解

————————————————
版权声明:本文为CSDN博主「xiaoming_tju」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gongliming_/article/details/90214338

1、BN的作用原理

BN往往作用于卷积层之后,激活函数Relu之前,即满足:conv+BN+Relu。
BN就是调整每层卷积网络输出数据的分布,使其进入激活函数的作用区。激活函数的作用区就是指原点附近的区域,梯度弥散率低,区分率高。同时,BN会在训练过程中,自己调节数据分布,使其“更合理”地进入激活函数。
卷积后,数据输出的分布会出现下图的几种情况。当x<0时,经过激活函数,数据全部没用,当x>0时,经过激活函数,数据分布不变。
我们在训练的时候,都是输入一批一批的训练数据(mini-batch),比如batch size=32,那一次输入32个数据。这批数据可能满足一个分布A,如果A分布属于情况1和情况2,那分布A在通过激活函数(非线性层)时,修剪率会很高或者很低。(修剪率是我自己定义的一个说法,神经网络就是通过特征提取层(如conv)提取特征再通过激活函数修剪从而实现神经网络的函数表达力),但是情况3所示的数据分布却恰到好处。
上述用的激活函数是relu,在x>0时保持不变,<0时变为0。对于1、2两种情况,要么修剪得过少,等于没用激活函数;要么修剪得过多,一大批0传到后面。当然,在不断训练的过程中,情况1、2都会慢慢减少,因为特征提取层越来越牛x。但这需要用更多训练时间去填补,而且最终的性能不会很好,虽然是batch训练,但它的视野没到batch分布那个层面。视野太窄,也更容易过拟合。如果用其他激活函数比如sigmoid/tanh等,还有梯度加速弥散的问题存在。
在这里插入图片描述

2、标准正态分布

标准正态分布:均值为0,标准差为1的正态分布,记作:N(0,1)
公式:
在这里插入图片描述
对于x~N(μ, σ^2)而言,如果x’ = (x- μ)/σ,则x’~N(0, 1)

3、BN论文的操作

在这里插入图片描述
第一步,我们获得了一个mini-batch的输入в = {x1,…, xm},可以看出batch size就是m。

第二步,求这个batch的均值μ和方差σ

第三步,对所有xi ∈в,进行一个标准化,得到xi`。

第四步,对xi`做一个线性变换,得到输出yi。

第四步恰好是BN的精髓之处:γ和β是可学习的,成为可学习重构参数。我们获得一个关于y轴对称的分布真的是最符合神经网络训练的吗?没有任何理由能证明这点。事实上,γ和β为输出的线性调整参数,可以让分布曲线压缩或延长一点,左移或右移一点。由于γ和β是可训练的,那么意味着神经网络会随着训练过程自己挑选一个最适合的分布。如果我们固执地不用γ和β会怎么样呢?那势必会把压力转移到特征提取层,虽然最后结果依然可观,但训练压力会很大。你想想,一边只需要训练两个数,另一边需要训练特征提取层来符合最优分布就是关于y轴的对称曲线。前者自然训练成本更低。

4、BN的作用

(1)代替dropout方法,防止过拟合。
(2)加速收敛。减少epoch轮数,因为不必训练神经网络去适应数据的分布。同时,完美地使用了激活函数对数据的“修剪”,减少梯度弥散。同时,学习率也可以大一点。
(3)提高了精度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值