吴恩达deeplearning.ai课程系列笔记06

#写在最前,deeplearning.ai系列课程相较于之前的Andrew Ng在coursera上2014发布的机器学习课程内容更加丰富。
重要的是此次课程示例代码都是用python来实现,不需要去熟悉octave,对大部分需要用python来学习机器学习的同学来说是个福音!
原课程视频请移步网易云课堂或者coursera上学习。

#本文内容部分来自网络,只为自己学习以及分享供更多的人学习使用微笑

1、Mini-batch

我们知道,当训练数据数量较大的时候,训练速度则显得至关重要。

前面我们介绍了向量化会大大加快训练的速度。但是如果把所有的特征输入x全部放入一个向量进行运算的时候,如果特征值太大,则会导致每次迭代的时间会比较久。所以,我们选取一个中间值,来均衡。


如图所示,我们以1000为单位,将数据进行划分,这就是所谓的mini-batch方法。

对于不同size:

1、batch梯度下降:

对所有m个训练样本执行一次梯度下降,每一次迭代时间较长;

Cost function 总是向减小的方向下降

2、随机梯度下降:

对每一个训练样本执行一次梯度下降,但是丢失了向量化带来的计算加速;

Cost function总体的趋势向最小值的方向下降,但是无法到达全局最小值点,呈现波动的形式。

3、Mini-batch梯度下降:

选择一个合适的mini-batch size;

一般来说mini-batch size取2的次方比较好,例如64,128,256,512等,因为这样与计算机内存设置相似,运算起来会更快一些。

    • 如下图所示,显示size = m和1的两种极端情况:

蓝色收敛曲线表示mini-batch size=m,比较耗时,但是最后能够收敛到最小值;而紫色收敛曲线表示mini-batch size=1,虽然速度可能较快,但是收敛曲线十分曲折,并且最终不会收敛到最小点,而是在其附近来回波动。

2、指数加权平均

  • β=0.9 时,指数加权平均最后的结果如图中红色线所示;
  • β=0.98 时,指数加权平均最后的结果如图中绿色线所示;
  • β=0.5 时,指数加权平均最后的结果如下图中黄色线所示;


β=0.9 时: 

v100=0.9v99+0.1θ100v99=0.9v98+0.1θ99v98=0.9v97+0.1θ98

展开:

v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+0.1×(0.9)3θ97+

上式中所有 θ 前面的系数相加起来为1或者接近于1,称之为偏差修正。

总体来说, (1ε)1/ε=1e ,在我们的例子中, 1ε=β=0.9 ,即 0.9100.351e 。相当于大约10天后,系数的峰值(这里是0.1)下降到原来的 1e ,只关注了过去10天的天气。学习

课堂上还稍微提了下 前期均值偏差 的问题,感兴趣的同学可以去搜一下。

但是在实际过程中,一般会忽略前期均值偏差的影响。

3、动量梯度下降(Momentum)和RMSprop

Momentum:

基本思想就是计算梯度的指数加权平均数,并利用该梯度来更新权重。



正常情况下,如果用梯度下降法来求最小值的时候,会如图中蓝色线所示在上下波动,而这种幅度比较大波动,减缓了梯度下降的速度,而且我们只能使用一个较小的学习率来进行迭代。但是如果用较大的学习率的时候,可能就会出现如图中紫色曲线所示。
所以我们用动量梯度算法来实现,就可以达到图中所示红线的状态。

由于使用了指数加权平均的方法。原来在纵轴方向上的上下波动,经过平均以后,接近于0,纵轴上的波动变得非常的小;但在横轴方向上,所有的微分都指向横轴方向,因此其平均值仍然很大。最终实现红色线所示的梯度下降曲线。一般来说, β 常用的值是0.9。

RMSprop:
全称叫Root Mean Square Prop(均方根传播)另一种加速梯度下降的方法。
RMSprop 可以加速梯度下降, 与 momentum 梯度下降不同的是对 dw 的 2 次幂做指数加权平均, 更新参数也不同, α 项后面的改为梯度除以指数加权平均后的导数。 

为了确保算法不会除以0,平方根分母中在实际使用会加入一个很小的值如 ε=108

Adam 优化算法:

Adam 优化算法基本上就是将 RMSprop 和 Momentum 进行结合,首先需要初始化,迭代 t 次( t 为 mini-batch 的划分 batch 数),用 mini-batch 梯度下降计算 dw,db,接下来计算Momentum 指数加权平均数,而Momentum则 为RMSprop 的超参数,一般使用 Adam 都要计算偏差修正,然后更新参数。所以 Adam 结合了 RMSprop 梯度下降和 Momentum 算法,并且是一种极其常用的学习算法,被证明能有效适用于不同的神经网络,适用于广泛的结构。
Adam 优化算法的基本思想就是将 Momentum 和 RMSprop 结合起来形成的一种适用于不同深度学习结构的优化算法。


关于梯度下降优化方法,还可以参考下面链接:
http://blog.csdn.net/yinruiyang94/article/details/77944338

4、学习率衰减

之前提到的学习率α都是一个常数,这样有可能会一个问题,就是刚开始收敛速度刚刚好,可是在后面收敛过程中学习率偏大,导致不能完全收敛,而是在最低点来回波动。

学习率衰减的实现
  • 常用:
    α=11+decay_rateepoch_numα0
  • 指数衰减:
    α=0.95epoch_num       α   *  0
  • 其他:
    α=kepoch_num*α0
  • 离散下降(不同阶段使用不同的学习速率)

5、局部最优问题


图左中有很多局部最优点。
图右用青色标记出来的点称为鞍点(saddle point),因为和马鞍相似,所以称为鞍点。

鞍点相比于局部最优点要更加棘手,因为从横向上看似乎是最低点,但是纵向上看却不是最低点,所以收敛过程有点缓慢

一般利用Adam算法来加速学习过程。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AlexJunCpp

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

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

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

打赏作者

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

抵扣说明:

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

余额充值