一、一些基础概念[1]
1.最小二乘法定义
找到一个
x
∗
{x^*}
x∗,使得下面的式子到达局部最小值,
F
(
x
)
=
1
2
∑
i
=
1
m
(
f
i
(
x
)
)
2
(1-1)
F(x) = \frac{1}{2}\sum\limits_{i = 1}^m {{{({f_i}(x))}^2}}\tag{1-1}
F(x)=21i=1∑m(fi(x))2(1-1)这里的
f
i
(
x
)
{{f_i}(x)}
fi(x)表示变量为
x
x
x的函数,其中自变量
x
x
x维度为
n
n
n,函数个数
i
=
1
,
2
,
⋯
,
m
i = 1,2, \cdots ,m
i=1,2,⋯,m,最小二乘问题要求
m
≥
n
m \ge n
m≥n,即方程的个数
≥
\ge
≥未知数的个数。
一般而言, f i ( x ) = y i ( x ) − y i {f_i}(x) = y_i(x) - y_i fi(x)=yi(x)−yi,即 f i ( x ) f_i(x) fi(x)由两个部分组成:含有自变量 x x x的函数 y ( x ) y(x) y(x)(估计值)+不含 x x x的常数 y y y(测量值)。而 f i ( x ) f_i(x) fi(x)叫做残差项,式(1-1)的核心思想就是使残差的平方和最小。
2.全局最小值
给定目标函数
F
F
F,找到一个
x
x
x使得下面的式子最小,
x
+
=
arg
min
x
F
(
x
)
(1-2)
{x^ + } = \arg \mathop {\min }\limits_x F(x)\tag{1-2}
x+=argxminF(x)(1-2)
3.局部最小值
给定目标函数
F
F
F,找到一个
x
∗
x^*
x∗使得,
F
(
x
∗
)
≤
F
(
x
)
f
o
r
∥
x
−
x
∗
∥
<
δ
(1-3)
F({x^*}) \le F(x)\;\;\;\;for\;\;\;\;\left\| {x - {x^*}} \right\| < \delta\tag{1-3}
F(x∗)≤F(x)for∥x−x∗∥<δ(1-3)这里的
δ
\delta
δ是一个非常小的无限趋近于零的值。
4.局部最小值的必要条件
若
x
∗
x^*
x∗是一个局部最小值点,则有,
g
∗
=
F
′
(
x
∗
)
=
0
(1-4)
{g^*} = {F^{'}}(x^*) = 0\tag{1-4}
g∗=F′(x∗)=0(1-4)这里的
g
=
[
∂
F
(
x
)
∂
x
1
⋯
∂
F
(
x
)
∂
x
n
]
T
g = {\left[ {\begin{array}{l} {\frac{{\partial F(x)}}{{\partial {x_1}}}}& \cdots &{\frac{{\partial F(x)}}{{\partial {x_n}}}} \end{array}} \right]^T}
g=[∂x1∂F(x)⋯∂xn∂F(x)]T,表示
F
(
x
)
F(x)
F(x)的梯度。
5.驻点
若有
x
s
{x_s}
xs使得,
g
s
=
F
′
(
x
s
)
=
0
(1-5)
{g_s} = {F^{'}}({x_s}) = 0\tag{1-5}
gs=F′(xs)=0(1-5)则
x
s
{x_s}
xs为函数
F
(
x
)
F(x)
F(x)的驻点。
驻点的含义是在
x
s
{x_s}
xs处,
F
′
(
x
s
)
=
0
{F^{'}}({x_s}) = 0
F′(xs)=0,
F
(
x
)
F(x)
F(x)的函数值在该点处既没有增大的趋势,也没有减小的趋势,那么驻点
x
s
{x_s}
xs有会有以下三种情况:
6.局部最小值点的充要条件
若
x
s
{x_s}
xs为驻点且
F
′
′
(
x
s
)
{F^{''}}({x_s})
F′′(xs)正定,则
x
s
{x_s}
xs为局部最小值点。
这里的
F
′
′
(
x
s
)
=
H
=
[
∂
2
F
(
x
)
∂
x
i
∂
x
j
]
{F^{''}}({x_s}) = H = \left[ {\frac{{{\partial ^2}F(x)}}{{\partial {x_i}\partial {x_j}}}} \right]
F′′(xs)=H=[∂xi∂xj∂2F(x)],
H
H
H为Hessian矩阵,表示函数
F
(
x
)
F(x)
F(x)的二阶导。
7.最小二乘问题的两种解的形式
<1>闭式解(closed-form solution)
能够直接给出优化问题解的解析形式,如下面要说的线性最小二乘。
<2>迭代解(iterative solution)
没有解析形式,只能从一个初始值
x
0
x_0
x0开始,一步步迭代求解得到
x
1
,
x
2
,
⋯
{x_1},{x_2}, \cdots
x1,x2,⋯。对于最优化问题,需要一步步迭代,并最终收敛到局部最小值点
x
∗
x^*
x∗,且迭代要满足以下条件:
F
(
x
k
+
1
)
<
F
(
x
k
)
(1-6)
F({x_{k + 1}}) < F({x_k})\tag{1-6}
F(xk+1)<F(xk)(1-6)
二、下降方法
1. 下降方法是迭代解法的一种,其含义是:沿着一个下降的方向以一定的步长下降,一般这种下降方向就是朝着局部极小值点收敛的方向。所以下降法就要求解两个参数:
- 找到一个下降方向 h d h_d hd;
- 确定步长 α \alpha α使 F ( x ) F(x) F(x)合适的减小。
2.下降法的步骤如下:
初值设置: 迭代次数
k
=
0
k=0
k=0,迭代初值
x
=
x
0
x=x_0
x=x0,下降方向的找到的标志位
f
o
u
n
d
=
f
a
l
s
e
found=false
found=false;
寻找步骤: 寻找下降方向
h
d
=
s
e
a
r
c
h
_
d
i
r
e
c
t
i
o
n
(
x
)
{h_d} = search\_direction(x)
hd=search_direction(x)和下降步长
α
=
s
t
e
p
_
l
e
n
g
t
h
(
x
,
h
d
)
\alpha = step\_length(x,{h_d})
α=step_length(x,hd)。
更新步骤: 更新解
x
=
x
+
α
h
d
x = x + \alpha {h_d}
x=x+αhd和迭代次数
k
=
k
+
1
k=k+1
k=k+1。
结束循环标志: 迭代次数达到设定值(
k
<
k
m
a
x
k<k_{max}
k<kmax)+没找到下降方向(
f
o
u
n
d
=
t
r
u
e
found=true
found=true,此时的
x
x
x为驻点)。
3.寻找下降方向的原理
考虑目标函数
F
(
x
)
F(x)
F(x)在
x
x
x处的泰勒展开,
F
(
x
+
α
h
)
=
F
(
x
)
+
α
h
T
F
′
(
x
)
+
O
(
α
2
)
≈
F
(
x
)
+
α
h
T
F
′
(
x
)
(2-1)
\begin{array}{l} F(x + \alpha h) = F(x) + \alpha {h^T}{F^{'}}(x) + O({\alpha ^2})\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; \approx F(x) + \alpha {h^T}{F^{'}}(x) \end{array}\tag{2-1}
F(x+αh)=F(x)+αhTF′(x)+O(α2)≈F(x)+αhTF′(x)(2-1)这里式(2-1)里的
α
\alpha
α要足够小,式(2-1)才能成立。
从式(2-1)里可以总结出:如果 h T F ′ ( x ) < 0 h^TF^{'}(x)<0 hTF′(x)<0,则 h h h一定是下降方向。这里很好证明,若 h T F ′ ( x ) < 0 h^TF^{'}(x)<0 hTF′(x)<0,则式(2-1)里 F ( x + α h ) ≈ F ( x ) + 负 数 F(x + \alpha h) \approx F(x)+负数 F(x+αh)≈F(x)+负数,会有 F ( x + α h ) < F ( x ) F(x + \alpha h) < F(x) F(x+αh)<F(x),符合式(1-6)里的定义。
根据这一原理,有两种下降方向:最速下降方向( h s d h_{sd} hsd,Steepest Descent)和牛顿方向( h n h_n hn)。
4.最速下降方向——最速下降法
含义:在点
x
x
x处下降速度最快的方向。可以证明,最速下降方向为函数
F
(
x
)
F(x)
F(x)在
x
x
x处的负梯度。
证明如下:
取式(2-1)中的最后一项,
h
T
F
′
(
x
)
=
∥
h
∥
∥
F
′
(
x
)
∥
cos
θ
=
∥
F
′
(
x
)
∥
cos
θ
(2-2)
{h^T}{F^{'}}(x) = \left\| h \right\|\left\| {{F^{'}}(x)} \right\|\cos \theta = \left\| {{F^{'}}(x)} \right\|\cos \theta\tag{2-2}
hTF′(x)=∥h∥∥∥∥F′(x)∥∥∥cosθ=∥∥∥F′(x)∥∥∥cosθ(2-2)其中
θ
\theta
θ表示的是向量
h
h
h和向量
F
′
(
x
)
F^{'}(x)
F′(x)的夹角。
那么,当式(2-2)中的
θ
=
π
\theta=\pi
θ=π时,式(2-2)达到最小值。当
α
\alpha
α取定时,
∥
F
(
x
+
α
h
)
−
F
(
x
)
∥
\left\| {F(x + \alpha h) - F(x)} \right\|
∥F(x+αh)−F(x)∥最大,即此时下降最快,且方向为负梯度方向,
h s d = − F ′ ( x ) ∥ F ′ ( x ) ∥ (2-3) {h_{sd}} = - \frac{{{F^{'}}(x)}}{{\left\| {{F^{'}}(x)} \right\|}}\tag{2-3} hsd=−∥F′(x)∥F′(x)(2-3)
5.牛顿下降方向——牛顿法
牛顿方向考虑
F
′
(
x
)
F^{'}(x)
F′(x)在
x
x
x处的泰勒展式,
F
′
(
x
+
h
)
=
F
′
(
x
)
+
F
′
′
(
x
)
h
+
O
(
∥
h
∥
)
≈
F
′
(
x
)
+
F
′
′
(
x
)
h
(2-4)
\begin{array}{l} {F^{'}}(x + h) = {F^{'}}(x) + {F^{''}}(x)h + O(\left\| h \right\|)\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{\kern 1pt} {\kern 1pt} \approx {F^{'}}(x) + {F^{''}}(x)h \end{array}\tag{2-4}
F′(x+h)=F′(x)+F′′(x)h+O(∥h∥)≈F′(x)+F′′(x)h(2-4)
因为局部最小值也是驻点的一种,所以在
x
∗
x^*
x∗附近,有
F
′
(
x
∗
)
=
0
F^{'}(x^*)=0
F′(x∗)=0。因此,令式(2-4)等于零,就可以得到牛顿下降方向,
h
n
=
−
(
F
′
′
(
x
)
)
−
1
F
′
(
x
)
(2-5)
{h_n} = - {({F^{''}}(x))^{ - 1}}{F^{'}}(x)\tag{2-5}
hn=−(F′′(x))−1F′(x)(2-5)可以证明,式(2-5)所示的方向是一个下降方向。因为二阶导矩阵
H
=
F
′
′
(
x
)
H=F^{''}(x)
H=F′′(x)为正定矩阵,所以有
u
T
H
u
>
0
{u^T}Hu > 0
uTHu>0,同理,对于一个非零向量
h
T
h^T
hT,有,
0
<
h
n
T
H
h
n
=
−
h
n
T
F
′
(
x
)
(2-6)
0 < h_n^TH{h_n} = - h_n^T{F^{'}}(x)\tag{2-6}
0<hnTHhn=−hnTF′(x)(2-6)符合2.3中下降方向的判定条件。
6.最速下降法vs牛顿法
最速下降法使用的是最速下降方向,始终朝着下降速度最快的方向的下降,所以在距离最小值点
x
∗
x^*
x∗较远的地方,表现较好。并且可以证明,最速下降法的收敛速度为线性收敛,比较慢。
牛顿法使用了牛顿方向,从2.5的推算过程可以看出,它是在局部最小值附近,通过
F
′
(
x
∗
)
=
0
F^{'}(x^*)=0
F′(x∗)=0推出来的,所以其在局部最小值附近表现较好。并且也可以证明,它的收敛速度为平方收敛,速度快。但是用牛顿法求解最小值时,要求矩阵
H
H
H正定,若
H
H
H为非正定矩阵,则无法使用牛顿法。
所以,有人综合最速下降法和牛顿法,提出了hybrid方法。该方法描述如下:如果 H H H正定,则取牛顿方向 h = h n h=h_n h=hn;如果 H H H非正定,则取最速下降方向 h = h s d h=h_{sd} h=hsd。但在复杂的问题里,hybrid方法也很难被应用,因为在很多问题中,矩阵 H H H一般计算不出来,所以这就要用到Gaussian-Newton法或者Levenberg-Marquardt法。
7.确定步长的方法1——Line Search[2]
当已知当前迭代变量
x
x
x和下降方向
h
h
h时,此时,需要做的是确定一个步长
α
\alpha
α,使目标函数得到一个合适的下降。Line Search的做法就是把
x
x
x和
h
h
h当做常数,把
α
\alpha
α当做待求解的变量,因此,有,
φ
(
α
)
=
F
(
x
+
α
h
)
(2-7)
\varphi (\alpha ) = F(x + \alpha h)\tag{2-7}
φ(α)=F(x+αh)(2-7)对式(2-7)求导,有,
φ ′ ( α ) = F ( x ) + α h T F ′ ( x ) (2-8) {\varphi ^{'}}(\alpha ) = F(x) + \alpha {h^T}{F^{'}}(x)\tag{2-8} φ′(α)=F(x)+αhTF′(x)(2-8)令式(2-8)中的 α = 0 \alpha=0 α=0,因为 h h h为一个下降方向,所以有 φ ′ ( 0 ) = h T F ′ ( x ) < 0 {\varphi ^{'}}(0) = {h^T}{F^{'}}(x) < 0 φ′(0)=hTF′(x)<0。所以 φ ( α ) \varphi (\alpha ) φ(α)的函数曲线大致如下,
对于上图,对
α
\alpha
α的选择会产生三种情况:
- cond1: α \alpha α很小使得目标函数 F ( x ) F(x) F(x)下降的幅度特别小,此时应该增大 α \alpha α;
- cond2: α \alpha α很大,这样会造成 φ ( α ) ≥ φ ( 0 ) \varphi (\alpha ) \ge \varphi (0) φ(α)≥φ(0),这不符合下降法的定义,即没有朝着下降的方向前进;
- cond3: α \alpha α非常接近函数的 φ ( α ) \varphi (\alpha ) φ(α)的局部最小值点,此时合适可取。
精确的Line Search 方法如下,
α
e
=
arg
min
α
>
0
F
(
x
+
α
h
)
(2-9)
{\alpha _e} = \arg \mathop {\min }\limits_{\alpha > 0} F(x + \alpha h)\tag{2-9}
αe=argα>0minF(x+αh)(2-9)具体细节参考文献[2]里的Section2.5-2.6。
由于精确的Line Search方法非常耗时,而且当搜索方向
h
h
h与方向
x
−
x
∗
x-x*
x−x∗相差很大时,就没有必要计算(2-9)里函数
φ
(
α
)
\varphi (\alpha )
φ(α)真正的最小值。所以,对于Line Search就没有必要很精确,从而提出了soft line search。这种方法就是接受不满足cond1和cond2的
α
\alpha
α值,具体细节参考文献[2]Section2.5。
8.确定步长的方法2——信赖域法(Trust Region)和阻尼法(Damped)
2.7中的Line Research方法要分两步走:先确定下降方向
h
h
h后,再计算
α
\alpha
α的大小。而这里的信赖域法和阻尼法则不用分步,它可以同时得到下降方向和步长。
它们的原理是在
x
x
x的邻域内,用一个模型函数
L
L
L来近似目标函数
F
F
F:
F
(
x
+
h
)
≈
L
(
h
)
=
F
(
x
)
+
h
T
c
+
1
2
h
T
B
h
T
(2-10)
F(x + h) \approx L(h) = F(x) + {h^T}c + \frac{1}{2}{h^T}B{h^T}\tag{2-10}
F(x+h)≈L(h)=F(x)+hTc+21hTBhT(2-10)这里要注意式(2-10)的
L
(
h
)
L(h)
L(h)里的三项不是
F
(
x
+
h
)
F(x+h)
F(x+h)泰勒展式的前三项,因为,
F
(
x
+
h
)
≈
F
(
x
)
+
h
T
g
+
1
2
h
T
H
h
T
(2-11)
F(x + h) \approx F(x) + {h^T}g + \frac{1}{2}{h^T}H{h^T}\tag{2-11}
F(x+h)≈F(x)+hTg+21hTHhT(2-11)这里的
c
≠
g
,
B
≠
H
c \ne g,B \ne H
c=g,B=H。所以
L
(
h
)
L(h)
L(h)是
F
(
x
)
F(x)
F(x)在模型意义上的近似,它只是近似等于
F
(
x
)
F(x)
F(x)取泰勒展式前三项的结果。当然,这种近似只有在
h
h
h很小时才成立。
那么,信赖域法的策略是:假设在当前变量 x x x的一定范围内,即以 x x x为中心,以 Δ \Delta Δ为半径的范围内,模型 L ( h ) L(h) L(h)对 F F F的近似足够精确,那么此时的下降方向为,
h
=
h
t
r
=
arg
min
∥
h
∥
≤
Δ
L
(
h
)
(2-12)
h = {h_{tr}} = \arg \mathop {\min }\limits_{\left\| h \right\| \le \Delta } L(h)\tag{2-12}
h=htr=arg∥h∥≤ΔminL(h)(2-12)而阻尼法的策略是:给
L
(
h
)
L(h)
L(h)一个惩罚项
1
2
μ
h
T
h
\frac{1}{2}\mu {h^T}h
21μhTh(也叫正则项,机器学习里的
l
2
l_2
l2正则器就是这个),以防止
h
h
h过大造成的近似不精确,
h
=
h
d
m
=
arg
min
h
{
L
(
h
)
+
1
2
μ
h
T
h
}
(2-13)
h = {h_{dm}} = \arg \mathop {\min }\limits_h \{ L(h) + \frac{1}{2}\mu {h^T}h\}\tag{2-13}
h=hdm=arghmin{L(h)+21μhTh}(2-13)此时的步长选取策略为:若
h
h
h是一个下降方向,直接取
α
=
1
\alpha=1
α=1;若不是,取
α
=
0
\alpha=0
α=0,本次迭代无效。
式(2-12)和式(2-13)中的
h
h
h只能保证模型函数
L
(
h
)
L(h)
L(h)是下降的,由于
L
(
h
)
L(h)
L(h)只是
F
(
x
)
F(x)
F(x)的近似,所以,它的下降并不能保证函数
F
F
F是不是真的在下降,所以,这里就提出了gain ratio的概念,这个参数是用来衡量模型下降品质的参数,定义如下:
ρ
=
F
(
x
)
−
F
(
x
+
h
)
L
(
0
)
−
L
(
h
)
(2-14)
\rho = \frac{{F(x) - F(x + h)}}{{L(0) - L(h)}}\tag{2-14}
ρ=L(0)−L(h)F(x)−F(x+h)(2-14)显然,该式的分母始终为正,因为
h
h
h会使
L
(
h
)
L(h)
L(h)下降。所以,当
ρ
\rho
ρ为正时,表示分子也为正,此时
F
(
x
)
>
F
(
x
+
h
)
F(x)>F(x+h)
F(x)>F(x+h),符合式(1-6),表示目标函数
F
F
F也在下降,本次迭代有效;但当
ρ
\rho
ρ为负时,则表示目标函数
F
F
F在增大,不符合要求。
根据 ρ \rho ρ值的大小,可以确定信赖域法的 Δ \Delta Δ和阻尼法的 μ \mu μ。
-
在信赖域法中,根据 ρ \rho ρ值的不同,可以适当的调整 Δ \Delta Δ的大小,使 F F F获得一个合适的下降。通常,下面的这个策略被广泛使用,
i f ρ < 0.25 Δ = Δ / 2 e l s e i f ρ > 0.75 Δ = max { Δ , 3 ∗ ∥ h ∥ } (2-15) \begin{array}{l} if\;\;\rho < 0.25\\ \;\;\;\;\;\Delta = \Delta /2\\ else\;\;if\;\rho > 0.75\\ \;\;\;\;\;\Delta = \max \{ \Delta ,3*\left\| h \right\|\} \\ \;\;\;\; \end{array}\tag{2-15} ifρ<0.25Δ=Δ/2elseifρ>0.75Δ=max{Δ,3∗∥h∥}(2-15)式(2-15)的含义是:当 ρ < 0.25 \rho<0.25 ρ<0.25时,说明 F F F的下降或上升大小比 L L L下降的四分之一还要小,表明该情况下的 L ( h ) L(h) L(h)对 F F F而言不是一个很好的近似,应该减小 Δ \Delta Δ;当 ρ > 0.75 \rho>0.75 ρ>0.75时,说明 L L L下降的幅度比较小,此时应该增大 Δ \Delta Δ。
对于式(2-15)里的阈值设定(0.25&0.75)以及除数因子(2)和乘法因子(3)的设定,信赖域法允许有较小的变动,但是选取这些参数的前提是:选取的参数最好不要使 Δ \Delta Δ有震荡。 -
阻尼法中的 μ \mu μ的选取原则与信赖域法中的 Δ \Delta Δ选取同理。当 ρ \rho ρ值很小时,说明 L L L不能很好的近似 F F F,所以要增大惩罚项,即增大 μ \mu μ的值;反之,当 ρ \rho ρ值很大时,说明 F F F下降幅度小,要减小惩罚项,即减小 μ \mu μ的值。基于此,马夸尔特提出了一种类似于式(2-15)的策略:
i f ρ < 0.25 μ = μ ∗ 2 e l s e i f ρ > 0.75 μ = μ / 3 (2-16) \begin{array}{l} if\;\;\rho < 0.25\\ \;\;\;\;\;\mu = \mu *2\\ else\;\;if\;\rho > 0.75\\ \;\;\;\;\;\mu = \mu /3\\ \;\;\;\; \end{array}\tag{2-16} ifρ<0.25μ=μ∗2elseifρ>0.75μ=μ/3(2-16)对于式(2-16)里的阈值设定(0.25&0.75)以及除数因子(3)和乘法因子(2)的设定,阻尼法允许有较小的变动,但是选取这些参数的前提是:选取的参数最好不要使 Δ \Delta Δ有震荡。
除了式(2-16),Nielsen提出了另外一种经验公式:
i f ρ > 0 μ = μ ∗ max { 1 3 , 1 − ( 2 ρ − 1 ) 3 } ; v = 2 e l s e μ = μ ∗ v ; v = 2 ∗ v (2-17) \begin{array}{l} if\;\;\rho > 0\\ \;\;\;\;\;\mu = \mu *\max \{ \frac{1}{3},1 - {(2\rho - 1)^3}\} ;\;\;v = 2\\ else\;\;\\ \;\;\;\;\;\mu = \mu *v;\;\;v = 2*v\\ \;\;\;\; \end{array}\tag{2-17} ifρ>0μ=μ∗max{31,1−(2ρ−1)3};v=2elseμ=μ∗v;v=2∗v(2-17)
9.阻尼法的进一步探讨——阻尼牛顿法
对于式(2-13),要想求其最小值,首先考虑
h
h
h必须是
φ
(
h
)
=
L
(
h
)
+
1
2
μ
h
T
h
\varphi (h) = L(h) + \frac{1}{2}\mu {h^T}h
φ(h)=L(h)+21μhTh的驻点,所以有,
φ
′
(
h
)
=
L
′
(
h
)
+
μ
h
=
0
(2-18)
{\varphi ^{'}}(h) = {L^{'}}(h) + \mu h = 0\tag{2-18}
φ′(h)=L′(h)+μh=0(2-18)再根据式(2-10)中
L
(
h
)
L(h)
L(h)的定义,有,
(
B
+
μ
I
)
h
d
m
=
−
c
(2-19)
(B + \mu I){h_{dm}} = - c\tag{2-19}
(B+μI)hdm=−c(2-19)这里的
I
I
I是单位阵,那么当
μ
\mu
μ足够大时,
B
+
μ
I
B+\mu I
B+μI肯定为正定矩阵,根据概念1.6,
h
d
m
h_{dm}
hdm必为
L
L
L的一个局部最小值点。
那么,再特殊化一点,取
c
=
F
′
(
x
)
,
B
=
F
′
′
(
x
)
c=F^{'}(x),B=F^{''}(x)
c=F′(x),B=F′′(x),则式(2-19)可改写如下,
(
F
′
′
(
x
)
+
μ
I
)
h
d
n
=
−
F
′
(
x
)
(2-20)
({F^{''}}(x) + \mu I){h_{dn}} = - {F^{'}}(x)\tag{2-20}
(F′′(x)+μI)hdn=−F′(x)(2-20)由于该式与牛顿法只差一个含有
μ
\mu
μ的阻尼项,所以,该式表示的方法叫做阻尼牛顿法(damped Newton)。该式可以从两个方面来看:
- 当 μ \mu μ很小时, ( F ′ ′ ( x ) + μ I ) ≈ F ′ ′ ( x ) ({F^{''}}(x) + \mu I) \approx {F^{''}}(x) (F′′(x)+μI)≈F′′(x),则 h d n = − ( F ′ ′ ( x ) ) − 1 F ′ ( x ) {h_{dn}} = - {({F^{''}}(x))^{ - 1}}{F^{'}}(x) hdn=−(F′′(x))−1F′(x),此时退化为牛顿法;
- 当 μ \mu μ很大时, ( F ′ ′ ( x ) + μ I ) ≈ μ ({F^{''}}(x) + \mu I) \approx \mu (F′′(x)+μI)≈μ,则 h d n = − 1 μ F ′ ( x ) {h_{dn}} = - \frac{1}{\mu }{F^{'}}(x) hdn=−μ1F′(x),此时退化为了最速下降法。
10.信赖域法与阻尼法的一致性探讨
式(2-12)表示的信赖域法实际上等价于一个带约束的优化问题。
min
h
L
(
h
)
s
.
t
.
h
T
h
≤
Δ
2
(2-21)
\mathop {\min }\limits_h \;\;L(h)\;\;\;s.t.\;\;{h^T}h \le {\Delta ^2}\tag{2-21}
hminL(h)s.t.hTh≤Δ2(2-21)对于学过机器学习里正则化理论的童鞋来说,这个式子是不是很眼熟。如果把目标函数
F
(
x
)
F(x)
F(x)当前一个未知的机器学习里所要估计的真实函数(实际上是求不出来的),那么机器学习的目的就是用已有的数据取求出一个模型函数
L
(
h
)
L(h)
L(h)来尽可能的贴近
F
(
x
)
F(x)
F(x),为了防止过拟合(过拟合的含义是:模型函数的表现很差,不能很好的近似
F
(
x
)
F(x)
F(x)),通常可以采用
l
2
l_2
l2正则器来建立约束,尽可能的防止过拟合。而式(2-21)就是一个对
L
(
h
)
L(h)
L(h)进行正则化的过程。它的目的是为了让
L
(
h
)
L(h)
L(h)可以最大程度的近似
F
(
x
)
F(x)
F(x),那么这样的情况下,对
F
(
x
)
F(x)
F(x)求最小值,就可以转换为对
L
(
h
)
L(h)
L(h)求最小值。而这里的
Δ
\Delta
Δ影响的就是模型函数近似的品质好坏,而品质的好坏就是根据
ρ
\rho
ρ判断出来的,所以
Δ
\Delta
Δ的值是根据
ρ
\rho
ρ的值不断变化的,即(2-15)里的策略。
式(2-21)其实是一个带约束的最优化问题,该类问题可以通过拉格朗日乘子法变成无约束的优化问题:
min
h
L
(
h
)
+
λ
(
h
T
h
−
Δ
2
)
(2-22)
\mathop {\min }\limits_h \;L(h) + \lambda ({h^T}h - {\Delta ^2})\tag{2-22}
hminL(h)+λ(hTh−Δ2)(2-22)显然,对式(2-22)求导然后等于零,可以求出其最小值。那么,式(2-22)对
h
h
h求导有,
L
′
(
h
)
+
2
λ
h
(2-23)
{L^{'}}(h) + 2\lambda h\tag{2-23}
L′(h)+2λh(2-23)再将上式反推回去,有,
L
(
h
)
+
λ
h
T
h
(2-24)
{L}(h) + \lambda {h^T}h\tag{2-24}
L(h)+λhTh(2-24)式(2-22)和式(2-24)的导数式都是式(2-23),所以可以得到式(2-22)中的最小值点其实与
Δ
\Delta
Δ无关,只与拉格朗日乘子
λ
\lambda
λ有关,若令
λ
=
1
2
μ
\lambda = \frac{1}{2}\mu
λ=21μ,则式(2-22)就变成了式(2-13)所示的阻尼法的求解形式。所以,信赖域法和阻尼法其实是一致的,它其实是一个最优化问题的两种表现形式。
三、线性最小二乘及其解法
1. 若概念1.1中的函数
f
i
(
x
)
{f_i}(x)
fi(x)为关于
x
x
x的线性函数,即
f
i
(
x
)
=
a
i
x
−
b
i
{f_i}(x) = {a_i}x - {b_i}
fi(x)=aix−bi,其中估计值
y
i
(
x
)
=
a
i
x
{y_i}(x) = {a_i}x
yi(x)=aix(线性函数),则概念1所示的问题为线性最小二乘问题。
对于线性最小二乘问题,可以直接闭式求解(closed-form),过程如下:
根据式(1-1),写成矩阵形式,有,
F
(
x
)
=
(
A
x
−
b
)
T
(
A
x
−
b
)
=
x
T
A
T
A
x
−
2
x
T
A
T
b
+
b
T
b
(3-1)
\begin{array}{l} F(x) = {(Ax - b)^T}(Ax - b)\\\\ \;\;\;\;\;\;\;{\kern 1pt} {\kern 1pt} {\kern 1pt} = {x^T}{A^T}Ax - 2{x^T}{A^T}b + {b^T}b \end{array}\tag{3-1}
F(x)=(Ax−b)T(Ax−b)=xTATAx−2xTATb+bTb(3-1)这里的
A
=
[
a
1
⋯
a
m
]
T
A = {\left[ {\begin{array}{l} {{a_1}}& \cdots &{{a_m}} \end{array}} \right]^T}
A=[a1⋯am]T,
b
=
[
−
b
1
⋯
−
b
m
]
T
b = {\left[ {\begin{array}{l} {{-b_1}}& \cdots &{{-b_m}} \end{array}} \right]^T}
b=[−b1⋯−bm]T。
对式(3-1)求导,有,
∂
F
(
x
)
∂
x
=
2
A
T
A
x
−
2
A
T
b
=
0
(3-2)
\frac{{\partial F(x)}}{{\partial x}} = 2{A^T}Ax - 2{A^T}b = 0\tag{3-2}
∂x∂F(x)=2ATAx−2ATb=0(3-2)则线性最小二乘的闭式解形式如下,
x
=
(
A
T
A
)
−
1
A
T
b
(3-3)
x = {({A^T}A)^{ -1}}{A^T}b\tag{3-3}
x=(ATA)−1ATb(3-3)对于线性最小二乘的解法,还可以用QR分解来做。Matlab里的
A
\
b
A\backslash b
A\b,就是用QR分解的方式来解的,它的求解精度要比式(1-8)高。
2. 举个用线性最小二乘拟合直线例子,若有以下六个点,坐标为: ( 0 , 0 ) , ( 2 , 0 ) , ( 1 , − 1 ) , ( 0 , 2 ) , ( − 1 , 1 ) , ( 1 , 1 ) (0,0),(2,0),(1, - 1),(0,2),( - 1,1),(1,1) (0,0),(2,0),(1,−1),(0,2),(−1,1),(1,1)。对以上的点进行直线拟合,直线方程取 y = k 1 x + k 2 y = k_1x + k_2 y=k1x+k2。
在这个问题里,自变量为 [ k 1 k 2 ] T {\left[ {\begin{array}{l} {{k_1}}&{{k_2}} \end{array}} \right]^T} [k1k2]T。按概念1,估计值 y ( x ) = k 1 x + k 2 y(x) = {k_1}x + {k_2} y(x)=k1x+k2,测量值 y = y y=y y=y,且 A A A和 b b b分别为:
A
=
[
0
,
2
,
1
,
0
,
−
1
,
1
1
,
1
,
1
,
1
,
1
,
1
]
T
A = {\left[ {\begin{array}{l} {{\rm{0,2,1,0, - 1,1}}}\\ {1,1,1,1,1,1} \end{array}} \right]^T}
A=[0,2,1,0,−1,11,1,1,1,1,1]T
b
=
[
0
,
0
,
−
1
,
2
,
1
,
1
]
T
b = {\left[ {{\rm{0,0, - 1,2,1,1}}} \right]^T}
b=[0,0,−1,2,1,1]Tmatlab里的结果为
k
1
k
2
=
[
−
0
.
4545
,
0
.
7273
]
T
{k_1}{k_2} = {[{\rm{ - 0}}{\rm{.4545}},{\rm{0}}{\rm{.7273}}]^T}
k1k2=[−0.4545,0.7273]T。
程序如下:
x=[0 2 1 0 -1 1]';
y=[0 0 -1 2 1 1]'
A=[x ones(6,1)];
b=y;
k1k2=A\b;
四、非线性最小二乘及其解法
1. 若概念1.1中的函数
f
i
(
x
)
{f_i}(x)
fi(x)为关于
x
x
x的非线性函数,即
f
i
(
x
)
=
y
i
(
x
)
−
y
i
{f_i}(x) = y_i(x) - y_i
fi(x)=yi(x)−yi,其中估计值
y
i
(
x
)
{y_i}(x)
yi(x)为非线性函数(例如,
y
i
(
x
)
=
c
o
s
(
x
)
y_i(x)=cos(x)
yi(x)=cos(x)),测量值
y
y
y为常数矩阵。则概念1.1所示的问题为非线性最小二乘问题。式(1-1)写成矩阵形式为,
F
(
x
)
=
1
2
∑
i
=
1
m
(
f
i
(
x
)
)
2
=
1
2
f
(
x
)
T
f
(
x
)
(4-1)
F(x) = \frac{1}{2}\sum\limits_{i = 1}^m {{{({f_i}(x))}^2}} = \frac{1}{2}f{(x)^T}f(x)\tag{4-1}
F(x)=21i=1∑m(fi(x))2=21f(x)Tf(x)(4-1)此时,对
f
(
x
)
f(x)
f(x)进行泰勒展开有,
f
(
x
+
h
)
=
f
(
x
)
+
J
(
x
)
h
+
O
(
∥
h
∥
2
)
(4-2)
f(x + h) = f(x) + J(x)h + O({\left\| h \right\|^2})\tag{4-2}
f(x+h)=f(x)+J(x)h+O(∥h∥2)(4-2)上式中的
J
(
x
)
J(x)
J(x)为雅克比矩阵,且
J
∈
R
m
×
n
J \in {R^{m \times n}}
J∈Rm×n。它的第
i
i
i行和第
j
j
j列表示如下,
J
(
x
)
i
j
=
∂
f
i
(
x
)
∂
x
j
(4-3)
J{(x)_{ij}} = \frac{{\partial {f_i}(x)}}{{\partial {x_j}}}\tag{4-3}
J(x)ij=∂xj∂fi(x)(4-3)这表示第
i
i
i个函数
f
i
(
x
)
f_i(x)
fi(x)对第
j
j
j维变量
x
j
x_j
xj求导。
注意到式(4-1),若目标函数
F
(
x
)
F(x)
F(x)对
x
j
x_j
xj求导,则有,
∂
F
(
x
)
∂
x
j
=
∑
i
=
1
m
f
i
(
x
)
∂
f
i
(
x
)
∂
x
j
(4-4)
\frac{{\partial F(x)}}{{\partial {x_j}}} = \sum\limits_{i = 1}^m {{f_i}(x)} \frac{{\partial {f_i}(x)}}{{\partial {x_j}}}\tag{4-4}
∂xj∂F(x)=i=1∑mfi(x)∂xj∂fi(x)(4-4)那么,
F
(
x
)
F(x)
F(x)的梯度可表示如下,
g
=
F
′
(
x
)
=
J
(
x
)
T
f
(
x
)
(4-5)
g={F^{'}}(x) = J{(x)^T}f(x)\tag{4-5}
g=F′(x)=J(x)Tf(x)(4-5)同理,考虑
F
(
x
)
F(x)
F(x)的二阶Hessian矩阵,有,
∂
2
F
(
x
)
∂
x
j
∂
x
k
=
∑
i
=
1
m
(
∂
f
i
(
x
)
∂
x
j
∂
f
i
(
x
)
∂
x
k
+
f
i
(
x
)
∂
2
f
i
(
x
)
∂
x
j
∂
x
k
)
(4-6)
\frac{{{\partial ^2}F(x)}}{{\partial {x_j}\partial {x_k}}} = \sum\limits_{i = 1}^m {(\frac{{\partial {f_i}(x)}}{{\partial {x_j}}}\frac{{\partial {f_i}(x)}}{{\partial {x_k}}} + {f_i}(x)\frac{{{\partial ^2}{f_i}(x)}}{{\partial {x_j}\partial {x_k}}})} \tag{4-6}
∂xj∂xk∂2F(x)=i=1∑m(∂xj∂fi(x)∂xk∂fi(x)+fi(x)∂xj∂xk∂2fi(x))(4-6)用雅克比矩阵表示上式为,
H
=
F
′
′
(
x
)
=
J
(
x
)
T
J
(
x
)
+
∑
i
=
1
m
f
i
(
x
)
f
i
′
′
(
x
)
(4-7)
H={F^{''}}(x) = J{(x)^T}J(x) + \sum\limits_{i = 1}^m {{f_i}(x)f_i^{''}(x)} \tag{4-7}
H=F′′(x)=J(x)TJ(x)+i=1∑mfi(x)fi′′(x)(4-7)
非线性最小二乘一般是没有解析解的,所以只能迭代求解。而一般的优化方法也能用于非线性最小二乘的求解,但是效率比较慢。而高效的方法有高斯-牛顿法(Gaussian-Newton Method,G-N Method),列文伯格-马夸尔特(Levenberg-Marquardt Method,L-M Method),Dog Leg方法等等。
2.高斯牛顿法(G-N Method)
前面说到牛顿法的原理是将原目标函数
F
(
x
)
F(x)
F(x)在
x
x
x处进行一阶泰勒展开后得出来的;而高斯牛顿法则是对
f
f
f进行一阶泰勒展开,
f
(
x
+
h
)
≈
l
(
h
)
=
f
(
x
)
+
J
h
(4-8)
f(x + h) \approx l(h) = f(x) + Jh\tag{4-8}
f(x+h)≈l(h)=f(x)+Jh(4-8)根据式(4-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
(4-9)
\begin{array}{l} F(x + h) \approx L(h) = \frac{1}{2}l{(h)^T}l(h)\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{\rm{ = }}\frac{1}{2}{f^T}f + {h^T}{J^T}f + \frac{1}{2}{h^T}{J^T}Jh\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{\rm{ = }}F(x) + {h^T}{J^T}f + \frac{1}{2}{h^T}{J^T}Jh \end{array}\tag{4-9}
F(x+h)≈L(h)=21l(h)Tl(h)=21fTf+hTJTf+21hTJTJh=F(x)+hTJTf+21hTJTJh(4-9)所以,
L
(
h
)
L(h)
L(h)是对原函数
F
(
x
)
F(x)
F(x)的近似。到这一步就可以看出来了,这里的
L
(
h
)
L(h)
L(h)实际上就是2.8里所描述的信赖域法的模型函数。其实,就是对2.8节里的信赖域法取:
c
=
J
f
,
B
=
J
T
J
c=J^f,B=J^TJ
c=Jf,B=JTJ的结果。
对
L
(
h
)
L(h)
L(h)进行求导,有,
L
′
(
h
)
=
J
T
f
+
J
T
J
h
,
L
′
′
(
h
)
=
J
T
J
(4-10)
{L^{'}}(h) = {J^T}f + {J^T}Jh\;\;,\;\;{L^{''}}(h) = {J^T}J\tag{4-10}
L′(h)=JTf+JTJh,L′′(h)=JTJ(4-10)根据牛顿法的推导,令
L
′
(
h
)
=
0
L^{'}(h)=0
L′(h)=0,有,
J
T
J
h
g
n
=
−
J
T
f
(4-11)
{J^T}J{h_{gn}} = - {J^T}f\tag{4-11}
JTJhgn=−JTf(4-11)式(4-11)中的
h
g
n
h_{gn}
hgn必为一个下降方向。因为若(4-11)有解,则
J
T
J
J^TJ
JTJ必正定,所以有,
h
g
n
T
F
′
(
x
)
=
h
g
n
T
J
T
f
=
−
h
g
n
T
J
T
J
h
g
n
<
0
(4-12)
{h_{gn}}^T{F^{'}}(x) = {h_{gn}}^T{J^T}f = - {h_{gn}}^T{J^T}J{h_{gn}} < 0\tag{4-12}
hgnTF′(x)=hgnTJTf=−hgnTJTJhgn<0(4-12)符合下降方向的判定条件。
高斯牛顿法与牛顿法相似,在接近局部最小值点 x ∗ x^* x∗时收敛性较好。但是,若 J T J J^TJ JTJ非正定,即 J T J J^TJ JTJ为奇异矩阵,则式(4-11)无解,此时高斯牛顿法就失效了。
高斯牛顿法的实质: 在上一节讲线性最小二乘法的解法过程中,由于残差函数
f
i
(
x
)
f_i(x)
fi(x)为线性函数,所以它有解析解,解的形式如下:
A
T
A
x
=
−
A
T
b
(
这
里
为
了
方
便
解
释
,
定
义
f
i
(
x
)
=
a
i
x
+
b
i
,
所
以
这
里
右
边
一
项
多
了
个
负
号
)
(4-13)
A^TAx=-A^Tb(这里为了方便解释,定义f_i(x)=a_ix+b_i,所以这里右边一项多了个负号)\tag{4-13}
ATAx=−ATb(这里为了方便解释,定义fi(x)=aix+bi,所以这里右边一项多了个负号)(4-13)比较式(4-13)和式(4-11),
线
性
最
小
二
乘
:
A
T
A
x
=
−
A
T
b
高
斯
牛
顿
法
:
J
T
J
h
g
n
=
−
J
T
f
\begin{array}{l} 线性最小二乘:{A^T}Ax = - {A^T}b\\\\ 高斯牛顿法:\;\;\;\;{J^T}J{h_{gn}} = - {J^T}f \end{array}
线性最小二乘:ATAx=−ATb高斯牛顿法:JTJhgn=−JTf不难看出,其实两种解的形式是一致的,即把
A
A
A看成
J
J
J,把
b
b
b看成
f
f
f。造成这一现象的原因是:高斯牛顿法对
f
f
f里的每一个函数进行了一阶泰勒近似,将原本的非线性函数
f
i
(
x
)
f_i(x)
fi(x)变成了线性函数。当其线性化完成后,原本的非线性最小二乘问题也就成为了线性最小二乘,所以它们解的形式是一致的。
非线性函数通过一阶泰勒展开舍弃高阶项可以将其变成线性函数,即非线性函数在 x x x处的一阶泰勒近似使其线性化。因为线性化函数是非常容易操作的,而非线性函数就非常复杂。所以,高斯牛顿法的实质就是讲非线性函数通过泰勒展开近似乘线性函数,然后进行求解。
其实这一思想,很多理论都有用到。举个滤波理论的例子:对于线性系统,我们可以用卡尔曼滤波(KF)进行状态估计;若系统为非线性系统,则就要通过泰勒展开使其线性化后再用KF求解,这就是扩展卡尔曼(EKF)的思想。
3.列文伯格-马夸尔特方法(L-M Method)
L-M方法解的形式如下,
(
J
T
J
+
μ
I
)
h
l
m
=
−
J
T
f
(4-13)
({J^T}J + \mu I){h_{lm}} = - {J^T}f\tag{4-13}
(JTJ+μI)hlm=−JTf(4-13)可以看出L-M方法就是在G-N方法的基础上加了一项阻尼项,所以它刚被提出来的时候,又叫做阻尼高斯牛顿法(damped Gauss-Newton Method)。
看式(4-13),若
μ
\mu
μ的取值足够大,则
(
J
T
J
+
μ
I
)
({J^T}J + \mu I)
(JTJ+μI) 必为正定矩阵,式(4-13)一定有解。从这个方面来看,L-M方法其实就是在G-N方法的基础上加了一个阻尼项,使得G-N方法一定有解。
但是从另外一个方面看,L-M方法也是2.8节的阻尼法中,对模型函数
L
(
h
)
L(h)
L(h)取
1
2
l
(
h
)
T
l
(
h
)
\frac{1}{2}l{(h)^T}l(h)
21l(h)Tl(h)的结果。那么,与阻尼法的分析类似,L-M方法里得到的下降方向
h
l
m
h_{lm}
hlm其实也是最速下降方向和高斯牛顿方向的一个折中或者选择:
- 当 μ \mu μ很大时, J T J + μ I ≈ μ {J^T}J + \mu I \approx \mu JTJ+μI≈μ,所以有 h l m ≈ − J T f μ = − F ′ ( x ) μ {h_{lm}} \approx - \frac{{{J^T}f}}{\mu } = - \frac{{{F^{'}}(x)}}{\mu } hlm≈−μJTf=−μF′(x),此时 h l m h_{lm} hlm近似为最速下降方向;
- 当 μ \mu μ很小时, J T J + μ I ≈ J T J {J^T}J + \mu I \approx J^TJ JTJ+μI≈JTJ,所以有 J T J h l m = − J T f {J^T}J{h_{lm}} = - {J^T}f JTJhlm=−JTf,此时 h l m h_{lm} hlm近似为高斯牛顿方向。
同样,与阻尼法的分析类似,L-M方法迭代的品质是可以通过gain ratio来很衡量的,即,
ρ
=
F
(
x
)
−
F
(
x
+
h
l
m
)
L
(
0
)
−
L
(
h
l
m
)
(4-14)
\rho = \frac{{F(x) - F(x + h_{lm})}}{{L(0) - L(h_{lm})}}\tag{4-14}
ρ=L(0)−L(hlm)F(x)−F(x+hlm)(4-14)这里证明一下分母肯定为正,这点在2.8节里有说明,但由于前面的
L
(
h
)
L(h)
L(h)没有具体形式,所以没证明。
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
J
T
f
+
(
J
T
J
+
μ
I
−
μ
I
)
h
l
m
)
=
1
2
h
l
m
T
(
μ
h
l
m
−
J
T
f
)
(4-15)
\begin{array}{l} L(0) - L({h_{lm}}) = - {h_{lm}}^T{J^T}f - \frac{1}{2}{h_{lm}}^T{J^T}J{h_{lm}}\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; = - \frac{1}{2}{h_{lm}}^T(2{J^T}f + ({J^T}J + \mu I - \mu I){h_{lm}})\\\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; = \frac{1}{2}{h_{lm}}^T(\mu {h_{lm}} - {J^T}f) \end{array}\tag{4-15}
L(0)−L(hlm)=−hlmTJTf−21hlmTJTJhlm=−21hlmT(2JTf+(JTJ+μI−μI)hlm)=21hlmT(μhlm−JTf)(4-15)上式中
h
l
m
T
h
l
m
{h_{lm}}^Th_{lm}
hlmThlm必为正,
−
h
l
m
J
T
f
-h_{lm}J^Tf
−hlmJTf也必为正(根据式(4-12)),所以分母为正。
所以,关于L-M方法中的参数 μ \mu μ选取,可以参考阻尼法中的式(2-16)和式(2-17)的策略。关于 μ \mu μ的初值选取,从以上的分析中可以看出, μ \mu μ和 J T J J^TJ JTJ是有关系的,所以通常 μ \mu μ的初值设定为: μ 0 = τ ∗ max { ( J T J ) i i } {\mu _0} = \tau * \max \{ {({J^T}J)_{ii}}\} μ0=τ∗max{(JTJ)ii},这里的 τ \tau τ由用户设定。
L-M方法迭代优化的停止条件:
- 若
x
∗
x^*
x∗为局部最小值点,则必有
F
′
(
x
∗
)
=
g
(
x
∗
)
=
0
F^{'}(x^*)=g(x*)=0
F′(x∗)=g(x∗)=0。根据这一特点,可以采用如下的策略:
∥ g ∥ ∞ ≤ ε 1 (4-16) {\left\| g \right\|_\infty } \le {\varepsilon _1}\tag{4-16} ∥g∥∞≤ε1(4-16)这里的 ε 1 {\varepsilon _1} ε1是一个很小的接近于零的正数,有用户自己设置。上式的含义是:经过若干次迭代后,存在一个 x x x的使得 ∥ g ∥ \left\| g \right\| ∥g∥趋近于零。 - 若迭代前后两次的
x
x
x变化很小,也可以认为
x
x
x到达了局部最小值点:
∥ x n e w − x ∥ ≤ ε 2 ( ∥ x ∥ + ε 2 ) (4-17) \left\| {{x_{new}} - x} \right\| \le {\varepsilon _2}(\left\| x \right\| + {\varepsilon _2})\tag{4-17} ∥xnew−x∥≤ε2(∥x∥+ε2)(4-17) - 设置最大迭代次数: k < k max k < {k_{\max }} k<kmax
具体的L-M方法流程:
[
初
始
化
]
:
k
=
0
,
v
=
2
,
x
=
x
0
A
=
J
T
J
,
g
=
J
T
f
f
o
u
n
d
=
(
∥
g
∥
∞
≤
ε
1
)
,
μ
=
τ
∗
max
{
a
i
i
}
[
循
环
]
:
w
h
i
l
e
(
n
o
t
f
o
u
n
d
)
a
n
d
(
k
<
k
max
)
k
=
k
+
1
;
S
o
l
v
e
(
A
+
μ
I
)
h
l
m
=
−
g
i
f
(
∥
h
l
m
∥
≤
ε
2
(
∥
x
∥
+
ε
2
)
)
f
o
u
n
d
=
t
r
u
e
e
l
s
e
x
n
e
w
=
x
+
h
l
m
r
h
o
=
F
(
x
)
−
F
(
x
n
e
w
)
L
(
0
)
−
L
(
h
l
m
)
i
f
ρ
>
0
x
=
x
n
e
w
A
=
J
T
J
,
g
=
J
T
f
f
o
u
n
d
=
(
∥
g
∥
∞
≤
ε
1
)
μ
=
μ
∗
max
{
1
3
,
1
−
(
2
ρ
−
1
)
3
}
,
v
=
2
e
l
s
e
μ
=
μ
∗
v
,
v
=
2
∗
v
\begin{array}{l} [初始化]:\\ k = 0,v = 2,x = {x_0}\\ A = {J^T}J,g = {J^T}f\\ found = ({\left\| g \right\|_\infty } \le {\varepsilon _1}),\mu = \tau * \max \{ {a_{ii}}\} \\\\ [循环]:\\ while\;\;(not\;\;found)\;\;and\;\;(k < {k_{\max }})\\ \;\;\;\;\;\;\;\;\;\;\;k = k + 1;Solve(A + \mu I){h_{lm}} = - g\\ \;\;\;\;\;\;\;\;\;\;\;if(\left\| {{h_{lm}}} \right\| \le {\varepsilon _2}(\left\| x \right\| + {\varepsilon _2}))\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;found = true\\ \;\;\;\;\;\;\;\;\;\;\;else\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{x_{new}} = x + {h_{lm}}\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;rho = \frac{{F(x) - F({x_{new}})}}{{L(0) - L({h_{lm}})}}\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;if\;\;\rho > 0\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;x = {x_{new}}\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;A = {J^T}J,g = {J^T}f\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; found = ({\left\| g \right\|_\infty } \le {\varepsilon _1})\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\mu = \mu * \max \{ \frac{1}{3},1 - {(2\rho - 1)^3}\} ,v = 2\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;else\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\mu = \mu * v,v = 2 * v \end{array}
[初始化]:k=0,v=2,x=x0A=JTJ,g=JTffound=(∥g∥∞≤ε1),μ=τ∗max{aii}[循环]:while(notfound)and(k<kmax)k=k+1;Solve(A+μI)hlm=−gif(∥hlm∥≤ε2(∥x∥+ε2))found=trueelsexnew=x+hlmrho=L(0)−L(hlm)F(x)−F(xnew)ifρ>0x=xnewA=JTJ,g=JTffound=(∥g∥∞≤ε1)μ=μ∗max{31,1−(2ρ−1)3},v=2elseμ=μ∗v,v=2∗v
参考文献:
[1] METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS
[2] Unconstrained Optimization, 3rd Edition.