METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS 翻译(三)

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:RnRmwithmn。我们想要最小化 ∣ ∣ 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=1m(fi(xxx))2=21f(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(hhh2)(3.2 a)

其中 J ∈ R m × n \pmb{J} \in \mathbb{R}^{m \times n} JJJRm×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=xjfi(xxx)(3.2 b)

对于 F : R n → R F:\mathbb{R}^n \to \mathbb{R} F:RnR,从(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} xjF(x)=i=1mfi(x)xjfi(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) (jk) 的元素是
∂ 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}) )} xjxk2F=i=1m(xjfi(xxx)xkfi(xxx)+fi(xxx)xjxk2fi(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=1mfi(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)=bbbAAAxxx

其中向量 b ∈ R m \pmb{b} \in \mathbb{R}^m bbbRm 和矩阵 A ∈ R m × n \pmb{A} \in \mathbb{R}^{m \times n} AAARm×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(bbbAAAxxx)
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} AAAxxxbbb

或者我们可以通过正交变换来求解它:找到一个正交矩阵 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} RRRRn×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 Ab 返回通过正交变换计算出的最小二乘解。

正如标题所暗示的那样,我们假设 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:RnRn

我们可以使用牛顿-拉夫森的方法:从最初的猜测 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(hhh2)

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=xxxkxxx 很小,则 ∣ ∣ x k + 1 − x ∗ ∣ ∣ = O ( d k 2 ) ||\pmb{x}_{k+1}-\pmb{x}^*||=\mathit{O}(d_k^2) xxxk+1xxx=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)=21f(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)\} {xxxF(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=1mfi(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+x1].F(x)=21(x+1)2+21(λx2+x1)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λx22(λ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λx2(λ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=xk2+4λxk+4λ2xk22λ2xk3+3λxk22(λ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=xkxk=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,:=[x3tiex1tix4tiex2tiex1tiex2ti]

如果问题是一致的(即 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:RnRn。如果我们使用牛顿-拉夫森方法来解决这个问题,典型的迭代步骤是
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} hhhlmhhhgn。当 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} τ=106。否则,使用 τ = 1 0 − 3 \tau = 10^{-3} τ=103 甚至 τ = 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)=hhhlmTJJJTfff21hhhlmTJJJTJJJhhhlm=21hhhlmT(2ggg+(JJJTJJJ+μIIIμIII)hhhlm)=21hhhlmT(μhhhlmggg)

注意到 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} xxxnewxxxϵ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} kkmax(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)hhh0

类似地,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]hhh0

如例 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=108,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=1015,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.82e08,1.38e03]T 处由“保护措施”停止。这比我们在示例 3.2 中找到的更接近 x ∗ = 0 \pmb{x}^∗ = 0 xxx=0,但我们希望能够做得更好;见示例 3.10 和 3.17。

Levenberg-Marquardt-Fletcher算法是一种用于非线性最小二乘问题的迭代优化算法。该算法通过在每次迭代中结合高斯牛顿法和梯度下降法的优点,来求解非线性最小二乘问题。 该算法的基本思想是通过不断调整模型参数来提高目标函数的拟合度。在每一轮迭代中,算法根据当前参数估计计算目标函数的梯度矩阵和雅可比矩阵,然后使用这些矩阵来更新参数估计。更新参数的过程是通过调整一个称为 "衰减因子" 的参数,来平衡高斯牛顿法和梯度下降法对参数的调整力度。 具体地说,算法从初始参数值开始,计算目标函数的误差平方和和梯度矩阵。然后,根据衰减因子的大小来判断是使用高斯牛顿法还是梯度下降法。如果衰减因子较大,则使用梯度下降法进行参数调整;如果衰减因子较小,则使用高斯牛顿法进行参数调整。通过不断迭代调整参数,算法逐渐收敛到最优解。 Levenberg-Marquardt-Fletcher算法具有全局收敛、快速收敛速度和较好的数值稳定等优点。它在解决非线性最小二乘问题中广泛应用,比如曲线拟合、参数估计等领域。但是,该算法对初始参数的选择敏感,需要借助先验知识或试验来确定初始参数。 总之,Levenberg-Marquardt-Fletcher算法是一种强大的迭代优化算法,可以用于解决非线性最小二乘问题,通过不断调整模型参数来提高目标函数的拟合度和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值