文章目录

  • 0 前言
  • 1 SGD
  • 2 SGD with momentum(SGDM)
  • 3 Adagrad
  • 4 RMSProp(root mean square prop)
  • 5 Adam

0 前言

介绍主流的深度学习优化方法(SGD,SGD with Momentum,Adagrad,RMSProp,Adam),梯度优化的基本原则是起始的时候降得快,后来降的慢,以此原则来理解下面这些算法。理解不是非常深,有问题希望大家指出。

1 SGD

一般的梯度下降所用的损失函数会计算所有样本的损失,但是随机梯度下降比梯度下降多了随机两个字,也即用样本中的一个例子的损失值来代替整体的损失。
因而随机梯度下降是会带来一定的问题,因为计算得到的并不是准确的一个梯度。如下图,SGD是按照单个样本更新,所以前面几次更新时很难保证沿着梯度下降,但是随着样本数增多,后面会接近最低点,相同计算量的前提下比GD效果好。

2 SGD with momentum(SGDM)

SGDM也就是SGD+ Momentum,这里引入了一阶动量。从直观理解就是加入了一个惯性,在坡度比较陡的地方,会有较大的惯性,这是下降的多。坡度平缓的地方,惯性较小,下降的会比较慢。

V是前面梯度值的和。

之前的梯度大小会影响下一次的梯度下降:

3 Adagrad

起到的效果是在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。


其中:


代入消元可得最终表达式:

分母为累计平方梯度,且η为超参数,那么在每一轮迭代中学习率会越来越小,也就是说当前位置的梯度对参数的影响也越来越小。AdaGrad 算法在初始时鼓励收敛,随着迭代的深入慢慢变成惩罚收敛,速度也越来越慢。

4 RMSProp(root mean square prop)

因为Adagrad算法会出现提前停止的现象,所以在RMSProp(均方根传递)算法中解决了这个问题,RMSProp优化算法和AdaGrad算法唯一的不同,就在于累积平方梯度的求法不同。RMSProp算法不是像AdaGrad算法那样暴力直接的累加平方梯度,而是加了一个衰减系数来控制历史信息的获取多少,一般取0.9或者0.5,它采用指数加权平均的思想,只将最近的梯度进行累加计算平方。见下:

仍然是累加平方梯度,只是离的越远的梯度的权值越小,离的越近的越大,因为展开之后初始的梯度之前有很多累乘的系数。

5 Adam

虽然SGDM加速了我们对最小值方向的搜索,但RMSProp阻碍了我们在振荡方向上的搜索。Adam通过名字我们就可以看出他是基于SGDM和RMSProp的微调版本,该方法是目前深度学习中最流行的优化方法,在默认情况尽量使用Adam作为参数的更新方式。

和SGDM一样计算,加入动量,计算衰减梯度:
m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) g t − 1 m_t=\beta _1\cdot m_{t-1}+\left( 1-\beta _1 \right) g_{t-1} mt​=β1​⋅mt−1​+(1−β1​)gt−1​
和RMSProp算法类似,计算衰减学习率:
v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ( g t − 1 ) 2 v_t=\beta _2\cdot v_{t-1}+\left( 1-\beta _2 \right) \left( g_{t-1} \right) ^2 vt​=β2​⋅vt−1​+(1−β2​)(gt−1​)2
最后更新参数:
θ t = θ t − 1 − η v ^ t + ε m ^ t \theta_{t}=\theta_{t-1}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\varepsilon} \hat{m}_{t} θt​=θt−1​−v^t​ ​+εη​m^t​

主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)相关推荐

  1. 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结

    深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结 1. 引言 在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数的数值,从而使模 ...

  2. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  3. 深度学习:优化方法——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam

    深度学习:优化方法 1. 指数加权平均(Exponentially weighted average) 2. 带偏差修正的指数加权平均(bias correction in exponentially ...

  4. 入门 | 一文简述深度学习优化方法——梯度下降

    http://www.sohu.com/a/241298990_129720 本文是一篇关于深度学习优化方法--梯度下降的介绍性文章.作者通过长长的博文,简单介绍了梯度下降的概念.优势以及两大挑战.文 ...

  5. 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?

    文章目录 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么? 1. SGD: 2. SGD+Momentum: 3. NAG(Nesterov Accelerated Gradient ...

  6. 60页论文综述深度学习优化方法,出自UIUC

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元.   新智元推荐  编辑:张佳 [新智元导读]深度学习理论是当下研究的热点之一.最近来自UIUC的助理教授孙若愚撰写了一篇关于深度学习 ...

  7. 李宏毅深度学习——优化方法

    记录了关于梯度的历史   SGD SGD with Momentum 防止gradient为0,SGD停止不动了 sgd with momentum,前面的移动会累加到下一步 sgd with mom ...

  8. 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为ω.对于样本i,其代价函数为Qi(ω).在n个样本组 ...

  9. 深度学习优化入门:Momentum、RMSProp 和 Adam

    来源:雷锋网.AI研习社 本文约3100字,建议阅读9分钟本文为你介绍如何将数据转换成正态分布来建立模型. 在这篇文章中,我们讨论另外一个困扰神经网络训练的问题,病态曲率. 虽然局部极小值和鞍点会阻碍 ...

最新文章

  1. Scenario 7 – HP C7000 VC FlexFabric Tunneled VLANs and SUS A/A vSphere
  2. java位运算符取反_java运算符
  3. c# list排序的三种实现方式 (转帖)
  4. 小巨型计算机应用什么领域,计算机应用基础 10
  5. Android—APT实践
  6. python 列表嵌套字典 添加修改删除_【Python】列表嵌套字典修改字典里面的一个值却把全部的值都修改了。...
  7. 【LOJ2127】「HAOI2015」按位或
  8. 1.Shell 编程从入门到精通 --- 第一个 Shell 程序
  9. k邻近算法应用实例(一) 改进约会网站的配对效果
  10. linux安装vsftpd服务,Linux系统安装Vsftpd
  11. excel表格中18位身份证号码如何转换成出生日期
  12. noi题库c语言 1.5答案,NOIP2004提高组复赛试题答案c语言版
  13. 【综述专栏】陈恩红: 社交网络的信息传播分析及其应用
  14. 数据服务 开源方案技术选型
  15. 可可直播电视---开通论坛
  16. android输入法开发软件,开发安卓系统Android和码输入法软件的全过程(二)
  17. Python地理可视化:plotly绘制mapbox地图热力密度图
  18. MongoShake数据灾备与迁移
  19. Hbuilder华为nova真机测试检查不到手机
  20. winfrom ListBox 控件拖动滚动条闪烁

热门文章

  1. Thinkphp——hook类行为扩展
  2. Java语言程序设计与数据结构(基础篇)梁勇第一章书中例题
  3. ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1'
  4. Log4cplus编译
  5. linux桌面 任务栏,状态栏消失恢复
  6. MFC应用模态对话框和非模态对话框
  7. 在MFC中手动添加消息处理函数PreTranslateMessage
  8. Java踩坑记录-00001 BeanCreationException
  9. 711问题-优化蛮力求解
  10. 一些实用高效的装机软件汇总