2019-03-17神经网络——BN

https://nndl.github.io/chap-%E7%BD%91%E7%BB%9C%E4%BC%98%E5%8C%96%E4%B8%8E%E6%AD%A3%E5%88%99%E5%8C%96.pdf


在神经网络中,每层的输入时上一层的输出,如果底层的输入发生微小的变化,带来的影响是上层的网络参数变化很大,需要重新训练,在机器学习中叫做内部协变量偏移,为了解决内部协变量偏移的问题,需要让每层神经网络的输入在分布上保持一致,最简单的方法就是对每一层参数进行归一化操作,使分布保持稳定。

其中BN批量正则化是有效的方式:

BN通常用于仿射变化之后,激活函数之前,这样分布性质比较稳定。一般使用标准归一化的方法,将zl归一化到标准正态分布:

其中E表示每一维的期望,var方差。但是直接计算期望和方差计算量是很大的,因此在训练前通过小批量样本预先计算。

但是直接进行归一到标准正态分布的操作,会使zl分布集中在0附近,如果使用sigmoid之类的激活函数,zl大多分布在线性区,减弱了神经网络的表达能力(但是同时也减弱了过拟合?)所以一般还要加两个参数,进行一下缩放和平移:

gama和beta分别表示缩放和平移量

最终得到:其中因为BN本身就带平移变换,因此不需要再加偏移量

你可能感兴趣的:(2019-03-17神经网络——BN)