泛统计理论初探——梯度下降新方法简介

数据挖掘-梯度下降新方法简介

梯度下降新方法简介
   在之前的两篇文章里,我们介绍了梯度下降方法的历史和演变,从批量梯度下降、随机梯度下降方法到后续的新方法如动量加速法、AdaGrad、RMSprop、Adadelta方法等,本文再介绍几种比较新的梯度下降方法,即Adam方法、以及在这个基础上的AdaMax、AMSGrad等优化方法。主要是介绍Adam方法,其他的几种方法是在Adam方法上的一种再优化,可能适应特定的问题,某种程度有可能不如Adam方法更好。
   Adam方法是最近这10年被提出的新方法,该方法在非凸优化问题的处理上效果较好,比普通的一阶梯度下降方法、如SGD、RMSprop、Adadelta要更快更好地收敛到局部最优点;相比于二阶梯度下降方法,该方法计算速度较快并且所需的资源较少,因为二阶梯度下降方法需要计算海塞矩阵较为耗时。同时,该方法由于不需要设置学习率,是一种自适应的梯度下降方法,并且对于含有部分异常值数据的问题也能稳定收敛到平坦局部最优点。
   该方法的核心思路其实是吸收了之前两篇文章介绍过的动量法Momentum和RMSProp方法的思考,即不仅在学习率调整上是自适应的,而且使用了动量方法进行了加速。在参数的迭代过程中,也是使用了指数加权平均,但是该方法是同时对梯度平方和梯度的指数平均计算,为什么会对梯度和梯度的平方去做指数平均计算呢,目的就是用来当作梯度的一阶矩和二阶矩,从而近似达到了二阶梯度下降方法的效果。具体公式如下图:
在这里插入图片描述
   根据公式我们发现,m(t)和v(t)分别是梯度和梯度平方的指数加权平均求得的,即最近的梯度影响较大,较早的梯度影响较小。但是在后面的两个步骤里是对m(t)和v(t)做了修正,因为不修正这两个参数可能会使得参数与真实值相差较大。最终的参数迭代是hat(m(t))除以sqrt(hat(v(t))+e)的后乘以一个很小的常数学习速度α,一般是0.001,该方法从最后一个公式就可以看出梯度和学习率都是自适应的,所以Adam在常见的梯度下降方法里是效果比较好的。
   在Adam方法的基础上,又有了几种变种的方法,比如AdaMax方法,该方法在梯度迭代还是使用指数加权的方法,但对于学习率使用了max函数,函数内部是梯度和β*u(t-1) 的最大值,其实就是规范了学习率的上确界,公式如下所示:
在这里插入图片描述
   与此同时,其实还有其他变种的Adam方法,比如Nadam方法、AMSGrad方法,这些方法都是比较新的方法,但没有明确例子可以说明它们在实际问题上收敛的比Adam方法更快或者更好。在后续文章还会介绍步长衰减的技巧以及二阶梯度下降方法,但实际上Adam方法或者说Nadam方法基本就是目前梯度下降方法中下降最快、收敛较好的梯度下降方法了。
   总的来说,梯度下降方法的优化是还在继续的,一阶的梯度下降方法的计算效率是较高的,同时收敛的也较好,受异常值的影响较小。二阶梯度下降方法由于需要计算海塞矩阵,受异常值的影响较大,不太稳定。初学者在使用不同的梯度下降方法时需要注意使用场景,尽量使用不同的梯度下降方法进行比较,从而达到更稳定的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章