A. Stochastic Gradient Descent 随机梯度下降

随机梯度下降,每一次迭代计算数据集的mini-batch的梯度,然后对参数进行跟新。 θ = θ − α ▽ θ J ( θ ) \theta = \theta - \alpha\bigtriangledown_{\theta}J(\theta) θ=θ−α▽θ​J(θ)
Batchsize是算法设计中需要调节的参数,较小的值让学习过程收敛更快,但是产生更多噪声;较大的值让学习过程收敛较慢,但是可以更准确的估计误差梯度的方向。

B. Momentum 动量梯度下降

SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。解决这一问题的一个简单的做法便是引入momentum。momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力
v = β v + ( 1 − β ) ▽ θ J ( θ ) v=\beta v+(1-\beta)\bigtriangledown_{\theta}J(\theta) v=βv+(1−β)▽θ​J(θ) θ = θ − α v \theta = \theta - \alpha v θ=θ−αv
当 β \beta β为0时,算法收敛为标准的梯度下降算法,一般取大一点比较好,比如0.9,总而言之,Momentum 是对SGD梯度上面的优化

C. Adagrad

上述方法中,对于每一个参数 θ i \theta_{i} θi​的训练都使用了相同的学习率 α \alpha α。Adagrad算法能够在训练中自动的对learning rate进行调整,对于出现频率较低参数采用较大的 α \alpha α更新;相反,对于出现频率较高的参数采用较小的 α \alpha α更新。因此,Adagrad非常适合处理稀疏数据。 θ i = θ i − α G i i + ϵ ▽ θ J ( θ ) \theta_{i}=\theta_{i}-\frac{\alpha}{\sqrt{G_{ii}}+\epsilon}\bigtriangledown_{\theta}J(\theta) θi​=θi​−Gii​ ​+ϵα​▽θ​J(θ)
其中,G_ii为对角矩阵,每个对角线位置ii为对应参数θ_i从第1轮到第t轮的平方和,ϵ是平滑项,用于避免分母为0,一般取值为1e-8,Adagrad的缺点在于训练的中后期,分母上梯度平方的累加将会越来越大,从而使梯度趋近于0,使得训练提前结束

D. RMSprop 均方根传播

RMSprop是Geoff Hinton提出的一种自适应学习率方法。Adagrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解Adagrad算法学习率下降较快的问题。
E [ v 2 ] = β E [ v 2 ] + ( 1 − β ) [ ▽ θ i J ( θ i ) ] 2 E[v^{2}]=\beta E[v^{2}]+(1-\beta) [\bigtriangledown_{\theta_{i}}J(\theta_{i})]^{2} E[v2]=βE[v2]+(1−β)[▽θi​​J(θi​)]2 θ i = θ i − α E [ v 2 ] + ϵ ▽ θ i J ( θ i ) \theta_{i}=\theta_{i}-\frac{\alpha}{\sqrt{E[v^{2}]}+\epsilon}\bigtriangledown_{\theta_{i}}J(\theta_{i}) θi​=θi​−E[v2] ​+ϵα​▽θi​​J(θi​)

E. Adaptive Moment Estimation (Adam)

Adam(Adaptive Moment Estimation)是另一种自适应学习率的方法。它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。
E [ v ] = β 1 E [ v ] + ( 1 − β 1 ) ▽ θ i J ( θ i ) E[v]=\beta_{1}E[v]+(1-\beta_{1})\bigtriangledown_{\theta_{i}}J(\theta_{i}) E[v]=β1​E[v]+(1−β1​)▽θi​​J(θi​) E [ v 2 ] = β 2 E [ v 2 ] + ( 1 − β 2 ) [ ▽ θ i J ( θ i ) ] 2 E[v^{2}]=\beta_{2} E[v^{2}]+(1-\beta_{2}) [\bigtriangledown_{\theta_{i}}J(\theta_{i})]^{2} E[v2]=β2​E[v2]+(1−β2​)[▽θi​​J(θi​)]2 E [ v ] ^ = E [ v ] 1 − β 1 t \hat{E[v]}=\frac{E[v]}{1-\beta^{t}_{1}} E[v]^​=1−β1t​E[v]​ E [ v 2 ] ^ = E [ v 2 ] 1 − β 2 t \hat{E[v^{2}]}=\frac{E[v^{2}]}{1-\beta^{t}_{2}} E[v2]^​=1−β2t​E[v2]​ θ i = θ i − α E [ v 2 ] ^ + ϵ E [ v ] \theta_{i}=\theta_{i}-\frac{\alpha}{\sqrt{\hat{E[v^{2}]}}+\epsilon}E[v] θi​=θi​−E[v2]^​ ​+ϵα​E[v]这里 E [ v ] ^ \hat{E[v]} E[v]^​和 E [ v 2 ] ^ \hat{E[v^{2}]} E[v2]^​是对期望的矫正,这样可以近似为对期望的无偏估计。Adam算法的提出者建议 β 1 \beta_{1} β1​的默认值为0.9, β 2 \beta_{2} β2​的默认值为0.999, ϵ \epsilon ϵ的默认值为1e-8,另外,在数据比较稀疏的时候,adaptive的方法能得到更好的效果,例如Adagrad,RMSprop, Adam 等。Adam 方法也会比 RMSprop方法收敛的结果要好一些, 所以在实际应用中 ,Adam为最常用的方法,可以比较快地得到一个预估结果。

