常用优化方法(optimizer)总结:Adam、SGD、momentum、AdaGard等

机器学习几乎所有算法都要利用损失函数lossfunction来检验算法模型的优劣,同时利用损失函数来提升算法模型的。

这个提升的过程就是优化的过程

也就是 optimizer

常用的优化方法(Optimizer)

  • 1 SGD 和 BGD 和 Mini-BGD
    • SGD 随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来update参数。假设loss function为w
      w = w - \eta \nabla_{wi}L(w_i) 所以SGD的batchsize为1
      收敛的速度快,但是不容易跳出局部最优解
    • BGD(batch gradient descent):批量梯度下降,算法在读取整个数据集后才去计算损失函数的梯度
      w = w - \eta \nabla_wL(w) batchsize 为n
      数据处理量加大,梯度下降较慢;训练过程中占内存
    • Mini - BGD(mini-batch gradient descent):选择小批量来进行梯度下降,这是一种折中的方法,采用训练子集的方法来计算loss
      w = w - \eta \nabla_{wi:i+n}L(w_{i+n})
      \color{red}{这个优化方法用的也是比较多的,计算效率高而且收敛稳定,是现在深度学习的主流方法}

上面的方法都存在一个问题,就是update更新的方向完全依赖于计算出来的梯度.很容易陷入局部最优的马鞍点.能不能改变其走向,又保证原来的梯度方向.就像向量变换一样,我们模拟物理中物体流动的动量概念(惯性).

引入Momentum的概念.

  • Momentum
    在更新方向的时候保留之前的方向,增加稳定性而且还有摆脱局部最优的能力
    \Delta w = w - \eta \nabla_{wi}L(w_i) ; w = w + \Delta w
    若当前梯度的方向与历史梯度一致(表明当前样本不太可能为异常点),则会增强这个方向的梯度,若当前梯度与历史梯方向不一致,则梯度会衰减。一种形象的解释是:我们把一个球推下山,球在下坡时积聚动量,在途中变得越来越快,\eta可视为空气阻力,若球的方向发生变化,则动量会衰减

  • Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.以前的算法中,每一个参数都是用相同的学习率,Adagrad算法能够在训练中自动对learning_rate进行调整,出现频率较低参数采用较大的𝛼更新,出现频率较高的参数采用较小的𝛼更新.根据描述这个优化方法很适合处理稀疏数据.

  • RMSprop(root mean square propagation) 也是一种自适应学习率方法. 不同之处在于,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值.可以缓解Adagrad算法学习率下降较快的问题.
    v(w,t)=\gamma v(w,t-1) +(1-\gamma)(\nabla L(w_i))^2,其中\gamma是遗忘因子
    参数更新
    w = w - \frac{\eta}{\sqrt{v(w,t)}}\nabla L(w_i)

  • Adam (adaptive moment estimation) 是对RMSProp优化器的更新.利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.
    优点:每一次迭代学习率都有一个明确的范围,使得参数变化很平稳.

\color{green}{最常用的就是Adam}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有前面的知识,我们知道如何构建目标函数了,当目标函数构建出来后,如何求其参数使的目标函数最小化呢?这就是这一小节的...
    李涛AT北京阅读 959评论 0 0
  • 前言 梯度下降算法现在变的越来越流行,但是对于使用者来说,它的优化过程变的越来越黑盒。本文我们介绍下不通梯度下降算...
    wendaJ阅读 1,595评论 0 1
  • 在tensorflow中我们通过梯度下降算法来优化我们的模型,同时这个优化算法会在每一步的训练中来跟新,迭代模型的...
    泛酸的桂花酒阅读 4,374评论 0 0
  • 一 你哼起走调的曲子 矮墩墩的身材洋溢着踌躇满志 匆匆挤过簇拥的人群 那一刻、阴差阳错的我却被你 碰跌在童年的岔路...
    肖先阅读 1,007评论 16 36
  • 突然间觉得好累
    大杨笑笑阅读 168评论 0 0