深度学习笔记:1.9 标准化输入 & 1.10 梯度消失与爆炸

1.9 标准化输入

在数据输入之前,我们先对数据作一个标准化处理,如下图所示:

什么是标准化处理呢?对于多维变量,我们希望通过标准化处理能得到变量的每一个特征都满足均值为0,方差为1。

假设我们有这样一个例子,每个样本有两个特征(是二维的),方便可视化,如上图最左侧所示,x1的取值跨度明显大于x2的取值跨度(x1方差大于x2方差),首先我们对数据进行中心化处理,即样本的每个特征减去其对应均值。

作中心化处理之后,样本取值由上图最左侧变为上图中间所示,可以看到,这时两个特征的均值都变为0,但方差还未处理。对于已经中心化的数据,我们再除以其对应方差就可以得到标准化的数据,即满足每个分量均值为0,方差为1的数据。

在实际问题中使用标准化处理数据,这里有一个小tip,即使用训练集计算得到的均值和方差去处理测试集,而不是在训练集和测试集上分别预估均值和方差,因为我们希望训练集和测试集具有相同的分布。

了解了怎样对数据进行标准化处理,那么为什么要对数据进行标准化处理呢?

在未对数据进行标准化处理之前,若x1和x2的取值范围差距较大,比如上图中的假设,x1取值范围在1到1000之间,而x2的取值范围在0到1之间。这种情况下,变量对应的系数w1和w2差距也会很大。如上图中左上图所示,目标函数J(w,b)窄长,在使用梯度下降法进行计算时,要求步长很小,如上图中左下图所示。但进行标准化处理之后,目标函数J(w,b)就变为右上图所示,这时使用梯度下降法计算时,如右下图所示,轮廓变为圆形,这时可以使用较大步长,提高计算速率,因为我们的方向是对的。

1.10 梯度消失与爆炸

为了便于大家更好的理解梯度消失与爆炸,这里我们介绍一种极端情况。

假设我们的激活函数为g(z)=z,而常数项b为0(经过标准化处理)。显然,在这种假设下,我们可以将yhat写成图中的形式,注意最后一个W[L]是向量,而不再是一个矩阵。所以,这里我们暂时不考虑W[L],而考虑W[1]到W[L-1]的矩阵形式。

假设W的矩阵形式为对角矩阵,且对角元素均为1.5,即大于单位阵,那么会有怎样的情况呢?假设X1和X2取值均为1,带入yhat式子,我们会得到第一层的神经元取值均为1.5,而第二层的神经元取值均为1.5^2,以此类推,第L层的神经元取值均为1.5^L,如果层数很多,可想而知这个值的大小,这种情况我们称之为梯度爆炸。

类似于梯度爆炸,梯度消失产生是因为初始权重我们设为小于单位阵的情况,比如对角元素均是0.5,那么第L层的神经元取值就变为0.5^L,如果层数很多,可想而知这个值会多小,这种情况我们称之为梯度消失。

梯度爆炸和消失会加大神经网路训练难度。

那么为了避免梯度爆炸和梯度消失,我们初始权重应该怎样设置呢?且听下回分解。

版权声明:尊重博主原创文章,转载请注明出处https://blog.csdn.net/kkkkkiko/article/details/81184836

猜你喜欢

转载自blog.csdn.net/kkkkkiko/article/details/81184836
今日推荐