深度学习《CNN架构续篇 - BatchNorm》

一:batch Normalization
BN算法的灵感来自于对图像的白化操作,白化就是对输入图像数据分原始分布规律转换到N(0~1)的分布,这样会使得收敛速度变快。
在深度网络中每一隐藏层的输入都可以做这样的白化处理呢?
随着网络深度的增加,收敛变慢的的原因还有就是数据的分布会变得越来越畸形,数据分布法还是能移动,这也是会导致梯度消失的原因,因此在每个隐藏层如果都做一个Normalization 的操作,那么就会消除数据不同特征之间的分布的特征范围差异,减少梯度消失的可能性。
算法一共有四个步骤,包括计算均值,计算方差,进行标准化,进行线性变化(使得网络性能维持)。
简单说来,BN的目的是稳定每一层的输入分布,减少数据偏移。
在这里插入图片描述

截图来自BN的论文。这个计算过程也容易理解,其实前三两步骤也就是概率论中学到的参数估计,估计数据的均值与方差,第三步骤是对数据进行转到标准正态分布N~(0,1),第四步是标准化后的数据进行线性映射。

二:注意的点
BN通常作用于mini-batch中,另外运用BN后,会给每一层隐藏网络增加了γ和β,这俩参数也是需要梯度下降等算法进行学习的。

于是我们需要更新的参数从之前的θ拓展了,增加了连个参数,但是学习过程和更新过程都是和θ的过程一毛一样的。如下所示:
在这里插入图片描述

需要说明的是,这个是标准的梯度下降的算法,其实式子一样还可以变形,之前我们学习了梯度下降的优化,我们一般选择mini-batch的方式,而且在更新数据的时候,实际计算中我们还可以选择动量梯度下降或者RMSprop或者Adam的计算方式,都是可以的。

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/108912262