非线性最小二乘问题的求解方法(二)


在上一篇文章中已经介绍了非线性最小二乘问题的常规解法,对牛顿法、梯度法、线性搜索等进行了梳理,接下来将会介绍一些常用的非线性最小二乘问题的求解方法,它们在很多情形下能够有更好的表现。

3.非线性最小二乘问题的求解方法

这里仍再次给出非线性最小二乘问题:对于给定的函数 f : R n → R m f:R^n\rightarrow R^m f:RnRm,求解使得 ∣ ∣ f ( x ) ∣ ∣ ||f(x)|| f(x)取得最小值时的 x x x值,其中 m > = n m>=n m>=n。这个问题等价于求解:

x ∗ = a r g m i n x x^*=argmin_x x=argminx{ F ( x ) F(x) F(x)}
其中 F ( x ) = 1 2 ∑ i = 1 m f i ( x ) 2 = 1 2 ∑ i = 1 m ∣ ∣ f i ( x ) ∣ ∣ 2 = 1 2 f ( x ) T f ( x ) F(x)=\frac {1}{2}\sum_{i=1}^{m}{f_i(x)^{2}}=\frac {1}{2}\sum_{i=1}^{m}{||f_i(x)||^{2}}=\frac {1}{2}f(x)^Tf(x) F(x)=21i=1mfi(x)2=21i=1mfi(x)2=21f(x)Tf(x)

假设 f ( x ) f(x) f(x)存在二阶连续偏导数,那么根据泰勒展开式,有:

f ( x + h ) = f ( x ) + J ( x ) + O ( ∣ ∣ h ∣ ∣ ) 2 f(x+h)=f(x)+J(x)+O(||h||)^2 f(x+h)=f(x)+J(x)+O(h)2,其中矩阵 J ∈ R m × n J\in R^{m\times n} JRm×n为雅可比矩阵,由 f ( x ) f(x) f(x)的一阶偏导数组成, ( J ( x ) ) i j = ∂ f i ∂ x j ( x ) (J(x))_{ij}=\frac {\partial f_i}{\partial x_j}(x) (J(x))ij=xjfi(x)

对于函数 F : R n → R F:R^n\rightarrow R F:RnR,根据 F ( x ) = 1 2 f ( x ) T f ( x ) F(x)=\frac {1}{2}f(x)^Tf(x) F(x)=21f(x)Tf(x),有 ∂ F ∂ x j ( x ) = ∑ i = 1 m f i ( x ) ∂ f i ∂ x j ( x ) \frac {\partial F}{\partial x_j}(x)=\sum_{i=1}^{m}{f_i(x)\frac {\partial f_i}{\partial x_j}(x)} xjF(x)=i=1mfi(x)xjfi(x),因此

F ′ ( x ) = J ( x ) T f ( x ) F'(x)=J(x)^Tf(x) F(x)=J(x)Tf(x)

这里需要先计算函数 F F F的海塞矩阵,该矩阵的 ( j , k ) (j,k) (j,k)位置的元素为

∂ 2 F ∂ x j ∂ x k ( x ) = ∑ 1 m ( ∂ f i ∂ x j ( x ) ∂ f i ∂ x k ( x ) + ∂ 2 f i ( x ) ∂ x j ∂ x k ( x ) ) \frac {\partial ^2F}{\partial x_j\partial x_k}(x)=\sum_{1}^{m}{(\frac {\partial f_i}{\partial x_j}(x)\frac {\partial f_i}{\partial x_k}(x)+\frac {\partial ^2f_i(x)}{\partial x_j\partial x_k}(x))} xjxk2F(x)=1m(xjfi(x)xkfi(x)+xjxk2fi(x)(x))

因此 F ′ ′ ( x ) = J ( x ) T J ( x ) + ∑ 1 m f i ( x ) f i ′ ′ ( x ) F''(x)=J(x)^TJ(x)+\sum_{1}^{m}{f_i(x)f''_i(x)} F(x)=J(x)TJ(x)+1mfi(x)fi(x)
对于线性最小二乘问题 f ( x ) = b − A x f(x)=b-Ax f(x)=bAx,容易求得 F ′ ( x ) = − A T ( b − A x ) F'(x)=-A^T(b-Ax) F(x)=AT(bAx),求解一阶导数为零时的解 x ∗ x^* x即为所求的解,这种方法称之为normal equations

( A T A ) x ∗ = A T b (A^TA)x^*=A^Tb (ATA)x=ATb

上述问题可简化为 A x ∗ ≈ b Ax^*\approx b Axb,通过求解正交矩阵 Q Q Q使得 Q T A = [ R 0 ] Q^TA= \big [\begin{matrix}{R}\\{0} \end{matrix}\big ] QTA=[R0],然后回代法求解 R x ∗ = ( Q T b ) 1 : n Rx^*=(Q^Tb)_{1:n} Rx=(QTb)1:n得到 x ∗ x^* x,其中 R ∈ R n × n R\in R^{n\times n} RRn×n为上三角矩阵。这种方法称为正交变换法。

3.1 Gauss-Newton方法

Gauss-Newton法在 x x x的邻域内对函数 f f f进行线性逼近:当 ∣ ∣ h ∣ ∣ ||h|| h足够小时,根据泰勒展开式,有:

f ( x + h ) ≈ l ( h ) ≡ f ( x ) + J ( x ) h f(x+h)\approx l(h)\equiv f(x)+J(x)h f(x+h)l(h)f(x)+J(x)h

而对于 F ( x ) = 1 2 f ( x ) T f ( x ) F(x)=\frac{1}{2}f(x)^Tf(x) F(x)=21f(x)Tf(x)则有:

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 F(x+h)\approx L(h)\equiv \frac{1}{2}l(h)^Tl(h) =\frac{1}{2}f^Tf+h^TJ^Tf+\frac{1}{2}h^TJ^TJh=F(x)+h^TJ^Tf+\frac{1}{2}h^TJ^TJh F(x+h)L(h)21l(h)Tl(h)=21fTf+hTJTf+21hTJTJh=F(x)+hTJTf+21hTJTJh,其中 f = f ( x ) f=f(x) f=f(x) J = J ( x ) J=J(x) J=J(x)

Gauss-Newton法求解的迭代量 h g n h_{gn} hgn可以使得 L ( h ) L(h) L(h)取得极小值,即 h g n = a r g m i n h h_{gn}=argmin_h hgn=argminh{ L ( h ) L(h) L(h)}。很容易求得 L L L的导数和海塞矩阵:

L ′ ( h ) = J T f + J T J h L'(h)=J^Tf+J^TJh L(h)=JTf+JTJh L ′ ′ ( h ) = J T J L''(h)=J^TJ L(h)=JTJ

由以上可知, L ′ ( 0 ) = F ′ ( x ) L'(0)=F'(x) L(0)=F(x);并且海塞矩阵 L ′ ′ ( h ) L''(h) L(h) h h h无关,且为对称矩阵。如果矩阵 J J J满秩,则易证矩阵 L ′ ′ ( h ) L''(h) L(h)为正定矩阵,此时表明 L ( h ) L(h) L(h)具有唯一最小点,可以通过求解以下方程:

( J T J ) h g n = − J T f (J^TJ)h_{gn}=-J^Tf (JTJ)hgn=JTf

该解为函数 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 h_{gn}^TF'(x)=h_{gn}^T(J^Tf)=-h_{gn}^T(J^TJ)h_{gn}<0 hgnTF(x)=hgnT(JTf)=hgnT(JTJ)hgn<0

因此可以通过上一章所述方法求解,通常迭代计算为, 求解 ( J T J ) h g n = − J T f (J^TJ)h_{gn}=-J^Tf (JTJ)hgn=JTf,然后 x : = x + α h g n x:=x+\alpha h_{gn} x:=x+αhgn,其中 α \alpha α通过线性搜索法求解,经典的Gauss-Newton法在所有迭代步骤中取 α = 1 \alpha =1 α=1。当{ x ∣ F ( x ) < = F ( x 0 ) x|F(x)<=F(x_0) xF(x)<=F(x0)}有界并且在所有迭代步骤中雅可比矩阵 J ( x ) J(x) J(x)始终满秩时,结合线性搜索法的Gauss-Newton法可以被证明收敛。在上一篇文章提到,牛顿法求解优化问题时,最终阶段接近平方收敛,但是Gauss-Newton法却不一般不具备这样的性质。牛顿法和Gauss-Newton法两种方法求解下降方向的方程分别为:

