机器学习算法岗面经 | 优化方法总结对比:SGD、Momentum、AdaGrad、RMSProp、Adam
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−β)[▽θiJ(θ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] +ϵα▽θiJ(θ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]=β1E[v]+(1−β1)▽θiJ(θ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]=β2E[v2]+(1−β2)[▽θiJ(θi)]2 E [ v ] ^ = E [ v ] 1 − β 1 t \hat{E[v]}=\frac{E[v]}{1-\beta^{t}_{1}} E[v]^=1−β1tE[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−β2tE[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相关推荐
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记:优化方法总结 深度学习笔记(四):循环神经 ...
- 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为ω.对于样本i,其代价函数为Qi(ω).在n个样本组 ...
- 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结
深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结 1. 引言 在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数的数值,从而使模 ...
- 关于找工作,说点对后人有用的话(内附机器学习算法岗面经)
作者:理性思考 链接:https://www.nowcoder.com/discuss/123128?type=post&order=time&pos=&page=4& ...
- 机器学习算法岗:常见面试问题及解答整理,持续更新
机器学习算法岗:常见面试问题及解答整理,持续更新 一.决策树ID3和C4.5的差别?各自优点? ID3算法: C4.5算法: 差异: 二.过拟合的原因及如何防止 三.几种模型( SVM,LR,GBDT ...
- 花书+吴恩达深度学习(七)优化方法之基本算法(Momentum, Nesterov, AdaGrad, RMSProp, Adam)
目录 0. 前言 1. 指数加权平均(exponentially weighted averages) 2. Momentum 动量 3. Nesterov 动量 4. AdaGrad 5. RMSP ...
- 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?
文章目录 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么? 1. SGD: 2. SGD+Momentum: 3. NAG(Nesterov Accelerated Gradient ...
- DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较
DL之DNN优化技术:DNN优化器的参数优化-更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解.图表可视化比较 目录 四种最优化方法简介 优化器案例理解 输出结 ...
- BAT面试经验分享(机器学习算法岗)
https://blog.csdn.net/xwd18280820053/article/details/77529906 阿里: 7月份最早投的阿里(算法工程师),过了2天就收到一面通知,一面最主要 ...
最新文章
- consul服务下线通知_Consul微服务的配置中心体验篇-阿里云开发者社区
- 解决SecureCRT中文乱码
- LINUX中断学习笔记【转】
- eclipse下java.lang.OutOfMemoryError: PermGen space解决方法
- sulime text 常用快捷键总结
- 三次握手面试题java_java面试题三次握手和四次挥手-嗨客网
- 33岁的互联网人,看看我自己做了什么?
- 99%的程序都没有考虑的网络异常
- Services in Kubernetes
- 寻找电路布线最短路径算法BFS
- FFmpeg常用命令
- css select pyquery的简单爬取
- android 提取方法,Android ROM文件提取方法
- Burp Suite安装和使用方法
- 夏季 肝病患者养生保健重点在哪 请详解
- 电脑蓝屏黑屏无法开机.BIOS更新.进不去系统只能重装?驱动人生解决方案
- win10如何开启电源高性能模式
- NC/ncat的使用
- 软件行业的发展要尊重软件工程的价值规律
- 传奇网关-微信绑定和充值
热门文章
- HDUOJ 1024 Max Sum Plus Plus
- 计算机的诊断策略服务怎么打开,详细教您win10提示诊断策略服务未运行怎么办...
- OpenSSL创建生成CA证书、服务器、客户端证书及密钥
- 关于中国标准时间、时间戳、年月日等日期格式处理
- 痔疮需要用php吗,长了痔疮,一定要做手术根除?辟谣:2种情况才考虑切除
- DM368 模块/模组 让办公更加便捷
- sun java applet_Java Applet 基础
- qianxiuni.com 这个域名在推广上如何应用会比较好
- 猜猜这是经过了多少次加密?
- 多项式模型与多项式拟合