您的位置:首页 > 其它

梯度下降法Vs牛顿下降法

2018-03-09 19:40 211 查看
Author: Frank
在机器学习领域中,梯度下降法和牛顿下降法是两个非常有分量的方法。两者在本质上都是为了寻找极值点的位置,但是牛顿下降法的收敛速度更快。下面以单变量函数为例来进行基本的解释。
牛顿下降法的递推公式: 



梯度下降算法的递推公式: 
xn+1=xn−μ∗f′(xn)[b]方法比较:[/b]一般称 梯度下降法用平面去拟合当前的局部曲面,牛顿法用二次曲面来拟合。下图中红色的收敛轨迹代表牛顿法,另一条为梯度下降法。


[b]原理阐释:[/b]梯度下降法:
一阶泰勒展式如下所示: 

f(x+Δx)≈f(x)+f′(x)∗Δx在通过迭代寻找极小值点过程中,就是寻找Δx,使得迭代之后的点x+Δx对应的f(x+Δx)<f(x)。  由上式可知,只需要 f′(x)∗Δx<0即可。从而可令:简单的方法就是: Δx=−f′(x)Δx=−f′(x)
这样上式就变为 
f(x+Δx)=f(x)−f′(x)∗f′(x)
泰勒展式只在局部成立,Δx不能太大,但是取Δx=−f′(x) 有可能太大,从而需要加个小的修正的因子,上式就变为: Δx=−μ∗f′(x)Δx=−μ∗f′(x)最终得到公式: 
xn+1=xn−μ∗f′(xn)xn+1=xn−μ∗f′(xn)这就是为什么说梯度下降算法是用平面拟合函数的局部曲面。


[b]牛顿下降法:[/b]二阶泰勒展式如下所示:
f(x+Δx)≈f(x)+f′(x)Δx+1/2∗f′′(x)∗Δx2
同样希望迭代之后的点x+Δx对应的f(x+Δx)<f(x)。那么将左式看成是△x的函数,当取合适的△x值时,左边的式子达到极小值,此时导数为0,上式对Δx求导数,得: 
0=f′(x)+f′′(x)∗Δx0=f′(x)+f″(x)∗Δx
此时可得到公式: 
xn+1=xn−f′(xn)/f′′(xn)xn+1=xn−f′(xn)/f″(xn)所以说牛顿下降法是用二次曲面来拟合函数的局部曲面。两种方法的关系:
关于梯度下降算法,其中最重要的就是要确定步长μ,它的值严重的影响了梯度下降算法的表现。接下来考虑如下公式: (迭代后x+Δx处的导数为零时,对应最理想的情况)

f′(x+Δx)=f′(x)+f′′(x)∗Δxf′(x+Δx)=f′(x)+f″(x)∗Δx
和 
Δx=−μ∗f′(x)Δx=−μ∗f′(x)结合两个式子,得到: 
f′(x+Δx)=f′(x)−μ∗f′′(x)∗f′(x)f′(x+Δx)=f′(x)−μ∗f″(x)∗f′(x)
令左边的式子为0,得到: 
μ=1/f′′(x)μ=1/f″(x)由此可见牛顿下降法是梯度下降法的最优情况,因此牛顿下降法的收敛的速度必然更快。
牛顿法同时考虑了目标函数的一、二阶偏导数,考虑了梯度变化趋势,因而能更合适的确定搜索方向加快收敛,但牛顿法也存在以下缺点:
1、对目标函数有严格要求,必须有连续的一、二阶偏导数,海森矩阵必须正定;
2、计算量大,除梯度外,还需计算二阶偏导矩阵及其逆矩阵。
--------------------------------
梯度法从初始点的领域开始判断,用目标函数的一阶偏导、以负梯度方向作为搜索方向,在局部进行下降,只考虑目标函数在迭代点的局部性质,然后步步逼近极值,往往是走之字型的。
牛顿法在二阶导数的作用下,从函数的凸性出发,直接搜索怎样到达极值点,也就是说在选择方向时,不仅考虑当前坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。从收敛速度来看,梯度下降是线性收敛,牛顿法是超线性的,至少二阶收敛。

多变量函数需要用到Hessian matrix, 原理相同,可以参考:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: