对梯度下降算法的思考

梯度下降算法是最优化理论中的最常用方法,目前在深度学习以及机器学习算法中广泛应用,主要为了求目标函数极值的最优解。其中原理很简单沿着目标函数梯度下降的方向搜索极小值。参数按照梯度更新的公式如下:

其中$\alpha$为学习率或者衰减因子,每次在更新时都会用$\alpha$为步长来更新参数。因此$\alpha$的取值比较讲究。

  1. 学习率较小时,收敛到极值的速度较慢。
  2. 学习率较大时,容易在搜索过程中发生震荡。
    如下图所示:
    lr取值不同时的收敛情况
    上图中,当lr过大时就会出现来回震荡,主要是因为lr取值过大,而在参数更新公式中梯度可正可负,因此导致来回震动。而lr过小时,收敛会逐渐减慢。因此有很多改进的梯度下降法对学习率进行改进,如冲量的梯度下降法。还有学习率衰减因子。如:上面的公式中lr会随着迭代的次数逐渐减小。$lr_{0}$为初始学习率,$\alpha$为0-1的一个常数。$\alpha$越小,学习率衰减地越慢,当$\alpha$=0时,学习率保持不变。$\alpha$越大,学习率衰减地越快,当$\alpha$=1时,学习率衰减最快。