Tricks:Batch Normalization算法原理

目录

一、提出背景

二、Batch Normalization算法思路

三、在全连接层和卷积层中的Batch Normalization 

四、使用Batch Normalization的优势

一、提出背景

        深度神经网络的损失都出现在网络的最后一层,因此在进行反向传播训练时,更深的层训练得更快,而前面的层训练得比较慢。但是当底层网络的参数训练得比较好的时候,深层网络的参数不得不重新进行迭代,因此更深的层需要反复训练多次,导致训练变慢。那么BN的提出,使得不同层数据服从于相近的分布,避免了反复训练,加速收敛。原论文链接:Batch Normalization

二、Batch Normalization算法思路

        首先对每一个mini-batch求均值和方差,按照标准化公式对数据进行更新:

         然后对于每一个进行normalization的mini-batch,都引入一对可学习的参数γ和β,以此调整数据所服从的分布,γ可以看做是一个标准差,β可以看做是一种均值:

        训练过程如下:

Tricks:Batch Normalization算法原理_第1张图片

         在推理时,BN训练完成之后,,当来一个测试样本进行预测时,我们只需要带入固定的参数,根据BN前向传播的公式进行BN就可以了。但是要注意的是:在推理阶段,对均值和方差的求解不再和训练阶段时的求法一样。这里的均值和方差是根据训练过程中每一次batch得到的均值和方差求解得到的,即求每一个batch的均值和方差的期望的无偏估计:

Tricks:Batch Normalization算法原理_第2张图片

Tricks:Batch Normalization算法原理_第3张图片

 

三、在全连接层和卷积层中的Batch Normalization 

        全连接层:输入为二维,每一行是一个样本,每一列是一个特征;对于全连接层来讲,对每一个特征计算均值和方差。

        卷积层:输入为四维[batch, channel, h, w],从[h,w]维度上看,每一个像素可以看成是一个样本,每个像素所拥有的通道数可以看成是每个样本所拥有的特征维度,即每个通道对应一种特征/模式,因此对于卷积层来讲是在通道维上进行normalization。

四、使用Batch Normalization的优势

(1)可以适当地使用更大的学习率;

(2)对于全连接层来讲,使用BN就不必再使用Dropout层;

(3)可以加快收敛速度,但是一般不会改变模型精度;

(4)BN阻止了网络陷入饱和模式,让使用饱和非线性成为可能。

------------------------------创作不易,给个赞吧--------------------------------

你可能感兴趣的:(Deep,Learning,Tricks,人工智能,深度学习,机器学习,算法)