翻译过来就是归一化的意思,指将传统机器学习中的数据归一化方法应用到深度神经网络中,对神经网络中隐藏层的输入进行归一化,从而使网络更加容易训练。
因为,
它有更好的尺度不变性,即给定一个神经层L,它之前神经层L-1的参数变化会导致其输入的分布发生较大的改变,当用SGD来训练网络时,每次参数更新都会导致该神经层的输入分布发生改变,从机器学习角度来看,如果一个神经层的输入发生改变那就意味着其要重新学习,它把每个神经层的输入分布都归一化为标准的正态分布,可以使得每个神经层对其输入具有更好的尺度不变性。
以及更平滑的优化地形,归一化不仅可以使得大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失,还可以使得优化地形更加平滑,从而可以用更大的学习率,提高收敛速度。
下面依次写到,批量归一化(Batch Normalization),层归一化(Layer Normalization),和权重归一化(Weight Normalization)。
BN适用于判别模型中,比如图片分类模型。因为BN注重对每个Batch进行归一化,从而保证数据分布的一致性,而判别模型的结果正是取决于数据整体分布。但是 BN对Batch size的大小比较敏感,由于每次计算均值和方差是在一个上,所以如果Batch size太小,则计算的均值、方差不足以代表整个数据分布。
它指针对同一张图片的同一层所有通道进行Normalization。
层归一化和批量归一化整体上是十分类似的,差别在于归一化的方法不同。
在三维矩阵中 层归一化是对矩阵每一列进行归一化,而批量归一化是对每一行进行归一化。
权重归一化是对神经网络的连接权重进行归一化, 通过再参数化方法, 将连接权重分解为长度和方向两种参数,然后使用SGD分别优化这两个参数