2优化算法

参考文章: https://zhuanlan.zhihu.com/p/30034654

1、Mini-batch 梯度下降

理解

我们前面已经知道,向量化可以加快我们的模型处理速度。

所以可以把训练样本放到矩阵中去:

但是当训练样本数m非常大,在对整个训练集执行梯度下降算法时,必须处理完整个训练集,然后进行下一步梯度下降。如果在处理完m个训练集之前,就让一部分训练集进行梯度下降,算法的速度就会执行的更快。

不同size大小比较

  • batch梯度下降

    1. 对所有m个样本执行一次梯度下降,每一次迭代时间长
    2. Cost function 总是向减小的方向下降。
  • 随机梯度下降

    1. 对每一个训练样本执行一次梯度下降,但是丢失了向量化带来的计算加速;
    2. Cost function总体的趋势向最小值的方向下降,但是无法到达全局最小值点,呈现波动的形式。
  • Mini-batch梯度下降

    1. 选择一个 的合适的size进行Mini-batch梯度下降,可以实现快速学习,也应用了向量化带来的好处;
    2. Cost function的下降处于前两者之间。

Mini-batch size选择:

  • 训练样本比较小(<2000):batch梯度下降法
  • 当训练样本比较大时,一般的mini-batch大小选择为:64-512,且batch大小为2的n次方
  • 要确保mimi-batch大小符合CPU/GPU内存

2、指数加权平均

对于下面这个关于天数和温度的散点图:

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

有个问题,是不是到最后一天的时候,温度还会受到第一天的影响?

理解指数加权平均

  • 例子,当 时:

展开,有:

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

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

  • 同样,对于 ,0.98的50次方约等于1/e,所以这本质上是一个下降幅度很大的函数,可以看作平均了50天

  • 在计算当前时刻的平均值,只需要前一天的平均值和当前时刻的值,所以在数据量非常大的情况下,指数加权平均在节约计算成本的方面是一种非常有效的方式,可以很大程度上减少计算机资源存储和内存的占用。

指数加权平均的偏差修正

在我们执行指数加权平均的公式时,当 时,我们得到的并不是图中的绿色曲线,而是下图中的紫色曲线,其起点比较低。

这是因为受到初始值的影响过大

若第一天的值θ1=40,那么v1 = 0.02*40 = 8

偏差修正

在评估初期,使用:

例:

使用

当 t=2 时:

偏差修正得到了绿色的曲线,在开始的时候,能够得到比紫色曲线更好的计算平均的效果。随着 逐渐增大, 接近于0,所以后面绿色的曲线和紫色的曲线逐渐重合了。

但在实际中,可忽略偏差的影响。

3、动量(Momentum)梯度下降法

核心就是利用指数加权平均,把b变小,即纵轴波动变小。

如图所示,从外围的蓝色点开始要经过很多次上下波动最终才能到达中心的红色点,就是因为这种上下波动减慢了梯度下降法的速度。

倘若我们加快学习速率α,就会导致紫色线的出现。如果减小α,虽然会减小波动,但是在横坐标上的移动也会减慢。

我们希望在图中的纵轴方向梯度下降的缓慢一些,不要有如此大的上下波动,在横轴方向梯度下降的快速一些,使得能够更快的到达最小值点,而这里用动量梯度下降法既可以实现,如红色线所示。

β的常用值为0.9

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

算法本质解释

在对应上面的计算公式中,将Cost function想象为一个碗状,想象从顶部往下滚球,其中:

微分项 想象为球提供的加速度;
动量项 相当于速度;
小球在向下滚动的过程中,因为加速度的存在使得速度会变快,但是由于 β 的存在,其值小于1,可以认为是摩擦力,所以球不会无限加速下去。

4、RMSprop(root mean square prop)

先看最后两个计算w、b的公式:我们希望在横轴即w上变化加快,在纵轴即b波动变小,则要 Sdw 变小,要 Sdb 变大。

刚好,上面的两个公式db的波动较大,就会导致Sdb变大,进而抑制其在纵轴的波动。

这时候我们可以加大α提高速率。

RMSprop将微分项进行平方,然后使用平方根进行梯度更新,同时为了确保算法不会除以0,平方根分母中在实际使用会加入一个很小的值如

5、Adam优化算法

实质就是把动量梯度下降和RMSprop相结合

6、学习率衰减

如图所示,当学习速率不变时(蓝色),在到达最小值点时,会在一个较大的范围内波动,进而使误差比较大。而若让学习速率衰减(青色),到最小点时,会控制在一个较小的范围内波动

7、局部最优问题

在低维度的情形下,我们可能会想象到一个Cost function 如左图所示,存在一些局部最小值点,在初始化参数的时候,如果初始值选取的不得当,会存在陷入局部最优点的可能性。

但是,如果我们建立一个高维度的神经网络。通常梯度为零的点,并不是如左图中的局部最优点,而是右图中的鞍点(叫鞍点是因为其形状像马鞍的形状)。

在一个具有高维度空间的函数中,如果梯度为0,那么在每个方向,Cost function可能是凸函数,也有可能是凹函数。但如果参数维度为2万维,想要得到局部最优解,那么所有维度均需要是凹函数,其概率为 ,可能性非常的小。也就是说,在低维度中的局部最优点的情况,并不适用于高维度,在梯度为0的点更有可能是鞍点,而不是局部最小值点。

在高纬度的情况下:

几乎不可能陷入局部最小值点;
处于鞍点的停滞区会减缓学习过程,利用如Adam等算法进行改善。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2470290795@qq.com

文章标题:2优化算法

文章字数:1.9k

本文作者:runze

发布时间:2020-02-17, 17:08:54

最后更新:2020-02-23, 08:30:12

原始链接:http://yoursite.com/2020/02/17/%E5%90%B4%E6%81%A9%E8%BE%BE%20%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/02%E6%94%B9%E5%96%84%E6%B7%B1%E5%B1%82%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%EF%BC%9A%E8%B6%85%E5%8F%82%E6%95%B0%E8%B0%83%E8%AF%95%E3%80%81%E6%AD%A3%E5%88%99%E5%8C%96%E4%BB%A5%E5%8F%8A%E4%BC%98%E5%8C%96/2%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