面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理

在人工智能算法中,最终的目标都是找到一个最优的模型,而如何找到这个最优模型的参数一般有两种方法:第一就是等式求解,这个只对一部分简单的模型有效果,当模型的复杂度上升和参数变多时,求解将会变的极其困难,甚至不存在等式解。所以那么这里也就有第二种方法:梯度求解,这是一种利用梯度来一步步接近最优解。其中最有名和最普遍的有批量梯度下降法(BGD),随机梯度下降法(SGD),小批量梯度下降法。

上面三种梯度下降我就不再细讲,本质都是一样的,只不过每次更新利用的数据数量不一样,批量梯度下降每次优化时,使用的都是全部的数据集,所以计算量大,所以当数据量太大时,算法收敛的速度会很慢,但是他可以保证每次都朝着最优点的方向下降,不易受噪声的干扰。随机梯度下降则是每一次都使用一个数据来进行下降,所以他的下降过程震荡会很明显,但是收敛速度会很快,而且经实验证明他会朝着最优点收敛。小批量随机梯度下降则是结合了前两个算法的优点,收敛速度快且受噪声的影响较小。

  1. List item

动量下降法(Momentum)
这里重点介绍一下动量下降法,他的更新公式:
ut = γut−1 + ηgt
wt+1 =wt −ut.
上面的两个公式,如果γ=0,那么这就是一个SGD,当γ>0,那么他就是动量下降法,他有以下的优点:

  • 他可以通过局部的障碍,比如局部极小点,这个原理很简单,观察上面的公式可知,当梯度方法发生改变时,由于前面动量的存在γut−1,整体更新的梯度的方向不会发生变化,还将继续朝原来的梯度方向更新,也就会跳过局部极小点。
  • 而当梯度变化的不是很大,那么ut−1约等于ut ,所以第一个公式,就将变成面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理从而加大了原来的梯度,从而加快收敛。
  • 还有就是他将更加平稳的通过窄小的山谷,这个可以通过平均值角度来解读,由于上下震荡,那么就会有上下的梯度分量,由于我们公式里使用到了加权平均前后的梯度,所以上下的梯度会出现抵消的状况,从而在上下震荡的情况得到极大抑制。如下图
    面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理

2.Adam下降法
他的更新公式为:
面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理
上面的1式,就是动量下降法的第一个式子,优点那就是跟前面的一样,那么这里Adam的优点就是,这里的3式和4式了,这里用到了梯度的平方,然后根据第5式,这个是对学习率的一个更新,根据3式可知,在学习过程中,随着梯度的累加,vt 将会增加,那么学习率也将逐渐的变小,从而减轻在最优点附近震荡。这和我们的直觉也是一致的,当离得最优点较远的时候,学习率应当大一些从而加快学习,而当离最优点较近时,则学习率应当更小一些,从而更好的找到最优点。面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理