1.9 归一化输入-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
1.8 其他正则化方法回到目录1.10 梯度消失与梯度爆炸

归一化输入

训练神经网络,其中一个加速训练的方法就是归一化输入。假设一个训练集有两个特征,输入特征为2维,归一化需要两个步骤:

  1. 零均值

  2. 归一化方差;

我们希望无论是训练集和测试集都是通过相同的 μ \mu μ σ 2 \sigma^2 σ2 定义的数据转换,这两个是由训练集得出来的。

在这里插入图片描述

第一步是零均值化, μ = 1 m ∑ i = 1 m x ( i ) \mu=\frac1m\sum_{i=1}^mx^{(i)} μ=m1i=1mx(i) ,它是一个向量, x x x 等于每个训练数据 x x x 减去 μ \mu μ ,意思是移动训练集,直到它完成零均值化。

在这里插入图片描述

第二步是归一化方差,注意特征 x 1 x_1 x1 的方差比特征 x 2 x_2 x2 的方差要大得多,我们要做的是给 σ \sigma σ 赋值, σ 2 = 1 m ∑ i = 1 m ( x ( i ) ) 2 \sigma^2=\frac1m\sum_{i=1}^m(x^{(i)})^2 σ2=m1i=1m(x(i))2 ,这是节点 y y y 的平方, σ 2 \sigma^2 σ2 是一个向量,它的每个特征都有方差,注意,我们已经完成零值均化, ( x ( i ) ) 2 (x^{(i)})^2 (x(i))2 元素 y 2 y^2 y2 就是方差,我们把所有数据除以向量 σ 2 \sigma^2 σ2 ,最后变成上图形式。

x 1 x_1 x1 x 2 x_2 x2 的方差都等于1。提示一下,如果你用它来调整训练数据,那么用相同的 μ \mu μ σ 2 \sigma^2 σ2 来归一化测试集。尤其是,你不希望训练集和测试集的归一化有所不同,不论 μ \mu μ 的值是什么,也不论 σ 2 \sigma^2 σ2 的值是什么,这两个公式中都会用到它们。所以你要用同样的方法调整测试集,而不是在训练集和测试集上分别预估 μ \mu μ σ 2 \sigma^2 σ2 。因为我们希望不论是训练数据还是测试数据,都是通过相同 μ μ μ σ 2 \sigma^2 σ2 定义的相同数据转换,其中 μ \mu μ σ 2 \sigma^2 σ2 是由训练集数据计算得来的。

我们为什么要这么做呢?为什么我们想要归一化输入特征,回想一下右上角所定义的代价函数。

J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b)=\frac1m\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)}) J(w,b)=m1i=1mL(y^(i),y(i))

如果你使用非归一化的输入特征,代价函数会像这样:

在这里插入图片描述

这是一个非常细长狭窄的代价函数,你要找的最小值应该在这里。但如果特征值在不同范围,假如 x 1 x_1 x1 取值范围从1到1000,特征 x 2 x_2 x2 的取值范围从0到1,结果是参数 x 1 x_1 x1 x 2 x_2 x2 值的范围或比率将会非常不同,这些数据轴应该是 w 1 w_1 w1 w 2 w_2 w2 ,但直观理解,我标记为 w w w b b b ,代价函数就有点像狭长的碗一样,如果你能画出该函数的部分轮廓,它会是这样一个狭长的函数。

然而如果你归一化特征,代价函数平均起来看更对称,如果你在上图这样的代价函数上运行梯度下降法,你必须使用一个非常小的学习率。因为如果是在这个位置,梯度下降法可能需要多次迭代过程,直到最后找到最小值。但如果函数是一个更圆的球形轮廓,那么不论从哪个位置开始,梯度下降法都能够更直接地找到最小值,你可以在梯度下降法中使用较大步长,而不需要像在左图中那样反复执行。

当然,实际上 w w w 是一个高维向量,因此用二维绘制 w w w 并不能正确地传达并直观理解,但总地直观理解是代价函数会更圆一些,而且更容易优化,前提是特征都在相似范围内,而不是从1到1000,0到1的范围,而是在-1到1范围内或相似偏差,这使得代价函数 J J J 优化起来更简单快速。

在这里插入图片描述

实际上如果假设特征 x 1 x_1 x1 范围在0-1之间, x 2 x_2 x2 的范围在-1到1之间, x 3 x_3 x3 范围在1-2之间,它们是相似范围,所以会表现得很好。

当它们在非常不同的取值范围内,如其中一个从1到1000,另一个从0到1,这对优化算法非常不利。但是仅将它们设置为均化零值,假设方差为1,就像上一张幻灯片里设定的那样,确保所有特征都在相似范围内,通常可以帮助学习算法运行得更快。

所以如果输入特征处于不同范围内,可能有些特征值从0到1,有些从1到1000,那么归一化特征值就非常重要了。如果特征值处于相似范围内,那么归一化就不是很重要了。执行这类归一化并不会产生什么危害,我通常会做归一化处理,虽然我不确定它能否提高训练或算法速度。

这就是归一化特征输入,下节课我们将继续讨论提升神经网络训练速度的方法。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
1.8 其他正则化方法回到目录1.10 梯度消失与梯度爆炸

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值