深度神经网络的批量归一化
本帖最后由 Handsome_zhou 于 2022-11-11 15:22 编辑逐层归一化
逐层归一化是将传统机器学习中的数据归一化方法应用到深度神经网络中,对神经网络中隐藏层的输入进行归一化,从而使得网络更容易训练。
逐层归一化有效提高训练的原因:
(1)更好的尺度不变性:
在深度神经网络中,一个神经层的输入是之前神经层的输出。给定一个神经层L,它之前的神经层的参数变化会导致其输入的分布发生较大
的改变。当使用随机梯度下降来训练网络时,每次参数更新都会导致该神经层的输入分布发生改变。越高的层,其输入分布会改变的越明显。
在机器学习中,如果一个神经层的输入分布发生了改变,那么其参数需要重新学习,这种现象叫做内部协变量偏移。
为了解决这个问题,对每个神经层的输入进行归一化操作,使其分布保持稳定。
把每个神经层的输入分布都归一化为标准正太分布,可以使得每个神经层对其输入具有更好的尺度不变性。
不论低层的参数如何变化,高层的输入保持相对稳定。另外,尺度不变性使得我们更加高效的进行参数初始化以及超参选择。
(2)更平滑的优化地形:
逐层归一化一方面可以使得大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失问题。另一方面还可以使得神经网络的
优化地形更加平滑,以及使得梯度变得更加稳定,允许我们使用更大的学习率,并提高收敛速度。
逐层归一化方法:
(1)批量归一化
批量归一化方法是一种有效的逐层归一化方法,可以对神经网络中任意的中间层进行归一化操作。
批量归一化提出是为了解决内部协变量偏移的问题,但是研究发现其主要优点是使得优化地形更加平滑。
批量归一化的计算方法:令第L层的净输入为zl,神经元的输出为al。W和b是可学习参数。为了提高优化效率,就要
使净输入zl的分布一致,比如都归一化到标准正态分布。实践中归一化操作一般应用在仿射变换Wa+b之后,激活函数
之前。
页:
[1]