一、参考
《数值最优化算法与理论》
二、非线性方程组的局部算法
1. 局部Newton法
设
F
:
R
n
→
R
n
F:R^n \to R^n
F:Rn→Rn连续可微。考察如下非线性方程组:
F
(
x
)
=
0
F(x)=0
F(x)=0
若
F
F
F是某个函数
f
:
R
n
→
R
n
f:R^n \to R^n
f:Rn→Rn的梯度,由 数值最优化—无约束问题的下降算法与线性搜索:无约束问题解的一阶必要条件 可知,上面方程表示无约束问题
m
i
n
f
(
x
)
minf(x)
minf(x)的最优解的一阶必要条件。
记
F
′
(
x
)
F'(x)
F′(x)为函数
F
F
F在
x
x
x处的
J
a
c
o
b
i
Jacobi
Jacobi矩阵。求解上面方程的局部Newton法的迭代格式如下:
x
(
k
+
1
)
=
x
(
k
)
+
d
(
k
)
,
d
(
k
)
x^{(k+1)} = x^{(k)} + d^{(k)}, \quad d^{(k)}
x(k+1)=x(k)+d(k),d(k)是线性方程组
F
′
(
x
(
k
)
)
d
+
F
(
x
(
k
)
)
=
0
F'(x^{(k)})d + F(x^{(k)}) = 0
F′(x(k))d+F(x(k))=0
的解。
经过与 数值最优化—无约束问题最速下降法和Newton法:Newton法 比较,不难发现,若 F F F是函数 f : R n → R f:R^n \to R f:Rn→R的梯度,则求解非线性方程组的局部Newton法与求解无约束问题 m i n f ( x ) minf(x) minf(x)的古典Newton法一致。因此,求解非线性方程组的Newton法是求解无约束最优化问题Newton法的一种推广。
2. 局部拟Newton法
局部拟Newton法的迭代格式为:
x
(
k
+
1
)
=
x
(
k
)
+
d
(
k
)
,
d
(
k
)
x^{(k+1)} = x^{(k)} + d^{(k)}, \quad d^{(k)}
x(k+1)=x(k)+d(k),d(k)是线性方程组:
B
k
d
(
k
)
+
F
(
x
(
k
)
)
=
0
B_kd^{(k)} + F(x^{(k)}) = 0
Bkd(k)+F(x(k))=0
的解,其中,矩阵
B
k
B_k
Bk是
F
′
(
x
(
k
)
)
F'(x^{(k)})
F′(x(k))的近似,它满足下面的拟Newton(割线)方程:
B
k
+
1
s
(
k
)
=
y
(
k
)
B_{k+1}s^{(k)} = y^{(k)}
Bk+1s(k)=y(k)
其中
y
(
k
)
=
F
(
x
(
k
+
1
)
)
−
F
(
x
(
k
)
)
,
s
(
k
)
=
x
(
k
+
1
)
−
x
(
k
)
y^{(k)} = F(x^{(k+1)}) - F(x^{(k)}), s^{(k)} = x^{(k+1)} - x^{(k)}
y(k)=F(x(k+1))−F(x(k)),s(k)=x(k+1)−x(k)。注意到
y
(
k
)
≈
F
′
(
x
(
k
1
)
)
s
(
k
)
y^{(k)} \approx F'(x^{(k1)})s^{(k)}
y(k)≈F′(x(k1))s(k),因此,
B
k
+
1
B_{k+1}
Bk+1与
F
′
(
x
(
k
+
1
)
)
F'(x^{(k+1)})
F′(x(k+1))沿方向
s
(
k
)
s^{(k)}
s(k)很接近。
三、非线性方程组的全局化算法
1. 阻尼Newton法
设
F
(
x
)
=
(
F
1
(
x
)
,
F
2
(
x
)
,
⋅
⋅
⋅
,
F
n
(
x
)
)
T
F(x) = (F_1(x), F_2(x),···,F_n(x))^T
F(x)=(F1(x),F2(x),⋅⋅⋅,Fn(x))T。引入函数:
θ
(
x
)
=
1
2
∣
∣
F
(
x
)
∣
∣
2
=
1
2
∑
i
=
1
n
F
i
(
x
)
2
\theta (x) = \frac 1 2 ||F(x)||^2 = \frac 1 2 \sum^{n}_{i=1} F_i(x)^2
θ(x)=21∣∣F(x)∣∣2=21i=1∑nFi(x)2
我们称
θ
\theta
θ是方程组的残量函数活模函数。经计算,容易得到
θ
\theta
θ的梯度具有如下形式:
∇
θ
(
x
)
=
∑
i
=
1
n
F
i
(
x
)
∇
F
i
(
x
)
=
F
′
(
x
)
T
F
(
x
)
\nabla \theta(x) = \sum^{n}_{i=1} F_i(x) \nabla F_i(x) = F'(x)^T F(x)
∇θ(x)=i=1∑nFi(x)∇Fi(x)=F′(x)TF(x)
设
d
ˉ
\bar d
dˉ是下面的线性方程组的解:
F
′
(
x
)
d
+
F
(
x
)
=
0
F'(x)d + F(x) = 0
F′(x)d+F(x)=0
则有:
∇
θ
(
x
)
T
d
ˉ
=
−
∣
∣
F
(
x
)
∣
∣
2
<
0
\nabla \theta (x)^T \bar d = -||F(x)||^2 < 0
∇θ(x)Tdˉ=−∣∣F(x)∣∣2<0
即
d
ˉ
\bar d
dˉ是函数
θ
\theta
θ在
x
x
x处的一个下降方向。利用此性质,我们可以构造求解非线性方程的线性搜索型Newton法。称之为阻尼Newton法。如下:
- 给定初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)∈Rn,常数 ρ ∈ ( 0 , 1 ) , σ 1 ∈ ( 1 , 1 / 2 ) \rho \in (0,1), \sigma _1 \in (1,1/2) ρ∈(0,1),σ1∈(1,1/2),精度 ϵ > 0 \epsilon > 0 ϵ>0,令 k = 0 k=0 k=0。
- 若 ∣ ∣ F ( x ( k ) ) ∣ ∣ ≤ ϵ ||F(x^{(k)})|| \le \epsilon ∣∣F(x(k))∣∣≤ϵ,则终止算法,得解 x ( k ) x^{(k)} x(k)。否则,转3。
- 解线性方程序组 F ′ ( x ( k ) ) d + F ( x ( k ) ) = 0 F'(x^{(k)})d + F(x^{(k)}) = 0 F′(x(k))d+F(x(k))=0,得方向 d ( k ) d^{(k)} d(k)。
- 确定步长
α
k
\alpha _k
αk 为集合
{
ρ
i
∣
i
=
0
,
1
,
2
⋅
⋅
⋅
}
\{\rho ^i | i=0,1,2···\}
{ρi∣i=0,1,2⋅⋅⋅}中使得下面的不等式成立的最大者:
θ ( x ( k ) + α k d ( k ) ) ≤ ( 1 − 2 σ 1 α k ) θ ( x ( k ) ) \theta (x^{(k)} + \alpha _k d^{(k)}) \le (1 - 2 \sigma _1 \alpha_k) \theta (x^{(k)}) θ(x(k)+αkd(k))≤(1−2σ1αk)θ(x(k)) - 令 x ( k + 1 ) = x ( k ) + α k d ( k ) , k = k + 1 x^{(k+1)} = x^{(k)} + \alpha _k d^{(k)},k=k+1 x(k+1)=x(k)+αkd(k),k=k+1。转2。
2. 信赖域算法
类似于求解无约束问题的信赖域算法,我们构建求解非线性方程组的信赖域算法,其子问题为:
{
m
i
n
m
k
(
d
)
=
△
1
2
∣
∣
F
(
x
(
k
)
)
+
F
′
(
x
(
k
)
)
d
∣
∣
2
s
.
t
.
∣
∣
d
∣
∣
≤
Δ
k
\begin{cases} min \ m_k(d) \overset{\bigtriangleup }{=} \frac 1 2 ||F(x^{(k)}) + F'(x^{(k)})d||^2 \\ s.t. \ ||d|| \le \Delta _k \end{cases}
{min mk(d)=△21∣∣F(x(k))+F′(x(k))d∣∣2s.t. ∣∣d∣∣≤Δk
其中
Δ
k
>
0
\Delta _k > 0
Δk>0是信赖域半径。记该问题的解为
d
(
k
)
d^{(k)}
d(k)。函数
m
k
m_k
mk是
θ
\theta
θ的近似函数,它由在
θ
\theta
θ中对
F
F
F作线性近似产生。Newton-信赖域算法
如下:
- 取初始点 x ( 0 ) ∈ R n , Δ ˉ > 0 , Δ 0 ∈ ( 0 , Δ ˉ ) , η ∈ [ 0 , 1 4 ) x^{(0)} \in R^n,\ \bar \Delta >0, \Delta _0 \in (0,\bar \Delta), \eta \in [0, \frac 1 4) x(0)∈Rn, Δˉ>0,Δ0∈(0,Δˉ),η∈[0,41),精度 ϵ > 0 \epsilon > 0 ϵ>0,令 k = 0 k=0 k=0。
- 若 ∣ ∣ θ ( x ( k ) ) ∣ ∣ ≤ ϵ ||\theta (x^{(k)})|| \le \epsilon ∣∣θ(x(k))∣∣≤ϵ,则终止算法,得解 x ( k ) x^{(k)} x(k)。否则,转3。
- 求解上面的信赖域子问题,得解 d ( k ) d^{(k)} d(k)。
- 计算 r k r_k rk。若 r k > 3 4 r_k > \frac 3 4 rk>43,则令 Δ k + 1 = m i n { 2 Δ k , Δ ˉ } \Delta _{k+1} = min\{2\Delta _k,\bar \Delta \} Δk+1=min{2Δk,Δˉ};若 η < r k < 1 4 \eta < r_k < \frac 1 4 η<rk<41,则令 Δ k + 1 = 1 2 Δ k \Delta _{k+1} = \frac 1 2 \Delta _k Δk+1=21Δk;若 1 4 ≤ r k ≤ 3 4 \frac {1} {4} \le r_k \le \frac {3} {4} 41≤rk≤43,则令 Δ k + 1 = Δ k \Delta _{k+1} = \Delta _k Δk+1=Δk。
- 若 r k ≤ η r_k \le \eta rk≤η,令 x ( x + 1 ) = x ( k ) , k = k + 1 x^{(x+1)} = x^{(k)}, \ k=k+1 x(x+1)=x(k), k=k+1,转3。否则令 x ( k + 1 ) = x ( k ) + d ( k ) , k = k + 1 x^{(k+1)} = x^{(k)} + d^{(k)},\ k=k+1 x(k+1)=x(k)+d(k), k=k+1,转2。
注:4.中的常数1/4,3/4, 1/2是根据经验选取的。实际计算时,可根据问题对它们进行调整。
四、最小二乘问题
如下特殊形式的无约束问题:
m
i
n
f
(
x
)
=
1
2
∑
i
=
1
m
F
i
(
x
)
2
min f(x) = \frac 1 2 \sum ^m _{i=1} F_i(x)^2
minf(x)=21i=1∑mFi(x)2
其中,
F
i
:
R
n
→
R
(
i
=
1
,
2
,
⋅
⋅
⋅
,
m
)
F_i:R^n \to R(i=1,2,···,m)
Fi:Rn→R(i=1,2,⋅⋅⋅,m)连续可微。称该问题为最小二乘问题。非线性最小二乘问题包含非线性方程组作为其特殊情形,即
m
=
n
m=n
m=n。且该问题的最优解处的目标函数值为0。当
F
i
(
i
=
1
,
2
,
⋅
⋅
⋅
,
m
)
F_i(i=1,2,···,m)
Fi(i=1,2,⋅⋅⋅,m)都是线性函数时,该问题称为线性最小二乘问题。
1. 线性最小二乘问题
设
F
i
(
x
)
(
i
=
1
,
2
,
⋅
⋅
⋅
,
m
)
F_i(x)\ (i=1,2,···,m)
Fi(x) (i=1,2,⋅⋅⋅,m)为线性函数:
F
i
(
x
)
=
a
i
T
x
−
b
i
(
i
=
1
,
2
,
⋅
⋅
⋅
,
m
)
F_i(x) = a_i ^T x - b_i (i=1,2,···,m)
Fi(x)=aiTx−bi(i=1,2,⋅⋅⋅,m)
其中,
a
i
∈
R
n
,
b
i
∈
R
(
i
=
1
,
2
,
⋅
⋅
⋅
,
m
)
a_i \in R^n, b_i \in R (i=1,2,···,m)
ai∈Rn,bi∈R(i=1,2,⋅⋅⋅,m)。考虑如下线性最小二乘问题:
m
i
n
f
(
x
)
=
1
2
∑
i
=
1
m
(
a
i
T
x
−
b
i
)
2
min \ f(x) = \frac 1 2 \sum ^m _{i=1} (a_i^Tx-b_i)^2
min f(x)=21i=1∑m(aiTx−bi)2
容易证明,这是一个凸二次规划问题。(参考:数值最优化—概述)。
由无约束问题解的最优性条件,该问题等价于下面的线性方程组:
∇
f
(
x
)
=
∑
i
=
1
m
(
a
i
T
x
−
b
i
)
a
i
=
0
\nabla f(x) = \sum ^m _{i=1} (a_i^Tx-b_i)a_i = 0
∇f(x)=i=1∑m(aiTx−bi)ai=0
若记
A
=
(
a
1
,
a
2
,
⋅
⋅
⋅
,
a
m
)
T
,
b
=
(
b
1
,
b
2
,
⋅
⋅
⋅
,
b
m
)
T
A=(a_1,a_2,···,a_m)^T, b=(b_1,b_2,···,b_m)^T
A=(a1,a2,⋅⋅⋅,am)T,b=(b1,b2,⋅⋅⋅,bm)T,则上面的线性方程组可写为:
A
T
A
x
−
A
T
b
=
0
A^TAx - A^Tb = 0
ATAx−ATb=0
此线性方程组称为该问题的正规方程组。由于正规方程组的系数矩阵的秩与其增广矩阵的秩相等,因此方程组有解。
2. 非线性最小二乘问题
当问题中的至少有一个
F
i
F_i
Fi是非线性函数,问题称为非线性最小二乘问题。设
F
F
F二次连续可微。经直接计算可得:
∇
f
(
x
)
=
∑
i
=
1
m
F
i
(
x
)
∇
F
i
(
x
)
=
F
′
(
x
)
T
F
(
x
)
∇
2
f
(
x
)
=
F
′
(
x
)
T
F
′
(
x
)
+
∑
i
=
1
m
F
i
(
x
)
∇
2
F
i
(
x
)
\nabla f(x) = \sum ^m _{i=1} F_i(x) \nabla F_i(x) = F'(x)^T F(x) \\ \nabla^2 f(x) = F'(x)^TF'(x) + \sum ^ m _{i=1} F_i (x) \nabla ^2F_i(x)
∇f(x)=i=1∑mFi(x)∇Fi(x)=F′(x)TF(x)∇2f(x)=F′(x)TF′(x)+i=1∑mFi(x)∇2Fi(x)
其中,
F
′
(
x
)
=
(
∇
F
1
(
x
)
,
∇
F
2
(
x
)
,
⋅
⋅
⋅
,
∇
F
m
(
x
)
)
T
F'(x) = (\nabla F_1(x), \nabla F_2(x), ···,\nabla F_m(x))^T
F′(x)=(∇F1(x),∇F2(x),⋅⋅⋅,∇Fm(x))T
表示函数
F
F
F在
x
x
x处的Jacobi矩阵。
非线性最小二乘问题是一个无约束最优化问题,因此,我们可以利用求解无约束最优化问题的算法求解。注意到该问题的特殊性,我们可以针对该问题设计独特的算法。下面介绍求解非线性最小二乘问题的两种常用算法:Gauss-Newton
法和Levenberg-Marquardt
算法。
① Gauss-Newton法
求解非线性最小二乘问题的Gauss-Newton法中的
d
(
k
)
d^{(k)}
d(k)是下面的线性方程组的解:
F
′
(
x
(
k
)
)
T
F
′
(
x
(
k
)
)
d
+
F
′
(
x
(
k
)
)
T
F
′
(
x
(
k
)
)
=
0
F'(x^{(k)})^T F'(x^{(k)})d + F'(x^{(k)})^T F'(x^{(k)}) = 0
F′(x(k))TF′(x(k))d+F′(x(k))TF′(x(k))=0
或等价地,
d
(
k
)
d^{(k)}
d(k)是线性最小二乘问题:
m
i
n
1
2
∣
∣
F
(
x
(
k
)
)
+
F
′
(
x
(
k
)
)
∣
∣
2
min \ \frac 1 2 ||F(x^{(k)}) + F'(x^{(k)})||^2
min 21∣∣F(x(k))+F′(x(k))∣∣2
的解。
由于 d ( k ) d^{(k)} d(k)是 f f f在 x x x处的一个下降方向,因此,可以用下降算法构造求解非线性最小二乘问题的算法如下:
- 给定初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)∈Rn,常数 ρ ∈ ( 0 , 1 ) , σ 1 ∈ ( 0 , 1 / 2 ) \rho \in (0,1), \sigma _1 \in (0, 1/2) ρ∈(0,1),σ1∈(0,1/2),精度 ϵ > 0 \epsilon > 0 ϵ>0,令 k = 0 k=0 k=0。
- 若 ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ 2 ≤ ϵ ||\nabla f(x^{(k)})||^2 \le \epsilon ∣∣∇f(x(k))∣∣2≤ϵ,则终止算法,得解 x ( x ) x^{(x)} x(x)。否则,转3。
- 解上面的线性方程组得方向 d ( k ) d^{(k)} d(k)。
- 确定步长
α
k
\alpha _k
αk为集合
{
ρ
i
∣
i
=
0
,
1
,
2
,
⋅
⋅
⋅
}
\{ \rho ^i \ | \ i=0,1,2,··· \}
{ρi ∣ i=0,1,2,⋅⋅⋅}中使得下面的不等式成立的最大者:
f ( x ( k ) + α k d ( k ) ) ≤ f ( x ( k ) ) + σ 1 α k ∇ f ( x ( k ) ) T d ( k ) f(x^{(k)}+\alpha _k d^{(k)}) \le f(x^{(k)}) + \sigma _1 \alpha _k \nabla f(x^{(k)})^Td^{(k)} f(x(k)+αkd(k))≤f(x(k))+σ1αk∇f(x(k))Td(k) - 令 x ( k = 1 ) = x ( k ) + α k d ( k ) , k = k + 1 x^{(k=1)} = x^{(k)} + \alpha _k d^{(k)},k=k+1 x(k=1)=x(k)+αkd(k),k=k+1。转2。
② Levenberg-Marquardt算法
Levenberg-Marquardt算法是求解非线性最小二乘问题的另一种常用算法,该算法中
d
(
k
)
d^{(k)}
d(k)是下面的线性方程组的解:
[
F
′
(
x
(
k
)
)
T
F
′
(
x
(
k
)
)
+
μ
k
I
]
d
+
F
′
(
x
(
k
)
)
T
F
(
x
(
k
)
)
=
0
[F'(x^{(k)})^T F'(x^{(k)}) + \mu _k I]d + F'(x^{(k)})^TF(x^{(k)}) = 0
[F′(x(k))TF′(x(k))+μkI]d+F′(x(k))TF(x(k))=0
其中,
I
∈
R
n
×
n
I \in R^{n \times n}
I∈Rn×n表示单位矩阵,
μ
k
>
0
\mu _k > 0
μk>0。若
μ
k
=
0
\mu _k =0
μk=0,则Levenberg-Marquardt算法还原为Gauss-Newton法。从这种意义上来看,Levenberg-Marquardt算法是一种修正的Gauss-Newton法。算法如下:
- 给定初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)∈Rn,常数 ρ ∈ ( 0 , 1 ) , σ 1 ∈ ( 0 , 1 / 2 ) \rho \in (0,1), \sigma _1 \in (0, 1/2) ρ∈(0,1),σ1∈(0,1/2),精度 ϵ > 0 \epsilon > 0 ϵ>0,令 k = 0 k=0 k=0。
- 若 ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ ≤ ϵ ||\nabla f(x^{(k)})|| \le \epsilon ∣∣∇f(x(k))∣∣≤ϵ,则终止算法,得解 x ( x ) x^{(x)} x(x)。否则,转3。
- 解上面的线性方程组得方向 d ( k ) d^{(k)} d(k)。
- 确定步长
α
k
\alpha _k
αk为集合
{
ρ
i
∣
i
=
0
,
1
,
2
,
⋅
⋅
⋅
}
\{ \rho ^i \ | \ i=0,1,2,··· \}
{ρi ∣ i=0,1,2,⋅⋅⋅}中使得下面的不等式成立的最大者:
f ( x ( k ) + α k d ( k ) ) ≤ f ( x ( k ) ) + σ 1 α k ∇ f ( x ( k ) ) T d ( k ) f(x^{(k)}+\alpha _k d^{(k)}) \le f(x^{(k)}) + \sigma _1 \alpha _k \nabla f(x^{(k)})^Td^{(k)} f(x(k)+αkd(k))≤f(x(k))+σ1αk∇f(x(k))Td(k) - 令 x ( k = 1 ) = x ( k ) + α k d ( k ) , k = k + 1 x^{(k=1)} = x^{(k)} + \alpha _k d^{(k)},k=k+1 x(k=1)=x(k)+αkd(k),k=k+1。转2。
注:Levenberg-Marquardt算法与Gauss-Newton算法唯一的区别在于确定下降方向的子问题。