2.2 优化神经网络(下)

1 Mini-Batch梯度下降算法

尽管向量化的方法可以避免使用循环一次处理m个样本,但是当m非常非常大时,处理速度仍然会变得很慢,为了解决这一问题,有了Mini-Batch算法。

1.1 算法步骤

  1. 将训练集分为多个小的训练子集,每个子集为一个Mini-Batch,比如将一个含有500万训练样本法训练集分为5000个Mini-Batch,每个Mini-Batch含有1000个样本,我们用X{t}表示第t个Mini-Batch,是一个(nx,1000)维的矩阵
    在这里插入图片描述
  2. 用每一个Mini-Batch执行梯度下降算法,下图是一个epoch的迭代算法,一个epoch是指只遍历一次训练集,但是这一个epoch就进行了5000次梯度下降
    在这里插入图片描述
  3. 我们一般会进行多个epoch的迭代,即还有一个外循环,直到迭代到误差达到理想值

1.2 Mini-Batch算法的讨论

在这里插入图片描述
训练过程出现上图噪声的原因是一个batch可能无法很好的代表整个训练集的情况。

如果我们令每个mini-batch里只含有一个样本,那么就变成了另一个算法stochastic gradient descent(随机梯度下降算法),其梯度下降过程(紫色)与Mini-Batch(绿色)以及传统梯度下降(蓝色)的比较如下图所示:
在这里插入图片描述
随机梯度下降永远都不会收敛,其代价函数总是在最小值附近波动,通过减小学习率可以改善,但是随机梯度几乎放弃了向量化方法对算法性能的加速,现实中一般用Mini-Batch梯度下降算法。
Mini-Batch还有一个优点就是可以在收集到所有训练样本之前就开始学习算法。

2 指数加权平均

对于伦敦市180天的温度变化,散点图发现波动非常大,我们用以下方法进行指数加权平均。
在这里插入图片描述
如果θ前的系数β越接近1,那么绘制出的加权平均后的曲线将越平坦,但是将不太能适应温度的快速变化。
随着日期距离当前日期越来越远,该日期的温度对当前日期的贡献越来越小。我们其实就是平均了1/(1-β)天的天气,因为1/(1-β)天后温度的加权系数会小于1/e。
这种平均的方法的好处就是非常省内存。

2.1 偏差修正(Bias Correction)

若用之前普通的指数加权平均,当β很小时,会在开始阶段出现较大的偏差,如下图所示:
在这里插入图片描述
此时我们的做法是将计算出来的vt除以1-βt,即:
在这里插入图片描述

2.2 动量梯度下降法(Momentum)

当我们的代价函数是这样时,我们不得不使用较小的学习率,否则会导致训练发散,而这导致了训练速度慢。
在这里插入图片描述
这种情况我们其实在水平方向需要较快的学习,竖直方向需要较慢的学习。我们引入Momentum算法:
在这里插入图片描述
这么做的想法是我们在学习过程中,竖直方向的震荡很大,但是均值趋近于0,而水平方向的均值总是向右,我们用指数加权平均的方法来消除竖直方向的抖动,β一般取0.9。
我们可以将代价函数看成一个山谷,dw的微分项看做加速度,Vdw看做速度,β看做摩擦力,正是dw对作用使速度增加,也是β的作用使速度逐渐减小。
我们一般不用偏差修正,因为多次迭代之后我们的移动平均算法已经度过了偏差较大的初始阶段。

3 RMSprop

假设横轴的参数为w,纵轴的参数为b:
在这里插入图片描述
其中平方的目的就是放大横轴的微分,缩小纵轴的微分(令两个轴的微分的差距加大),这样我们就可以使用较大的学习率了。
为了防止分母为零,我们可以加一个很小的常数:
在这里插入图片描述

4 Adam优化算法(Adaptive Moment Estimation)

本算法经过了多年学术界的检验,证明是一个和RMSprop算法一样可以真正提高算法效率的优化算法,适用于各种架构的神经网络。
在这里插入图片描述
超参数的选择:
在这里插入图片描述

5 Learning rate decay(学习率衰减)

当我们使用固定的学习率α进行Mini-batch时:蓝色线
当我们使用Learning rate decay进行Mini-batch时:绿色线
在这里插入图片描述
算法步骤:

  1. 线性衰减
    在这里插入图片描述
  2. 指数衰减
    在这里插入图片描述
  3. 平方根衰减
    在这里插入图片描述
  4. 离散衰减
    在这里插入图片描述
  5. 手动衰减:自己评估什么时候将学习率减小,但是这只有模型数量小的时候才有用。

6 局部最优解讨论

6.1 鞍点

在低维空间中,我们比较容易遇到局部最优解,但是在诸如20000维的高维空间中,我们有20000个方向,我们如果想要20000个方向上的导数都是0(局部最优点)的概率其实是很小的,我们更容易遇到的是鞍点:
在这里插入图片描述

6.2 plateaus(平稳区)

在plateau上梯度下降非常慢,因为梯度很小,我们要花很长时间达到鞍点,才能进行下一步较快的梯度下降,尤其是在训练大型神经网络(很高的维度)时很常见:
在这里插入图片描述
使用Adams可以优化这种情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值