点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
![](http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIENb0m5iawutIf90N2Ub3dcPuP2KXHJvaR1Fv2FnicTuOy3KcHuIEJbd9lUyOibeXqW8tEhoJGL98qOw/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
本文是arxiv文章
How Does Batch Normalization Help Optimization?
链接:
https://arxiv.org/abs/1805.11604
的一篇阅读笔记。文章很好,通过对比实验帮助我们理解why BN work!
-
没有证据表明BN的work,是因为减少了
ICS(Interval Covariate Shift)
。
-
BN work的根本原因,是因为在网络的训练阶段,其能够让优化空间(
optimization landscape
)变的平滑。
-
其他的normalization技术也能够像BN那样对于网络的训练起到作用。
在文章Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift中,其对与ICS是这样解释的:由于前一层的参数更新,所以这一层的输入(前一层的输出)的分布会发生变化,这种现象被称之为ICS。同样,这篇文章的观点认为BN work的真正原因,在与其将数据的分布都归一化到均值为0,方差为1的分布上去。因此,每一层的输入(上一层输出经过BN后)分布的稳定性都提高了,故而整体减小了网络的ICS。
1、BN work的原因是否真的与ICS有关?
2、BN层是否真的能够稳定输入分布?
在训练阶段,使用一下三种训练方法进行训练
观察上图左,可以发现加了noisy BN和标准的BN在training accuracy和收敛速度上几乎没有差异,并且都优于不加BN的方法。
没有证据表明BN的性能是因为提高了输入分布的稳定性。即BN与ICS无关。
-
训练一个(25-layer deep linear network, DLN),即去除网络中的所有非线性激活层,只保留线性层,这么做的目的是为了在统计ICS时,减少非线性激活层对数据分布的影响。
-
最后发现,带BN层的DLN不像预想的那样减少了ICS,反而增大了ICS。
从优化的角度来看,通过使用BN来控制layer的输入分布并不能减少ICS
Ioffe and Szegedy在文章中说,
BN可以防止梯度爆炸或弥散、可以提高训练时模型对于不同超参(学习率、初始化)的鲁棒性、可以让大部分的激活函数能够远离其饱和区域
。所有这些BN的性质,都可以帮助我们快速鲁棒的训练网络。但是该怎么解释呢?
作者认为,BN能够work的真正原因在于
BN重新改变了优化问题,使得优化空间变得非常平滑。
对于没有BN的神经网络,其loss函数是不仅非凸,并且还有很多flat regions、sharp minimal。这就使得那些基于梯度的优化方法变得不稳定,因为很容易出现过大或者过小的梯度值。
观察上图,可以发现,在使用了BN后,loss的变化变得更加稳定,不会出现过大的跳动;同样,梯度也变得更加平滑。
2.2 是否BN是最好或者唯一的方法来对优化空间进行平滑
-
不使用BN
-
使用标准BN
-
使用L1 归一化方法
-
使用L2归一化方法
-
使用
L
归一化方法
很多normalization的方法都可以达到BN的效果,甚至更好。
文章理论分析部分做了很多定理和推论,这里就不做具体分析啦。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。