优化理论04---- 牛顿法牛顿法求根收敛速度二次收敛性修正牛顿法
Posted 炫云云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化理论04---- 牛顿法牛顿法求根收敛速度二次收敛性修正牛顿法相关的知识,希望对你有一定的参考价值。
无约束优化—牛顿法
无约束最优化问题:
( P ) min f ( x ) s.t. x ∈ X ⊆ R n \\begin{aligned} (P) ~ ~ ~ \\min &~ ~ ~ f(x)\\\\ \\text{s.t.} &~ ~ ~x ∈ X ⊆ R^n \\end{aligned} (P) mins.t. f(x) x∈X⊆Rn
1牛顿法
在
x
=
x
ˉ
x = \\bar{x}
x=xˉ时,f(x)可近似为:
f
(
x
)
≈
h
(
x
)
=
f
(
x
ˉ
)
+
∇
f
(
x
ˉ
)
T
(
x
−
x
ˉ
)
+
1
2
(
x
−
x
ˉ
)
T
H
(
x
ˉ
)
(
x
−
x
ˉ
)
(1)
f(x) \\approx h(x) = f(\\bar{x}) + ∇f(\\bar{x})^T (x − \\bar{x}) + \\frac{1}{2}(x − \\bar{x})^TH(\\bar{x})(x − \\bar{x})\\tag1
f(x)≈h(x)=f(xˉ)+∇f(xˉ)T(x−xˉ)+21(x−xˉ)TH(xˉ)(x−xˉ)(1)
这是
f
(
x
)
f (x)
f(x)在
x
=
x
ˉ
x = \\bar{x}
x=xˉ处的二次泰勒展开式。其中
H
(
x
ˉ
)
=
∇
2
f
(
x
ˉ
)
H(\\bar{x})= ∇^2f(\\bar{x})
H(xˉ)=∇2f(xˉ)
要
min
f
(
x
)
\\min ~ ~ ~ f(x)
min f(x),则
∇
h
(
x
)
=
0
∇h(x)=0
∇h(x)=0,有
∇
f
(
x
ˉ
)
+
H
(
x
ˉ
)
(
x
−
x
ˉ
)
=
0
,
(2)
∇f(\\bar{x}) +H(\\bar{x})(x − \\bar{x}) = 0,\\tag2
∇f(xˉ)+H(xˉ)(x−xˉ)=0,(2)
设
H
(
x
ˉ
)
H(\\bar{x})
H(xˉ)可逆, 则
x
−
x
ˉ
=
−
H
(
x
ˉ
)
−
1
∇
f
(
x
ˉ
)
(3)
x − \\bar{x}= -H(\\bar{x})^{-1} ∇f(\\bar{x})\\tag3
x−xˉ=−H(xˉ)−1∇f(xˉ)(3)
−
H
(
x
ˉ
)
−
1
∇
f
(
x
ˉ
)
-H(\\bar{x})^{-1} ∇f(\\bar{x})
−H(xˉ)−1∇f(xˉ)称为牛顿方向,或
x
=
x
ˉ
x = \\bar{x}
x=xˉ处的牛顿步长。则得牛顿法的迭代公式:
x
k
+
1
=
x
k
−
H
(
x
k
)
−
1
∇
f
(
x
k
)
(4)
x^{k+1} = x^k - H({x}^k)^{-1} ∇f({x}^k)\\tag4
xk+1=xk−H(xk)−1∇f(xk)(4)
阻 尼 牛 顿 法 \\large\\color{#70f3ff}{\\boxed{\\color{brown}{阻尼牛顿法} }} 阻尼牛顿法
纯牛顿法步长固定为 α = 1 α=1 α=1 ,阻尼牛顿法( damped Newton method or guarded Newton method)的步长 α α α是不固定的。
[算法] 给定起始点 x 0 ∈ d o m f , k = 0 x_0\\in dom \\ f,k=0 x0∈dom f,k=0,精度 ϵ > 0 \\epsilon >0 ϵ>0,
- 计算牛顿方向 d k = − H ( x ˉ k ) − 1 ∇ f ( x ˉ k ) d^k=-H(\\bar{x}^k)^{-1} ∇f(\\bar{x}^k) dk=−H(xˉk)−1∇f(xˉk) 。
- 停止条件:如果 d k = 0 , 或 者 ( d k ) 2 / 2 < ϵ d^k=0,或者(d^k)^2/2<\\epsilon dk=0,或者(dk)2/2<ϵ则退出。
- 线搜索:用精确性线搜索或者非精确性线搜索选择步长 α k α_k αk
- 迭代: x k + 1 = x k + α k d k , k = k + 1 x^{k+1} = x^k + α_kd^k, k = k + 1 xk+1=xk+αkdk,k=k+1. 转到步骤1。
def newton(f, start):
fun = Function(f)
x = array(start)
g = fun.grad(x)
while fun.norm(x) > epsilon:
G = fun.hesse(x)
d = (-dot(linalg.inv(G), g)).tolist()[0]
alpha = wolfe(f, x, d)
x = x + alpha * array(d)
g = fun.grad(x)
return x
请注意以下几点:
- 牛顿法不能满足 H ( x ˉ k ) H(\\bar{x}^k) H(xˉk)在每次迭代中都是非奇异,正定矩阵。
- 不能保证每一步 f ( x k + 1 ) < f ( x k ) f(x^{k+1}) <f(x^k) f(xk+1)<f(x以上是关于优化理论04---- 牛顿法牛顿法求根收敛速度二次收敛性修正牛顿法的主要内容,如果未能解决你的问题,请参考以下文章