深入理解Batch Normalization批标准化

由于近期在看论文代码的时候看到,在有无BN之后的初始化参数的方式不同 。怎么都想不通原因于是想在重新学习一下Batch Normalization标准化的用法

参考论文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

我之前对归一化的想法就是:将数据变成均值为0方差为1。

机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。而BatchNorm是干啥的呢?BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

它的作用就相当于将不同的范围的特征值,按照一定的比例(可以是理解为某种映射关系)整合到同一个范围。

BN算法的优点

(1)你可以选择比较大的初始学习率,让你的训练速度飙涨。以前还需要慢慢调整学习率,甚至在网络训练到一半的时候,还需要想着学习率进一步调小的比例选择多少比较合适,现在我们可以采用初始很大的学习率,然后学习率的衰减速度也很大,因为这个算法收敛很快。当然这个算法即使你选择了较小的学习率,也比以前的收敛速度快,因为它具有快速训练收敛的特性;

(2)你再也不用去理会过拟合中drop out、L2正则项参数的选择问题,采用BN算法后,你可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;

(3)再也不需要使用使用局部响应归一化层了(局部响应归一化是Alexnet网络用到的方法,搞视觉的估计比较熟悉),因为BN本身就是一个归一化网络层;

(4)可以把训练数据彻底打乱。

那么深度学习的网络框架中归一化是如何一步一步实现的呢?

先上一张图来总体的看一下,他是如何操作的:

先是计算平均值,然后计算方差,再是减掉平均值比上方差,此时就得到了归一化之后的Xi。

也参照了NG说的教程。

所以通过对?和 ?合理设定,规范化过程,即这四个等式,从根本来说,只是计算恒等函数,所以这里的均值和方差可以是0和1,也可以是其他值。知道通过改变?和 ?的值就行了。

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值