四.批量规范化(Batch Normalization)

作者&投稿:斐复 (若有异议请与网页底部的电邮联系)
训练更深层的神经网络一直是深度学习中提高模型性能的重要手段之一。

批规范化操作,不仅加快了模型收敛速度,而且更重要的是在一定程度缓解了深层网络的一个难题“梯度弥散”,从而使得训练深层网络模型更加容易和稳定。另外,批规范化操作不光适用于深层网络,对传统的较浅层网络而言,批规范化也能对网络泛化性能起到一定提升作用。目前批规范化已经成为了几乎所有卷积神经网络的标配。

首先,我们来看一下批规范化操作(简称 BN)的流程。顾名思义,“批规范化”,即 在模型每次随机梯度下降训练时 ,通过mini-batch来对相应的网络响应做规范化操作,使得结果(输出信号各个维度)的均值为0,方差为1。

BN 来规范化某些层或所有层的输入,从而可以固定每层输入信号的均值与方差。这样一来,即使网络模型较深层的响应或梯度很小,也可通过BN的规范化作用将其的尺度变大,以此便可解决深层网络训练很可能带来的“梯度弥散”问题。

同时,通过调整γ和β的值,既可以改变某层原来的输入,又可以保持原输入,这样就提高了模型的容纳能力。

在实验中, 研究人员发现可通过BN来规范化某些层或所有层的输入,从而可以固定每层输入信号的均值与方

差。这样一来,即使网络模型较深层的响应或梯度很小,也可通过BN的规范化作用将其的尺度变大,以此便可解决深层网络训练很可能带来的“梯度弥散”问题。

一个直观的例子:对一组很小的随机数做ℓ2 规范化操作:

关于BN 的使用位置,在卷积神经网络中BN 一般应作用在非线性映射函数前。另外,若神经网络训练时遇到收敛速度较慢,或“梯度爆炸”等无法训练的状况发生时也可以尝试用BN来解决。同时,常规使用情况下同样可加入BN 来加快模型的训练速度,甚至提高模型精度。

~