梯度下降法和牛顿法的区别
问题定义
考虑下列最小二乘问题:
找到一个 x ∗ \bm x^* x∗使得 F ( x ) F(\bm{x}) F(x)取得局部最小值,其中 F ( x ) F(\bm{x}) F(x)定义为:
F ( x ) = 1 2 ∑ i = 1 m ( f i ( x ) ) 2 ( 1 ) F(\bm{x})=\frac{1}{2} \sum_{i=1}^m(f_i(\bm{x}))^2\qquad(1) F(x)=21∑i=1m(fi(x))2(1)
其中 f i ( x ) : R n ⟶ R f_i(\bm{x}):R^n\longrightarrow{}R fi(x):Rn⟶R, i = 1 , . . . , m i=1,...,m i=1,...,m为多元函数, m ≥ n m\geq{n} m≥n 。
有两种方式解决上述最小二乘问题,一解析法,二迭代法。本文中点介绍迭代法当中使用的最频繁的两种方法:梯度下降法和牛顿法。迭代法的基本思想就是选定每次的移动方向 h \bm{h} h和移动步长 a a a,然后往该方向上移动 x = x + a h \bm{x}=\bm{x}+a\bm{h} x=x+ah,每一次移动都必须保证函数值 F ( x ) F(\bm{x}) F(x)相比于上一次有所下降。循环往复,迭代法最终会收敛到 F ( x ) F(\bm{x}) F(x)的局部极小值。因此,要利用迭代法求解最小二乘问题,必须要解决两个问题:
1、确定移动方向 h \bm{h} h;
2、确定移动步长 a a a。
下面本文以从泰勒展式为基础推导出梯度下降法和牛顿法。因此,在这里贴一下一元泰勒展式的具体表达式。
设 f ( x ) f(x) f(x)在区间 ( a , b ) (a, b) (a,b)上 n + 1 n+1 n+1阶可导,则泰勒展开式为:
f ( x ) = f ( x 0 ) + f ( 1 ) ( x 0 ) 1 ! ( x − x 0 ) + f ( 2 ) ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . . + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + R n ( x ) ( 2 ) f(x)=f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+....+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+R_n(x) \qquad(2) f(x)=f(x0)+1!f(1)(x0)(x−x0)+2!f(2)(x0)(x−x0)2+....+n!f(n)(x0)(x−x0)n+Rn(x)(2)
梯度下降法
考虑采用迭代的方式来求解上述最小二乘问题。我们沿着当前位置 x \bm{x} x移动一小步得到 x + a h \bm{x}+a\bm{h} x+ah,对应的函数值为
F ( x + a h ) F(\bm{x}+a\bm{h}) F(x+ah)。利用泰勒展式将 F ( x + a h ) F(\bm{x}+a\bm{h}) F(x+ah)在 x \bm{x} x出展开得:
F ( x + a h ) = F ( x ) + a h T F ′ ( x ) + O ( ∥ h ∥ 2 ) ( 3 ) F(\bm{x}+a\bm{h})=F(\bm{x})+a\bm{h}^TF^{'}(\bm{x})+O(\|\bm{h}\|^{2}) \qquad(3) F(x+ah)=F(x)+ahTF′(x)+O(∥h∥2)(3)
假设 a > 0 a>0 a>0,如果在每一步得迭代过程中都能保证下式成立,
a h T F ′ ( x ) < 0 ( 4 ) a\bm{h}^TF^{'}(\bm{x})<0 \qquad(4) ahTF′(x)<0(4)
那么我们就能得到:
F ( x + a h ) < F ( x ) ( 5 ) F(\bm{x}+a\bm{h})<F(\bm{x})\qquad(5) F(x+ah)<F(x)(5)
因此,我们需要找到一个 h \bm{h} h使得 h T F ( x ) < 0 \bm{h}^TF(\bm{x})<0 hTF(x)<0。现在我们来考察 F ( x + a h ) F(\bm{x}+a\bm{h}) F(x+ah)与 F ( x ) F(\bm{x}) F(x)得差异:
lim a → 0 F ( x ) − F ( x + a h ) a ∥ h ∥ = lim a → 0 − a h T F ′ ( x ) a ∥ h ∥ = − ∥ F ′ ( x ) ∥ c o s ( θ ) ( 6 ) \lim_{a\to0}\frac{F(\bm{x})-F(\bm{x}+a\bm{h})}{a\|\bm{h}\|}=\lim_{a\to0}\frac{-a\bm{h}^TF^{'}(\bm{x})}{a\|\bm{h}\|}=-\|F^{'}(\bm{x})\|cos(\theta) \qquad(6) lima→0a∥h∥F(x)−F(x+ah)=lima→0a∥h∥−ahTF′(x)=−∥F′(x)∥cos(θ)(6)
其中 θ \theta θ为 F ′ ( x ) F^{'}(\bm{x}) F′(x)与 h \bm{h} h的夹角。由上式可知,只要我们能保证 c o s ( θ ) cos(\theta) cos(θ)的值小于零,那么我们就能保证式(4)成立。梯度下降算法将 h \bm{h} h取为与 F ′ ( x ) F^{'}(\bm{x}) F′(x)夹角 θ = π \theta=\pi θ=π时的向量,也就是 F ( x ) F(\bm{x}) F(x)与 F ( x + a h ) F(\bm{x}+a\bm{h}) F(x+ah)差值最大的方向,即:
h s = − F ′ ( x ) ( 7 ) \bm{h_s}=-F^{'}(\bm{x})\qquad(7) hs=−F′(x)(7)
在选定移动方向 h s \bm{h_s} hs后,移动步长 a a a可通过线性搜索和信赖域来确定,这里不予讨论。
牛顿法
由 F ′ ( x ) = 0 F^{'}(\bm{x})=0 F′(x)=0于局部极值的关系可知,当 x \bm{x} x为极值时, F ′ ( x ) = 0 F^{'}(\bm{x})=0 F′(x)=0。与梯度下降法不同,牛顿法的目标是寻找一个移动方向 h n \bm{h_n} hn,在该方向上移动一小步后使得 F ′ ( x + h ) F^{'}(\bm{x}+\bm{h}) F′(x+h)离零点更进一步,同时还要需要保证 F ( x + h ) < F ( x ) F(\bm{x}+\bm{h})<F(\bm{x}) F(x+h)<F(x)。我们将 F ′ ( x + h ) 在 F^{'}(\bm{x}+\bm{h})在 F′(x+h)在 x \bm{x} x出进行泰勒展开得:
F ′ ( x + h ) = F ′ ( x ) + F ′ ′ ( x ) h + O ( ∥ h ∥ ) ≈ F ′ ( x ) + F ′ ′ ( x ) h ( 8 ) F^{'}(\bm{x}+\bm{h})=F^{'}(\bm{x})+F^{''}(\bm{x})\bm{h}+O(\|h\|) \approx{F^{'}(\bm{x})+F^{''}(\bm{x})\bm{h}}\qquad\qquad\qquad(8) F′(x+h)=F′(x)+F′′(x)h+O(∥h∥)≈F′(x)+F′′(x)h(8)
我们令 F ′ ( x + h ) = 0 F^{'}(\bm{x}+\bm{h})=0 F′(x+h)=0可得:
F ′ ′ ( x ) h = − F ′ ( x ) ( 9 ) F^{''}(\bm{x})\bm{h}=-F^{'}(\bm{x})\qquad\qquad(9) F′′(x)h=−F′(x)(9)
由上式可知,只要我们选择的移动方向满足式(9),则就能保证下一步的迭代是向 F ′ ( x ) F^{'}(\bm{x}) F′(x)的零点移动。正如上面所讨论了,我们还需要保证 F ( x + h ) < F ( x ) F(\bm{x}+\bm{h})<F(\bm{x}) F(x+h)<F(x),才能使得本次迭代结果向我们期望的局部极小值靠拢。将式(9)两边同乘于 h T \bm{h}^T hT得:
h T F ′ ′ ( x ) h = − h T F ′ ( x ) ( 10 ) \bm{h}^TF^{''}(\bm{x})\bm{h}=-\bm{h}^TF^{'}(\bm{x})\qquad(10) hTF′′(x)h=−hTF′(x)(10)
当 F ′ ′ ( x ) F^{''}(\bm{x}) F′′(x)是正定矩阵时,我们有 h T F ′ ( x ) < 0 \bm{h}^TF^{'}(\bm{x})<0 hTF′(x)<0,满足式(4)。此时,我们可将移动方向取为:
h n = − F ′ ′ ( x ) − 1 F ′ ( x ) ( 11 ) \bm{h_n}=-F^{''}(\bm{x})^{-1}F^{'}(\bm{x})\qquad\quad(11) hn=−F′′(x)−1F′(x)(11)
总结
梯度下降算法寻找一个使得函数 F ( x ) F(\bm{x}) F(x)变化率最大的方向进行迭代,如式(6)所示。而牛顿法则希望找到一个使得 F ′ ( x + h n ) = 0 F^{'}(\bm{x+\bm{h_n}})=0 F′(x+hn)=0并满足极小值求解条件的方向进行迭代。二者均能求得 F ( x ) F(\bm{x}) F(x)的局部极小值。梯度下降法中针对当前迭代结果所选择的移动方向的确是函数变化率最大的方向,因此梯度下降算法也称为最速梯度下降法。然而,该算法的收敛速度却远远慢于牛顿法。