【优化算法】牛顿法(Newton's method)

牛顿法是利用 Hessian 矩阵提供的二阶导数信息来指导搜索的最简单的算法。

牛顿法基于一个二阶泰勒展开来近似 x0 x 0 附近的 f(x) f ( x ) ,

f(x)f(x0)+(xx0)xf(x0)+12(xx0)THf(x0)(xx0) f ( x ) ≈ f ( x 0 ) + ( x − x 0 ) ∇ x f ( x 0 ) + 1 2 ( x − x 0 ) T H f ( x 0 ) ( x − x 0 )
, 接着通过计算, 我们可以得到这个函数的临界点
x=x0Hf(x0)1xf(x0) x ∗ = x 0 − H f ( x 0 ) − 1 ∇ x f ( x 0 )

  • 如果 f f 是一个正定二次函数,牛顿法只要应用一次就能直接跳到函数的最小点。
  • 如果 f f 不是一个真正二次但能在局部近似为正定二次,牛顿法需要多次迭代应用式,而且能比梯度下降更快得到达临界点

以上在接近全局极小点时是一个特别有用的性质,但是在鞍点附近是有害的,牛顿法会被鞍点吸引跑偏。只有当附近的临近点是最小点(Hessian 的所有特征值都是正的)时,牛顿法才适用,而梯度下降不会被吸引到鞍点(除非梯度指向鞍点)。


Ref

  • Newton’s method – Wikipedia
  • 优化算法——牛顿法(Newton Method) : 算法流程介绍+Java实现
  • 牛顿迭代法(Newton’s Method): 算法流程+ C++ 代码 + 神奇开方数
  • Jacobian矩阵和Hessian矩阵: Hessian 矩阵 与 牛顿法

你可能感兴趣的:(MathStone)