机器学习算法岗面经 | 优化方法总结对比: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=θiGii +ϵαθ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=θiE[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=θiE[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. 更多资源下载

在这里插入图片描述

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

你可能感兴趣的:(机器学习算法岗面经,算法岗面经,机器学习,优化器对比,Adam,SGD)