输入归一化、批量归一化(BN)与层归一化(LN)


1 输入归一化

不同输入特征的取值范围差异比较大时,会影响到梯度下降法的效率。以2维特征为例,特征取值不同会导致大多数位置的梯度方向并不是最优的搜索方向,当使用梯度下降法寻求最优解时,会导致需要很多次迭代才能收敛,如图(a);当特征归一化后,梯度方向会近似为最优的搜索方向,如图(b)。

神经网络 算法 归一函数 神经网络的归一化_深度学习

2 批量归一化&层归一化

神经网络都是多层结构,上一层 的输出即为下一层的输入,所以即使输入数据做了归一化,由于经过了线性变换以及激活函数,下一层的输入在取值范围可能又会有比较大的差别。从机器学习角度来看,如果某个神经层的输入分布发生了改变,那么其参数需要重新学习,这种现象叫做内部协变量偏移(Internal Covariate Shift)。

在传统机器学习中, 一个常见的问题是协变量偏移(Covariate Shift)。协变量是一个统计学概念,是可能影响预测结果的统计变量。在机器学习中,协变量可以看作是输入。一般的机器学习算法都要求输入在训练集和测试集上的分布是相似的。如果不满足这个假设,在训练集上学习到的模型在测试集上的表现会比较差。

为了解决内部协变量偏移问题,就要使得每一个神经层的输入的分布在训练过程中保持一致,最简单有效的方法就是逐层归一化。

批量归一化: 批量归一化(Batch Normalization)是对神经层中单个神经元进行归一化。

神经网络 算法 归一函数 神经网络的归一化_人工智能_02


(王)先归一化,再激活函数。层归一化: 批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计信息。层归一化(Layer Normalization)是和批量归一化非常类似的方法。和批量归一化不同的是,层归一化是对某一层的所有神经元进行归一化。

神经网络 算法 归一函数 神经网络的归一化_归一化_03

注意与批量归一化的区别:批量归一化是不同训练数据之间对单个神经元的归一化,层归一化是单个训练数据对某一层所有神经元之间的归一化。 所以,应当注意这两个“之间”,搞清楚到底是谁与谁进行求平均、方差,乃至归一化。

BN和LN最大的好处就是使得网络中每层输入数据的分布相对稳定,加速模型学习。




</article>


1 输入归一化

不同输入特征的取值范围差异比较大时,会影响到梯度下降法的效率。以2维特征为例,特征取值不同会导致大多数位置的梯度方向并不是最优的搜索方向,当使用梯度下降法寻求最优解时,会导致需要很多次迭代才能收敛,如图(a);当特征归一化后,梯度方向会近似为最优的搜索方向,如图(b)。

神经网络 算法 归一函数 神经网络的归一化_深度学习

2 批量归一化&层归一化

神经网络都是多层结构,上一层 的输出即为下一层的输入,所以即使输入数据做了归一化,由于经过了线性变换以及激活函数,下一层的输入在取值范围可能又会有比较大的差别。从机器学习角度来看,如果某个神经层的输入分布发生了改变,那么其参数需要重新学习,这种现象叫做内部协变量偏移(Internal Covariate Shift)。

在传统机器学习中, 一个常见的问题是协变量偏移(Covariate Shift)。协变量是一个统计学概念,是可能影响预测结果的统计变量。在机器学习中,协变量可以看作是输入。一般的机器学习算法都要求输入在训练集和测试集上的分布是相似的。如果不满足这个假设,在训练集上学习到的模型在测试集上的表现会比较差。

为了解决内部协变量偏移问题,就要使得每一个神经层的输入的分布在训练过程中保持一致,最简单有效的方法就是逐层归一化。

批量归一化: 批量归一化(Batch Normalization)是对神经层中单个神经元进行归一化。

神经网络 算法 归一函数 神经网络的归一化_人工智能_02


(王)先归一化,再激活函数层归一化: 批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计信息。层归一化(Layer Normalization)是和批量归一化非常类似的方法。和批量归一化不同的是,层归一化是对某一层的所有神经元进行归一化。

神经网络 算法 归一函数 神经网络的归一化_归一化_03

注意与批量归一化的区别:批量归一化是不同训练数据之间对单个神经元的归一化,层归一化是单个训练数据对某一层所有神经元之间的归一化。 所以,应当注意这两个“之间”,搞清楚到底是谁与谁进行求平均、方差,乃至归一化。

BN和LN最大的好处就是使得网络中每层输入数据的分布相对稳定,加速模型学习。