BatchNormalization解释

参考网址:点击打开链接

一、为什么要使用BatchNormalization?

在深度网络的训练过程中,只要网络的前几层发生微小的变化,就会在后面网络的累积放大下去。一旦网络的某一层的输入数据的分布发生了变化,那么这层网络就需要去适应这个新的数据分布,所以训练过程中,如果训练数据一直在发生改变的话,就会使网络的训练速度很慢。为了解决这个问题就可以使用BatchNormalization算法。


二、BatchNormalization是怎么做的?

首先对应的是一种归一化处理,将数据变化为均值为0,标准差为1的数据。即减去平均值,除以标准差。

                                

只是归一化存在一定的问题,当你进行归一化处理后,数据的差距会减小,导致在使用S型激活函数的时候,会让本来处于两侧的数据都跑到了中间部分,这样提取出来的特征就变弱、或者消失了。所以又引入一个变换重构的方式

                                   

参数γ和β是可学习参数

这样当的时候,就会恢复到原来的特征。


最终有


有一个问题:先进行正则,又变回去,那不是等于没变么?

不会。因为,再变换引入的两个新参数 g 和 b,可以表示旧参数作为输入的同一族函数,但是新参数有不同的学习动态。在旧参数中, \bold{x} 的均值取决于下层神经网络的复杂关联;但在新参数中, \bold{y}=\bold{g}\cdot \bold{\hat{x}} + \bold{b} 仅由 \bold{b} 来确定,去除了与下层计算的密切耦合。新参数很容易通过梯度下降来学习,简化了神经网络的训练。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值