F. 更多资源下载

有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。
微信搜索“老和山算法指南”获取下载链接与技术交流群

机器学习算法岗面经 | 优化方法总结对比:SGD、Momentum、AdaGrad、RMSProp、Adam相关推荐

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

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

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

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

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

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

  4. 关于找工作,说点对后人有用的话(内附机器学习算法岗面经)

    作者:理性思考 链接:https://www.nowcoder.com/discuss/123128?type=post&order=time&pos=&page=4& ...

  5. 机器学习算法岗:常见面试问题及解答整理,持续更新

    机器学习算法岗:常见面试问题及解答整理,持续更新 一.决策树ID3和C4.5的差别?各自优点? ID3算法: C4.5算法: 差异: 二.过拟合的原因及如何防止 三.几种模型( SVM,LR,GBDT ...

  6. 花书+吴恩达深度学习(七)优化方法之基本算法(Momentum, Nesterov, AdaGrad, RMSProp, Adam)

    目录 0. 前言 1. 指数加权平均(exponentially weighted averages) 2. Momentum 动量 3. Nesterov 动量 4. AdaGrad 5. RMSP ...

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

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

  8. DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较

    DL之DNN优化技术:DNN优化器的参数优化-更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解.图表可视化比较 目录 四种最优化方法简介 优化器案例理解 输出结 ...

  9. BAT面试经验分享(机器学习算法岗)

    https://blog.csdn.net/xwd18280820053/article/details/77529906 阿里: 7月份最早投的阿里(算法工程师),过了2天就收到一面通知,一面最主要 ...

最新文章

  1. consul服务下线通知_Consul微服务的配置中心体验篇-阿里云开发者社区
  2. 解决SecureCRT中文乱码
  3. LINUX中断学习笔记【转】
  4. eclipse下java.lang.OutOfMemoryError: PermGen space解决方法
  5. sulime text 常用快捷键总结
  6. 三次握手面试题java_java面试题三次握手和四次挥手-嗨客网
  7. 33岁的互联网人,看看我自己做了什么?
  8. 99%的程序都没有考虑的网络异常
  9. Services in Kubernetes
  10. 寻找电路布线最短路径算法BFS
  11. FFmpeg常用命令
  12. css select pyquery的简单爬取
  13. android 提取方法,Android ROM文件提取方法
  14. Burp Suite安装和使用方法
  15. 夏季 肝病患者养生保健重点在哪 请详解
  16. 电脑蓝屏黑屏无法开机.BIOS更新.进不去系统只能重装?驱动人生解决方案
  17. win10如何开启电源高性能模式
  18. NC/ncat的使用
  19. 软件行业的发展要尊重软件工程的价值规律
  20. 传奇网关-微信绑定和充值

热门文章

  1. HDUOJ 1024 Max Sum Plus Plus
  2. 计算机的诊断策略服务怎么打开,详细教您win10提示诊断策略服务未运行怎么办...
  3. OpenSSL创建生成CA证书、服务器、客户端证书及密钥
  4. 关于中国标准时间、时间戳、年月日等日期格式处理
  5. 痔疮需要用php吗,长了痔疮,一定要做手术根除?辟谣:2种情况才考虑切除
  6. DM368 模块/模组 让办公更加便捷
  7. sun java applet_Java Applet 基础
  8. qianxiuni.com 这个域名在推广上如何应用会比较好
  9. 猜猜这是经过了多少次加密?
  10. 多项式模型与多项式拟合