METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS(三)
3. 非线性最小二乘问题
在本手册的其余部分中,我们将讨论求解非线性最小二乘问题的方法。给定一个向量函数 f : R n → R m w i t h m ≥ n f:\mathbb{R}^n \to \mathbb{R}^m \, with \, m\geq n f:Rn→Rmwithm≥n。我们想要最小化 ∣ ∣ f ( x ) ∣ ∣ ||f(x)|| ∣∣f(x)∣∣,或者等价地找到
x ∗ = a r g m i n x { F ( x ) } (3.1 a) \pmb{x}^* = argmin_{\pmb{x}} \{F(\pmb{x})\} \tag{3.1 a} xxx∗=argminxxx{F(xxx)}(3.1 a)
其中
F
(
x
)
=
1
2
∑
i
=
1
m
(
f
i
(
x
)
)
2
=
1
2
∣
∣
f
(
x
)
∣
∣
2
=
1
2
f
(
x
)
T
f
(
x
)
(3.1 b)
F(\pmb{x}) = \frac{1}{2} \sum_{i=1}^{m}{(f_i(\pmb{x}))^2} = \frac{1}{2}||f(\pmb{x})||^2 = \frac{1}{2}f(\pmb{x})^Tf(\pmb{x}) \tag{3.1 b}
F(xxx)=21i=1∑m(fi(xxx))2=21∣∣f(xxx)∣∣2=21f(xxx)Tf(xxx)(3.1 b)
最小二乘问题可以用通用的优化方法来解决,但我们将提出更有效的特殊方法。在许多情况下,它们的性能比线性收敛更好,有时甚至可以达到二次收敛的性能,即使它们不需要实现二阶导数的计算。
在对本章的方法的描述中,我们需要
F
F
F 的导数的公式:假设
f
f
f 有连续的二阶偏导数,我们可以把它的泰勒展开写为
f
(
x
+
h
)
=
f
(
x
)
+
J
(
x
)
h
+
O
(
∣
∣
h
∣
∣
2
)
(3.2 a)
f(\pmb{x}+\pmb{h}) = f(\pmb{x}) +\pmb{J}(\pmb{x})\pmb{h} + \mathit{O}(||\pmb{h}||^2) \tag{3.2 a}
f(xxx+hhh)=f(xxx)+JJJ(xxx)hhh+O(∣∣hhh∣∣2)(3.2 a)
其中
J
∈
R
m
×
n
\pmb{J} \in \mathbb{R}^{m \times n}
JJJ∈Rm×n 是雅可比矩阵。这是一个包含函数分量的一阶偏导数的矩阵,
(
J
(
x
)
)
i
j
=
∂
f
i
∂
x
j
(
x
)
(3.2 b)
(\pmb{J}(\pmb{x}))_{ij}=\frac{\partial f_i}{\partial x_j}(\pmb{x}) \tag{3.2 b}
(JJJ(xxx))ij=∂xj∂fi(xxx)(3.2 b)
对于
F
:
R
n
→
R
F:\mathbb{R}^n \to \mathbb{R}
F:Rn→R,从(3.1b)中的第一个公式可以得出,
∂
F
∂
x
j
(
x
)
=
∑
i
=
1
m
f
i
(
x
)
∂
f
i
∂
x
j
(
x
)
(3.3)
\frac{\partial F}{\partial x_j}(x) = \sum_{i=1}^{m}{f_i(x) \frac{\partial f_i}{\partial x_j}(x)} \tag{3.3}
∂xj∂F(x)=i=1∑mfi(x)∂xj∂fi(x)(3.3)
如果我们没有在定义(3.1b)中使用因子 1 2 \frac{1}{2} 21,我们就会在很多表达式中得到一个恼人的因子 2 2 2。
因此,梯度(1.4b)为
F
˙
(
x
)
=
J
(
x
)
T
f
(
x
)
(3.4 a)
\dot{F}(x) = J(x)^T f(x) \tag{3.4 a}
F˙(x)=J(x)Tf(x)(3.4 a)
我们还需要
F
F
F 的海塞矩阵,从(3.3)我们可以看到位置
(
j
,
k
)
(j,k)
(j,k) 的元素是
∂
2
F
∂
x
j
∂
x
k
=
∑
i
=
1
m
(
∂
f
i
∂
x
j
(
x
)
∂
f
i
∂
x
k
(
x
)
+
f
i
(
x
)
∂
2
f
i
∂
x
j
∂
x
k
(
x
)
)
\frac{\partial^2 F}{\partial x_j \partial x_k} = \sum_{i=1}^{m}{( \frac{\partial f_i}{\partial x_j}(\pmb{x}) \frac{\partial f_i}{\partial x_k}(\pmb{x}) + f_i(\pmb{x}) \frac{\partial^2 f_i }{\partial x_j \partial x_k}(\pmb{x}) )}
∂xj∂xk∂2F=i=1∑m(∂xj∂fi(xxx)∂xk∂fi(xxx)+fi(xxx)∂xj∂xk∂2fi(xxx))
从而
F
¨
(
x
)
=
J
(
x
)
T
J
(
x
)
+
∑
i
=
1
m
f
i
(
x
)
f
¨
i
(
x
)
(3.4 b)
\ddot{F}(x) = J(x)^TJ(x) + \sum_{i=1}^{m}{f_i(x) \ddot{f}_i(x)} \tag{3.4 b}
F¨(x)=J(x)TJ(x)+i=1∑mfi(x)f¨i(x)(3.4 b)
示例3.1.
(3.1)最简单的情况是当
f
(
x
)
f(\pmb{x})
f(xxx) 具有以下形式时
f
(
x
)
=
b
−
A
x
f(\pmb{x}) = \pmb{b} -\pmb{A}\pmb{x}
f(xxx)=bbb−AAAxxx
其中向量
b
∈
R
m
\pmb{b} \in \mathbb{R}^m
bbb∈Rm 和矩阵
A
∈
R
m
×
n
\pmb{A} \in \mathbb{R}^{m \times n}
AAA∈Rm×n。我们说这是一个线性最小二乘问题。在这种情况下,对所有的
x
\pmb{x}
xxx,
J
(
x
)
=
−
A
\pmb{J}(\pmb{x}) = - \pmb{A}
JJJ(xxx)=−AAA,并且从(3.4a)中我们可以得到
F
˙
(
x
)
=
−
A
T
(
b
−
A
x
)
\dot{\pmb{F}}(\pmb{x}) = -\pmb{A}^T(\pmb{b}-\pmb{A}\pmb{x})
FFF˙(xxx)=−AAAT(bbb−AAAxxx)
当
x
∗
\pmb{x}^∗
xxx∗ 为下式对应的所谓的正规方程的解时,此方程为
0
0
0
(
A
T
A
)
x
∗
=
A
T
b
(3.5)
(\pmb{A}^T\pmb{A})\pmb{x}^{*} = \pmb{A}^T\pmb{b} \tag{3.5}
(AAATAAA)xxx∗=AAATbbb(3.5)
这个问题可以用以下形式来表示
A
x
∗
≈
b
\pmb{A}\pmb{x}^* \approx \pmb{b}
AAAxxx∗≈bbb
或者我们可以通过正交变换来求解它:找到一个正交矩阵
Q
\pmb{Q}
QQQ 满足
Q
T
A
=
[
R
0
]
\pmb{Q}^T\pmb{A} = \begin{bmatrix} \pmb{R} \\ \pmb{0} \end{bmatrix}
QQQTAAA=[RRR000]
其中,
R
∈
R
n
×
n
\pmb{R}\in \mathbb{R}^{n \times n}
RRR∈Rn×n 为上三角形矩阵。通过在系统中的反向替换找到解
R
x
∗
=
(
Q
T
b
)
1
:
n
\pmb{R}\pmb{x}^* = (\pmb{Q}^T\pmb{b})_{1:n}
RRRxxx∗=(QQQTbbb)1:n
该方法的解比通过正规方程得到的解更精确。
在MATLAB中,假设数组 A 和 b 代表矩阵 A \pmb{A} AAA 和向量 b \pmb{b} bbb。然后,命令 A ∖ b A \setminus b A∖b 返回通过正交变换计算出的最小二乘解。
正如标题所暗示的那样,我们假设 f f f 是非线性的,并且不应该详细讨论线性问题。我们参考了 Madsen and Nielsen(2002) 的第2章或 Golub and Van Loan (1996) 的第5.2节。
示例 3.2.
在例子1.1中,我们看到了一个由数据拟合产生的非线性最小二乘问题。另一个应用是在如下所示的非线性方程的求解中,
f
(
x
∗
)
=
0
,
w
h
e
r
e
f
:
R
n
→
R
n
f(\pmb{x}^*) = 0, \quad where \, f:\mathbb{R}^n \to \mathbb{R}^n
f(xxx∗)=0,wheref:Rn→Rn
我们可以使用牛顿-拉夫森的方法:从最初的猜测 x 0 \pmb{x}_0 xxx0 开始,我们使用以下算法计算 x 1 , x 2 , . . . \pmb{x}_1,\pmb{x}_2,... xxx1,xxx2,...,该算法基于寻找 h \pmb{h} hhh,使得 f ( x + h ) = 0 f(\pmb{x}+\pmb{h})=0 f(xxx+hhh)=0 并且忽略(3.2a)中的项 O ( ∣ ∣ h ∣ ∣ 2 ) \mathit{O}(||\pmb{h}||^2) O(∣∣hhh∣∣2),
S o l v e J ( x k ) h = − f ( x k ) f o r h k x k + 1 = x k + h k (3.6) \begin{matrix} Solve \quad \pmb{J}(\pmb{x}_k)\pmb{h} = -f(\pmb{x}_k) \quad for \quad h_k \\ \pmb{x}_{k+1}=\pmb{x}_k + \pmb{h}_k\end{matrix} \tag{3.6} SolveJJJ(xxxk)hhh=−f(xxxk)forhkxxxk+1=xxxk+hhhk(3.6)
这里,雅可比矩阵 J \pmb{J} JJJ 由(3.2b)给出。如果 J ( x ∗ ) \pmb{J}(\pmb{x}^*) JJJ(xxx∗) 是非奇异的,则该方法具有二次的最终收敛性能,即如果 d k = ∣ ∣ x k − x ∗ ∣ ∣ d_k = ||\pmb{x}_k - \pmb{x}^*|| dk=∣∣xxxk−xxx∗∣∣ 很小,则 ∣ ∣ x k + 1 − x ∗ ∣ ∣ = O ( d k 2 ) ||\pmb{x}_{k+1}-\pmb{x}^*||=\mathit{O}(d_k^2) ∣∣xxxk+1−xxx∗∣∣=O(dk2)。然而,如果 x k \pmb{x}_k xxxk 远离 x ∗ \pmb{x}^∗ xxx∗,那么迭代后我们就有可能距离真值更远。
我们可以以一种使我们能够使用本章中将要介绍的所有“工具”的方式来重新表述这个问题:(3.6)的解是由(3.1)定义的函数 F \pmb{F} FFF 的全局最小值,
F ( x ) = 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 F(\pmb{x}) = \frac{1}{2} ||f(\pmb{x})||^2 F(xxx)=21∣∣f(xxx)∣∣2
由于
F
(
x
∗
)
=
0
F(\pmb{x}^∗)=0
F(xxx∗)=0 并且当
f
(
x
)
≠
0
f(\pmb{x}) \neq 0
f(xxx)=0 时
F
(
x
)
>
0
F(\pmb{x}) > 0
F(xxx)>0。我们可以用以下方法来代替(3.6)中近似解的更新
x
k
+
1
=
x
k
+
α
k
h
k
x_{k+1} = x_k + \alpha_k h_k
xk+1=xk+αkhk
其中, α k \alpha_k αk 是通过应用于函数 φ ( α ) = F ( x k + α h k ) \varphi(\alpha)=F(\pmb{x}_k+\alpha \pmb{h}_k) φ(α)=F(xxxk+αhhhk) 的线搜索找到的。
作为一个具体的例子,我们将考虑以下问题,取自Powell(1970),
f
(
x
)
=
[
x
1
10
x
1
x
1
+
0.1
+
2
x
2
2
]
,
f(\pmb{x}) = \begin{bmatrix} x_1 \\ \frac{10x_1}{x_1 + 0.1} +2x_2^2\end{bmatrix},
f(xxx)=[x1x1+0.110x1+2x22],
这个问题以
x
∗
=
0
\pmb{x}^∗=0
xxx∗=0 作为唯一的解。对应的雅各比矩阵为
J
(
x
)
=
[
1
0
(
x
1
+
0.1
)
−
2
4
x
2
]
,
\pmb{J}(\pmb{x}) = \begin{bmatrix} 1 & 0 \\ (x_1 + 0.1)^{-2} & 4x_2 \end{bmatrix},
JJJ(xxx)=[1(x1+0.1)−204x2],
它在解上是奇异的。
如果我们取 x 0 = [ 3 , 1 ] T \pmb{x}_0 = [3,1]^T xxx0=[3,1]T 并使用上述算法进行精确的线搜索,那么迭代将会收敛到 x c ≈ [ 1.8016 , 0 ] T \pmb{x}_c \approx [1.8016,0]^T xxxc≈[1.8016,0]T,这不是一个解。另一方面,很容易看出,由算法(3.6)给出的迭代是 x k = [ 0 , y k ] T \pmb{x}_k = [0,y_k]^T xxxk=[0,yk]T 与 y k + 1 = 1 2 y k y_{k+1}=\frac{1}{2} y_k yk+1=21yk,即我们线性收敛到解。在一些例子中,我们将返回到这个问题,看看不同的方法是如何处理它。
3.1. 高斯-牛顿法
这种方法是我们将在下一节中描述的非常有效的方法的基础。它是基于向量函数分量的一阶导数的实现。在特殊情况下,它可以给出二次收敛性能,就像牛顿法用于通用优化问题那样,详见 Frandsen et al(2004)。
高斯-牛顿方法是基于对 x \pmb{x} xxx 附近的 f \pmb{f} fff 的分量的线性近似( f \pmb{f} fff 的线性模型):对于小的 ∣ ∣ h ∣ ∣ ||\pmb{h}|| ∣∣hhh∣∣,根据泰勒展开(3.2)可以得到
f ( x + h ) ≈ l ( h ) = f ( x ) + J ( x ) h (3.7 a) \pmb{f}(\pmb{x}+\pmb{h}) \approx \pmb{l} (\pmb{h}) = \pmb{f}\pmb{(x}) + \pmb{J}(\pmb{x})\pmb{h} \tag{3.7 a} fff(xxx+hhh)≈lll(hhh)=fff(x(x(x)+JJJ(xxx)hhh(3.7 a)
将其代入到
F
F
F 的定义(3.1)中,我们可以得到
F
(
x
+
h
)
≈
L
(
h
)
=
1
2
l
(
h
)
T
l
(
h
)
=
1
2
f
T
f
+
h
T
J
T
f
+
1
2
h
T
J
T
J
h
=
F
(
x
)
+
h
T
J
T
f
+
1
2
h
T
J
T
J
h
(3.7 b)
F(\pmb{x}+\pmb{h}) \approx L(\pmb{h}) = \frac{1}{2} \pmb{l}(\pmb{h})^T\pmb{l}(\pmb{h}) \\ =\frac{1}{2}\pmb{f}^T\pmb{f} + \pmb{h}^T\pmb{J}^T\pmb{f} + \frac{1}{2}\pmb{h}^T\pmb{J}^T\pmb{J}\pmb{h} \\ = F(\pmb{x}) +\pmb{ h}^T\pmb{J}^T\pmb{f} + \frac{1}{2}\pmb{h}^T\pmb{J}^T\pmb{J}\pmb{h} \tag{3.7 b}
F(xxx+hhh)≈L(hhh)=21lll(hhh)Tlll(hhh)=21fffTfff+hhhTJJJTfff+21hhhTJJJTJJJhhh=F(xxx)+hhhTJJJTfff+21hhhTJJJTJJJhhh(3.7 b)
(其中
f
=
f
(
x
)
\pmb{f}=\pmb{f}(\pmb{x})
fff=fff(xxx) 和
J
=
J
(
x
)
\pmb{J}=\pmb{J}(\pmb{x})
JJJ=JJJ(xxx))。高斯-牛顿步长
h
g
n
\pmb{h}_{gn}
hhhgn 使 $ L(\pmb{h})$ 最小化,
h
g
n
=
a
r
g
m
i
n
h
{
L
(
h
)
}
\pmb{h}_{gn} = argmin_{\pmb{h}} \{L(\pmb{h})\}
hhhgn=argminhhh{L(hhh)}
很容易看出,
L
L
L 的梯度和海塞矩阵为
L
˙
(
h
)
=
J
T
f
+
J
T
J
h
,
L
¨
(
h
)
=
J
T
J
(3.8)
\dot{\pmb{L}}(\pmb{h}) = \pmb{J}^T\pmb{f} + \pmb{J}^T\pmb{J}\pmb{h}, \quad \ddot{\pmb{L}}(\pmb{h}) = \pmb{J}^T\pmb{J} \tag{3.8}
LLL˙(hhh)=JJJTfff+JJJTJJJhhh,LLL¨(hhh)=JJJTJJJ(3.8)
与(3.4a)的比较表明,
L
˙
(
0
)
=
F
˙
(
x
)
\dot{\pmb{L}}(\pmb{0}) = \dot{\pmb{F}}(\pmb{x})
LLL˙(000)=FFF˙(xxx)。此外,我们还可以看到矩阵
L
¨
(
h
)
\ddot{\pmb{L}}(\pmb{h})
LLL¨(hhh) 与
h
h
h 无关。它是对称的,如果
J
\pmb{J}
JJJ 是满秩的,即如果
J
\pmb{J}
JJJ 的列是线性独立的,那么
L
¨
(
h
)
\ddot{\pmb{L}}(\pmb{h})
LLL¨(hhh) 也是正定的,参见附录A。这意味着
L
(
h
)
L(\pmb{h})
L(hhh) 有一个唯一的最小值,这可以通过求解下列方程找到
(
J
T
J
)
h
g
n
=
−
J
T
f
(3.9)
(\pmb{J}^T\pmb{J})\pmb{h}_{gn}=-\pmb{J}^T\pmb{f} \tag{3.9}
(JJJTJJJ)hhhgn=−JJJTfff(3.9)
这是
F
F
F 的一个下降方向,由于
h
g
n
T
F
˙
(
x
)
=
h
g
n
T
(
J
T
f
)
=
−
h
g
n
T
(
J
T
J
)
h
g
n
<
0
(3.10)
\pmb{h}_{gn}^T \dot{\pmb{F}}(\pmb{x}) = \pmb{h}_{gn}^T(\pmb{J}^T\pmb{f})= -\pmb{h}_{gn}^T(\pmb{J}^TJ)\pmb{h}_{gn} < 0 \tag{3.10}
hhhgnTFFF˙(xxx)=hhhgnT(JJJTfff)=−hhhgnT(JJJTJ)hhhgn<0(3.10)
因此,我们可以在算法 2.4 中使用
h
g
n
\pmb{h}_{gn}
hhhgn 来表示
h
d
\pmb{h}_d
hhhd。典型的步骤是
S
o
l
v
e
(
J
T
J
)
h
g
n
=
−
J
T
f
x
:
=
x
+
α
h
g
n
(3.11)
Solve \quad (\pmb{J}^TJ)\pmb{h}_{gn} = -\pmb{J}^T\pmb{f} \\ \pmb{x}:=\pmb{x}+\alpha \pmb{h}_{gn} \tag{3.11}
Solve(JJJTJ)hhhgn=−JJJTfffxxx:=xxx+αhhhgn(3.11)
其中, α \alpha α 是通过线搜索找到的。经典的高斯-牛顿方法在所有步骤中都使用了 α = 1 \alpha = 1 α=1。可以证明使用线搜索的方法可以保证收敛性,前提是
- a. { x ∣ F ( x ) ≤ F ( x 0 ) } \{\pmb{x} \, | \, F(\pmb{x}) \leq F(\pmb{x}_0)\} {xxx∣F(xxx)≤F(xxx0)} 是有界的,并且
- b. 雅各比矩阵 J ( x ) \pmb{J}(\pmb{x}) JJJ(xxx) 在所有步骤中都是满秩的。
在第 2 章中,我们看到牛顿优化方法具有二次收敛性。 高斯-牛顿法通常不是这样。
为了说明这一点,我们比较了两种方法中使用的搜索方向,
F
¨
(
x
)
h
n
=
−
F
˙
(
x
)
a
n
d
L
¨
(
h
)
h
g
n
=
−
L
˙
(
0
)
\ddot{\pmb{F}}(\pmb{x})\pmb{h}_n = -\dot{\pmb{F}}(\pmb{x}) \quad and \quad \ddot{\pmb{L}}(\pmb{h}) \pmb{h}_{gn} = -\dot{\pmb{L}}(\pmb{0})
FFF¨(xxx)hhhn=−FFF˙(xxx)andLLL¨(hhh)hhhgn=−LLL˙(000)
我们已经在 (3.8) 处指出,两个公式的右侧是相同的,但是从(3.4b)和(3.8)中我们看到左边的系数矩阵是不同的:
F
¨
(
x
)
=
L
¨
(
h
)
+
∑
i
=
1
m
f
i
(
x
)
f
¨
i
(
x
)
(3.12)
\ddot{\pmb{F}}(\pmb{x}) = \ddot{\pmb{L}}(\pmb{h}) + \sum_{i=1}^{m}{f_i(x) \ddot{\pmb{f}}_i(\pmb{x})} \tag{3.12}
FFF¨(xxx)=LLL¨(hhh)+i=1∑mfi(x)fff¨i(xxx)(3.12)
因此,如果 f ( x ∗ ) = 0 f(\pmb{x}^∗) = \pmb{0} f(xxx∗)=000,那么当 x \pmb{x} xxx 接近 x ∗ \pmb{x}^* xxx∗ 时 L ¨ ( h ) ≈ F ¨ ( x ) \ddot{\pmb{L}}(\pmb{h}) \approx \ddot{\pmb{F}}(\pmb{x}) LLL¨(hhh)≈FFF¨(xxx),高斯-牛顿方法也具有二次收敛性。如果函数 { f i } \{f_i\} {fi} 具有小曲率或 ∣ f i ( x ∗ ) ∣ |f_i(\pmb{x}^*)| ∣fi(xxx∗)∣ 很小,我们可以期待超线性收敛,但通常我们认为高斯-牛顿法具有线性收敛性能。值得注意的是,$F(\pmb{x}^*) $ 的值控制了收敛速度。
示例 3.3.
考虑
n
=
1
,
m
=
2
n = 1, m = 2
n=1,m=2时的简单问题
f
(
x
)
=
[
x
+
1
λ
x
2
+
x
−
1
]
.
F
(
x
)
=
1
2
(
x
+
1
)
2
+
1
2
(
λ
x
2
+
x
−
1
)
2
f(x) = \begin{bmatrix} x+1 \\ \lambda x^2 +x - 1 \end{bmatrix}. \quad F(x)=\frac{1}{2}(x+1)^2 + \frac{1}{2}(\lambda x^2 +x -1)^2
f(x)=[x+1λx2+x−1].F(x)=21(x+1)2+21(λx2+x−1)2
它遵循
F
˙
(
x
)
=
2
λ
2
x
3
+
3
λ
x
2
−
2
(
λ
−
1
)
x
\dot{F}(x) = 2 \lambda^2 x^3 + 3 \lambda x^2 - 2(\lambda -1)x
F˙(x)=2λ2x3+3λx2−2(λ−1)x
所以
x
=
0
x = 0
x=0 是
F
F
F 的驻点。现在,
F
¨
(
x
)
=
6
λ
2
x
2
+
6
λ
x
−
2
(
λ
−
1
)
\ddot{F}(x) = 6\lambda^2 x^2 + 6\lambda x - 2(\lambda - 1)
F¨(x)=6λ2x2+6λx−2(λ−1)
这表明如果 λ < 1 \lambda < 1 λ<1,则 F ¨ ( x ) > 0 \ddot{\pmb{F}}(x) > 0 FFF¨(x)>0,因此 x = 0 x = 0 x=0 是局部最小值—实际上,它也是全局最小值。
雅各比矩阵为
J
(
x
)
=
[
1
2
λ
x
+
1
]
\pmb{J}(x) = \begin{bmatrix} 1 \\ 2 \lambda x + 1\end{bmatrix}
JJJ(x)=[12λx+1]
并且从
x
k
x_k
xk 出发的经典高斯-牛顿方法给出
x
k
+
1
=
x
k
−
2
λ
2
x
k
3
+
3
λ
x
k
2
−
2
(
λ
−
1
)
x
k
2
+
4
λ
x
k
+
4
λ
2
x
k
2
x_{k+1} = x_k - \frac{2 \lambda ^2 x_k^3 + 3 \lambda x_k^2 - 2(\lambda - 1)x_k}{2+4 \lambda x_k +4 \lambda ^2 x_k^2}
xk+1=xk−2+4λxk+4λ2xk22λ2xk3+3λxk2−2(λ−1)xk
现在,如果
λ
≠
0
\lambda \neq 0
λ=0 并且
x
k
x_k
xk 接近于零,则
x
k
+
1
=
x
k
+
(
λ
−
1
)
x
k
+
O
(
x
k
2
)
=
λ
x
k
+
O
(
x
k
2
)
x_{k+1} = x_k + (\lambda-1)x_k + \mathit{O}(x_k^2) = \lambda x_k + \mathit{O}(x_k^2)
xk+1=xk+(λ−1)xk+O(xk2)=λxk+O(xk2)
因此,如果 ∣ λ ∣ < 1 |\lambda| < 1 ∣λ∣<1,我们具有线性收敛性能。如果 λ < − 1 \lambda < -1 λ<−1,则经典高斯-牛顿法无法找到最小值。例如,当 λ = − 2 \lambda = -2 λ=−2 和 x 0 = 0.1 x_0 = 0.1 x0=0.1 时,我们得到看似混乱的迭代行为,
最后,如果
λ
=
0
\lambda = 0
λ=0,那么
x
k
+
1
=
x
k
−
x
k
=
0
x_{k+1} = x_k - x_k = 0
xk+1=xk−xk=0
即我们一步就找到了解。原因是在这种情况下 f f f 是线性函数。
示例 3.4.
对于示例 1.1 中的数据拟合问题,雅各比矩阵的第
i
i
i 行是
J
(
x
)
i
,
:
=
[
−
x
3
t
i
e
x
1
t
i
−
x
4
t
i
e
x
2
t
i
−
e
x
1
t
i
−
e
x
2
t
i
]
\pmb{J}(\pmb{x})_{i,:}=\begin{bmatrix} -x_3 t_i e^{x_1 t_i} & -x_4 t_i e^{x_2 t _i} & -e^{x_1 t_i} & -e^{x_2 t_i}\end{bmatrix}
JJJ(xxx)i,:=[−x3tiex1ti−x4tiex2ti−ex1ti−ex2ti]
如果问题是一致的(即 f ( x ∗ ) = 0 \pmb{f}(\pmb{x}^∗) = 0 fff(xxx∗)=0),且 x 1 ∗ x_1^* x1∗ 与 x 2 ∗ x_2^* x2∗ 显著不同,那么使用线搜索的高斯-牛顿法将具有二次最终收敛性能。如果 x 1 ∗ = x 2 ∗ x_1^* = x_2^* x1∗=x2∗,则 r a n k ( J ( x ∗ ) ) ≤ 2 rank(\pmb{J}(\pmb{x}^*)) \leq 2 rank(JJJ(xxx∗))≤2,高斯-牛顿法失效。
如果一个或多个测量误差较大,则 f ( x ∗ ) \pmb{f}(\pmb{x}^*) fff(xxx∗) 有一些较大的分量,这可能会减慢收敛速度。
在 MATLAB 中,我们可以给出一个非常紧凑的函数来计算 f \pmb{f} fff 和 J \pmb{J} JJJ:假设 x \pmb{x} xxx 保存当前迭代结果,并且 m × 2 m\times2 m×2 的数组 t y ty ty 保存数据点的坐标。以下函数返回包含 f ( x ) \pmb{f}(\pmb{x}) fff(xxx) 和 J ( x ) \pmb{J}(\pmb{x}) JJJ(xxx) 的 f f f 和 J J J。
示例 3.5.
考虑示例 3.2 中的问题,
f
(
x
∗
)
=
0
\pmb{f}(\pmb{x}^∗) = 0
fff(xxx∗)=0 且
f
:
R
n
→
R
n
f:\mathbb{R}^n \to \mathbb{R}^n
f:Rn→Rn。如果我们使用牛顿-拉夫森方法来解决这个问题,典型的迭代步骤是
S
o
l
v
e
J
(
x
)
h
n
r
=
−
f
(
x
)
;
x
:
=
x
+
h
n
r
Solve \quad \pmb{J}(\pmb{x})\pmb{h}_{nr} = -\pmb{f}(\pmb{x}); \quad \pmb{x}:= \pmb{x}+\pmb{h}_{nr}
SolveJJJ(xxx)hhhnr=−fff(xxx);xxx:=xxx+hhhnr
应用于最小化
F
(
x
)
=
1
2
f
(
x
)
T
f
(
x
)
F(x) = \frac{1}{2}\pmb{f}(\pmb{x})^T\pmb{f}(\pmb{x})
F(x)=21fff(xxx)Tfff(xxx) 的高斯-牛顿方法具有以下的典型步骤
S
o
l
v
e
(
J
(
x
)
T
J
(
x
)
)
h
g
n
=
−
J
(
x
)
T
f
(
x
)
;
x
:
=
x
+
h
g
n
Solve \quad (\pmb{J}(\pmb{x})^T \pmb{J}(\pmb{x})) \pmb{h}_{gn}= -\pmb{J}(\pmb{x})^T \pmb{f}(\pmb{x}); \quad \pmb{x}:= \pmb{x}+\pmb{h}_{gn}
Solve(JJJ(xxx)TJJJ(xxx))hhhgn=−JJJ(xxx)Tfff(xxx);xxx:=xxx+hhhgn
注意, J ( x ) \pmb{J}(\pmb{x}) JJJ(xxx) 是一个方阵,我们假设它是非奇异的。则 ( J ( x ) T ) − 1 (\pmb{J}(\pmb{x})^T)^{-1} (JJJ(xxx)T)−1 存在,因此 h g n = h n r \pmb{h}_{gn}=\pmb{h}_{nr} hhhgn=hhhnr。因此,当应用于例 3.2 中的 Powell 问题时,高斯-牛顿法将有与该示例中讨论的牛顿-拉夫森方法方法相同的问题。
这些例子表明,高斯-牛顿法可能会失败,无论是有还是没有线搜索。尽管如此,在许多应用程序中,它提供了相当不错的
性能,尽管它通常只具有线性收敛性能,而不是实现了二阶导数的牛顿法的二次收敛性能。
在第 3.2 节和第 3.3 节中,我们给出了两种具有优越全局性能的方法,在第 3.4 节中,我们对第一种方法进行了修改,以实现超线性最终收敛性能。
3.2. 列文伯格-马尔夸特方法
Levenberg (1944) 和后来的 Marquardt (1963) 建议使用阻尼高斯-牛顿方法,参见第 2.4 节。步长
h
l
m
\pmb{h}_{lm}
hhhlm 由对(3.9)的以下修改确定,
(
J
T
J
+
μ
I
)
h
l
m
=
−
g
w
i
t
h
g
=
J
T
f
a
n
d
μ
≥
0
(3.13)
(\pmb{J}^T\pmb{J} + \mu \pmb{I})\pmb{h}_{lm} = -\pmb{g} \quad with \quad \pmb{g}=\pmb{J}^T\pmb{f} \, and \, \mu \geq 0 \tag{3.13}
(JJJTJJJ+μIII)hhhlm=−gggwithggg=JJJTfffandμ≥0(3.13)
这里, J = J ( x ) \pmb{J} = \pmb{J}(\pmb{x}) JJJ=JJJ(xxx) 和 f = f ( x ) \pmb{f} = \pmb{f}(\pmb{x}) fff=fff(xxx)。阻尼参数 μ \mu μ 有以下几个影响:
- a) 对于所有的 μ > 0 \mu> 0 μ>0,系数矩阵是正定的,这确保 h l m \pmb{h}_{lm} hhhlm 是下降方向,参见 (3.10)。
- b) 对于较大的
μ
\mu
μ 值,我们得到
h l m ≈ − 1 μ g = − 1 μ F ˙ ( x ) \pmb{h}_{lm} \approx - \frac{1}{\mu} \pmb{g} = - \frac{1}{\mu} \dot{\pmb{F}}(\pmb{x}) hhhlm≈−μ1ggg=−μ1FFF˙(xxx)
即在最陡下降方向上的一小步。如果当前的迭代远离最优解,这很好。 - c) 如果 μ \mu μ 非常小,则 h l m ≈ h g n \pmb{h}_{lm} \approx \pmb{h}_{gn} hhhlm≈hhhgn。当 x x x 接近 x ∗ x^∗ x∗ 时,这是迭代最后阶段的一个很好的步长。如果 F ( x ∗ ) = 0 F(\pmb{x}^*)=0 F(xxx∗)=0(或非常小),那么我们可以(几乎)得到二次最终收敛性能。
因此,阻尼参数会影响步长的方向和大小,这导致我们制定了一种不需要特定线搜索的方法。初始
μ
\mu
μ 值的选择应与
A
0
=
J
(
x
0
)
T
J
(
x
0
)
\pmb{A}_0 = \pmb{J}(\pmb{x}_0)^T\pmb{J}(\pmb{x}_0)
AAA0=JJJ(xxx0)TJJJ(xxx0) 中元素的大小有关,例如让
μ
0
=
τ
⋅
m
a
x
i
{
a
i
i
(
0
)
}
(3.14)
\mu_0 = \tau \cdot max_i \{a_{ii}^{(0)}\} \tag{3.14}
μ0=τ⋅maxi{aii(0)}(3.14)
其中 τ \tau τ 由用户选择。
该算法对 τ \tau τ 的选择不是很敏感,但根据经验,应该使用一个小的值,例如,如果 x 0 x_0 x0 被认为是 x ∗ x^∗ x∗ 的良好近似值,则 τ = 1 0 − 6 \tau = 10^{−6} τ=10−6。否则,使用 τ = 1 0 − 3 \tau = 10^{-3} τ=10−3 甚至 τ = 1 \tau= 1 τ=1。
在迭代期间,可以更新
μ
\mu
μ 的大小,如第 2.4 节所述。更新由增益比率所控制
℘
=
F
(
x
)
−
F
(
x
+
h
l
m
)
L
(
0
)
−
L
(
h
l
m
)
\wp = \frac{ F(\pmb{x}) - F(\pmb{x}+\pmb{h}_{lm})}{ L(\pmb{0}) - L( \pmb{h}_{lm} ) }
℘=L(000)−L(hhhlm)F(xxx)−F(xxx+hhhlm)
其中分母是线性模型(3.7b)预测的增益,
L
(
0
)
−
L
(
h
l
m
)
=
−
h
l
m
T
J
T
f
−
1
2
h
l
m
T
J
T
J
h
l
m
=
−
1
2
h
l
m
T
(
2
g
+
(
J
T
J
+
μ
I
−
μ
I
)
h
l
m
)
=
1
2
h
l
m
T
(
μ
h
l
m
−
g
)
L(\pmb{0}) - L(\pmb{h}_{lm}) = -\pmb{h}_{lm}^T\pmb{J}^T\pmb{f} - \frac{1}{2} \pmb{h}_{lm}^T \pmb{J}^T \pmb{J} \pmb{h}_{lm} \\ = - \frac{1}{2}\pmb{h}_{lm}^T(2\pmb{g} + (\pmb{J}^T\pmb{J} + \mu \pmb{I} - \mu \pmb{I})\pmb{h}_{lm}) \\ = \frac{1}{2}\pmb{h}_{lm}^T(\mu \pmb{h}_{lm} - \pmb{g})
L(000)−L(hhhlm)=−hhhlmTJJJTfff−21hhhlmTJJJTJJJhhhlm=−21hhhlmT(2ggg+(JJJTJJJ+μIII−μIII)hhhlm)=21hhhlmT(μhhhlm−ggg)
注意到 h l m T h l m \pmb{h}_{lm}^T\pmb{h}_{lm} hhhlmThhhlm 和 − h l m T g -\pmb{h}_{lm}^T\pmb{g} −hhhlmTggg 都是正的,所以 L ( 0 ) − L ( h l m ) L(\pmb{0})-L(\pmb{h}_{lm}) L(000)−L(hhhlm) 保证是正的。
较大的 ℘ \wp ℘ 值表明 L ( h l m ) L(\pmb{h}_{lm}) L(hhhlm) 是 F ( x + h l m ) F(\pmb{x}+\pmb{h}_{lm}) F(xxx+hhhlm) 的一个很好的近似值,我们可以减小 μ \mu μ,这样下一个列文伯格-马尔夸特步长更接近高斯-牛顿步长。如果 ℘ \wp ℘ 很小(甚至可能是负数),那么 L ( h l m ) L(\pmb{h}_{lm}) L(hhhlm) 是一个很差的近似值,我们应该增加 μ \mu μ 以达到更接近最陡下降方向和减少步长的双重目标。可以通过不同的方式实现这些目标,请参见第 2.4 节和下面的示例 3.7。
算法的停止标准应该反映在全局最小值我们有
F
˙
(
x
∗
)
=
g
(
x
∗
)
=
0
\dot{\pmb{F}}(\pmb{x}^∗) = \pmb{g}(\pmb{x}^∗) = 0
FFF˙(xxx∗)=ggg(xxx∗)=0,所以我们可以使用
∣
∣
g
∣
∣
∞
≤
ϵ
1
(3.15 a)
||\pmb{g}||_{\infty} \leq \epsilon_1 \tag{3.15 a}
∣∣ggg∣∣∞≤ϵ1(3.15 a)
其中
ϵ
1
\epsilon_1
ϵ1 是一个小的正数,由用户选择。另一个相关标准是:如果
x
\pmb{x}
xxx 的变化很小,则停止,
∣
∣
x
n
e
w
−
x
∣
∣
≤
ϵ
2
(
∣
∣
x
∣
∣
+
ϵ
2
)
(3.15 b)
||\pmb{x}_{new} - \pmb{x}|| \leq \epsilon_2(||\pmb{x}|| + \epsilon_2) \tag{3.15 b}
∣∣xxxnew−xxx∣∣≤ϵ2(∣∣xxx∣∣+ϵ2)(3.15 b)
这个表达式给出了从
∣
∣
x
∣
∣
||\pmb{x}||
∣∣xxx∣∣ 大时的相对步长
ϵ
2
\epsilon_2
ϵ2 到
x
\pmb{x}
xxx 接近
0
\pmb{0}
000 时的绝对步长
ϵ
2
2
\epsilon_2^2
ϵ22 的渐进变化。最后,在所有迭代过程中,我们需要防止无限循环,
k
≥
k
m
a
x
(3.15 c)
k \geq k_{max} \tag{3.15 c}
k≥kmax(3.15 c)
ϵ 2 \epsilon_2 ϵ2 和 k m a x k_{max} kmax 也是由用户选择的。
例如,如果 ϵ 1 \epsilon_1 ϵ1 选择得如此之小以至于舍入误差对 ∣ ∣ g ∣ ∣ ∞ ||\pmb{g}||_\infty ∣∣ggg∣∣∞ 有很大影响时最后两个标准生效。这通常表明 F F F 中的实际增益与线性模型 (3.7b) 预测的增益之间的一致性不佳,并且会导致 μ \mu μ 在每一步中都增加。增加 μ \mu μ 的策略(2.21)意味着在这种情况下 μ \mu μ 增长很快,导致 ∣ ∣ h l m ∣ ∣ ||\pmb{h}_{lm}|| ∣∣hhhlm∣∣ 较小,并且这个过程将由(3.15b)停止。
该算法总结如下。
示例 3.6.
通过比较(3.9)和正规方程(3.5)我们看到
h
g
n
\pmb{h}_{gn}
hhhgn 只是如下线性问题的最小二乘解
f
(
x
)
+
J
(
x
)
h
≈
0
\pmb{f}(\pmb{x}) + \pmb{J}(\pmb{x})\pmb{h} \approx 0
fff(xxx)+JJJ(xxx)hhh≈0
类似地,L-M 方程(3.13)是如下线性问题的正规方程
[
f
(
x
)
0
]
+
[
J
(
x
)
μ
I
]
h
≈
0
\begin{bmatrix} \pmb{f}(\pmb{x}) \\ \pmb{0} \end{bmatrix} + \begin{bmatrix} \pmb{J}(\pmb{x}) \\ \sqrt{\mu} \pmb{I} \end{bmatrix}\pmb{h} \approx 0
[fff(xxx)000]+[JJJ(xxx)μIII]hhh≈0
如例 3.1 所述,最准确的解是通过正交变换找到的。但是, h l m \pmb{h}_{lm} hhhlm 的解只是一个迭代过程中的一个步骤,不需要很精确地计算,而且由于通过正规方程获得的解“更便宜”,所以通常采用这种方法。
示例 3.7.
我们在示例 1.1 和 3.4 中的数据拟合问题上使用了算法 3.16。图 1.1 表明 x 1 x_1 x1 和 x 2 x_2 x2 都是负数,并且 M ( x ∗ , 0 ) ≈ 0 M(\pmb{x}^∗, 0) \approx 0 M(xxx∗,0)≈0。 这些条件由 x 0 = [ − 1 , − 2 , 1 , − 1 ] T x_0 = [-1, -2, 1, -1]^T x0=[−1,−2,1,−1]T 满足。此外,我们在表达式(3.14)中使用 $\tau = 10^{−3} $ 计算 μ 0 \mu_0 μ0 并且在(3.15)给出的停止迭代标准中使用 ϵ 1 = ϵ 2 = 1 0 − 8 , k m a x = 200 \epsilon_1 = \epsilon_2 = 10^{-8}, k_{max}=200 ϵ1=ϵ2=10−8,kmax=200。
该算法在
x
≈
[
−
4
,
−
5
,
4
,
−
4
]
T
x \approx [-4, -5, 4, -4]^T
x≈[−4,−5,4,−4]T对应的第62次迭代步骤后停止。性能如下图所示;注意这里纵轴是对数纵坐标轴
这个问题并不一致,所以我们可以期待线性最终收敛性能。最后 7 个迭代步骤表明收敛性更好(超线性)。解释是, f ¨ i ( x ) \ddot{f}_i(\pmb{x}) f¨i(xxx) 是 t i t_i ti 的缓变函数,而 $f_i(\pmb{x}^*) $ 具有“随机”的符号,因此对 (3.12) 中“遗忘项”的贡献几乎被抵消。这种情况在很多数据拟合应用中都会出现。
为了比较,图 3.2b 显示了使用更新策略(2.20)的性能。从第 5 步到第 68 步,我们看到
μ
\mu
μ 在每次减小之后都会立即增加,并且梯度的范数具有崎岖不平的行为。这会减慢收敛速度,但最后阶段与图 3.2a 所示一致。
示例 3.8.
图 3.3 说明了算法 3.16 应用于示例 3.2 和 3.5 中的 Powell 问题的性能。起点是 x 0 = [ 3 , 1 ] T \pmb{x}_0 =[3, 1 ]^T xxx0=[3,1]T, μ 0 \mu_0 μ0 由 (3.14) 中令 τ = 1 \tau = 1 τ=1 给出,并且我们在停止标准(3.15)中使用 ϵ 1 = ϵ 2 = 1 0 − 15 , k m a x = 100 \epsilon_1 = \epsilon_2 = 10^{−15}, k_{max}= 100 ϵ1=ϵ2=10−15,kmax=100。
迭代似乎在步骤 22 和 30 之间停止。这是(几乎)奇异雅各比矩阵的影响。之后似乎具有线性收敛性能。迭代在点 x = [ − 3.82 e − 08 , − 1.38 e − 03 ] T \pmb{x} = [ -3.82e-08, -1.38e-03 ]^T xxx=[−3.82e−08,−1.38e−03]T 处由“保护措施”停止。这比我们在示例 3.2 中找到的更接近 x ∗ = 0 \pmb{x}^∗ = 0 xxx∗=0,但我们希望能够做得更好;见示例 3.10 和 3.17。