梯度下降法的优化算法
如前文 梯度下降法 中所介绍的,梯度下降法存在如下问题导致其迭代的可行性和效率大打折扣: (1)梯度不存在; (2)非凸函数的鞍点和局部最优解; (3)函数的信息利用率不高; (4)学习率需预设且取值固定。 本文提到的梯度下降法的优化算法指:针对问题(2)、(3)和(4)提出的基于梯度下降法的Moment、AdaGrad和Adam等一系列算法。而这系列算法的核心改良思路包括两点: (1)通过引入历史迭代点的信息,对当前点的梯度值进行修正。 (2)通过引入历史迭代点的信息,对当前点的学习率进行修正。 1. 常见的梯度下降法的优化算法 1.1. SGD+Momentum Momentum(动量)的灵感和效果非常类似于物理学里的动量项:如果迭代点在梯度为0处保持一定的速度(动量),则很有可能会冲破局部最优点或鞍点的束缚进行继续的搜索,从而发现更优的取值。 那么如何设置动量项呢? 通过过往迭代点的历史梯度信息值进行构造! 从数学公式上看,其迭代过程为: v 0 = 0 v t = ρ v t − 1 − α g t − 1 x t = x t − 1 + v t \begin{aligned}&v_0=0\\&v_t=\rho v_{t-1}-\alpha g_{t-1}\\&x_t=x_{t-1}+v_t\end{aligned} v 0 = 0 v t = ρ v t −