UTF8gbsn
一元求根
首先从最简单的牛顿法应用开始.牛顿法最简单的一个应用是去求一个函数的根.其实原理很简单.就是一个迭代.当然这些结论也是凸函数才会成立.
x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\frac{f(x_n)}{f^{'}(x_n)} xn+1=xn−f′(xn)f(xn)
比如我们来求 y = x 2 y=x^2 y=x2的根.如果出发点为 x = 2.0 x=2.0 x=2.0.那么其表现在函数图象上为.
一元求极值
那么我们怎么来求极值?怎么用牛顿的方法来求极值?其实很简单.极值存在的点,就是函数二次导为0的点.也就是说,我们可以把求极值的问题回归到求根的问题.比如对于函数
y
=
1
+
(
x
−
1
)
2
+
(
x
+
1
)
4
y=1+(x-1)^2+(x+1)^4
y=1+(x−1)2+(x+1)4
画出它的函数图象
请看它的导数的函数图象 y = 2 ( x − 1 ) + 4 ( x + 1 ) 3 y=2(x-1)+4(x+1)^3 y=2(x−1)+4(x+1)3
由此可见原函数的极值出现在,导数的根,也就是导数为0的地方.所以我们回到求根的牛顿法得出下面的迭代函数.
x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}=x_{n}-\frac{f^{'}(x_n)}{f^{''}(x_n)} xn+1=xn−f′′(xn)f′(xn) 画出迭代的图象可得
这是一个一元函数的解法.下面我们来看看针对多元函数又怎么利用牛顿法来求极值呢?
多元函数求极值
我们先描述一下多元函数的牛顿法极值的算法步骤.
-
Compute the Newton step and decrement.
Δ x n t : = − ∇ 2 f ( x ) − 1 ∇ f ( x ) ; λ 2 : = ∇ f ( x ) T ∇ 2 f ( x ) − 1 ∇ f ( x ) \Delta x_{\mathrm{nt}}:=-\nabla^{2} f(x)^{-1} \nabla f(x) ; \quad \lambda^{2}:=\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x) Δxnt:=−∇2f(x)−1∇f(x);λ2:=∇f(x)T∇2f(x)−1∇f(x) -
Stopping criterion. quit if λ 2 / 2 ⩽ ϵ \lambda^2/2\leqslant \epsilon λ2/2⩽ϵ
-
Line search. Choose step size t by backtracking line search.
-
Update x : = x + t Δ x n t x:=x+t \Delta x_{\mathrm{nt}} x:=x+tΔxnt
首先,我们需要分析的前提是函数 f ( x ) f(x) f(x)是一个凸函数.因为如果不是凸函数.那么分析的结论将不会成立.所以我们下面的讨论都限制在 f ( x ) f(x) f(x)是凸函数的基础上.
牛顿法
如何来理解多元函数的牛顿法?
其实有几种理解的思路.而我们这里主要采用其中一种.也就是二阶泰勒展开.
f ^ ( x + v ) = f ( x ) + ∇ f ( x ) T v + 1 2 v T ∇ 2 f ( x ) v \widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v f (x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v
值得注意的是符号 ∇ 2 f ( x ) \nabla^2f(x) ∇2f(x)是hessian矩阵. ( ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ) \left( \begin{array}{cccc} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\partial x_n} \\ \frac{\partial^2 f}{\partial x_2\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n\partial x_1} & \frac{\partial^2 f}{\partial x_n\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array} \right) ⎝⎜⎜⎜⎜⎜⎛∂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 ) f(x) f(x)是一个凸函数,那么 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x)就是半正定的.既然这个函数是半正定的.那么
f
^
(
x
+
v
)
=
f
(
x
)
+
∇
f
(
x
)
T
v
+
1
2
v
T
∇
2
f
(
x
)
v
,
v
=
−
∇
2
f
(
x
)
−
1
∇
f
(
x
)
\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v, v = -\nabla^{2} f(x)^{-1} \nabla f(x)
f
(x+v)=f(x)+∇f(x)Tv+21vT∇2f(x)v,v=−∇2f(x)−1∇f(x)
就会减小.因为
∇
f
(
x
)
T
(
−
∇
2
f
(
x
)
−
1
∇
f
(
x
)
)
=
−
∇
f
(
x
)
T
∇
2
f
(
x
)
−
1
∇
f
(
x
)
\nabla f(x)^T (- \nabla^2f(x)^{-1}\nabla f(x))=-\nabla f(x)^T \nabla^2f(x)^{-1}\nabla f(x)
∇f(x)T(−∇2f(x)−1∇f(x))=−∇f(x)T∇2f(x)−1∇f(x)
1
2
(
−
∇
2
f
(
x
)
−
1
∇
f
(
x
)
)
T
∇
2
f
(
x
)
(
−
∇
2
f
(
x
)
−
1
∇
f
(
x
)
)
=
1
2
(
−
∇
T
f
(
x
)
(
∇
2
f
(
x
)
−
1
)
T
)
∇
2
f
(
x
)
(
−
∇
2
f
(
x
)
−
1
∇
f
(
x
)
)
\frac{1}{2} (- \nabla^2f(x)^{-1}\nabla f(x))^{T} \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla f(x))=\frac{1}{2} (- \nabla^T f(x)(\nabla^2f(x)^{-1})^{T}) \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla 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))
=
1
2
∇
T
f
(
x
)
(
∇
2
f
(
x
)
−
1
)
T
∇
f
(
x
)
=
1
2
∇
T
f
(
x
)
∇
2
f
(
x
)
−
1
∇
f
(
x
)
=\frac{1}{2}\nabla^Tf(x)(\nabla^2f(x)^{-1})^T\nabla f(x)=\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)
=21∇Tf(x)(∇2f(x)−1)T∇f(x)=21∇Tf(x)∇2f(x)−1∇f(x)
因为
∇
2
f
(
x
)
\nabla^2f(x)
∇2f(x)是一个实对称矩阵,所以
∇
2
f
(
x
)
−
1
\nabla^2f(x)^{-1}
∇2f(x)−1也是一个实对称矩阵.于是
f
^
(
v
)
=
f
(
x
)
−
1
2
∇
T
f
(
x
)
∇
2
f
(
x
)
−
1
∇
f
(
x
)
\widehat{f}(v) = f(x)-\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)
f
(v)=f(x)−21∇Tf(x)∇2f(x)−1∇f(x)
因为
∇
2
f
(
x
)
\nabla^2f(x)
∇2f(x)是半正定的,所以
∇
T
f
(
x
)
∇
2
f
(
x
)
−
1
∇
f
(
x
)
⩾
0
\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)\geqslant 0
∇Tf(x)∇2f(x)−1∇f(x)⩾0,顾而
f
(
x
)
f(x)
f(x)减小.如此以来可以证明牛顿法是可以求得极值的.当然我们略去了很多细节.只是粗略的阐述了牛顿法成立的逻辑.还有更多的一些逻辑.我希望留在综合比较,梯度下降,共轭梯度下降和牛顿法这三个算法上面来阐述.