【深度学习】深度学习优化算法总结

原创 2018年04月15日 19:53:25

在开玩笑的时候,我们自称研究深度学习的人为炼丹师。所谓炼丹,就是拿到同一种丹药的配方,可能炼出来的丹药的效果也是不一样的。深度学习也是如此,同一种模型,采取不同的优化策略,所得到的结果往往不同。在探究深度学习算法的优化策略过程中,人们大概经历过以下几个阶段:
SGD-> Momentum -> Nesterov -> Adagrad -> RMSProp -> Adam ->Nadam

由于最近在准备实习面试中,特开一篇博客对上述几种优化算法进行回顾,也方便自己总结。

一、随机梯度下降(SGD)

SGD算法是一种非常经典的优化算法,其衍生于批梯度下降(BGD)算法。由于 BGD算法需要对整个训练集进行计算梯度,然后再进行更新梯度,其带来的开销是非常大的。因此 用一个mini-batch去更新梯度可以有效减少计算开销,加速收敛,还不容易陷入鞍点。
这里写图片描述

值得注意的是在真实采用SGD进行训练的时候,有必要随着时间进行逐渐降低学习率,这是因为SGD中在梯度估计引入的噪声源(由于只用了m个样本)并不会在极小点消失。

二、动量(Momentum)
从SGD上受到的启发,由于SGD只用了m个样本,容易在梯度估计的时候引入噪声,因此带来一个结果便是梯度更新的时候会在高曲率的方向震荡,这在一定程度上降低了收敛速度。因此momentum算法采用移动平均减缓梯度在高区率方向上的更新,从而加速整体的收敛。


这里写图片描述

其中红色的梯度更新线是采用momentum算法后的优化路径。
这里写图片描述

这里稍微简单介绍一下动量的概念:当梯度更新进行震荡时,我们方向其方向是不停的变化的,动量便会像摩擦力一样试图保持原来的方向,从而降低震荡方向梯度的更新。
当梯度的更新都指向同一方向时,动量便会使得梯度更新的速度越来越快。

三、Nesterov动量
Nesterov动量 认为,竟然梯度方向是当年mini-batch样本更新的方向说了不算,那为什么不按照原来动量的方向去更新看看,然后在计算更新后的梯度,从而进行校正呢?

这里写图片描述
值得注意的是:在凸批量梯度的情况下,Nesterov 动量将额外误差收敛率从O(1/k)改进到O(1/k^2),然而在随机梯度的情况下,Nesterov并没有改进收敛率。

四、AdaGrad
我们发现SGD需要我们设置对学习率进行衰减,从而降低随机样本带来的梯度噪声。而AdaGrad算法的提出独立适应所有模型参数的学习率,缩放每个参数反比于其所有历史平方值总和的平方根。这样带来的好处是,更新快的给他慢下来,更新慢的给他快上去。原因很简单,更新快的往往是震荡部分,更新慢的往往是趋优部分。也就从AdaGrad开始,优化算法开始趋向选择自适应学习速率。
这里写图片描述
Adagrad的缺点也很明显:对于训练深度神经网络模型而言:从训练开始时积累梯度平方会导致有效学习率过早和过量的减少。

五、RMSProp
由于AdaGrad根据平方梯度的整个历史收缩学习率,可能 RMSprop观测到Adagrad优化算法中的缺点,并也对此进行了改进。选择移动平均来对梯度的平方进行累积,可能使得学习率在达到这样的凸结构就变得太小了。RMSProp使用指数衰减平均以丢弃遥远过去的历史,使其能够在凸碗状结构后快速收敛。
这里写图片描述

六、Adam
Adam在RMSProp的基础又增加了梯度的动量,融合了一阶,二阶的动量得到的优化算法。
这里写图片描述

七、Nadam
这个算法就不多介绍了,就是前面算法的集大成者。在Adam的基础上了增加了Nesterov。

================================================================================

关于指数平均:

V <= beta * V + (1-beta) * theta
V可以近似看作为 1/(1-beta) 个数据的平均值, 如beta=0.1,则近似为10个数据的平均值

