相信BN层对大家来说并不陌生,今天除了讲解BN被大家说的比较多的东西外会讲一下BN真正work的本质。今天之所以来讲解BN是因为早上听了一个旷视的讲座,听完之后发现旷视研究院在今年1月19日发表的用来解决小批量训练BN不稳定的问题论文:MABN。这对于一般用自己电脑来训练网络的我来说感觉是一个福音,可以减缓batch_size设小之后性能降低的问题(谷歌在一个月前也提出了改进的FRN:一种不依赖batch的归一化层,不过之前没有关注到),所以本文就作为解读MABN的基础,也顺便当作回顾一下基础。
1.做了一个对比实验,证明BN之所以起作用,并不是因为减少了ICS。
2.作者又做了一个更直观的实验,无论是在VGG还是在DLN(纯线性深度网络,去除了非线性的影响)加了BN之后的ICS都基本持平甚至更大,这更能说明BN并没有减少ICS。
3.作者又做了一个对比实验,对比了损失和梯度。作者发现使用了BN后,loss的变化变得更加稳定,同样梯度也变得更加平滑稳定,这也带出了BN的本质:BN实际上是平滑了优化空间。
4.最后用了一些其他方法和BN效果进行对比,如使用L1,L2的方法,发现效果和BN差不多,而且有些时候可以比BN更好。