牛顿法为什么是二阶的

查了很多地方说牛顿法是二阶算法,一直没找到二阶项在哪。花了大半天的时间才弄明白。记录一下。
牛顿法一般应用场景:

  1. 求方程的根;
  2. 求解最优化方法;

比如要求f(x)=0f(x)=0的根。
首先,选择一个接近函数 f(x)f(x)零点的 x0x_0,计算相应的 f(x0)f(x_0)和切线斜率f(x0)f ' (x_0)(这里ff '表示函数ff的导数)。然后我们计算穿过点(x0,f(x0))(x_0, f (x_0))并且斜率为f(x0)f '(x0)的直线和 xx 轴的交点的xx座标,也就是求如下方程的解:
f(x1)f(x0)=f(x0)(x1x0) f(x_1)-f(x_0) = f^{\prime}\left(x_{0}\right) \cdot (x_1-x_0)
通常x1会比x0更接近方程f (x) = 0的解。因此我们现在可以利用x1开始下一轮迭代。迭代公式可化简为如下所示:
xn+1=xnf(xn)f(xn) x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{\prime}\left(x_{n}\right)}
已经证明,如果f ’ 是连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果f ’ (x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。下图为一个牛顿法执行过程的例子。

由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"。牛顿法的搜索路径(二维情况)如下图所示:

牛顿法搜索动态示例图:
 牛顿法搜索示意图关于牛顿法和梯度下降法的效率对比:

从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
  在这里插入图片描述
  注:红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。

牛顿法的优缺点总结:
  优点:二阶收敛,收敛速度快;
  缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。


当我们将牛顿法用作优化算法的时候,它就是二阶的。
假设我们有一个凸优化问题
minxf(x) \min _{x} f(x)
也就是说我们要找一个x来最小化f(x)。对于凸优化问题,f(x)的最小值点就是f(x)的极值点,也就是导数为0的点。那么我们上面的优化问题就转换为了如下的求根问题:
f(x)=0 f^{\prime}(x)=0
利用牛顿法求解上面的式子,我们先选取初始点x0,然后进行如下迭代
xn+1=xnf(xn)f(xn) x_{n+1}=x_{n}-\frac{f^{\prime}\left(x_{n}\right)}{f^{\prime \prime}\left(x_{n}\right)}
直到xn+1xn<ϵ| x_{n+1}-x_{n} |<\epsilon
综上,牛顿法求根是一阶算法,我们将优化问题转为求根问题需要一阶导数,所以用牛顿法进行最优化是二阶算法。

参考资料
http://sofasofa.io/forum_main_post.php?postid=1000966
https://www.cnblogs.com/shixiangwan/p/7532830.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章