今天我们继续来学习数值最优化方法的第三章内容的后续知识
Newton方法
Newton方法是Newton方法的基础, 本节主要讨论的是基本Newton方法, 阻尼Newton方法以及修正Newton方法的构造和特性, 这类方法适合解决中小型最优化问题
基本Newton方法
对于
f
(
x
)
f(x)
f(x)如果有连续的二阶偏导数, 那么
f
(
x
)
f(x)
f(x)在当前迭代点
x
k
x_k
xk处有泰勒展开公式如下:
f
(
x
k
+
d
)
=
f
k
+
g
k
T
d
+
1
2
d
T
G
k
d
+
o
(
∣
∣
d
∣
∣
2
)
f(x_k+d)=f_k+g_k^Td+\frac{1}{2}d^TG_kd+o(||d||^2)
f(xk+d)=fk+gkTd+21dTGkd+o(∣∣d∣∣2)
所以在该迭代点合适的领域内我们用二次函数
q
k
(
d
)
≜
f
k
+
g
k
T
d
+
1
2
d
T
G
k
d
q_k(d)\triangleq f_k+g_k^Td+\frac{1}{2}d^TG_kd
qk(d)≜fk+gkTd+21dTGkd
来近似
f
(
x
k
+
d
)
f(x_k+d)
f(xk+d)
所以对于问题
min
f
(
x
k
+
d
)
\min f(x_k+d)
minf(xk+d) 的求解就转化成了对问题
min
q
k
(
d
)
\min q_k(d)
minqk(d)的求解了
这里我们如果假设
G
k
G_k
Gk正定, 则令方程组一阶导为零得:
G
k
d
=
−
g
k
G_kd=-g_k
Gkd=−gk
则:
d
=
−
G
−
1
g
k
d=-G^{-1}g_k
d=−G−1gk为该问题的唯一解, 我们把公式
G
k
d
=
−
g
k
G_kd=-g_k
Gkd=−gk称作Newton方程
由这个方程得到的方向
d
=
−
G
−
1
g
k
d=-G^{-1}g_k
d=−G−1gk为Newton方向
以这个方向为迭代方向的最优化方法称为Newton方法
而基本Newton方法就是取全步长为固定的 α k = 1 \alpha_k=1 αk=1的Newton方法, 所以基本Newton方法的步骤大致如下:
- x 0 ∈ R n , ε > 0 , k : = 0 x_0\in R^n,\varepsilon >0,k:=0 x0∈Rn,ε>0,k:=0
- 若满足终止条件, 输出结果, 停止迭代
- 计算 d = − G − 1 g k d=-G^{-1}g_k d=−G−1gk
- x k + 1 = x k + d k , k : = k + 1 x_{k+1}=x_k+d_k,k:=k+1 xk+1=xk+dk,k:=k+1, 转第二步
在不引起混淆的情况下, 我们把基本Newton方法简称为Newton方法
在Newton方法中只要
G
k
G_k
Gk是正定的, Newton方向就是下降的方向, 这是因为
g
k
T
d
k
=
−
g
k
T
G
k
−
1
g
k
<
0
g_k^Td_k=-g_k^TG_k^{-1}g_k<0
gkTdk=−gkTGk−1gk<0, 这个不等式表明Newton方向和梯度方向(上升最快的方向)成钝角, 也就是和下降最快的方向成锐角, 根据全微分公式
d
z
=
∂
f
∂
x
d
x
+
∂
f
∂
y
d
y
=
g
k
T
d
k
<
0
dz=\frac{\partial f}{\partial x} dx+\frac{\partial f}{\partial y} dy=g_k^Td_k<0
dz=∂x∂fdx+∂y∂fdy=gkTdk<0, 可知这个方向在整个迭代中使得函数值下降
那么接下来我们给出基本Newton方法的收敛性定理
设 f ( x ) ∈ C 2 f(x)\in C^2 f(x)∈C2, f ( x ) f(x) f(x)的Hesse矩阵 G ( x ) G(x) G(x)满足: 存在 β > 0 \beta >0 β>0, 对任给的 x x x与 y y y, 有 ∣ ∣ G ( x ) − G ( y ) ∣ ∣ ≤ β ∣ ∣ x − y ∣ ∣ ||G(x)-G(y)||\leq \beta ||x-y|| ∣∣G(x)−G(y)∣∣≤β∣∣x−y∣∣(Lipschitz条件), 若 x 0 x_0 x0充分接近 f ( x ) f(x) f(x)的局部极小点 x ∗ x^* x∗, 且 G ∗ G^* G∗正定, 则Newton方法对所有的k有定义, 并以二阶收敛速度收敛
接下来我们给出证明:
首先我们提出几个概念,
g
(
x
)
g(x)
g(x)是函数的一阶导函数, 因为原函数是向量函数, 所以其导函数同样是向量函数, 而使用泰勒展开可以得到:
g
(
x
k
+
d
)
=
g
k
+
G
k
d
+
O
(
∣
∣
d
∣
∣
2
)
g(x_k+d)=g_k+G_kd+O(||d||^2)
g(xk+d)=gk+Gkd+O(∣∣d∣∣2)
其中,
d
=
x
−
x
k
d=x-x_k
d=x−xk, 设
g
i
(
x
)
g_i(x)
gi(x)是
g
(
x
)
g(x)
g(x)的分量,
G
i
j
(
x
)
G_{ij}(x)
Gij(x)是
G
(
x
)
G(x)
G(x)的元素, 我们先来使用一阶泰勒展开来推导上述展开式
首先,
g
i
(
x
)
g_i(x)
gi(x)的展开式如下:
g
i
(
x
k
+
d
)
=
g
i
(
x
k
)
+
∑
j
=
1
n
G
i
j
(
x
k
+
θ
i
d
)
d
j
g_i(x_k+d)=g_i(x_k)+\sum^{n}_{j=1}G_{ij}(x_k+\theta_i d)d_j
gi(xk+d)=gi(xk)+j=1∑nGij(xk+θid)dj
这里
θ
i
∈
(
0
,
1
)
\theta_i\in (0,1)
θi∈(0,1),
θ
i
d
\theta_i d
θid表示
x
k
x_k
xk点向方向
d
d
d的一小步, 近似拟合左边函数值
经过变换得到:
g
i
(
x
k
+
d
)
−
g
i
(
x
k
)
−
∑
j
=
1
n
G
i
j
(
x
k
)
d
j
=
∑
j
=
1
n
[
G
i
j
(
x
k
+
θ
i
d
)
−
G
i
j
(
x
k
)
]
d
j
g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j=\sum^{n}_{j=1}[G_{ij}(x_k+\theta_i d)-G_{ij}(x_k)]d_j
gi(xk+d)−gi(xk)−j=1∑nGij(xk)dj=j=1∑n[Gij(xk+θid)−Gij(xk)]dj
由定理中提到的Lipschitz条件可得:
∣
G
i
j
(
x
)
−
G
i
j
(
y
)
∣
≤
β
∣
∣
x
−
y
∣
∣
|G_{ij}(x)-G_{ij}(y)|\leq \beta ||x-y||
∣Gij(x)−Gij(y)∣≤β∣∣x−y∣∣
且有:
∣
∣
θ
i
d
∣
∣
≤
∣
∣
d
∣
∣
,
∣
d
j
∣
≤
∣
∣
d
∣
∣
||\theta_i d||\leq||d||, |d_j|\leq||d||
∣∣θid∣∣≤∣∣d∣∣,∣dj∣≤∣∣d∣∣
则:
∣
g
i
(
x
k
+
d
)
−
g
i
(
x
k
)
−
∑
j
=
1
n
G
i
j
(
x
k
)
d
j
∣
≤
β
n
∣
∣
d
∣
∣
2
|g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j|\leq\beta n||d||^2
∣gi(xk+d)−gi(xk)−j=1∑nGij(xk)dj∣≤βn∣∣d∣∣2
这里我们根据大O表示法的定义:
也就是说
∣
g
i
(
x
k
+
d
)
−
g
i
(
x
k
)
−
∑
j
=
1
n
G
i
j
(
x
k
)
d
j
∣
=
O
(
∣
∣
d
∣
∣
2
)
|g_i(x_k+d)-g_i(x_k)-\sum^{n}_{j=1}G_{ij}(x_k)d_j|=O(||d||^2)
∣gi(xk+d)−gi(xk)−j=1∑nGij(xk)dj∣=O(∣∣d∣∣2)
则可得:
g
i
(
x
k
+
d
)
=
g
i
(
x
k
)
+
∑
j
=
1
n
G
i
j
(
x
k
)
d
j
+
O
(
∣
∣
d
∣
∣
2
)
g_i(x_k+d)=g_i(x_k)+\sum^{n}_{j=1}G_{ij}(x_k)d_j+O(||d||^2)
gi(xk+d)=gi(xk)+j=1∑nGij(xk)dj+O(∣∣d∣∣2)
即公式
g
(
x
k
+
d
)
=
g
k
+
G
k
d
+
O
(
∣
∣
d
∣
∣
2
)
g(x_k+d)=g_k+G_kd+O(||d||^2)
g(xk+d)=gk+Gkd+O(∣∣d∣∣2)成立
若取 d = − h k = x ∗ − x k d=-h_k=x^*-x_k d=−hk=x∗−xk, 且由一阶必要条件, 则由上式可得: g ∗ = g k − G k h k + O ( ∣ ∣ h k ∣ ∣ 2 ) = 0 g^*=g_k-G_kh_k+O(||h_k||^2)=0 g∗=gk−Gkhk+O(∣∣hk∣∣2)=0
由
G
(
x
)
G(x)
G(x)的连续性可知, 存在
x
∗
x^*
x∗的一个邻域, 当
x
k
x_k
xk在此邻域中, 也就是说
∣
∣
x
k
−
x
∗
∣
∣
<
δ
||x_k-x^*||<\delta
∣∣xk−x∗∣∣<δ时, 有
G
k
G_k
Gk正定,
G
k
−
1
G_k^{-1}
Gk−1有上界, 那么就说明第
k
k
k次迭代存在, 对
g
∗
=
g
k
−
G
k
h
k
+
O
(
∣
∣
h
k
∣
∣
2
)
=
0
g^*=g_k-G_kh_k+O(||h_k||^2)=0
g∗=gk−Gkhk+O(∣∣hk∣∣2)=0公式左右同时乘以
G
k
−
1
G_k^{-1}
Gk−1得:
G
k
−
1
−
h
k
+
O
(
∣
∣
h
k
∣
∣
2
)
=
−
d
k
−
h
k
+
O
(
∣
∣
h
k
∣
∣
2
)
=
−
h
k
+
1
+
O
(
∣
∣
h
k
∣
∣
2
)
=
0
G_k^{-1}-h_k+O(||h_k||^2)=-d_k-h_k+O(||h_k||^2)=-h_{k+1}+O(||h_k||^2)=0
Gk−1−hk+O(∣∣hk∣∣2)=−dk−hk+O(∣∣hk∣∣2)=−hk+1+O(∣∣hk∣∣2)=0
也就是说:
h
k
+
1
=
O
(
∣
∣
h
k
∣
∣
2
)
h_{k+1}=O(||h_k||^2)
hk+1=O(∣∣hk∣∣2)
有:
h
k
+
1
≤
γ
∣
∣
h
k
∣
∣
2
h_{k+1}\leq \gamma||h_k||^2
hk+1≤γ∣∣hk∣∣2
又因为:
∣
∣
x
k
−
x
∗
∣
∣
<
δ
||x_k-x^*||<\delta
∣∣xk−x∗∣∣<δ, 则:
h
k
+
1
≤
γ
∣
∣
h
k
∣
∣
2
≤
γ
δ
∣
∣
h
k
∣
∣
h_{k+1}\leq \gamma||h_k||^2\leq\gamma\delta ||h_k||
hk+1≤γ∣∣hk∣∣2≤γδ∣∣hk∣∣
x
k
x_k
xk充分接近
x
∗
x^*
x∗可以保证
γ
δ
<
1
\gamma\delta<1
γδ<1, 所以:
∣
∣
x
k
+
1
−
x
∗
∣
∣
=
∣
∣
h
k
+
1
∣
∣
<
∣
∣
h
k
∣
∣
≤
δ
||x_{k+1}-x^*||=||h_{k+1}||<||h_k||\leq\delta
∣∣xk+1−x∗∣∣=∣∣hk+1∣∣<∣∣hk∣∣≤δ
也就是说
x
k
+
1
x_{k+1}
xk+1也在
x
∗
x^*
x∗的这一邻域内, 也就是说第
k
+
1
k+1
k+1次迭代有意义, 根据数学归纳法, 我们可以知道方法对所有
k
k
k次的迭代都有意义, 且
h
k
+
1
≤
(
γ
δ
)
k
+
1
∣
∣
h
k
∣
∣
,
∣
∣
h
k
∣
∣
→
0
h_{k+1}\leq (\gamma\delta)^{k+1} ||h_k||,||h_k||\rightarrow 0
hk+1≤(γδ)k+1∣∣hk∣∣,∣∣hk∣∣→0, 基本Newton方法收敛, 且由
h
k
+
1
≤
γ
∣
∣
h
k
∣
∣
2
h_{k+1}\leq \gamma||h_k||^2
hk+1≤γ∣∣hk∣∣2可知是二阶收敛
但是这个定理只能表明基本Newton方法的局部收敛性, 也就是说需要迭代点足够靠近局部极小点, 对于这个方法, 其二阶收敛性保证其在合适的初始点上会很快得收敛到极小点, 但是当初始点没有充分接近极小点的时候, 二阶导矩阵 G k G_k Gk可能会出现不正定或者是奇异的情况, 使得无法进行迭代, 即使正定, 也不能保证函数单调下降, 而每一步迭代都需要计算二阶导Hesse矩阵, 都需要解一个线性方程组, 计算量为 O ( n 3 ) O(n^3) O(n3), 这算是比较大的开销了