深度学习笔记之优化算法——动量法的简单认识
引言
上一节介绍了随机梯度下降 ( Stochastic Gradient Descent,SGD ) (\text{Stochastic Gradient Descent,SGD}) (Stochastic Gradient Descent,SGD),本节将介绍动量法。
回顾:条件数与随机梯度下降的相应缺陷
早在梯度下降法在强凸函数的收敛性分析中介绍了条件数 ( Condition Number ) (\text{Condition Number}) (Condition Number)的概念。如果目标函数 f ( ⋅ ) f(\cdot) f(⋅)在某点处的 Hessian Matrix ⇒ ∇ 2 f ( ⋅ ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(\cdot) Hessian Matrix⇒∇2f(⋅)存在并且它具备:
这意味着
Hessian Matrix \text{Hessian Matrix} Hessian Matrix必然是正定矩阵。
∇ 2 f ( ⋅ ) ≽ I \nabla^2 f(\cdot) \succcurlyeq \mathcal I ∇2f(⋅)≽I
那么它的条件数 C \mathcal C C可表示为:
C = λ m a x λ m i n \mathcal C = \frac{\lambda_{max}}{\lambda_{min}} C=λminλmax
其中 λ m a x \lambda_{max} λmax与 λ m i n \lambda_{min} λmin分别表示 ∇ 2 f ( ⋅ ) \nabla^2 f(\cdot) ∇2f(⋅)特征值的最大、最小值。如果 C \mathcal C C过大,会导致:使用梯度下降法处理 f ( ⋅ ) f(\cdot) f(⋅)的优化问题,当 C ⇒ ∞ \mathcal C \Rightarrow \infty C⇒∞时,那么算法的收敛速度由线性收敛退化至次线性收敛。这种现象也被称作 Hessain Matrix \text{Hessain Matrix} Hessain Matrix的病态条件。
上面仅仅是理论上的描述。在真实环境下,会出现什么样的效果 ? ? ?以标准二次型 f ( x ) = x T Q x f(x) = x^T \mathcal Q x f(x)=xTQx为例,其中 Q = ( 0.5 0 0 20 ) , x = ( x 1 , x 2 ) T \mathcal Q = \begin{pmatrix}0.5 \quad 0 \\ 0 \quad 20 \end{pmatrix},x=(x_1,x_2)^T Q=(0.50020),x=(x1,x2)T。使用梯度下降法对该目标函数求解最小值的迭代过程见下图:
由于
Q \mathcal Q Q是对角阵,因而它的特征值分别是
0.5 , 20 0.5,20 0.5,20因而在
f ( x ) f(x) f(x)定义域内的点,其对应
Hessian Matrix \text{Hessian Matrix} Hessian Matrix的条件数也是不低的。
如果从
目标函数的角度观察,它会是一个
中间狭窄,两端狭长的船形形状。
关于该图代码见文章末尾,下同~
在该示例中,我们并不否认其最终收敛到最优解,但使用迭代步骤的数量是