牛顿法: F ′ ′ ( x ) h n = − F ′ ( x ) F''(x)h_n=-F'(x) F(x)hn=F(x) \quad \quad \quad \quad Gauss-Newton法: L ′ ′ ( h ) h g n = − L ′ ( 0 ) L''(h)h_{gn}=-L'(0) L(h)hgn=L(0)

上述两个方程的等式右侧是相等的,但是等式左侧并不相等:

F ′ ′ ( x ) = L ′ ′ ( h ) + ∑ i = 1 m f i ( x ) f i ′ ′ ( x ) F''(x)=L''(h)+\sum_{i=1}^{m}{f_i(x)f_i''(x)} F(x)=L(h)+i=1mfi(x)fi(x)

因此,如果 f ( x ∗ ) = 0 f(x^*)=0 f(x)=0,那么当 x x x趋近于 x ∗ x^* x时,有 L ′ ′ ( h ) ≈ F ′ ′ ( x ) L''(h)\approx F''(x) L(h)F(x),此时Gauss-Newton法最终收敛也接近平方收敛。如果函数{ f i f_i fi}的曲率较小(即二次导数接近于0)或者函数{ ∣ f i ( x ∗ ) ∣ |f_i(x^*)| fi(x)}较小时,我们使用Gauss-Newton法能得到超线性收敛,但是总体来看Gauss-Newton法通常是线性收敛。需要注意的是,函数 F ( x ∗ ) F(x^*) F(x)的值对于收敛速度具有较大影响。
对于非线性最小二乘问题,无论是否采用线性搜索的方法,Gauss-Newton法都有可能求解失败。相对而言,牛顿法通过求解二阶导数往往能获得二次收敛,Gauss-Newton法虽然只能获得线性收敛,但效果在有些情况下表现不错。在3.23.3节将会介绍两种求解最优解的方法,它们对于求解全局最优解具有更优异的表现;而3.4节将会给出Gauss-Newton法的改进方法,从而能够获得超线性收敛。

3.2 Levenberg-Marquardt方法

Levenberg-Marquardt法其实是添加了阻尼项的Gauss-Newton法,迭代求解 h l m h_{lm} hlm可通过求解以下方程得出:

( J T J + μ I ) h l m = − g (J^TJ+\mu I)h_{lm}=-g (JTJ+μI)hlm=g,其中 g = J T g=J^T g=JT μ > = 0 \mu >=0 μ>=0

其中 J = J ( x ) J=J(x) J=J(x) f = f ( x ) f=f(x) f=f(x)。阻尼参数 μ \mu μ对迭代求解的影响如下:>

1 o 1^o 1o对于所有 μ > 0 \mu>0 μ>0,系数矩阵为正定型,这就保证了 h l m h_{lm} hlm为函数 L ( x ) L(x) L(x)的下降方向;
2 o 2^o 2o μ \mu μ相当大时,可知 h l m ≈ − 1 μ g = − 1 μ F ′ ( x ) h_{lm}\approx -\frac{1}{\mu}g=-\frac {1}{\mu}F'(x) hlmμ1g=μ1F(x),此时表明 x x x沿着梯度下降方向移动了较小的步长,在当前迭代值距离最终求解值较远时,这种迭代策略可以对整个迭代过程取得较好的效果;
3 o 3^o 3o μ \mu μ非常小时,可知 h l m ≈ h g n h_{lm}\approx h_{gn} hlmhgn,在迭代的最终阶段,即 x x x趋近于 x ∗ x^* x时,是一种优良策略。如果 F ( x ∗ ) = 0 F(x^*)=0 F(x)=0 F ( x ∗ ) F(x^*) F(x)非常小时,那么这种方法可获得近似于平方收敛。

因此,阻尼系数同时影响了迭代的下降方向和步长,因此我们可以放弃精确的线性搜索求解,选择通过控制阻尼系数来调整迭代过程。在迭代开始时, μ \mu μ的初始值选取应该与矩阵 A 0 = J ( x 0 ) T J ( x 0 ) A_0=J(x_0)^TJ(x_0) A0=J(x0)TJ(x0)中元素大小有关,取 μ 0 = τ ⋅ m a x i \mu_0=\tau \cdot max_i μ0=τmaxi{ a i i ( 0 ) a_{ii}^{(0)} aii(0)},其中 τ \tau τ由算法工作人员自己决定。迭代过程可根据收益比进行调整:

ρ = F ( x ) − F ( x + h l m ) L ( 0 ) − L ( h l m ) \rho=\frac{F(x)-F(x+h_{lm})}{L(0)-L(h_{lm})} ρ=L(0)L(hlm)F(x)F(x+hlm)

上式分母是线性模型 L L L的变化量:

L ( 0 ) − L ( h l m ) = − h l m 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(0)-L(h_{lm})=-h_{lm}J^Tf-\frac{1}{2}h_{lm}^TJ^TJh_{lm}=\frac {1}{2}h_{lm}^T(2g+(J^TJ+\mu I-\mu I)h_{lm})=\frac{1}{2}h_{lm}^T(\mu h_{lm}-g) L(0)L(hlm)=hlmJTf21hlmTJTJhlm=21hlmT(2g+(JTJ+μIμI)hlm)=21hlmT(μhlmg)

注意到, h l m T h l m h_{lm}^Th_{lm} hlmThlm − h l m T g -h_{lm}^Tg hlmTg项都是正数项,因此确保了该变化值 L ( 0 ) − L ( h l m ) L(0)-L(h_{lm}) L(0)L(hlm)必定为正值。当 ρ \rho ρ较大时,表明模型 L ( h l m ) L(h_{lm}) L(hlm)是函数 F ( x + h l m ) F(x+h_{lm}) F(x+hlm)的近似估计,所以我们可以通过减少阻尼系数 μ \mu μ,从而在下一步迭代中使得迭代量 h l m h_{lm} hlm更接近Gauss-Newton法的 h g n h_{gn} hgn;当 ρ \rho ρ较小甚至为负值时,表明模型 L ( h l m ) L(h_{lm}) L(hlm)对函数 F ( x + h l m ) F(x+h_{lm}) F(x+hlm)的近似估计效果较差,因此需要增加阻尼系数,从而使得迭代方向更接近梯度法下降方向并减小迭代步长。
算法终止迭代时要求在全局最小值点满足 F ′ ( x ∗ ) = g ( x ∗ ) = 0 F'(x^*)=g(x^*)=0 F(x)=g(x)=0,并且在当前迭代点处 x x x的迭代变化非常小,并且为了避免无限迭代应限制迭代次数 k k k,因此可以取以下迭代终止条件:

∣ ∣ g ∣ ∣ i n f i n < = ε 1 ; ∣ ∣ x n e w − x ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ; k > = k m a x ||g||_{infin}<=\varepsilon_1;||x_{new}-x||<=\varepsilon_2(||x||+\varepsilon_2);k>=k_{max} ginfin<=ε1;xnewx<=ε2(x+ε2);k>=kmax

其中 ε 1 , ε 2 \varepsilon_1,\varepsilon_2 ε1,ε2为算法工作人员选定的较小的正数,最大迭代次数 k m a x k_{max} kmax应为某选定的正整数。不等式 ∣ ∣ x n e w − x ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ||x_{new}-x||<=\varepsilon_2(||x||+\varepsilon_2) xnewx<=ε2(x+ε2)对于 x x x取较大值到接近0时,变化从相对步长 ε 2 \varepsilon_2 ε2逐渐变化到绝对步长 ε 2 2 \varepsilon_2^2 ε22,因此对于不同的 x x x值均可以有效平衡和限制。
由上述可知,Gauss-Newton法将最小二乘问题近似为线性问题: f ( x ) + J ( x ) h ≈ 0 f(x)+J(x)h\approx 0 f(x)+J(x)h0,类似的,L-M法是这个线性问题的normal equations法的近似,即

