机器学习和深度学习——归一化处理

一、机器学习中的归一化

1、归一化作用

(1)归一化后加快了梯度下降求最优解的速度
(2)归一化有可能提高精度

详解:
(1)归一化后加快了梯度下降求最优解的速度

机器学习和深度学习——归一化处理_第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的一幅图片说明:

机器学习和深度学习——归一化处理_第2张图片
batchNorm是在batch上做归一化,对于小的batch size效果不好;
layerNorm在通道方向上做归一化,主要对RNN作用明显

学习博文1
学习博文2
学习博文3
学习博文4
学习博文5

你可能感兴趣的:(机器学习,机器学习,深度学习,人工智能)