优化算法

一、总概

  优化算法主要分为两大阵营:梯度下降学派和牛顿法学派。

  这两者的区别[1]:比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。也就是说梯度下降法只考虑了一阶,而牛顿法则考虑了二阶。

 

  

  备注:[2]机器学习领域,大量的“模型求解问题”本质上都是“数值优化问题”和“采样问题”。而常用的优化算法,比如Gradient Descent(梯度下降),Newton method(牛顿法)等计算量太大,不能满足需求。为了应对大规模的优化问题,常见的两种思路就是引入stochastic和distribution。


二、梯度下降法

  1. 最速梯度下降法和梯度下降法区别及联系[3]

    1.1 原理

    最速梯度下降法解决的问题是无约束优化问题,而所谓的无约束优化问题就是对目标函数的求解,没有任何的约束限制的优化问题。

    最速梯度下降法的求解步骤如下:

    

    由以上计算步骤可知,最速下降法迭代终止时,求得的是目标函数驻点的一个近似点。其中确定最优步长 t_{k} 的方法如下:

    

    

    1.2 优势

      1.2.1 在优化初始阶段,目标函数下降较快。

    1.3 劣势

      1.3.1 在接近极值点时,收敛速度较慢。因此在实用中常用最速下降法和其他方法联合应用,在前期使用最速下降法,而在接近极小值点时,可改用收敛较快的其他方法。

     1.4 区别

      最速梯度下降法和梯度下降法最大的区别就是:步长(学习率)。梯度下降法的α是预先设定好,而最速梯度下降法的步长是自己学习得到。

      

 

 

 

 

  2.梯度下降法(GD)、随机梯度下降法(SGD)以及小批量梯度下降法(MBGD)区别及联系

    2.1 GD

    GD(Gradient Descent)是最常用的方法之一,原理:在整个训练集中计算当前的梯度,选定一个步长进行更新。

    优点:

      a) 基于整个数据集,梯度更加准确,更新更准确。

    缺点:

      a) 当训练集较大时,GD梯度计算较为耗时。

      b) DL的网络loss function往往非凸,最终收敛点很容易落在初始点附近的local minima,不太容易达到较好收敛性能。

 

    2.2 SGD

    SGD(Stochastic Gradient Descent)与GD的差异是每次只计算一个样本。

    优点:

      a) 计算快

      b) 适合online-learning 数据流式到达的场景。

    缺点:

      a) 单个sample产生梯度往往很不准,所以得用很小的学习率。

      b) cpu/gpu 支持多线程,单个很难占满使用,浪费资源。

 

    2.3 MBGD

    MBGD(Mini-Batch Gradient Descent) 是介于两者之间的一种折中做法,一次采用batch_size的样本来计算梯度,比SGD准且充分利用资源,而且能有适当的梯度噪音,一定程度缓解GD直接进入初始点附近local minima导致收敛不好问题,所以最为常用。

    mini-batch 过程中,一个epoch会分多个batch,每个batch随机抽样一批数据,更新参数,直至所有的数都被遍历一遍,一次epoch结束。batch_size为一个batch中含有样本的数量,nb_epoch为epoch次数。

     

    2.4 备注

    补充一个这三者区别解释很好的博客[4]:http://www.cnblogs.com/maybe2030/p/5089753.html

 

 

 

 

三、

 

 

 

四、

 

 

 

五、参考文献

[1]. https://zhuanlan.zhihu.com/p/22461594

[2].https://www.zhihu.com/question/32675289

[3].https://zhuanlan.zhihu.com/p/32709034

[4].http://www.cnblogs.com/maybe2030/p/5089753.html

posted @ 2018-03-07 19:51  紫巅草  阅读(701)  评论(0编辑  收藏  举报