[ f ( x ) 0 ] + [ J ( x ) μ I ] h ≈ 0 \big [\begin{matrix}{f(x)}\\{0} \end{matrix}\big ]+\big[\begin{matrix}{J(x)}\\{\sqrt {\mu I} }\end{matrix}\big ]h\approx 0 [f(x)0]+[J(x)μI ]h0

上述方程可通过正交变换进行精确求解,但是由于 h l m h_{lm} hlm只是迭代的一步,所以并不需要精确求解,而通过normal equations法求解上述方程计算更简单,因此在实际问题中应用较为广泛。
L-M法的一般计算过程如下:

b e g i n begin begin
\quad k : = 0 ; ν : = 2 ; x : = x 0 k:=0;\nu:=2;x:=x_0 k:=0;ν:=2;x:=x0
\quad A : = J ( x ) T J ( x ) ; g : = J ( x ) T f ( x ) A:=J(x)^TJ(x);g:=J(x)^Tf(x) A:=J(x)TJ(x);g:=J(x)Tf(x)
\quad f o u n d : = ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) found:=(||g||_{\infin}<=\varepsilon_1) found:=(g<=ε1)
\quad w h i l e ( n o t f o u n d ) a n d ( k < k m a x ) while(not\quad found) and (k<k_{max}) while(notfound)and(k<kmax)
\quad {
\quad \quad k : = k + 1 ; S o l v e ( A + μ I ) h l m = − g k:=k+1;Solve(A+\mu I)h_{lm}=-g k:=k+1;Solve(A+μI)hlm=g
\quad \quad i f ( ∣ ∣ h l m ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) if(||h_{lm}||<=\varepsilon_2(||x||+\varepsilon_2) if(hlm<=ε2(x+ε2)
\quad \quad {
\quad \quad \quad f o u n d : = t r u e found:=true found:=true
\quad \quad }
\quad \quad e l s e else else
\quad \quad {
\quad \quad \quad x n e w : = x + h l m x_{new}:=x+h_{lm} xnew:=x+hlm
\quad \quad \quad ρ : = ( F ( x ) − F ( x n e w ) ) / ( L ( 0 ) − L ( h l m ) ) \rho:=(F(x)-F(x_{new}))/(L(0)-L(h_{lm})) ρ:=(F(x)F(xnew))/(L(0)L(hlm))
\quad \quad \quad i f ( ρ > 0 ) if(\rho>0) if(ρ>0)
\quad \quad \quad {
\quad \quad \quad \quad x : = x n e w x:=x_{new} x:=xnew
\quad \quad \quad \quad A : = J ( x ) T J ( x ) ; g : = J ( x ) T f ( x ) A:=J(x)^TJ(x);g:=J(x)^Tf(x) A:=J(x)TJ(x);g:=J(x)Tf(x)
\quad \quad \quad \quad f o u n d : = ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) found:=(||g||_{\infin}<=\varepsilon_1) found:=(g<=ε1)
\quad \quad \quad \quad μ : = μ ∗ m a x \mu:=\mu*max μ:=μmax{ 1 3 , 1 − ( 2 ρ − 1 ) 3 \frac{1}{3},1-(2\rho-1)^3 31,1(2ρ1)3}; ν : = 2 \nu:=2 ν:=2
\quad \quad \quad }
\quad \quad \quad e l s e else else
\quad \quad \quad {
\quad \quad \quad \quad μ : = μ ∗ ν ; ν : = 2 ∗ ν \mu:=\mu*\nu;\nu:=2*\nu μ:=μν;ν:=2ν
\quad \quad \quad }
\quad \quad }
\quad }
e n d end end

3.3 Powell’s Dog Leg方法

L-M方法通过添加阻尼项,结合了Gauss-Newton法和梯度下降法的优势。Powell’s Dog Leg法则是信赖域法的改进:
给定函数 f : R n → R m f:R^n \rightarrow R^m f:RnRm,Gauss-Newton法的迭代量 h g n h_{gn} hgn是线性问题 J ( x ) h ≈ − f ( x ) J(x)h\approx-f(x) J(x)hf(x)的最小二乘解法,可通过求解normal equations ( J ( x ) T J ( x ) ) h g n = − J ( x ) T f ( x ) (J(x)^TJ(x))h_{gn}=-J(x)^Tf(x) (J(x)TJ(x))hgn=J(x)Tf(x)获得。
而梯度法的下降方向由以下等式给出: h s d = − g = − J ( x ) T f ( x ) h_{sd}=-g=-J(x)^Tf(x) hsd=g=J(x)Tf(x),迭代步长则需要根据线性模型求解:由 f ( x + α h s d ) ≈ f ( x ) + α J ( x ) h s d f(x+\alpha h_{sd})\approx f(x)+\alpha J(x)h_{sd} f(x+αhsd)f(x)+αJ(x)hsd可得 F ( x + α h s d ) ≈ 1 2 ∣ ∣ f ( x ) + α J ( x ) h s d ∣ ∣ 2 = F ( x ) + α h s d T J ( x ) T f ( x ) + 1 2 α 2 ∣ ∣ J ( x ) h s d ∣ ∣ 2 F(x+\alpha h_{sd})\approx \frac{1}{2}||f(x)+\alpha J(x)h_{sd}||^2=F(x)+\alpha h_{sd}^TJ(x)^Tf(x)+\frac{1}{2}\alpha ^2||J(x)h_{sd}||^2 F(x+αhsd)21f(x)+αJ(x)hsd2=F(x)+αhsdTJ(x)Tf(x)+21α2J(x)hsd2。随着 α \alpha α变化使得 F ( x + α h s d ) F(x+\alpha h_{sd}) F(x+αhsd)取得最小值时, F ( α ) F(\alpha) F(α)的一阶导数为零,因此: α = − h s d T J ( x ) T f ( x ) ∣ ∣ J ( x ) h s d ∣ ∣ = ∣ ∣ g ∣ ∣ 2 ∣ ∣ J ( x ) g ∣ ∣ 2 \alpha=-\frac{h_{sd}^TJ(x)^Tf(x)}{|| J(x)h_{sd}||}=\frac{||g||^2}{||J(x)g||^2} α=J(x)hsdhsdTJ(x)Tf(x)=J(x)g2g2
综上,我们下一步迭代有两种方案,一种是根据梯度法迭代当前点 x x x移动 a = α h s d a=\alpha h_{sd} a=αhsd,另一种是根据Gauss-Newton法从当前点 x x x移动迭代量 b = h g n b=h_{gn} b=hgn。而Powell’s Dog Leg方法根据信赖域半径 Δ \Delta Δ采用以下的策略来选择迭代方案:

i f ( ∣ ∣ h g n ∣ ∣ < = Δ ) if(||h_{gn}||<=\Delta) if(hgn<=Δ)
h d l : = h g n h_{dl}:=h_{gn} hdl:=hgn
e l s e i f ( ∣ ∣ α h s d ∣ ∣ > = Δ ) else if(||\alpha h_{sd}||>=\Delta) elseif(αhsd>=Δ)
h d l = ( Δ / ∣ ∣ h s d ∣ ∣ ) h s d h_{dl}=(\Delta /||h_{sd}||)h_{sd} hdl=(Δ/hsd)hsd
else
h d l = α h s d + β ( h g n − α h s d ) h_{dl}=\alpha h_{sd}+\beta (h_{gn}-\alpha h_{sd}) hdl=αhsd+β(hgnαhsd),其中适当选择 β \beta β使得 ∣ ∣ h d l ∣ ∣ = Δ ||h_{dl}||=\Delta hdl=Δ

在这里插入图片描述
根据上面对 a a a b b b的定义,并定义 c = a T ( b − a ) c=a^T(b-a) c=aT(ba),可得:

ψ ( β ) ≡ ∣ ∣ a + β ( b − a ) ∣ ∣ 2 − Δ 2 = ∣ ∣ b − a ∣ ∣ 2 β 2 + 2 c β + ∣ ∣ α ∣ ∣ 2 − Δ 2 \psi (\beta)\equiv ||a+\beta(b-a)||^2-\Delta^2=||b-a||^2\beta^2+2c\beta +||\alpha||^2-\Delta^2 ψ(β)a+β(ba)2Δ2=ba2β2+2cβ+α2Δ2

接下来讨论上述二次多项式的一个根(即多项式值为0时自变量取值),注意到当 β → − ∞ \beta \rightarrow -\infty β时, ψ → + ∞ \psi\rightarrow +\infty ψ+ ψ ( 0 ) = ∣ ∣ a ∣ ∣ 2 − Δ 2 < 0 \psi(0)=||a||^2-\Delta^2<0 ψ(0)=a2Δ2<0 ψ ( 1 ) = ∣ ∣ h g n ∣ ∣ 2 − Δ 2 > 0 \psi(1)=||h_{gn}||^2-\Delta^2>0 ψ(1)=hgn2Δ2>0,因此函数 ψ \psi ψ必定存在一个负根并且在 [ 0 , 1 ] [0,1] [0,1]上存在一个根。 [ 0 , 1 ] [0,1] [0,1]上的根可由以下方法求解:

i f ( c < = 0 ) if(c<=0) if(c<=0)
β = ( Δ 2 − ∣ ∣ a ∣ ∣ 2 ) / ( c + c 2 + ∣ ∣ b − a ∣ ∣ 2 ( Δ 2 − ∣ ∣ a ∣ ∣ 2 ) ) / ∣ ∣ b − a ∣ ∣ 2 \beta=(\Delta^2-||a||^2)/(c+\sqrt{c^2+||b-a||^2(\Delta^2-||a||^2)})/||b-a||^2 β=(Δ2a2)/(c+c2+ba2(Δ2a2) )/ba2
else
β = ( Δ 2 − ∣ ∣ a ∣ ∣ 2 ) / ( c + c 2 + ∣ ∣ b − a ∣ ∣ 2 ( Δ 2 − ∣ ∣ a ∣ ∣ 2 ) ) \beta=(\Delta^2-||a||^2)/(c+\sqrt{c^2+||b-a||^2(\Delta^2-||a||^2)}) β=(Δ2a2)/(c+c2+ba2(Δ2a2) )

收益比 ρ \rho ρ的定义与L-M法中相似,为:

ρ = F ( x ) − F ( x + h d l L ( 0 ) − L ( h d l ) \rho=\frac{F(x)-F(x+h_{dl}}{L(0)-L(h_{dl})} ρ=L(0)L(hdl)F(x)F(x+hdl

同样的,其中 L L L为线性模型

L ( h ) = 1 2 ∣ ∣ f ( x ) + J ( x ) h ∣ ∣ 2 L(h)=\frac{1}{2}||f(x)+J(x)h||^2 L(h)=21f(x)+J(x)h2

在L-M法中采用收益比 ρ \rho ρ来调整阻尼系数的大小,而在Powell’s Dog Leg方法中则采用收益比 ρ \rho ρ来调整信赖域的半径。当 ρ \rho ρ较大时表明当前线性模型近似效果较好,因此可以增加信赖域半径 Δ \Delta Δ从而采取更大的步长,此时迭代方向更接近Gauss-Newton法的迭代方向;当 ρ \rho ρ较小时(甚至负值)表明我们应当减小信赖域半径 Δ \Delta Δ,采取更小的迭代步长,此时迭代方向更接近梯度下降法的迭代方向。总结如下:
1 o 1^o 1o初始化。其中 x 0 x_0 x0 Δ 0 \Delta_0 Δ0应当自行给定;
2 o 2^o 2o3.2节迭代终止条件外,补充 ∣ ∣ f ( x ) ∣ ∣ ∞ < = ε 3 ||f(x)||_\infin<=\varepsilon_3 f(x)<=ε3,从而保证在 m = n m=n m=n这种特殊的非线性系统模型下保证 f ( x ∗ ) = 0 f(x^*)=0 f(x)=0
3 o 3^o 3o m = m m=m m=m时,此时 J ( x ) h = − f ( x ) J(x)h=-f(x) J(x)h=f(x)而不是近似等于,而且不需使用normal equations进行求解;
4 o 4^o 4o对于信赖域半径 Δ \Delta Δ取值不同的三种情况,令 h 1 = h d l , h 2 = h g n , h 3 = − Δ ∣ ∣ g ∣ ∣ g h1=h_{dl},h2=h_{gn},h3=\frac{-\Delta}{||g||}g h1=hdl,h2=hgn,h3=gΔg,有:
L ( 0 ) − L ( h d l ) = { F ( x ) h1=h2 Δ ( 2 ∣ ∣ α g ∣ ∣ − Δ ) 2 α h1=h3 1 2 α ( 1 − β ) 2 ∣ ∣ g ∣ ∣ 2 + β ( 2 − β ) F ( x ) otherwise L(0)-L(h_{dl})= \begin{cases} F(x)& \text{h1=h2}\\ \frac{\Delta (2||\alpha g||-\Delta)}{2\alpha}& \text{h1=h3}\\ \frac{1}{2}\alpha(1-\beta)^2||g||^2+\beta(2-\beta)F(x)& \text{otherwise} \end{cases} L(0)L(hdl)=F(x)2αΔ(2αgΔ)21α(1β)2g2+β(2β)F(x)h1=h2h1=h3otherwise
5 o 5^o 5o采用下列方法更新信赖域半径:

if( ρ < 0.25 \rho<0.25 ρ<0.25)
Δ : = Δ / 2 \Delta:=\Delta /2 Δ:=Δ/2
else
Δ : \Delta: Δ:=max{ Δ , 3 ∗ ∣ ∣ h ∣ ∣ \Delta, 3*||h|| Δ,3h}

6 o 6^o 6o附加迭代终止条件: Δ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) \Delta<=\varepsilon_2(||x||+\varepsilon_2) Δ<=ε2(x+ε2),此时下一步迭代中条件 ∣ ∣ x n e w − x ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ||x_{new}-x||<=\varepsilon_2(||x||+\varepsilon_2) xnewx<=ε2(x+ε2)必然满足。算法具体过程如下:

b e g i n begin begin
\quad k : = 0 ; x : = x 0 ; Δ : = Δ 0 ; g : = J ( x ) T f ( x ) k:=0;x:=x_0;\Delta:=\Delta_0;g:=J(x)^Tf(x) k:=0;x:=x0;Δ:=Δ0;g:=J(x)Tf(x)
\quad f o u n d : = ( ∣ ∣ f ( x ) ∣ ∣ ∞ < = ε 3 ) o r ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) found:=(||f(x)||_\infin<=\varepsilon_3)or(||g||_{\infin}<=\varepsilon_1) found:=(f(x)<=ε3)or(g<=ε1)
\quad w h i l e ( n o t f o u n d ) a n d ( k < k m a x ) while(not\quad found) and (k<k_{max}) while(notfound)and(k<kmax)
\quad {
\quad \quad k : = k + 1 ; α = ∣ ∣ g ∣ ∣ 2 ∣ ∣ J ( x ) g ∣ ∣ 2 k:=k+1;\alpha=\frac{||g||^2}{||J(x)g||^2} k:=k+1;α=J(x)g2g2
\quad \quad h s d : = − α g ; S o l v e J ( x ) h g n ≈ − f ( x ) h_{sd}:=-\alpha g;SolveJ(x)h_{gn}\approx -f(x) hsd:=αg;SolveJ(x)hgnf(x)
\quad \quad 更新计算 h d l h_{dl} hdl(方法见上文本节部分)
\quad \quad i f ( ∣ ∣ h d l ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) if(||h_{dl}||<=\varepsilon_2(||x||+\varepsilon_2) if(hdl<=ε2(x+ε2)
\quad \quad {
\quad \quad \quad f o u n d : = t r u e found:=true found:=true
\quad \quad }
\quad \quad e l s e else else
\quad \quad {
\quad \quad \quad x n e w : = x + h d l x_{new}:=x+h_{dl} xnew:=x+hdl
\quad \quad \quad ρ : = ( F ( x ) − F ( x n e w ) ) / ( L ( 0 ) − L ( h d l ) ) \rho:=(F(x)-F(x_{new}))/(L(0)-L(h_{dl})) ρ:=(F(x)F(xnew))/(L(0)L(hdl))
\quad \quad \quad i f ( ρ > 0 ) if(\rho>0) if(ρ>0)
\quad \quad \quad {
\quad \quad \quad \quad x : = x n e w ; g : = J ( x ) T f ( x ) x:=x_{new};g:=J(x)^Tf(x) x:=xnew;g:=J(x)Tf(x)
\quad \quad \quad \quad f o u n d : = ( ∣ ∣ f ( x ) ∣ ∣ ∞ < = ε 3 ) o r ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) found:=(||f(x)||_\infin<=\varepsilon_3)or(||g||_{\infin}<=\varepsilon_1) found:=(f(x)<=ε3)or(g<=ε1)
\quad \quad \quad }
\quad \quad \quad i f ( ρ > 0.75 ) if(\rho>0.75) if(ρ>0.75)
\quad \quad \quad {
\quad \quad \quad \quad Δ : \Delta: Δ:=max{ Δ , 3 ∗ ∣ ∣ h ∣ ∣ \Delta, 3*||h|| Δ,3h}
\quad \quad \quad }
\quad \quad \quad e l s e i f ( ρ < 0.25 ) else \quad if(\rho<0.25) elseif(ρ<0.25)
\quad \quad \quad {
\quad \quad \quad \quad Δ : = Δ / 2 ; f o u n d : = ( Δ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ) \Delta:=\Delta/2;found:=(\Delta<=\varepsilon_2(||x||+\varepsilon_2)) Δ:=Δ/2;found:=(Δ<=ε2(x+ε2))
\quad \quad \quad }
\quad \quad }
\quad }
e n d end end

3.4 基于L-M和Quasi-Newton的混合方法

Madsen在1988年提出了一种基于L-M(如果 F ( x ∗ ) = 0 F(x^*)=0 F(x)=0可获得平方收敛,否则接近线性收敛)和Quasi-Newton的混合方法(即使 F ( x ∗ ) ≠ 0 F(x^*)\not =0 F(x)=0也能获得超线性收敛。这种迭代方法在初始阶段选择L-M方法,当 F ( x ∗ ) F(x^*) F(x)明显不等于零时,选择Quasi-Newton法,如果条件允许,可能又调整为L-M方法。选择Quasi-Newton法的条件为:在连续三次成功迭代过程中,满足 ∣ ∣ F ′ ( x ) ∣ ∣ ∞ < 0.02 ∗ F ( x ) ||F'(x)||_\infty<0.02*F(x) F(x)<0.02F(x)。这个条件可以理解为当前迭代值 x x x接近使得 F ′ ( x ∗ ) = 0 F'(x^*)=0 F(x)=0 x ∗ x^* x,并且显然 F ( x ∗ ) ≠ 0 F(x^*)\not=0 F(x)=0。如前所述,此时可能获得较慢的线性收敛。Quasi-Newton法从当前迭代点 x x x出发,基于海塞矩阵 F ′ ′ ( x ) F''(x) F(x)的近似矩阵 B B B求解迭代量 h q n h_{qn} hqn,通过以下方程求解:

B h q n = − F ′ ( x ) Bh_{qn}=-F'(x) Bhqn=F(x)

以上方程是牛顿法的方程的近似。近似矩阵 B B B在迭代中根据BFGS策略更新:在迭代过程中矩阵 B B B始终是对称的(和 F ′ ′ ( x ) F''(x) F(x)一样)和正定型,这就保证了 h q n h_{qn} hqn为函数 F ( x ) F(x) F(x)的下降方向。矩阵 B B B的初始值取为对称正定型矩阵 B 0 = I B_0=I B0=I,并且BFGS策略在每次迭代时将有秩为2的矩阵加到当前矩阵B上。Madsen在1988年提出的策略为:

h : = x n e w − x h:=x_{new}-x h:=xnewx y : J n e w T J n e w h + ( J n e w − J ) T f ( x n e w ) y:J_{new}^TJ_{new}h+(J_{new}-J)^Tf(x_{new}) y:JnewTJnewh+(JnewJ)Tf(xnew)
i f ( h T y > 0 ) if(h^Ty>0) if(hTy>0)
v : = B h v:=Bh v:=Bh B : = B + ( 1 h T y y ) y T − ( 1 h T v v ) v T B:=B+(\frac{1}{h^Ty}y)y^T-(\frac{1}{h^Tv}v)v^T B:=B+(hTy1y)yT(hTv1v)vT

其中: J = J ( x ) J=J(x) J=J(x) J n e w = J ( x n e w ) J_{new}=J(x_{new}) Jnew=J(xnew)。由于当前 B B B矩阵为正定型并且仅有 h T y > 0 h_Ty>0 hTy>0时才会改变,经过上式变换可保证迭代后的矩阵 B B B也是正定型(具体证明过程未给出,笔者将在后面的文章中进行推导补充)。Quasi-Newton法在迭代的全过程并不稳健,也不能确保所求迭代方向为下降方向。目标解 x ∗ x^* x使得 F ( x ∗ ) = 0 F(x^*)=0 F(x)=0,并且最终迭代阶段,好的求解模型迭代使得 ∣ ∣ F ′ ( x ) ∣ ∣ ||F'(x)|| F(x)下降较快。如果 ∣ ∣ F ′ ( x ) ∣ ∣ ||F'(x)|| F(x)下降较慢,则应选择L-M算法。总结如下:
1 o 1^o 1o初始化。其中 μ 0 \mu_0 μ0可由 μ 0 = τ ⋅ m a x i \mu_0=\tau \cdot max_i μ0=τmaxi{ a i i ( 0 ) a_{ii}^{(0)} aii(0)}确定,迭代终止条件参考3.2节
2 o 2^o 2o在迭代过程中,由于对于同样的 x x x,函数值 f f f和雅可比矩阵 J J J等是确定的,因此计算过程中这些值可以存储下来,避免同一步迭代中重复计算;
3 o 3^o 3o迭代过程中,L-M和Q-N算法可为计算海塞矩阵的近似矩阵提供信息;
4 o 4^o 4o迭代过程中,收益比 ρ \rho ρ同样用来更新 μ \mu μ值,参考L-M算法部分;
5 o 5^o 5o注意更换迭代计算方法的时机。在迭代开始时,参数 c o u n t count count需要被初始化为零;
6 o 6^o 6o在3次连续迭代中,如果都满足 ∣ ∣ F ′ ( x ) ∣ ∣ ∞ < 0.02 ∗ F ( x ) ||F'(x)||_\infty<0.02*F(x) F(x)<0.02F(x),其中 ρ > 0 \rho>0 ρ>0,即每次 x x x发生了改变,就应该改为Q-N迭代过程;
7 o 7^o 7o结合信赖域算法与Quasi-Newton算法,当从L-M算法调整为Quasi-Newton算法时,信赖域半径 Δ \Delta Δ初始化为 m a x max max{ 1.5 ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) , 1 5 ∣ ∣ h l m ∣ ∣ 1.5\varepsilon_2(||x||+\varepsilon_2),\frac{1}{5}||h_{lm}|| 1.5ε2(x+ε2),51hlm};
8 o 8^o 8o采用以下方法更新 Δ \Delta Δ

if( ρ < 0.25 \rho<0.25 ρ<0.25)
Δ : = Δ / 2 \Delta:=\Delta /2 Δ:=Δ/2
else
Δ : \Delta: Δ:=max{ Δ , 3 ∗ ∣ ∣ h ∣ ∣ \Delta, 3*||h|| Δ,3h}

9 o 9^o 9o F ′ F' F接近零时,允许函数 F F F有极小的增大,即 δ = ε M \delta=\sqrt{\varepsilon _M} δ=εM ,其中 ε M \varepsilon _M εM为计算机的 u n i t r o u n d o f f unit\quad roundoff unitroundoff
1 0 o 10^o 10o对于Q-N迭代过程,下降的速度可能不够快

b e g i n begin begin
\quad k : = 0 ; x : = x 0 ; μ : = μ 0 ; B : = I k:=0;x:=x_0;\mu:=\mu_0;B:=I k:=0;x:=x0;μ:=μ0;B:=I
\quad f o u n d : = ( ∣ ∣ F ′ ( x ) ∣ ∣ ∞ < = ε 1 ) ; m e t h o d : = L − M found:=(||F'(x)||_\infin<=\varepsilon_1);method:=L-M found:=(F(x)<=ε1);method:=LM
\quad w h i l e ( n o t f o u n d ) a n d ( k < k m a x ) while(not\quad found) and (k<k_{max}) while(notfound)and(k<kmax)
\quad {
\quad \quad k : = k + 1 ; k:=k+1; k:=k+1;
\quad \quad c a s e ( m e t h o d ) case(method) case(method)
\quad \quad {
\quad \quad \quad L − M : L-M: LM:
\quad \quad \quad \quad [ x n e w , f o u n d , b e t t e r , m e t h o d , ⋯ ] : = L M s t e p ( x , ⋯ ) [x_{new},found,better,method,⋯]:=LMstep(x,⋯) [xnew,found,better,method,]:=LMstep(x,)
\quad \quad \quad Q − N : Q-N: QN:
\quad \quad \quad \quad [ x n e w , f o u n d , b e t t e r , m e t h o d , ⋯ ] : = Q N s t e p ( x , B , ⋯ ) [x_{new},found,better,method,⋯]:=QNstep(x,B,⋯) [xnew,found,better,method,]:=QNstep(x,B,)
\quad \quad }
\quad \quad 采用Madsen的策略(见上文)更新B
\quad \quad i f ( b e t t e r ) if(better) if(better)
\quad \quad {
\quad \quad \quad x:=x_{new};
\quad \quad }
\quad }
e n d end end

其中L-M迭代方法的步骤如下:

[ x n e w , f o u n d , b e t t e r , m e t h o d , ⋯ ] : = L M s t e p ( x , ⋯ ) [x_{new},found,better,method,⋯]:=LMstep(x,⋯) [xnew,found,better,method,]:=LMstep(x,)
b e g i n begin begin
\quad x n e w : = x ; m e t h o d : = L − M x_{new}:=x;method:=L-M xnew:=x;method:=LM
\quad S o l v e ( J ( x ) T J ( x ) + μ I ) h l m = − F ′ ( x ) Solve(J(x)^TJ(x)+\mu I)h_{lm}=-F'(x) Solve(J(x)TJ(x)+μI)hlm=F(x)
\quad i f ( ∣ ∣ h l m ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ) if(||h_{lm}||<=\varepsilon_2(||x||+\varepsilon_2)) if(hlm<=ε2(x+ε2))
\quad {
\quad \quad f o u n d : = t r u e found:=true found:=true
\quad }
\quad e l s e else else
\quad {
\quad \quad x n e w : = x + h l m x_{new}:=x+h_{lm} xnew:=x+hlm
\quad \quad ρ = ( F ( x ) − F ( x n e w ) ) / ( ( L ( 0 ) − L ( h l m ) ) \rho=(F(x)-F(x_{new}))/((L(0)-L(h_{lm})) ρ=(F(x)F(xnew))/((L(0)L(hlm))
\quad \quad i f ( ρ > 0 ) if(\rho>0) if(ρ>0)
\quad \quad {
\quad \quad \quad b e t t e r : = t r u e ; f o u n d : = ( ∣ ∣ F ′ ( x n e w ) ∣ ∣ ∞ < = ε 1 ) better:=true;found:=(||F'(x_{new})||_\infin<=\varepsilon_1) better:=true;found:=(F(xnew)<=ε1)
\quad \quad \quad i f ( ∣ ∣ F ′ ( x n e w ) ∣ ∣ ∞ < 0.02 ∗ F ( x n e w ) if(||F'(x_{new})||_\infin<0.02*F(x_{new}) if(F(xnew)<0.02F(xnew)
\quad \quad \quad {
\quad \quad \quad \quad c o u n t : = c o u n t + 1 count:=count+1 count:=count+1
\quad \quad \quad \quad i f ( c o u n t = 3 ) if(count=3) if(count=3)
\quad \quad \quad \quad {
\quad \quad \quad \quad \quad method:=Q-N
\quad \quad \quad \quad }
\quad \quad \quad }
\quad \quad \quad e l s e else else
\quad \quad \quad {
\quad \quad \quad \quad count:=0
\quad \quad \quad }
\quad \quad }
\quad \quad e l s e else else
\quad \quad {
\quad \quad c o u n t : = 0 ; b e t t e r : = f a l s e count:=0;better:=false count:=0;better:=false
\quad \quad }
\quad }
e n d end end

Q-N迭代方法的步骤如下:

[ x n e w , f o u n d , b e t t e r , m e t h o d , ⋯ ] : = Q N s t e p ( x , ⋯ ) [x_{new},found,better,method,⋯]:=QNstep(x,⋯) [xnew,found,better,method,]:=QNstep(x,)
b e g i n begin begin
\quad x n e w : = x ; m e t h o d : = Q − N ; b e t t e r : = f a l s e x_{new}:=x;method:=Q-N;better:=false xnew:=x;method:=QN;better:=false
\quad S o l v e B h q n = − F ′ ( x ) SolveBh_{qn}=-F'(x) SolveBhqn=F(x)
\quad i f ( ∣ ∣ h q n ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ) if(||h_{qn}||<=\varepsilon_2(||x||+\varepsilon_2)) if(hqn<=ε2(x+ε2))
\quad {
\quad \quad f o u n d : = t r u e found:=true found:=true
\quad }
\quad e l s e else else
\quad {
\quad \quad i f ( ∣ ∣ h q n ∣ ∣ > Δ ) if(||h_{qn}||>\Delta) if(hqn>Δ)
\quad \quad {
\quad \quad \quad h q n : = ( Δ / ∣ ∣ h q n ) ∗ h q n h_{qn}:=(\Delta/||h_{qn})*h_{qn} hqn:=(Δ/hqn)hqn
\quad \quad }
\quad \quad x n e w : = x + h l m x_{new}:=x+h_{lm} xnew:=x+hlm
\quad \quad i f ( ∣ ∣ F ′ ( x n e w ) ∣ ∣ ∞ < = ε 1 ) if(||F'(x_{new})||_\infin<=\varepsilon_1) if(F(xnew)<=ε1)
\quad \quad {
\quad \quad \quad f o u n d : = t r u e found:=true found:=true
\quad \quad }
\quad \quad e l s e else else
\quad \quad {
\quad \quad \quad b e t t e r : = ( F ( x n e w ) < F ( x ) ) o r ( ( F ′ ( x n e w ) < = ( 1 + δ ) F ( x ) ) a n d ( ∣ ∣ F ′ ( x n e w ) ∣ ∣ ∞ < ∣ ∣ F ′ ( x ) ∣ ∣ ∞ ) ) better:=(F(x_{new})<F(x))or((F'(x_{new})<=(1+\delta)F(x))and(||F'(x_{new})||_\infin<||F'(x)||_\infin)) better:=(F(xnew)<F(x))or((F(xnew)<=(1+δ)F(x))and(F(xnew)<F(x)))
\quad \quad \quad i f ( F ′ ( x n e w ) ∣ ∣ ∞ > = ∣ ∣ F ′ ( x ) ∣ ∣ ∞ if(F'(x_{new})||_\infin>=||F'(x)||_\infin if(F(xnew)>=F(x)
\quad \quad \quad {
\quad \quad \quad \quad method:=L-M
\quad \quad \quad }
\quad \quad }
\quad }
e n d end end

3.5 L-M方法的割线型

本文所述的最小二乘问题中,假设函数 f f f均为可微函数,即存在雅可比矩阵: J ( x ) = [ ∂ f i ∂ x j ] J(x)=\big[\frac {\partial f_i}{\partial x_j}\big] J(x)=[xjfi]。在很多实际情形中,由于函数 f f f的具体形式未给出(即黑盒子),因此难以给出雅可比矩阵 J J J中元素的计算公式,割线型L-M方法为这种问题提供了一种解决思路。对于这类问题,最简单的改进措施是采用差分法得到矩阵 B B B来替换雅可比矩阵 J ( x ) J(x) J(x),其中矩阵 B i j B_{ij} Bij(即矩阵 B B B的第 ( i , j ) (i,j) (i,j)项)可以通过有限差分近似进行求解:

B i j = ∂ f i ∂ x j ( x ) ≈ f i ( x + δ e j ) − f i ( x ) δ ≡ b i j B_{ij}=\frac{\partial f_i}{\partial x_j}(x)\approx \frac{f_i(x+\delta e_j)-f_i(x)}{\delta}\equiv b_{ij} Bij=xjfi(x)δfi(x+δej)fi(x)bij,其中 e j e_j ej为沿着第 j j j坐标轴方向的单位向量, δ \delta δ为适当较小的实数

这种方法每次迭代一次 x x x时需要计算 n + 1 n+1 n+1次函数 f f f的值,并且由于 δ \delta δ可能比距离 ∣ ∣ x − x ∗ ∣ ∣ ||x-x^*|| xx更小,所以在全局搜索的表现上这种方法并不能获得比计算函数 f ( x ) f(x) f(x)更多的信息,因此需要对方法进行改进以提高效率。
对于函数 f : R n → R m f:R^n \rightarrow R^m f:RnRm的近似线性模型 f ( x + h ) ≈ l ( h ) ≡ f ( x ) + J ( x ) h f(x+h)\approx l(h)\equiv f(x)+J(x)h f(x+h)l(h)f(x)+J(x)h,替换其中的雅可比矩阵 J ( x ) J(x) J(x),可得到:

f ( x + h ) ≈ λ ( h ) ≡ f ( x ) + B h f(x+h)\approx \lambda (h)\equiv f(x)+Bh f(x+h)λ(h)f(x)+Bh,其中矩阵 B B B是雅可比矩阵 J ( x ) J(x) J(x)的近似

在下一步迭代中,对应 x n e w x_{new} xnew需要更新矩阵 B n e w B_{new} Bnew,即:

f ( x n e w + h ) ≈ λ ( h ) ≡ f ( x n e w ) + B n e w h f(x_{new}+h)\approx \lambda (h)\equiv f(x_{new})+B_{new}h f(xnew+h)λ(h)f(xnew)+Bnewh

进一步地,如果模型能够保证迭代过程 h = x − x n e w h=x-x_{new} h=xxnew,即:

f ( x ) = f ( x n e w ) + B n e w ( x − x n e w ) f(x)=f(x_{new})+B_{new}(x-x_{new}) f(x)=f(xnew)+Bnew(xxnew)

上式为我们提供了矩阵 B n e w B_{new} Bnew m ⋅ n m\cdot n mn个元素中的 m m m个等式,显然需要补充更多的条件。Broyden在1965年提出如下补充:

B n e w v = B v B_{new}v=Bv Bnewv=Bv,其中 v v v为满足 v ⊥ ( x − x n e w ) v\perp (x-x_{new}) v(xxnew)的任意解

以上条件很容易被以下Broyden’s Rank One Update迭代过程满足:

B n e w = B + μ h T B_{new}=B+\mu h^T Bnew=B+μhT,其中 h = x n e w − x , u = 1 h T h ( f ( x n e w ) − f ( x ) − B h ) h=x_{new}-x,u=\frac{1}{h^Th}(f(x_{new})-f(x)-Bh) h=xnewx,u=hTh1(f(xnew)f(x)Bh)

注意到当 n = 1 n=1 n=1时条件 f ( x ) = f ( x n e w ) + B n e w ( x − x n e w ) f(x)=f(x_{new})+B_{new}(x-x_{new}) f(x)=f(xnew)+Bnew(xxnew)和条件 B n e w v = B v B_{new}v=Bv Bnewv=Bv是相一致的。这里加ing这种迭代方式成为广义割线型。L-M算法结合这种迭代方式进行改进后,大概形式如下:

S o l v e ( B T B + μ I ) h s l m = − B T f ( x ) Solve(B^TB+\mu I)h_{slm}=-B^Tf(x) Solve(BTB+μI)hslm=BTf(x)
x n e w : = x + h s l m x_{new}:=x+h_{slm} xnew:=x+hslm
采用Broyden’s Rank One Update迭代过程更新 B B B
根据L-M算法更新 μ \mu μ x x x(见3.2节

Powell已经证明了如果迭代过程中自变量 x 0 , x 1 , x 2 , ⋯ , x_0,x_1,x_2,⋯, x0,x1,x2,,收敛于 x ∗ x^* x并且迭代步长{ h k ≡ x k − x k − 1 h_k\equiv x_k-x_{k-1} hkxkxk1}满足列向量{ h k − n + 1 , ⋯ , h k h_{k-n+1},⋯,h_k hkn+1,,hk}为线性无关(遍布整个空间 R n R^n Rn(其中k>n)),那么近似矩阵{ B k B_k Bk}收敛于雅可比矩阵 J ( x ∗ ) J(x^*) J(x),而与初始矩阵 B 0 B_0 B0的选取无关。在实际情形中,前 n n n步迭代往往并不满足上述假设(书中描述为未遍布整个空间 R n R^n Rn),因此可能在迭代若干次后,矩阵 B B B是雅可比矩阵的较差近似估计,这就导致 − B T f ( x ) -B^Tf(x) BTf(x)不一定是较好的下降方向甚至都不是下降方向。在这种情形下,变量 x x x会一直保持不变而 μ \mu μ则逐渐增大。此时虽然矩阵 B B B发生了变化但是可能仍然是较差的近似估计,从而会导致 μ \mu μ值的进一步增加。最终迭代过程可能因为 h s l m h_{slm} hslm过小(满足迭代终止条件之一)而终止迭代,尽管此时 x x x距离 x ∗ x^* x仍然较远。
针对这个问题,目前已经提出了许多方法,如偶尔采用差分法重新计算矩阵 B B B。本文给出了一种基于循环坐标迭代过程的路线:由 h h h控制当前迭代量,用 j j j表示当前的坐标数。当 h h h和向量 e j e_j ej之间的夹角 θ \theta θ过大,那么对于雅可比矩阵的第 j j j列就需要用差分法重新计算近似值。准确地来说,条件为:

c o s θ = ∣ h T e j ∣ ∣ ∣ h ∣ ∣ ⋅ ∣ ∣ e j ∣ ∣ < γ ⇌ ∣ h j ∣ < γ ∣ ∣ h ∣ ∣ cos\theta=\frac{|h^Te_j|}{||h||\cdot ||e_j||}<\gamma \rightleftharpoons |h_j|<\gamma||h|| cosθ=hejhTej<γhj<γh

实验表明选择 γ = 0.8 \gamma=0.8 γ=0.8具有较好的效果(悲观估计),在这种选择下每步迭代中大概需要计算 f f f的两列向量。整个迭代方法总结如下:
1 o 1^o 1o初始化。 x 0 x_0 x0为输入值,矩阵 B 0 B_0 B0为输入值或根据差分法计算,迭代终止条件及其参数参考3.2节,矩阵 B 0 B_0 B0差分法计算中 δ \delta δ也为输入值;
2 o 2^o 2o m o d ( j , n ) 表 示 mod(j,n)表示 mod(j,n)j 被 被 n$除后的余数;
3 o 3^o 3o迭代参数 η \eta η的计算标准为:如果 x j = 0 x_j=0 xj=0,那么 η : = δ 2 \eta:=\delta^2 η:=δ2;否则 η : = δ ∣ x j ∣ \eta:=\delta|x_j| η:=δxj
4 o 4^o 4o在迭代过程中,近似矩阵 B B B每一步迭代都会发生改变,而 x x x仅在下降方向满足时才会改变。因此尽管函数 f ( x ) f(x) f(x)保持不变时,梯度近似估计 g g g的值也会发生改变。
迭代过程如下:

b e g i n begin begin
\quad k : = 0 ; x : = x 0 ; B : = B 0 ; j : = 0 k:=0;x:=x_0;B:=B_0;j:=0 k:=0;x:=x0;B:=B0;j:=0
\quad g : = B T f ( x ) ; f o u n d : = ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) g:=B^Tf(x);found:=(||g||_\infin<=\varepsilon_1) g:=BTf(x);found:=(g<=ε1)
\quad w h i l e ( n o t f o u n d ) a n d ( k < k m a x ) while(not\quad found) and (k<k_{max}) while(notfound)and(k<kmax)
\quad {
\quad \quad k : = k + 1 ; S o l v e ( B T B + μ I ) h = − g k:=k+1;Solve(B^TB+\mu I)h=-g k:=k+1;Solve(BTB+μI)h=g
\quad \quad i f ( ∣ ∣ h ∣ ∣ < = ε 2 ( ∣ ∣ x ∣ ∣ + ε 2 ) ) if(||h||<=\varepsilon_2(||x||+\varepsilon_2)) if(h<=ε2(x+ε2))
\quad \quad {
\quad \quad \quad f o u n d : = t r u e found:=true found:=true
\quad \quad }
\quad \quad e l s e else else
\quad \quad {
\quad \quad \quad j : = m o d ( j , n ) + 1 j:=mod(j,n)+1 j:=mod(j,n)+1
\quad \quad \quad i f ( ∣ h j ∣ < 0.8 ∣ ∣ h ∣ ∣ ) if(|h_j|<0.8||h||) if(hj<0.8h)
\quad \quad \quad {
\quad \quad \quad \quad 根 据 B n e w = B + μ h T 迭 代 计 算 B 根据B_{new}=B+\mu h^T迭代计算B Bnew=B+μhTB
\quad \quad \quad }
\quad \quad \quad i f ( F ( x n e w ) < F ( x ) ) if(F(x_{new})<F(x)) if(F(xnew)<F(x))
\quad \quad \quad {
\quad \quad \quad \quad x : = x n e w x:=x_{new} x:=xnew
\quad \quad \quad }
\quad \quad \quad g : = B T f ( x ) ; f o u n d : = ( ∣ ∣ g ∣ ∣ ∞ < = ε 1 ) g:=B^Tf(x);found:=(||g||_\infin<=\varepsilon_1) g:=BTf(x);found:=(g<=ε1)
\quad \quad }
\quad }
e n d end end

在许多应用中, m m m n n n较大,但是每个函数 f i ( x ) f_i(x) fi(x)仅仅依赖于 x x x的若干元素。在这种情况下,一阶偏导数中 ∂ f i ∂ x j ( x ) \frac{\partial f_i}{\partial x_j}(x) xjfi(x)很多都为零,即矩阵 J ( x ) J(x) J(x)为稀疏矩阵。Nielen(1997)介绍了一系列在L-M算法中利用矩阵稀疏性的方法。在Broyden’s Rank One Update迭代公式中,正常情况下列向量 h h h u u u中元素都是非零项,所以矩阵 B n e w B_{new} Bnew将会是稠密矩阵。本文不对这部分内容进一步介绍,具体内容可参考Gill(1984)和Toint(1987)的著作。

3.6 Dog Leg方法的割线型

采用割线型来对雅可比矩阵进行近似的方法也同样可以用到Dog Leg方法中。这里,我们考虑非线性系统问题中 m = n m=n m=n的特殊情况。Broyden不仅给出了以下公式来更新雅可比矩阵的近似矩阵:

B n e w = B + ( 1 h T h ( y − B h ) ) h T B_{new}=B+(\frac{1}{h^Th}(y-Bh))h^T Bnew=B+(hTh1(yBh))hT,其中 h = x n e w − x h=x_{new}-x h=xnewx y = f ( x n e w ) − f ( x ) y=f(x_{new})-f(x) y=f(xnew)f(x)

并且还给出了雅可比矩阵的逆矩阵近似 D ≈ J ( x ) − 1 D\approx J(x)^{-1} DJ(x)1的更新公式:

D n e w = D + ( 1 h T D y ( h − D y ) ) ( h T D ) D_{new}=D+(\frac{1}{h^TDy}(h-Dy))(h^TD) Dnew=D+(hTDy1(hDy))(hTD),其中 h = x n e w − x h=x_{new}-x h=xnewx y = f ( x n e w ) − f ( x ) y=f(x_{new})-f(x) y=f(xnew)f(x)

需要注意的是,在矩阵 D D D的迭代公式中分母可能很小甚至等于0,因此如果 ∣ ∣ h T D y ∣ ∣ < ε M ∣ ∣ h ∣ ∣ ||h^TDy||<\sqrt{\varepsilon_M}||h|| hTDy<εM h,那么就不应用上述方法更新,而应用 D = B − 1 D=B^{-1} D=B1进行计算。
基于上述近似矩阵,梯度下降法的下降方向 h s d h_{sd} hsd和Gauss-Newton法的迭代步长 h g n h_{gn} hgn可以近似为:

h s s d = − B T f ( x ) h_{ssd}=-B^Tf(x) hssd=BTf(x),并且 h s g n = − D f ( x ) h_{sgn}=-Df(x) hsgn=Df(x)

Dog Leg算法简单改进后就可以用到上述的近似量,初始矩阵 B = B 0 B=B_{0} B=B0可以通过不同的近似方法得到,并且 D 0 D_{0} D0可以近似为 B 0 − 1 B_{0}^{-1} B01。显然可知当前情况下,矩阵 B B B和矩阵 D D D满足 B D = I BD=I BD=I。参数 α \alpha α可以由下式求得:

α = − h T B T f ( x ) ∣ ∣ B h ∣ ∣ = ∣ ∣ g ∣ ∣ 2 ∣ ∣ B g ∣ ∣ 2 \alpha=-\frac{h^TB^Tf(x)}{||Bh||}=\frac{||g||^2}{||Bg||^2} α=BhhTBTf(x)=Bg2g2

和L-M算法的割线型类似,这种方法也需要额外计算来进行迭代从而保证矩阵 B B B D D D是雅可比矩阵和其逆矩阵的近似估计效果。我们发现采用3.6节 c o s θ = ∣ h T e j ∣ ∣ ∣ h ∣ ∣ ⋅ ∣ ∣ e j ∣ ∣ < γ ⇌ ∣ h j ∣ < γ ∣ ∣ h ∣ ∣ cos\theta=\frac{|h^Te_j|}{||h||\cdot ||e_j||}<\gamma \rightleftharpoons |h_j|<\gamma||h|| cosθ=hejhTej<γhj<γh公式在这里也有较好的表现。
每一次迭代计算 D n e w D_{new} Dnew大概需要 10 n 2 10n^2 10n2次浮点运算,并且计算 h s s d h_{ssd} hssd h s g n h_{sgn} hsgn以及 α \alpha α大概需要 6 n 2 6n^2 6n2次浮点计算,因此结合自由梯度法的Dog Leg方法每次迭代除计算$f(x_{new})外需要 16 n 2 16n^2 16n2次浮点运算,而Dog Leg算法每次迭代除计算 f ( x n e w ) f(x_{new}) f(xnew) J ( x n e w ) J(x_{new}) J(xnew)外还需 2 3 n 3 + 6 n 2 \frac{2}{3}n^3+6n^2 32n3+6n2次浮点运算。因此当 n n n很大时,结合自由梯度法的Dog Leg方法效率更高。但是考虑到迭代次数通常非常大,并且如果雅可比矩阵可以计算时,梯度法的Dog Leg方法通常收敛更快。

3.7 总结

文中介绍了一系列用于解决非线性最小二乘问题的算法,可在任何一个优秀的程序库中找到,其具体应用可以在GAMS(Guide to Available Mathematical Software)中找到,网址为: h t t p : / / g a m s . n i s t . g o v http://gams.nist.gov http://gams.nist.gov。本文中的示例可以在MATLAB中进行计算,相关的程序可以toolbox immoptibox中找到,详见:$http:/www.imm.dtu.dk/~hbn/immoptibox。最后,需要提及的是,针对具体问题,有时候重新推导公式可能会使得问题简化。(博客仅仅将文中的思路和文字进行了翻译,舍弃了大量的examples,但是这些example对于深刻理解和熟悉算法是特别重要的,感兴趣的作者可移步原文)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值