信赖域方法
前面提到了Line Search算法分为两步,首先确定方向,然后确定步长,实际上是假设近似模型在某一方向上可以较好的代表真实模型。Trust region算法则在此基础上,假设在一个选定的可信赖区域中,可以选择一个近似模型较好的代表真实模型,从而计算迭代增量。
信赖域方法的一般形式
由上面的表述我们可以得到信赖域方法的几个要素
- 近似模型 m k m_k mk
- 可信赖区域 Ω k = { x ∈ R n ∣ ∣ ∣ x − x k ∣ ∣ ≤ Δ k } \Omega_k=\{x\in R^n|||x-x_k||\le\Delta_k\} Ωk={x∈Rn∣∣∣x−xk∣∣≤Δk},其中 Δ k \Delta_k Δk称为信赖域半径
- 迭代增量 p k p_k pk。包括方向和步长。
由此我们可以得到信赖域方法的基本形式
假设目标函数为
f
(
x
)
f(x)
f(x),令
m
k
(
p
)
=
f
(
x
k
+
p
)
m_k(p)=f(x_k+p)
mk(p)=f(xk+p)。在第k次迭代中的增量
p
k
=
arg
min
k
m
k
(
p
)
s
.
t
.
∣
∣
p
∣
∣
≤
Δ
k
p_k=\arg\min_km_k(p)~~s.t. ||p||\le\Delta_k
pk=argkminmk(p) s.t.∣∣p∣∣≤Δk
这个问题称为信赖域方法的子问题。该问题为带约束的优化问题。可以使用KKT条件进行求解。但是实际问题中我们并不一定要找到最优解。
近似模型的选取
近似模型的选取可以有很多种。一般在当前的邻域对函数进行泰勒展开并取前几项就得到了一个近似模型。在此不多举例。
衡量近似模型对于真实模型的效果,我们使用预测下降量与实际下降量的比值来评判。
假设求解上面的优化问题得到第k步的增量为
p
k
p_k
pk。目标函数在第k步的实际下降量记为
A
r
e
d
k
=
f
(
x
k
)
−
f
(
x
k
+
p
k
)
Ared_k=f(x_k)-f(x_k+p_k)
Aredk=f(xk)−f(xk+pk)
近似模型的下降量为:
P
r
e
d
k
=
m
k
(
0
)
−
m
k
(
p
k
)
Pred_k=m_k(0)-m_k(p_k)
Predk=mk(0)−mk(pk)
定义比值:
r
k
=
A
r
e
d
k
/
P
r
e
d
k
r_k=Ared_k/Pred_k
rk=Aredk/Predk
它可以衡量二次模型与目标函数的逼近程度,
r
k
r_k
rk越接近于1,表明接近程度越好。
信赖域半径的确定
使用上面得到的 r k r_k rk,我们可以确定下次迭代的信赖域半径。
- r k r_k rk接近1,表明近似效果好,可以适当增加信赖域半径
- r k > 0 r_k>0 rk>0但是不接近1,保存 Δ k \Delta_k Δk不变
- r k r_k rk接近于0,减小信赖域半径
- r k < 0 r_k<0 rk<0,缩小信赖域
信赖域算法流程
由此我们得到信赖域算法的步骤
- 给出初始点 x 0 x_0 x0和初始信赖域半径 Δ 0 \Delta_0 Δ0,开始迭代
- 计算模型在第k步的近似。求解最优化子问题,得到试探步长。
- 求解 r k r_k rk
- 若 r k ≤ 0.25 r_k\le 0.25 rk≤0.25,缩小信赖域半径,令 Δ k + 1 = ∣ ∣ s k ∣ ∣ / 4 \Delta_{k+1}=||s_k||/4 Δk+1=∣∣sk∣∣/4。若 r k > 0.75 r_k>0.75 rk>0.75,扩大信赖域半径,使得 Δ k + 1 = 2 Δ \Delta_{k+1}=2\Delta Δk+1=2Δ。若 0.25 < r k ≤ 0.75 0.25<r_k\le 0.75 0.25<rk≤0.75。维持当前信赖域半径。若 r k < 0 r_k<0 rk<0,缩小信赖域重新计算当前试探步长。
LM算法
前面提到LM算法是一种信赖域方法,具体来说,它是选取二次函数逼近真实模型的信赖域算法。
在第k次迭代左右,我们使用二次函数来近似当前模型有
f
(
x
k
+
p
)
=
f
k
+
g
k
T
p
+
1
2
p
T
Δ
2
f
k
p
f(x_k+p)=f_k+g_k^Tp+\frac{1}{2}p^T\Delta^2f_kp
f(xk+p)=fk+gkTp+21pTΔ2fkp
Hessian矩阵的计算过于复杂,我们经常使用对称非奇异矩阵
B
k
B_k
Bkj近似Hessian矩阵,即
m
k
=
f
k
+
g
k
T
p
+
1
2
p
T
B
k
p
m_k=f_k+g^T_kp+\frac{1}{2}p^TB_kp
mk=fk+gkTp+21pTBkp
信赖域的子问题表示为
p
^
=
min
m
(
p
)
=
f
+
g
T
p
+
1
2
p
T
B
p
s
.
t
.
∣
∣
p
∣
∣
≤
Δ
k
\hat p = \min m(p)=f+g^Tp+\frac{1}{2}p^TBp~s.t.||p||\le \Delta_k
p^=minm(p)=f+gTp+21pTBp s.t.∣∣p∣∣≤Δk
使用KKT条件可以得到该问题的最优解。假设最优解为 p ∗ p^* p∗,此时存在标量 λ \lambda λ满足
- B + λ I = − g B+\lambda I=-g B+λI=−g
- λ ( Δ − ∣ ∣ P ∗ ∣ ∣ ) = 0 \lambda(\Delta-||P^*||)=0 λ(Δ−∣∣P∗∣∣)=0
- ( B + λ I ) (B+\lambda I) (B+λI)正定
可以看到LM算法中 B = J T J B=J^TJ B=JTJ。条件3自然满足。从而得到 ( J T J + λ I ) p k = − J T b (J^TJ + \lambda I)p_k=-J^Tb (JTJ+λI)pk=−JTb。这里实际上是使用了 λ \lambda λ隐式的表达信赖域。
DogLeg方法
类似LM算法,DogLeg方法同样结合了高斯牛顿法和梯度下降法。不同的是它显式的使用了信赖域。
使用高斯牛顿法和梯度下降法分别得到迭代的步长
δ
g
n
\delta _{gn}
δgn和
δ
s
d
\delta _{sd}
δsd。对半径为
Δ
\Delta
Δ的信赖域使用DogLeg方法计算出来的步长为
δ
d
l
:
=
{
δ
g
n
,
∣
∣
δ
g
n
∣
∣
<
Δ
Δ
δ
s
d
δ
s
d
,
∣
∣
δ
s
d
∣
∣
>
Δ
δ
s
d
+
β
(
δ
g
n
−
δ
s
d
)
,
∣
∣
δ
g
n
∣
∣
>
Δ
,
∣
∣
δ
s
d
∣
∣
<
Δ
\delta_{dl}:=\left\{\begin{aligned} &\delta_{gn}, &||\delta_{gn}||<\Delta\\ &\frac{\Delta}{\delta_{sd}}\delta_{sd}, &||\delta_{sd}||>\Delta \\ &\delta_{sd}+\beta(\delta_{gn}-\delta_{sd}), &||\delta_{gn}||>\Delta,||\delta_{sd}||<\Delta \end{aligned} \right.
δdl:=⎩⎪⎪⎪⎨⎪⎪⎪⎧δgn,δsdΔδsd,δsd+β(δgn−δsd),∣∣δgn∣∣<Δ∣∣δsd∣∣>Δ∣∣δgn∣∣>Δ,∣∣δsd∣∣<Δ
可以看到,DogLeg方法实际上使用了如下策略:
- 如果高斯牛顿法的步长小于信赖域半径,则等同于高斯牛顿法
- 如果高斯牛顿法和梯度下降法步长都大于信赖域半径,则将梯度下降法的步长缩放到信赖域半径。
- 如果不满足以上条件,则以连接 δ g n \delta_{gn} δgn与 δ s d \delta_{sd} δsd的端点,与信赖域相交于某一点d,从原点指向d的向量即为本次迭代的步长。