一、机器学习中的归一化
1、归一化作用
(1)归一化后加快了梯度下降求最优解的速度 (2)归一化有可能提高精度
详解: (1)归一化后加快了梯度下降求最优解的速度
\qquad
a.左图是未进行归一化的等高线,从左图中可以看出两个特征变化区间相差大,其形成的等高线非常尖,此时使用梯度下降法寻找最优解时,很有可能走“之”字型路线,从而导致需要迭代很多次才能收敛;
\qquad
b.右图,对数据进行归一化处理,此时两个特征的等高线显得平滑,在进行梯度下降能较快的收敛;
\qquad
因此如果机器学习模型使用梯度下降求最优解时,归一化非常有必要,否则需要花费更多的迭代的次数才能收敛甚至不能收敛。
(2)归一化可能提高精度 一些分类器需要计算样本之间的距离(例如欧式距离),例如KNN。如果一个特征值域范围非常大,那么此时距离的计算就取决于这个特征,但与实际情况可能不符合,比如实际情况可能治愈范围小的特征更重要。
2、归一化的方法
(1)线性归一化 (2)标准差归一化:特征减去均值除以方差 (3)非线性归一化
二、深度学习中的BN层、LN层
1.BN层和LN层
\qquad
BN层与LN层执行的操作分别是批量归一化与层归一化 解决的问题:在神经网络中,每一层均会对数据进行操作(例如线性变换、激活函数等),即使最初对数据进行归一化处理,但是随着神经网络层数的加深,数据的分布很有可能发生巨大的变化,此时就就给网络模型的训练增加了难度。
\qquad
面对这种问题就需要对数据进行一定的处理,有两种方法:BN和LN;
\qquad
起到的作用:
\qquad
(1)加快网络的训练和收敛速度
\qquad
(2)预防梯度消失与梯度爆炸
\qquad
(3)防止过拟合
\qquad
tips:
\qquad
BN在CNN中使用,不适用于RNN
\qquad
LN常在RNN中使用
2.BN层
\qquad
BN,Batch Normalization(批量归一化)
\qquad
批量归一化:对神经层中的单个神经元进行归一化,在理想的状况下我们知道所有训练数据在这一层的神经元的输出,但是现在使用最多的是小批量梯度下降法,所以我们可以针对每个 batch size 进行归一化处理。
\qquad
简而言之:BN层就是对数据进行规范法处理,将每一层的数据输入值的分布变得平滑,例如符合均值为0,方差为1的正态分布。
3.LN层
\qquad
LN,Layer Normalization(层归一化)
\qquad
层归一化:2中讲解的批量归一化是对一层中的额单个神经元的batch size进行归一化操作,因此要求批量的数目不能过小,否则难以计算单个神经元的统计信息。层归一化是对某一层的所有神经元进行归一化处理。
\qquad
最后借用别的blog的一幅图片说明:
batchNorm是在batch上做归一化,对于小的batch size效果不好; layerNorm在通道方向上做归一化,主要对RNN作用明显
学习博文1 学习博文2 学习博文3 学习博文4 学习博文5
|