Batch Normalization批标准化:概率在神经网络中的重要地位

在学YOLO的时候,正好看到YOLOv2上使用了BN,而自己虽然一直用但却不清楚其中的原理。因此膜拜一下别人的博客,将内容记录于此。

首先,郭耀华的博客里讲的真的很详细。下面的所有引文都是该博客中的原话,中间我觉的不太重要的部分进行了概括。

首先整段引用一下BN的作用:

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

也即,我们不仅需要考虑网络级的独立同分布,同样也得考虑每一层自身的独立同分布。而这对于训练中一直在改变参数的层至关重要。举例来说,假设一个训好的网络满足独立同分布,然后你迁移学习的过程中,前面层的输出随着训练进行变得和之前不一样了,那我基于之前输出训的后面的层岂不是一直受你之前的偏差影响。

而之前的研究表明,输入图像进行白化(Whiten)操作的话——所谓白化就是对输入数据分布变换到0均值,单位方差的正态分布——那么神经网络会较快收敛。那如果对每一个隐含层都做白化不是就能抑制这种问题了吗?这就是BN思想的雏形。

BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

不过这样做也会有个问题,即把非线性部分的输入移动到线性部分,自然会使得网络整体的非线性减少,降低网络的表达空间。因此为了解决这个问题,BN对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift)。其中这两个参数scale和shift都是可以学习的。也即,这个参数又使输入的分布变胖/变瘦了一点并左右移动了一点。

上面的部分都是对BN的抽象分析,那具体怎么做呢?

 假设对于一个深层神经网络来说,其中两层结构如下:

  图5  DNN其中两层

  要对每个隐层神经元的激活值做BN,可以想象成每个隐层又加上了一层BN操作层,它位于X=WU+B激活值获得之后,非线性函数变换之前,其图示如下:

再具体一点,假设一个Batch的训练样本在BN层前的输入分别是x^{(k)},k=1,...,n则其经过BN层后的输出分别为

也即,总的看整个Batch的BN层输出数据,符合标准正态分布。(这里看不懂需要补一下概率论知识)当然,接着还会经过上文中提到的scale和shift操作。

虽然BN在训练阶段大显神威,但对于测试阶段只有一个样本的情况,BN明细难以求batch内的均值和方差,怎么办呢?

测试实际上使用了训练实例的全局均值和方差

最后,贴一个BN的好处:

BatchNorm为什么NB呢,关键还是效果好。

  1. 不仅仅极大提升了训练速度,收敛过程大大加快;
  2. 能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;
  3. 调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。

总而言之,经过这么简单的变换,带来的好处多得很,这也是为何现在BN这么快流行起来的原因。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值