关于Adam里的偏差修正:
这是由于在初始的更新时,并没有 1/(1-beta) 的数据,举个例子来看:


这里写图片描述

原先应该是绿色的曲线,变成了紫色曲线。由图中可以看到,紫色曲线的起点较低,但随之数据增大,其实影响也不大。为了更好的修正,往往对指数平均进行如下偏差修正:

这里写图片描述

参考自:
http://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702122
https://zhuanlan.zhihu.com/p/32230623

其他的一些经验:

1。实际上我们看到自从RMSProp和Adam引入二阶动量后,对整个梯度更新速度加快了。然而很可能导致不收敛的状态。原因其实也很简单,因为AdaGrad 是累积二阶矩,随着训练的加深,二阶矩的累加会导致学习速率很降低。而Adam和RMSProp则容易出现不收敛的状态。
2。 由于Adam的收敛速度确实很快,所以一般初学者还是推荐使用Adam。对于一些进阶者,依旧推荐SGD的调参方式。要相信:精调的参数一定比自适应的要好。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shwan_ma/article/details/79950072

深度学习总结(五)——各优化算法

一、各优化算法简介1. 批量梯度下降(Batch gradient descent,BGD)θ=θ−η⋅∇θJ(θ)θ = θ - η \cdot \nabla_θ J(θ) 每迭代一步,都要用到训...
  • manong_wxd
  • manong_wxd
  • 2017-12-06 21:30:26
  • 333

深度学习:基于梯度下降不同优化算法的比较总结

这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小。 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理。 SGD SGD指stochast...
  • liujiandu101
  • liujiandu101
  • 2017-02-15 11:13:51
  • 1585

深度学习常用优化算法

深度解读最流行的优化算法:梯度下降 【本文转载自机器之心   翻译:沈泽江 原文地址:http://www.jiqizhixin.com/article/1857】 梯度下降法,是当今最流行...
  • pandamax
  • pandamax
  • 2017-06-03 16:51:36
  • 6944

深度学习优化算法总结(cs231n)

https://zhuanlan.zhihu.com/p/21798784?refer=intelligentunit
  • witnessai1
  • witnessai1
  • 2017-11-25 18:44:10
  • 184

深度学习DeepLearning.ai系列课程学习总结:12. 优化算法实战

转载过程中,图片丢失,代码显示错乱。 为了更好的学习内容,请访问原创版本: http://www.missshi.cn/api/view/blog/59bbcae0e519f50d0400...
  • laodengbaiwe0838
  • laodengbaiwe0838
  • 2017-09-17 21:20:40
  • 914

系统学习深度学习(十)--优化算法

http://blog.csdn.net/chenzhi1992/article/details/52850759 类似,也值得一看http://blog.csdn.net/shenxiaolu198...
  • App_12062011
  • App_12062011
  • 2017-02-21 13:03:33
  • 2849

机器学习之优化算法学习总结

优化算法演化历程 机器学习和深度学习中使用到的优化算法的演化历程如下: SGD –> Momentum –> Nesterov –> Adagrad –> Adadelta –> Adam –> ...
  • bingo_csdn_
  • bingo_csdn_
  • 2018-01-29 20:45:14
  • 72

【深度学习】常见优化算法

本文介绍常见数值优化算法,其中的一阶方法在现代的神经网络框架(tensorflow, torch)中已经是标准配置,介绍较详细。...
  • shenxiaolu1984
  • shenxiaolu1984
  • 2016-10-09 19:25:57
  • 7709

重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉

翻译 | AI科技大本营(微信ID:rgznai100) 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎当前每一个先进的(s...
  • dQCFKyQDXYm3F8rB0
  • dQCFKyQDXYm3F8rB0
  • 2017-12-05 00:00:00
  • 368

深度学习之优化算法笔记

梯度下降(batch gradient descent, stochastic gradientdescent, 以及 mini-batchgradient descent)现在的SGD一般都指min...
  • xwd18280820053
  • xwd18280820053
  • 2017-08-24 14:41:17
  • 993
收藏助手
不良信息举报
您举报文章:【深度学习】深度学习优化算法总结
举报原因:
原因补充:

(最多只允许输入30个字)