UTF8gbsn
一元求根
首先从最简单的牛顿法应用开始.牛顿法最简单的一个应用是去求一个函数的根.其实原理很简单.就是一个迭代.当然这些结论也是凸函数才会成立.
xn+1=xn−f′(xn)f(xn)
比如我们来求y=x2的根.如果出发点为x=2.0.那么其表现在函数图象上为.

一元求极值
那么我们怎么来求极值?怎么用牛顿的方法来求极值?其实很简单.极值存在的点,就是函数二次导为0的点.也就是说,我们可以把求极值的问题回归到求根的问题.比如对于函数
y=1+(x−1)2+(x+1)4
画出它的函数图象

请看它的导数的函数图象 y=2(x−1)+4(x+1)3

由此可见原函数的极值出现在,导数的根,也就是导数为0的地方.所以我们回到求根的牛顿法得出下面的迭代函数.
xn+1=xn−f′′(xn)f′(xn) 画出迭代的图象可得

这是一个一元函数的解法.下面我们来看看针对多元函数又怎么利用牛顿法来求极值呢?
多元函数求极值
我们先描述一下多元函数的牛顿法极值的算法步骤.
-
Compute the Newton step and decrement.
Δxnt:=−∇2f(x)−1∇f(x);λ2:=∇f(x)T∇2f(x)−1∇f(x)
-
Stopping criterion. quit if λ2/2⩽ϵ
-
Line search. Choose step size t by backtracking line search.
-
Update x:=x+tΔxnt
首先,我们需要分析的前提是函数f(x)是一个凸函数.因为如果不是凸函数.那么分析的结论将不会成立.所以我们下面的讨论都限制在f(x)是凸函数的基础上.
牛顿法
如何来理解多元函数的牛顿法?
其实有几种理解的思路.而我们这里主要采用其中一种.也就是二阶泰勒展开.
f(x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v
值得注意的是符号∇2f(x)是hessian矩阵. ⎝⎜⎜⎜⎜⎜⎛∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x2∂xn∂2f⋮∂xn2∂2f⎠⎟⎟⎟⎟⎟⎞
如果函数f(x)是一个凸函数,那么∇2f(x)就是半正定的.既然这个函数是半正定的.那么
f(x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v,v=−∇2f(x)−1∇f(x)
就会减小.因为
∇f(x)T(−∇2f(x)−1∇f(x))=−∇f(x)T∇2f(x)−1∇f(x)
21(−∇2f(x)−1∇f(x))T∇2f(x)(−∇2f(x)−1∇f(x))=21(−∇Tf(x)(∇2f(x)−1)T)∇2f(x)(−∇2f(x)−1∇f(x))
=21∇Tf(x)(∇2f(x)−1)T∇f(x)=21∇Tf(x)∇2f(x)−1∇f(x)
因为∇2f(x)是一个实对称矩阵,所以∇2f(x)−1也是一个实对称矩阵.于是
f(v)=f(x)−21∇Tf(x)∇2f(x)−1∇f(x)
因为∇2f(x)是半正定的,所以∇Tf(x)∇2f(x)−1∇f(x)⩾0,顾而f(x)减小.如此以来可以证明牛顿法是可以求得极值的.当然我们略去了很多细节.只是粗略的阐述了牛顿法成立的逻辑.还有更多的一些逻辑.我希望留在综合比较,梯度下降,共轭梯度下降和牛顿法这三个算法上面来阐述.