第三章: 线搜索算法
文章目录
线搜索的迭代格式, 如前所述 x k + 1 = x k + α k p k . x_{k+1}=x_k+\alpha_kp_k. xk+1=xk+αkpk.在 第二章中, 我们提到了常用的搜索方向: 最速下降方向、牛顿方向、拟牛顿方向、共轭方向. 这章我们补齐 关于搜索步长 α k \alpha_k αk的讨论, 并探讨 α k , p k \alpha_k,p_k αk,pk的选取与 全局收敛性的关系, 证明最速下降法、拟牛顿法和牛顿法的 (局部) 收敛速度. 至于共轭梯度法, 我们放到后面.
1. 搜索步长的选取
在选取步长时, 我们将面临取舍: 既想给予
f
f
f充分的下降, 又不想在做决策时消耗过多. 最理想的步长自当是
arg
min
α
ϕ
(
α
)
=
f
(
x
k
+
α
p
k
)
,
α
>
0.
\arg\min_{\alpha}\phi(\alpha)=f(x_k+\alpha p_k),\quad \alpha>0.
argαminϕ(α)=f(xk+αpk),α>0.但一般来说, 找到
ϕ
(
α
)
\phi(\alpha)
ϕ(α)的全局极小甚至是局部极小都是非常昂贵的 (需多次获取
f
,
∇
f
f,\nabla f
f,∇f). 因此, 不精确线搜索往往更加实用.
典型的步长搜索算法通过尝试一系列
α
\alpha
α值, 直至满足停机准则. 一般包括两个阶段:
- 确定区间 (bracketing phase). 即找到包含满足条件 α \alpha α的区间.
- 二分或插值 (bisection or interpolation phase) . 用于在区间内计算满足条件的 α \alpha α.
我们在细化这两个阶段前先来谈谈停机准则. 直观上,
α
k
\alpha_k
αk需要能带来
f
f
f的下降, 即
f
(
x
k
+
α
k
p
k
)
<
f
(
x
k
)
.
f(x_k+\alpha_kp_k)<f(x_k).
f(xk+αkpk)<f(xk). 但我们有反例说明, 光下降是不够的, 比如
图中函数的最小值为
f
∗
=
−
1
f^*=-1
f∗=−1, 但一系列迭代点
{
x
k
}
\{x_k\}
{xk}上的函数值为
f
(
x
k
)
=
5
/
k
,
 
k
=
0
,
1
,
…
.
f(x_k)=5/k,\,k=0,1,\ldots.
f(xk)=5/k,k=0,1,…. 此例中, 尽管每一步迭代都带来了函数值下降, 但最后却没能收敛到极小点. 为此, 我们需要选出的
α
\alpha
α能带来"充分(sufficient)"下降.
1.1 Wolfe条件
由之前讨论, 不精确线搜索应当保证
f
f
f充分下降, 即
f
(
x
k
+
α
k
p
k
)
≤
f
(
x
k
)
+
c
1
α
k
∇
f
k
T
p
k
,
c
i
∈
(
0
,
1
)
.
f(x_k+\alpha_k p_k)\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\quad c_i\in(0,1).
f(xk+αkpk)≤f(xk)+c1αk∇fkTpk,ci∈(0,1).也就是说
x
k
+
α
p
k
x_k+\alpha p_k
xk+αpk处的函数值应当位于直线
l
(
α
)
=
f
(
x
k
)
+
c
1
α
∇
f
k
T
p
k
l(\alpha)=f(x_k)+c_1\alpha\nabla f_k^Tp_k
l(α)=f(xk)+c1α∇fkTpk下面. 这点用图像说明更加直观. 充分下降条件也称为Armijo条件.
图中
l
(
α
)
l(\alpha)
l(α)以下的部分均是
α
\alpha
α的"合理"采集点. 一般
c
1
c_1
c1取
1
0
−
4
10^{-4}
10−4. 但充分下降条件似乎不能保证算法较好地收敛, 譬如从上图就可看出, 任一充分小的
α
\alpha
α都能带来所谓的充分下降. 为了避免选中特别小的
α
\alpha
α, 我们再附加一个曲率条件 (curvature condition) :
∇
f
(
x
k
+
α
k
p
k
)
T
p
k
≥
c
2
∇
f
k
T
p
k
,
c
2
∈
(
c
1
,
1
)
.
\nabla f(x_k+\alpha_kp_k)^Tp_k\ge c_2\nabla f_k^Tp_k,\quad c_2\in(c_1,1).
∇f(xk+αkpk)Tpk≥c2∇fkTpk,c2∈(c1,1).注意上面不等式的左边就是
ϕ
′
(
α
k
)
\phi'(\alpha_k)
ϕ′(αk), 右边是
ϕ
′
(
0
)
\phi'(0)
ϕ′(0). 这一点可以解释成, 若当前的
ϕ
′
(
α
)
\phi'(\alpha)
ϕ′(α)为"相当负"的数, 那就说明
f
f
f沿着这个方向走更远能够得到更多的下降; 若
ϕ
′
(
α
k
)
\phi'(\alpha_k)
ϕ′(αk)不是"那么负"或者干脆是正数, 那也就是说我们不能期望继续沿着当前方向搜索会得到更好的函数值下降, 从而终止搜索.
c
2
c_2
c2一般取0.9或0.1.1 为什么称此条件为曲率条件? 个人认为, 它间接地表现了函数在局部极小点附近的凸性.2 关于曲率条件的图示如下.
将充分下降条件和曲率条件合起来就是Wolfe条件:
f
(
x
k
+
α
k
p
k
)
≤
f
(
x
k
)
+
c
1
α
k
∇
f
k
T
p
k
,
∇
f
(
x
k
+
α
k
p
k
)
T
p
k
≥
c
2
∇
f
k
T
p
k
,
\begin{aligned}f(x_k+\alpha_kp_k)&\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\\\nabla f(x_k+\alpha_kp_k)^Tp_k&\ge c_2\nabla f_k^Tp_k,\end{aligned}
f(xk+αkpk)∇f(xk+αkpk)Tpk≤f(xk)+c1αk∇fkTpk,≥c2∇fkTpk,其中
0
<
c
1
<
c
2
<
1
0<c_1<c_2<1
0<c1<c2<1.
Wolfe条件还可加强为强Wolfe条件, 而这区别在于曲率条件:
f
(
x
k
+
α
k
p
k
)
≤
f
(
x
k
)
+
c
1
α
k
∇
f
k
T
p
k
,
∣
∇
f
(
x
k
+
α
k
p
k
)
T
p
k
∣
≤
c
2
∣
∇
f
k
T
p
k
∣
.
\begin{aligned}f(x_k+\alpha_kp_k)&\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\\|\nabla f(x_k+\alpha_kp_k)^Tp_k|&\le c_2|\nabla f_k^Tp_k|.\end{aligned}
f(xk+αkpk)∣∇f(xk+αkpk)Tpk∣≤f(xk)+c1αk∇fkTpk,≤c2∣∇fkTpk∣.这一条件强制
α
k
\alpha_k
αk位于局部极小点的一个邻域中.3 此外, 我们不再允许
ϕ
′
(
α
k
)
\phi'(\alpha_k)
ϕ′(αk)取正值, 从而排除了距稳定点较远的点.
利用微分中值定理不难证明, 对于光滑有下界的函数
f
f
f, 满足(强)Wolfe条件的
α
k
\alpha_k
αk总是存在的.
定理1 设
f
:
R
n
→
R
f:\mathbb{R}^n\to\mathbb{R}
f:Rn→R连续可微,
p
k
p_k
pk为在
x
k
x_k
xk处的一个下降方向. 假设
f
f
f沿直线
{
x
k
+
α
p
k
∣
α
>
0
}
\{x_k+\alpha p_k|\alpha>0\}
{xk+αpk∣α>0}有界. 则对于
0
<
c
1
<
c
2
<
1
0<c_1<c_2<1
0<c1<c2<1, 存在满足(强)Wolfe条件的步长 (区间) .
证明: 由条件得
ϕ
(
α
)
=
f
(
x
k
+
α
p
k
)
,
α
>
0
\phi(\alpha)=f(x_k+\alpha p_k), \alpha>0
ϕ(α)=f(xk+αpk),α>0下有界. 由于
0
<
c
1
<
1
0<c_1<1
0<c1<1, 且
l
(
α
)
=
f
(
x
k
)
+
α
c
1
∇
f
k
T
p
k
l(\alpha)=f(x_k)+\alpha c_1\nabla f_k^Tp_k
l(α)=f(xk)+αc1∇fkTpk下无界, 因此
l
(
α
)
l(\alpha)
l(α)必与
ϕ
(
α
)
\phi(\alpha)
ϕ(α)交于一点. 设
α
′
\alpha'
α′为第一个交点, 即有
f
(
x
k
+
α
′
p
k
)
=
f
(
x
k
)
+
α
′
c
1
∇
f
k
T
p
k
.
f(x_k+\alpha'p_k)=f(x_k)+\alpha'c_1\nabla f_k^Tp_k.
f(xk+α′pk)=f(xk)+α′c1∇fkTpk.对于小于
α
′
\alpha'
α′的
α
\alpha
α, 充分下降条件显然成立. 由微分中值定理, 存在
α
′
′
∈
(
0
,
α
′
)
\alpha''\in(0,\alpha')
α′′∈(0,α′)使得
f
(
x
k
+
α
′
p
k
)
−
f
(
x
k
)
=
α
′
∇
f
(
x
k
+
α
′
′
p
k
)
T
p
k
.
f(x_k+\alpha'p_k)-f(x_k)=\alpha'\nabla f(x_k+\alpha''p_k)^Tp_k.
f(xk+α′pk)−f(xk)=α′∇f(xk+α′′pk)Tpk.组合上面两式, 就有
∇
f
(
x
k
+
α
′
′
p
k
)
T
p
k
=
c
1
∇
f
k
T
p
k
≥
c
2
∇
f
k
T
p
k
.
\nabla f(x_k+\alpha''p_k)^Tp_k=c_1\nabla f_k^Tp_k\ge c_2\nabla f_k^Tp_k.
∇f(xk+α′′pk)Tpk=c1∇fkTpk≥c2∇fkTpk.这是由于
c
1
<
c
2
c_1<c_2
c1<c2且
∇
f
k
T
p
k
<
0
\nabla f_k^Tp_k<0
∇fkTpk<0. 因此, 满足Wolfe条件的步长存在 (由
f
f
f得光滑性, 也必定存在满足Wolfe条件的步长区间). 另外, 由上式左端是负数, 因此同时证明了强Wolfe条件的情形.
1.2 Goldstein条件
如同Wolfe条件, Goldstein条件也保证充分下降以及不会取到过小的步长. 数学表达如下:
f
(
x
k
)
+
(
1
−
c
)
α
k
∇
f
k
T
p
k
≤
f
(
x
k
+
α
k
p
k
)
≤
f
(
x
k
)
+
c
α
k
∇
f
k
T
p
k
,
0
<
c
<
1
/
2.
f(x_k)+(1-c)\alpha_k\nabla f_k^Tp_k\le f(x_k+\alpha_kp_k)\le f(x_k)+c\alpha_k\nabla f_k^Tp_k,\quad0<c<1/2.
f(xk)+(1−c)αk∇fkTpk≤f(xk+αkpk)≤f(xk)+cαk∇fkTpk,0<c<1/2.图示如下.
如图, 我们发现Goldstein条件可能会排除 ϕ \phi ϕ的所有极小点. 不过两条件还是有很多相似的地方, 包括它们的收敛理论. Goldstein条件常用于牛顿类算法, 但却不适用于拟牛顿算法. 这是因为后者需要保持Hessian逼近的正定性.
1.3 充分下降与回溯
回溯可以在一定程度上替代曲率条件. 它运作的机制是, 从较大的 α ˉ \bar{\alpha} αˉ开始, 不断乘以缩减因子 ρ \rho ρ, 直到缩减后的 α \alpha α满足充分下降条件. 其最基本的算法形式如下:
算法1 回溯线搜索
Choose
α
ˉ
>
0
,
ρ
∈
(
0
,
1
)
,
c
∈
(
0
,
1
)
\bar{\alpha}>0,\rho\in(0,1),c\in(0,1)
αˉ>0,ρ∈(0,1),c∈(0,1); Set
α
←
α
ˉ
\alpha\leftarrow\bar{\alpha}
α←αˉ;
repeat until
f
(
x
k
+
α
p
k
)
≤
f
(
x
k
)
+
c
α
∇
f
k
T
p
k
f(x_k+\alpha p_k)\le f(x_k)+c\alpha\nabla f_k^Tp_k
f(xk+αpk)≤f(xk)+cα∇fkTpk
α
←
ρ
α
\quad\quad\quad\alpha\leftarrow\rho\alpha
α←ρα
end (repeat)
Terminate with
α
k
=
α
\alpha_k=\alpha
αk=α.
对于牛顿或拟牛顿法, 初始
α
ˉ
\bar{\alpha}
αˉ选取为1, 而对于其他诸如最速下降法的算法, 选取各有不同标准. 缩减因子
ρ
\rho
ρ在每步迭代也可改变, 事实上只需保证
ρ
∈
[
ρ
l
o
,
ρ
h
i
]
\rho\in[\rho_{lo},\rho_{hi}]
ρ∈[ρlo,ρhi], 其中
ρ
l
o
,
ρ
h
i
\rho_{lo},\rho_{hi}
ρlo,ρhi分别为区间下界和上界.
这一简单的搜索策略适用于牛顿法, 但不适用于拟牛顿法和共轭梯度法. 这在后面会进一步讨论.
2. 线搜索的收敛性
本节讨论线搜索算法的全局收敛性. 这里要用到在第二章中定义的, p k p_k pk与负梯度 − ∇ f k -\nabla f_k −∇fk的夹角 θ k \theta_k θk, 有 cos θ k = − ∇ f k T p k ∥ ∇ f k ∥ ∥ p k ∥ . \cos\theta_k=\frac{-\nabla f_k^Tp_k}{\Vert \nabla f_k\Vert\Vert p_k\Vert}. cosθk=∥∇fk∥∥pk∥−∇fkTpk.下面叙述并证明著名的Zoutendijk定理, 其中提出Zoutendijk条件. 该条件可用于证明广泛算法的全局收敛性. 从定理的叙述和证明的过程中, 我们可以体会到 α k \alpha_k αk和 p k p_k pk选取的重要性.
定理2 (Zoutendijk定理) 考虑任一一种以
x
k
+
1
=
x
k
+
α
k
p
k
x_{k+1}=x_k+\alpha_kp_k
xk+1=xk+αkpk迭代的算法, 其中
p
k
p_k
pk为下降方向,
α
k
\alpha_k
αk满足Wolfe条件. 设
f
f
f在
R
n
\mathbb{R}^n
Rn下有界, 且
f
f
f在包含水平集
L
=
{
x
:
f
(
x
)
≤
f
(
x
0
)
}
\mathcal{L}=\{x:f(x)\le f(x_0)\}
L={x:f(x)≤f(x0)}的一个开集
N
\mathcal{N}
N中连续可微, 其中
x
0
x_0
x0为迭代的初始点. 设
∇
f
\nabla f
∇f在
N
\mathcal{N}
N上Lipschitz连续, 即存在
L
>
0
L>0
L>0使得
∥
∇
f
(
x
)
−
∇
f
(
x
~
)
∥
≤
L
∥
x
−
x
~
∥
,
∀
x
,
x
~
∈
N
.
\Vert\nabla f(x)-\nabla f(\tilde{x})\Vert\le L\Vert x-\tilde{x}\Vert,\quad\forall x,\tilde{x}\in\mathcal{N}.
∥∇f(x)−∇f(x~)∥≤L∥x−x~∥,∀x,x~∈N.则该算法满足Zoutendijk条件
∑
k
≥
0
cos
2
θ
k
∥
∇
f
k
∥
2
<
∞
.
\sum_{k\ge0}\cos^2\theta_k\Vert\nabla f_k\Vert^2<\infty.
k≥0∑cos2θk∥∇fk∥2<∞.证明: 由曲率条件得
(
∇
f
k
+
1
−
∇
f
k
)
T
p
k
≥
(
c
2
−
1
)
∇
f
k
T
p
k
,
(\nabla f_{k+1}-\nabla f_k)^Tp_k\ge(c_2-1)\nabla f_k^Tp_k,
(∇fk+1−∇fk)Tpk≥(c2−1)∇fkTpk,而由Lipschitz条件可得
(
∇
f
k
+
1
−
∇
f
k
)
T
p
k
≤
α
k
L
∥
p
k
∥
2
.
(\nabla f_{k+1}-\nabla f_k)^Tp_k\le\alpha_kL\Vert p_k\Vert^2.
(∇fk+1−∇fk)Tpk≤αkL∥pk∥2.结合上面两式, 得到
α
k
≥
c
2
−
1
L
∇
f
k
T
p
k
∥
p
k
∥
2
.
\alpha_k\ge\frac{c_2-1}{L}\frac{\nabla f_k^Tp_k}{\Vert p_k\Vert^2}.
αk≥Lc2−1∥pk∥2∇fkTpk.将此不等式代入充分下降条件, 推出
f
k
+
1
≤
f
k
+
c
1
α
k
∇
f
k
T
p
k
≤
f
k
−
c
1
1
−
c
2
L
(
∇
f
k
T
p
k
)
2
∥
p
k
∥
2
=
f
k
−
c
cos
2
θ
k
∥
∇
f
k
∥
2
.
f_{k+1}\le f_k+c_1\alpha_k\nabla f_k^Tp_k\le f_k-c_1\frac{1-c_2}{L}\frac{(\nabla f_k^Tp_k)^2}{\Vert p_k\Vert^2}=f_k-c\cos^2\theta_k\Vert \nabla f_k\Vert^2.
fk+1≤fk+c1αk∇fkTpk≤fk−c1L1−c2∥pk∥2(∇fkTpk)2=fk−ccos2θk∥∇fk∥2.其中
c
=
c
1
(
1
−
c
2
)
/
L
c=c_1(1-c_2)/L
c=c1(1−c2)/L. 上面的不等式对
k
k
k做累和, 得到
f
k
+
1
≤
f
0
−
c
∑
j
=
0
k
cos
2
θ
j
∥
∇
f
j
∥
2
.
f_{k+1}\le f_0-c\sum_{j=0}^k\cos^2\theta_j\Vert\nabla f_j\Vert^2.
fk+1≤f0−cj=0∑kcos2θj∥∇fj∥2.因为
f
f
f下有界, 所以
f
0
−
f
k
+
1
f_0-f_{k+1}
f0−fk+1对于
k
k
k有一致上界 (小于正无穷) . 因此令
k
→
∞
k\to\infty
k→∞, Zoutendijk条件成立:
∑
k
=
0
∞
cos
2
θ
k
∥
∇
f
k
∥
2
<
∞
.
\sum_{k=0}^{\infty}\cos^2\theta_k\Vert\nabla f_k\Vert^2<\infty.
k=0∑∞cos2θk∥∇fk∥2<∞.
对于Goldstein条件和强Wolfe条件也有类似的定理, 且最终都会满足Zoutendijk条件. 注意Zoutendijk定理的条件并不苛刻:
f
f
f下有界可以说是优化的必要条件; 而
∇
f
\nabla f
∇f的Lipschitz连续性则对体现了函数的光滑性, 实际应用时一般也是满足的.
特别地, 从Zoutendijk条件我们可以得到对于线搜索算法的一类全局收敛判定方法. 我们先定义什么叫做全局收敛.
定义1 (全局收敛) 若迭代算法满足 lim k → ∞ ∥ ∇ f k ∥ = 0 , \lim_{k\to\infty}\Vert\nabla f_k\Vert=0, k→∞lim∥∇fk∥=0,则称算法是全局收敛的.
算法的全局收敛并非指字面义上的收敛到全局极小点. 从定义上看, 事实上指的是收敛到稳定点. 只有在 p k p_k pk上加上二阶信息, 我们才有可能使得算法收敛到局部极小点. 回过头来看Zoutendijk条件: ∑ k = 0 ∞ cos 2 θ k ∥ ∇ f k ∥ 2 < ∞ . \sum_{k=0}^{\infty}\cos^2\theta_k\Vert\nabla f_k\Vert^2<\infty. k=0∑∞cos2θk∥∇fk∥2<∞.若 cos θ k ≥ δ > 0 , ∀ k \cos\theta_k\ge\delta>0,\forall k cosθk≥δ>0,∀k, 则直接由Zoutendijk条件得到全局收敛性. 这就是说, 只要我们能够保证
- 算法产生的搜索方向 p k p_k pk与 − ∇ f k -\nabla f_k −∇fk的正交方向有一致的距离;
- 找寻的 α k \alpha_k αk满足Wolfe条件,
那么算法就是全局收敛的. 注意我们这只用到了级数收敛的必要条件, 还未将有限和条件纳入. 我们将利用它来证明序列 { cos 2 θ k ∥ ∇ f k ∥ 2 } \{\cos^2\theta_k\Vert\nabla f_k\Vert^2\} {cos2θk∥∇fk∥2}的快速收敛. 下面我们来讨论之前叙述的算法的全局收敛性.
- 最速下降法显然是全局收敛的, 因为夹角 θ k ≡ 0 \theta_k\equiv0 θk≡0.
- 牛顿类算法. 假设模型中的 B k B_k Bk (牛顿法中是Hessian矩阵, 拟牛顿法中是Hessian矩阵的近似)正定且条件数一致有界, 即存在 M > 0 M>0 M>0, ∥ B k ∥ ∥ B k − 1 ∥ ≤ M , ∀ k . \Vert B_k\Vert\Vert B_k^{-1}\Vert\le M,\quad \forall k. ∥Bk∥∥Bk−1∥≤M,∀k.从这一点可以证得在2-范数下 (限于本人水平, 未证出其他范数下是否成立) , cos θ k ≥ 1 M , ∀ k \cos\theta_k\ge\frac{1}{M},\quad\forall k cosθk≥M1,∀k. 事实上, cos θ k = − ∇ f k T p k ∥ ∇ f k ∥ ∥ p k ∥ = ∇ f k T B k − 1 ∇ f k ∥ B k − 1 ∇ f k ∥ ∥ ∇ f k ∥ ≥ ∇ f k T B k − 1 ∇ f k ∥ B k − 1 ∇ f k ∥ ∥ B k ∥ ∥ B k − 1 ∇ f k ∥ ( ∵ ∥ ∇ f k ∥ ≤ ∥ B k ∥ ∥ B k − 1 ∇ f k ∥ , 范 数 相 容 性 ) ≥ ( ∇ f k T B k − 1 ∇ f k ) ∥ B k − 1 ∥ ∇ f k T B k − 1 B k − 1 ∇ f k ⋅ 1 M . ( ∵ 条 件 数 的 一 致 有 界 性 ) \begin{aligned}\cos\theta_k=\frac{-\nabla f_k^Tp_k}{\Vert\nabla f_k\Vert\Vert p_k\Vert}&=\frac{\nabla f_k^TB_k^{-1}\nabla f_k}{\Vert B_k^{-1}\nabla f_k\Vert\Vert\nabla f_k\Vert}\\&\ge\frac{\nabla f_k^TB_k^{-1}\nabla f_k}{\Vert B_k^{-1}\nabla f_k\Vert\Vert B_k\Vert\Vert B_k^{-1}\nabla f_k\Vert}(\because \Vert \nabla f_k\Vert\le\Vert B_k\Vert\Vert B_k^{-1}\nabla f_k\Vert, 范数相容性)\\&\ge\frac{(\nabla f_k^TB_k^{-1}\nabla f_k)\Vert B_k^{-1}\Vert}{\nabla f_k^TB_k^{-1}B_k^{-1}\nabla f_k}\cdot\frac{1}{M}.(\because 条件数的一致有界性)\end{aligned} cosθk=∥∇fk∥∥pk∥−∇fkTpk=∥Bk−1∇fk∥∥∇fk∥∇fkTBk−1∇fk≥∥Bk−1∇fk∥∥Bk∥∥Bk−1∇fk∥∇fkTBk−1∇fk(∵∥∇fk∥≤∥Bk∥∥Bk−1∇fk∥,范数相容性)≥∇fkTBk−1Bk−1∇fk(∇fkTBk−1∇fk)∥Bk−1∥⋅M1.(∵条件数的一致有界性)设 B k B_k Bk的特征值分解为 B k = U k Σ k U k − 1 B_k=U_k\Sigma_k U_k^{-1} Bk=UkΣkUk−1, 其中 U U U为正交矩阵, Σ \Sigma Σ为对角矩阵, 对角元为 λ 1 ( k ) ≥ ⋯ ≥ λ n ( k ) > 0 \lambda_1^{(k)}\ge\cdots\ge\lambda_n^{(k)}>0 λ1(k)≥⋯≥λn(k)>0. 记 ∇ f k T U k = ( z 1 , … , z n ) ≠ 0 \nabla f_k^TU_k=(z_1,\ldots,z_n)\ne0 ∇fkTUk=(z1,…,zn)̸=0且根据2-范数的性质, ∥ B k − 1 ∥ \Vert B_k^{-1}\Vert ∥Bk−1∥就是 B k − 1 B_k^{-1} Bk−1的最大特征(奇异)值, 即 ∥ B k − 1 ∥ = 1 / λ n ( k ) \Vert B_k^{-1}\Vert=1/\lambda_n^{(k)} ∥Bk−1∥=1/λn(k). 所以上面不等式的最后右端项为 ( ∇ f k T B k − 1 ∇ f k ) ∥ B k − 1 ∥ ∇ f k T B k − 1 B k − 1 ∇ f k ⋅ 1 M = ( ∑ i = 0 n 1 λ i ( k ) z i 2 ) 1 λ n ( k ) ∑ i = 0 n ( 1 λ i ( k ) ) 2 z i 2 ⋅ 1 M ≥ 1 M , ∀ k . \frac{(\nabla f_k^TB_k^{-1}\nabla f_k)\Vert B_k^{-1}\Vert}{\nabla f_k^TB_k^{-1}B_k^{-1}\nabla f_k}\cdot\frac{1}{M}=\frac{\left(\sum\limits_{i=0}^n\frac{1}{\lambda_i^{(k)}}z_i^2\right)\frac{1}{\lambda_n^{(k)}}}{\sum\limits_{i=0}^n\left(\frac{1}{\lambda_i^{(k)}}\right)^2z_i^2}\cdot\frac{1}{M}\ge\frac{1}{M},\quad \forall k. ∇fkTBk−1Bk−1∇fk(∇fkTBk−1∇fk)∥Bk−1∥⋅M1=i=0∑n(λi(k)1)2zi2(i=0∑nλi(k)1zi2)λn(k)1⋅M1≥M1,∀k.根据之前的推导就可得全局收敛性.
- 共轭梯度法. 此时我们只能证明弱全局收敛性 , 即 lim inf k → ∞ ∥ ∇ f k ∥ = 0. \liminf_{k\to\infty}\Vert\nabla f_k\Vert=0. k→∞liminf∥∇fk∥=0.这也就是说, 我们只能证明有梯度范数序列的一个子列 { ∥ ∇ f k j ∥ } \{\Vert\nabla f_{k_j}\Vert\} {∥∇fkj∥}收敛. 与之前的正面证明不同, 我们将在后面用反证法证之. 那么所谓的"弱全局收敛性"有什么用呢?事实上, 我们可以从定理的证明中得到一些规律: 简洁的定理难证, 复杂的定理好证. 所谓的"弱全局收敛性"一般要比全局收敛性要好证得多, 而在实际应用中, 我们以梯度范数序列的收敛作为算法收敛的判定条件. 若我们证明了"弱全局收敛性", 那就说明存在梯度范数序列的子列收敛, 算法最终必定是收敛的; 另一方面, "弱全局收敛"与全局收敛的应用界限并没有那么明确. 我们往往可以加上较为实际的条件达成全局收敛.
至此, 我们已经证明了一些通用算法的全局收敛性. 事实上, 为了保证算法的弱全局收敛, 我们可以这样构造线搜索算法:
- 每步迭代都产生函数值的下降;
- 每 m m m步迭代就采用一次负梯度作为搜索方向, 并在满足Wolfe条件或Goldstein条件时选取步长 α k \alpha_k αk.
这样尽管偶尔的最速下降不一定能产生多大的下降, 但却可以保证"总体"上的收敛性 (因为有子列收敛) . 当然我们可以在非最速下降的迭代步上做一些功夫, 加速收敛.
3. 收敛速度
从之前的讨论我们可以得出结论: 设计全局收敛的算法似乎是很简单的. 我们仅仅需要搜索方向 p k p_k pk不会与负梯度 − ∇ f k -\nabla f_k −∇fk垂直就行了, 而这点完全可以在每次生成搜索方向时附加角度检验 (angle test) 达到. 先给定一个阈值 (threshold) δ > 0 \delta>0 δ>0, 如果 cos θ k ≥ δ \cos\theta_k\ge\delta cosθk≥δ就接受这一搜索方向; 如果 cos θ k < δ \cos\theta_k<\delta cosθk<δ就不妨直接采用最速下降方向. 乍一看这样的设计天衣无缝. 事实上, 我们有两点原因使我们不去这么做:
- 能得到较快收敛速度的 p k p_k pk往往就与负梯度 − ∇ f k -\nabla f_k −∇fk差不多垂直, 这点在病态问题上尤其突出. 并且 δ \delta δ的不恰当选取也会强行"过滤"掉一些好的搜索方向;
- 角度检验可能会影响拟牛顿算法的不变性质.
全局收敛性与局部的收敛速度是矛盾的, 我们需要根据问题找平衡 (tradeoffs) . 一方面, 具有全局收敛性的算法可能收敛速度不快, 比如下面要证实的, 最速下降法保证全局收敛却只有线性收敛速度; 另一方面, 具有较快收敛速度的算法不一定具有全局收敛性. 譬如上一节提到的牛顿法的全局收敛性, 是基于Hessian矩阵正定且条件数一致有界得到的. 换句话说若 x ∗ x^* x∗是局部极小点, x ∗ x^* x∗处的Hessian正定且 (比如说) Lipschitz连续, 则在离 x ∗ x^* x∗充分近的 x k x_k xk的确可以保证这些条件成立, 也即其收敛是局部性质. 若 x k x_k xk离 x ∗ x^* x∗较远, 我们无法证实其全局收敛, 甚至可能产生的 p k p_k pk都不是下降方向 (当然这可以通过做矩阵修正避免) . 因此真正的挑战在于: 设计算法, 使得它既有全局收敛性, 也有较好的收敛速度.
我们先来谈谈之前提到的算法的收敛速度如何.
3.1 最速下降法的收敛速度
先考虑目标函数为二次函数的特殊情形, 即
f
(
x
)
=
1
2
x
T
Q
x
−
b
T
x
,
f(x)=\frac{1}{2}x^TQx-b^Tx,
f(x)=21xTQx−bTx,其中
Q
Q
Q是对称正定矩阵. 则全局极小点
x
∗
x^*
x∗就是线性系统
A
x
=
b
Ax=b
Ax=b的唯一解. 下面计算步长
α
k
\alpha_k
αk. 函数
f
(
x
k
−
α
∇
f
k
)
=
1
2
(
x
k
−
α
∇
f
k
)
T
Q
(
x
k
−
α
∇
f
k
)
−
b
T
(
x
k
−
α
∇
f
k
)
f(x_k-\alpha\nabla f_k)=\frac{1}{2}(x_k-\alpha\nabla f_k)^TQ(x_k-\alpha\nabla f_k)-b^T(x_k-\alpha\nabla f_k)
f(xk−α∇fk)=21(xk−α∇fk)TQ(xk−α∇fk)−bT(xk−α∇fk)对
α
\alpha
α求导置零可得
α
k
=
∇
f
k
T
∇
f
k
∇
f
k
T
Q
∇
f
k
.
\alpha_k=\frac{\nabla f_k^T\nabla f_k}{\nabla f_k^TQ\nabla f_k}.
αk=∇fkTQ∇fk∇fkT∇fk.如果我们使用
α
k
\alpha_k
αk的精确表达式 (即精确线搜索步长) , 我们有迭代式
x
k
+
1
=
x
k
−
(
∇
f
k
T
∇
f
k
∇
f
k
T
Q
∇
f
k
)
∇
f
k
.
x_{k+1}=x_k-\left(\frac{\nabla f_k^T\nabla f_k}{\nabla f_k^TQ\nabla f_k}\right)\nabla f_k.
xk+1=xk−(∇fkTQ∇fk∇fkT∇fk)∇fk.由多元微积分的知识, 我们知道最速下降法的搜索方向与函数曲面等高线垂直, 因此在搜索时会出现锯齿现象 (zigzag) . 直观上, 这种现象影响了它的收敛速度, 尤其是到了迭代后期接近
x
∗
x^*
x∗时.
为量化其收敛速度, 设加权范数
∥
x
∥
Q
2
=
x
T
Q
x
\Vert x\Vert_Q^2=x^TQx
∥x∥Q2=xTQx. 所以
1
2
∥
x
−
x
∗
∥
Q
2
=
1
2
x
T
Q
x
+
1
2
(
x
∗
)
T
Q
x
∗
−
x
T
Q
x
∗
=
1
2
x
T
Q
x
+
1
2
b
T
x
∗
−
b
T
x
(
∵
Q
x
∗
=
b
)
=
1
2
x
T
Q
x
−
b
T
x
−
(
1
2
(
x
∗
)
T
Q
x
∗
−
b
T
x
∗
)
=
f
(
x
)
−
f
(
x
∗
)
.
\begin{aligned}\frac{1}{2}\Vert x-x^*\Vert_Q^2&=\frac{1}{2}x^TQx+\frac{1}{2}(x^*)^TQx^*-x^TQx^*\\&=\frac{1}{2}x^TQx+\frac{1}{2}b^Tx^*-b^Tx(\because Qx^*=b)\\&=\frac{1}{2}x^TQx-b^Tx-\left(\frac{1}{2}(x^*)^TQx^*-b^Tx^*\right)\\&=f(x)-f(x^*).\end{aligned}
21∥x−x∗∥Q2=21xTQx+21(x∗)TQx∗−xTQx∗=21xTQx+21bTx∗−bTx(∵Qx∗=b)=21xTQx−bTx−(21(x∗)TQx∗−bTx∗)=f(x)−f(x∗).因此这一范数度量了函数值的差. 代入迭代公式, 并注意
∇
f
k
=
Q
(
x
k
−
x
∗
)
\nabla f_k=Q(x_k-x^*)
∇fk=Q(xk−x∗)我们有
∥
x
k
+
1
−
x
∗
∥
Q
2
=
{
1
−
(
∇
f
k
T
∇
f
k
)
2
(
∇
f
k
T
Q
∇
f
k
)
(
∇
f
k
T
Q
−
1
∇
f
k
)
}
∥
x
k
−
x
∗
∥
Q
2
.
\Vert x_{k+1}-x^*\Vert_Q^2=\left\{1-\frac{(\nabla f_k^T\nabla f_k)^2}{(\nabla f_k^TQ\nabla f_k)(\nabla f_k^TQ^{-1}\nabla f_k)}\right\}\Vert x_k-x^*\Vert_Q^2.
∥xk+1−x∗∥Q2={1−(∇fkTQ∇fk)(∇fkTQ−1∇fk)(∇fkT∇fk)2}∥xk−x∗∥Q2.上面式子进一步可以得到
∥
x
k
+
1
−
x
∗
∥
Q
2
≤
(
λ
n
−
λ
1
λ
n
+
λ
1
)
2
∥
x
k
−
x
∗
∥
Q
2
,
\Vert x_{k+1}-x^*\Vert_Q^2\le\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\right)^2\Vert x_k-x^*\Vert_Q^2,
∥xk+1−x∗∥Q2≤(λn+λ1λn−λ1)2∥xk−x∗∥Q2,其中
0
<
λ
1
≤
⋯
≤
λ
n
0<\lambda_1\le\cdots\le\lambda_n
0<λ1≤⋯≤λn是
Q
Q
Q的特征值. 关于上面两个式子的证明可见David Luenberger所著Introduction to Linear and Nonlinear Programming. 下面我们从另一个角度证明. 先证明一个引理.
引理1 设 P ( t ) P(t) P(t)是 t t t的一个多项式, 则 ∥ P ( Q ) x ∥ Q ≤ max 1 ≤ i ≤ n ∣ P ( λ i ) ∣ ∥ x ∥ Q , x ∈ R n . \Vert P(Q)x\Vert_Q\le\max_{1\le i\le n}|P(\lambda_i)|\Vert x\Vert_Q,\quad x\in\mathbb{R}^n. ∥P(Q)x∥Q≤1≤i≤nmax∣P(λi)∣∥x∥Q,x∈Rn.证明: 设 u 1 , … , u n u_1,\ldots,u_n u1,…,un是 Q Q Q对应于 λ 1 , … , λ n \lambda_1,\ldots,\lambda_n λ1,…,λn的特征向量, 它们构成 R n \mathbb{R}^n Rn的一组标准正交基, 则对任一 x ∈ R n x\in\mathbb{R}^n x∈Rn, 有 x = ∑ i = 1 n α i u i x=\sum_{i=1}^n\alpha_iu_i x=∑i=1nαiui, 从而 ∥ P ( Q ) x ∥ Q 2 = x T P ( Q ) Q P ( Q ) x = ( ∑ i = 1 n α i P ( λ i ) u i ) T Q ( ∑ i = 1 n α i P ( λ i ) u i ) = ∑ i = 1 n λ i α i 2 P 2 ( λ i ) ≤ max 1 ≤ i ≤ n P 2 ( λ i ) ∑ i = 1 n λ i α i 2 = max 1 ≤ i ≤ n P 2 ( λ i ) ∥ x ∥ Q 2 . \begin{aligned}\Vert P(Q)x\Vert_Q^2=x^TP(Q)QP(Q)x&=\left(\sum_{i=1}^n\alpha_iP(\lambda_i)u_i\right)^TQ\left(\sum_{i=1}^n\alpha_iP(\lambda_i)u_i\right)\\&=\sum_{i=1}^n\lambda_i\alpha_i^2P^2(\lambda_i)\le\max_{1\le i\le n}P^2(\lambda_i)\sum_{i=1}^n\lambda_i\alpha_i^2\\&=\max_{1\le i\le n}P^2(\lambda_i)\Vert x\Vert_Q^2.\end{aligned} ∥P(Q)x∥Q2=xTP(Q)QP(Q)x=(i=1∑nαiP(λi)ui)TQ(i=1∑nαiP(λi)ui)=i=1∑nλiαi2P2(λi)≤1≤i≤nmaxP2(λi)i=1∑nλiαi2=1≤i≤nmaxP2(λi)∥x∥Q2.因此得证. 下证误差估计式. ∥ x k + 1 − x ∗ ∥ Q 2 = ( x k + 1 − x ∗ ) Q ( x k + 1 − x ∗ ) ≤ ( x k − α ∇ f k − x ∗ ) T Q ( x k − α ∇ f k − x ∗ ) = [ ( I − α Q ) ( x k − x ∗ ) ] T Q [ ( I − α Q ) ( x k − x ∗ ) ] = ∥ ( I − α Q ) ( x k − x ∗ ) ∥ Q 2 . \begin{aligned}\Vert x_{k+1}-x^*\Vert_Q^2&=(x_{k+1}-x^*)Q(x_{k+1}-x^*)\\&\le(x_k-\alpha\nabla f_k-x^*)^TQ(x_k-\alpha\nabla f_k-x^*)\\&=[(I-\alpha Q)(x_k-x^*)]^TQ[(I-\alpha Q)(x_k-x^*)]\\&=\Vert (I-\alpha Q)(x_k-x^*)\Vert_Q^2.\end{aligned} ∥xk+1−x∗∥Q2=(xk+1−x∗)Q(xk+1−x∗)≤(xk−α∇fk−x∗)TQ(xk−α∇fk−x∗)=[(I−αQ)(xk−x∗)]TQ[(I−αQ)(xk−x∗)]=∥(I−αQ)(xk−x∗)∥Q2.记 P α ( t ) = 1 − α t P_{\alpha}(t)=1-\alpha t Pα(t)=1−αt, 利用引理可得 ∥ x k + 1 − x ∗ ∥ Q 2 ≤ ∥ P α ( Q ) ( x k − x ∗ ) ∥ Q 2 ≤ max 1 ≤ i ≤ n P α 2 ( λ i ) ∥ x k − x ∗ ∥ Q 2 \begin{aligned}\Vert x_{k+1}-x^*\Vert_Q^2&\le\Vert P_{\alpha}(Q)(x_k-x^*)\Vert_Q^2\\&\le\max_{1\le i\le n}P^2_{\alpha}(\lambda_i)\Vert x_k-x^*\Vert_Q^2\end{aligned} ∥xk+1−x∗∥Q2≤∥Pα(Q)(xk−x∗)∥Q2≤1≤i≤nmaxPα2(λi)∥xk−x∗∥Q2对 ∀ α \forall \alpha ∀α成立. 利用Chebyshev多项式的性质, 可得 min α max 1 ≤ i ≤ n ∣ 1 − α λ i ∣ = λ n − λ 1 λ n + λ 1 . \min_{\alpha}\max_{1\le i\le n}|1-\alpha\lambda_i|=\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}. αmin1≤i≤nmax∣1−αλi∣=λn+λ1λn−λ1.代入即得 ∥ x k + 1 − x ∗ ∥ Q 2 ≤ ( λ n − λ 1 λ n + λ 1 ) 2 ∥ x k − x ∗ ∥ Q 2 . \Vert x_{k+1}-x^*\Vert_Q^2\le\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\right)^2\Vert x_k-x^*\Vert_Q^2. ∥xk+1−x∗∥Q2≤(λn+λ1λn−λ1)2∥xk−x∗∥Q2.从此误差估计可得:
- 最速下降法线性收敛. 特别地, 当所有的特征值相同时, 收敛一步完成, 此时 Q Q Q为纯量阵. 等高线呈圆形, 而负梯度则直接指向圆心;
- 由于 λ n − λ 1 λ n + λ 1 = λ n / λ 1 − 1 λ n / λ 1 + 1 = κ 2 ( Q ) − 1 κ 2 ( Q ) + 1 , \frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}=\frac{\lambda_n/ \lambda_1-1}{\lambda_n/ \lambda_1+1}=\frac{\kappa_2(Q)-1}{\kappa_2(Q)+1}, λn+λ1λn−λ1=λn/λ1+1λn/λ1−1=κ2(Q)+1κ2(Q)−1, 其中 κ 2 ( ⋅ ) \kappa_2(\cdot) κ2(⋅)指代2-范数下的条件数, 因此当 Q Q Q的最大特征值与最小特征值差得越大, 速度就越慢, 极端情况下会出现严重的锯齿现象. 因此最速下降法常作为头几步的运行算法.
对于一般的非线性函数, 我们在假设
α
k
\alpha_k
αk为精确线搜索步长时, 有
定理3 假设
f
:
R
n
→
R
f:\mathbb{R}^n\to\mathbb{R}
f:Rn→R二次连续可微, 最速下降法中的采用精确步长线搜索, 迭代项收敛到
x
∗
x^*
x∗, 且Hessian矩阵
∇
2
f
(
x
∗
)
\nabla^2 f(x^*)
∇2f(x∗)正定. 令
r
r
r为任一满足
r
∈
(
λ
n
−
λ
1
λ
n
+
λ
1
,
1
)
r\in\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1},1\right)
r∈(λn+λ1λn−λ1,1)的标量, 其中
λ
1
≤
⋯
≤
λ
n
\lambda_1\le\cdots\le\lambda_n
λ1≤⋯≤λn为
∇
2
f
(
x
∗
)
\nabla^2 f(x^*)
∇2f(x∗)的特征值. 则对于充分大的
k
k
k, 我们有
f
(
x
k
+
1
−
f
(
x
∗
)
≤
r
2
[
f
(
x
k
)
−
f
(
x
∗
)
]
.
f(x_{k+1}-f(x^*)\le r^2[f(x_k)-f(x^*)].
f(xk+1−f(x∗)≤r2[f(xk)−f(x∗)].
一般说来, 我们无法保证不精确线搜索步长下的收敛速度.
3.2 牛顿法
3.2.1 牛顿法的收敛速度
基于之前的讨论, 由于Hessian矩阵 ∇ 2 f k \nabla^2 f_k ∇2fk不一定正定, 因此产生的搜索方向 p k p_k pk不一定是下降方向. 这里我们先假设 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x)在 x ∗ x^* x∗附近连续 (或Lipschitz连续) , ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇2f(x∗)正定从而 x ∗ x^* x∗的某个邻域内恒有 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x)正定. 我们将证明牛顿法具有局部二次收敛性, 步长 α k ≡ 1 \alpha_k\equiv1 αk≡1.
定理4 假设 f f f二次可微, Hessian矩阵 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x)在 x ∗ x^* x∗的一个邻域内Lipschitz连续, 在 x ∗ x^* x∗满足二阶充分条件. 考虑迭代式 x k + 1 = x k + p k x_{k+1}=x_k+p_k xk+1=xk+pk, 其中 p k p_k pk为牛顿步. 则
- 若初始点 x 0 x_0 x0充分靠近 x ∗ x^* x∗, 则迭代序列收敛到 x ∗ x^* x∗;
- 序列 { x k } \{x_k\} {xk}二次收敛;
- 范数序列 { ∥ ∇ f k ∥ } \{\Vert\nabla f_k\Vert\} {∥∇fk∥}二次收敛到0.
证明: 证明的过程中将大量应用Taylor定理. 由最优性条件
∇
f
∗
=
0
\nabla f_*=0
∇f∗=0有
x
k
+
p
k
−
x
∗
=
x
k
−
x
∗
−
∇
2
f
k
−
1
∇
f
k
=
∇
2
f
k
−
1
[
∇
2
f
k
(
x
k
−
x
∗
)
−
∇
f
k
]
=
∇
2
f
k
−
1
[
∇
2
f
k
(
x
k
−
x
∗
)
−
(
∇
f
k
−
∇
f
∗
)
]
.
\begin{aligned}x_k+p_k-x^*&=x_k-x^*-\nabla^2 f_k^{-1}\nabla f_k\\&=\nabla^2 f_k^{-1}[\nabla^2 f_k(x_k-x^*)-\nabla f_k]\\&=\nabla^2 f_k^{-1}[\nabla^2 f_k(x_k-x^*)-(\nabla f_k-\nabla f_*)].\end{aligned}
xk+pk−x∗=xk−x∗−∇2fk−1∇fk=∇2fk−1[∇2fk(xk−x∗)−∇fk]=∇2fk−1[∇2fk(xk−x∗)−(∇fk−∇f∗)].由Taylor定理, 有
∇
f
k
−
∇
f
∗
=
∫
0
1
∇
2
f
(
x
k
+
t
(
x
k
−
x
∗
)
)
(
x
k
−
x
∗
)
 
d
t
.
\nabla f_k-\nabla f_*=\int_0^1\nabla^2 f(x_k+t(x_k-x^*))(x_k-x^*)\,\mathrm{d}t.
∇fk−∇f∗=∫01∇2f(xk+t(xk−x∗))(xk−x∗)dt.代入有
∥
∇
2
f
k
(
x
k
−
x
∗
)
−
(
∇
f
k
−
∇
f
∗
)
∥
=
∥
∫
0
1
[
∇
2
f
k
−
∇
2
f
(
x
k
+
t
(
x
k
−
x
∗
)
)
]
(
x
k
−
x
∗
)
 
d
t
∥
≤
∥
x
k
−
x
∗
∥
2
∫
0
1
L
t
 
d
t
=
1
2
L
∥
x
k
−
x
∗
∥
2
,
\begin{aligned}&\Vert\nabla^2 f_k(x_k-x^*)-(\nabla f_k-\nabla f_*)\Vert\\&=\left\Vert\int_0^1[\nabla^2 f_k-\nabla^2 f(x_k+t(x_k-x^*))](x_k-x^*)\,\mathrm{d}t\right\Vert\\&\le\Vert x_k-x^*\Vert^2\int_0^1Lt\,\mathrm{d}t=\frac{1}{2}L\Vert x_k-x^*\Vert^2,\end{aligned}
∥∇2fk(xk−x∗)−(∇fk−∇f∗)∥=∥∥∥∥∫01[∇2fk−∇2f(xk+t(xk−x∗))](xk−x∗)dt∥∥∥∥≤∥xk−x∗∥2∫01Ltdt=21L∥xk−x∗∥2,其中
L
L
L为
∇
2
f
(
x
)
\nabla^2f(x)
∇2f(x)在
x
∗
x^*
x∗附近的Lipschitz常数. 由于
∇
2
f
(
x
∗
)
\nabla^2 f(x^*)
∇2f(x∗)非奇异, 因此
∃
r
>
0
\exists r>0
∃r>0, 对
∀
x
k
:
∥
x
k
−
x
∗
∥
≤
r
\forall x_k:\Vert x_k-x^*\Vert\le r
∀xk:∥xk−x∗∥≤r, 有
∥
∇
2
f
k
−
1
∥
≤
2
∥
∇
2
f
(
x
∗
)
−
1
∥
\Vert\nabla^2 f_k^{-1}\Vert\le2\Vert\nabla^2f(x^*)^{-1}\Vert
∥∇2fk−1∥≤2∥∇2f(x∗)−1∥. 从而
∥
x
k
+
p
k
−
x
∗
∥
≤
1
2
L
∥
∇
2
f
(
x
∗
)
−
1
∥
∥
x
k
−
x
∗
∥
2
≜
L
~
∥
x
k
−
x
∗
∥
2
,
\Vert x_k+p_k-x^*\Vert\le\frac{1}{2}L\Vert \nabla^2 f(x^*)^{-1}\Vert\Vert x_k-x^*\Vert^2\triangleq \widetilde{L}\Vert x_k-x^*\Vert^2,
∥xk+pk−x∗∥≤21L∥∇2f(x∗)−1∥∥xk−x∗∥2≜L
∥xk−x∗∥2,其中
L
~
=
L
∥
∇
2
f
(
x
∗
)
−
1
∥
\widetilde{L}=L\Vert\nabla^2f(x^*)^{-1}\Vert
L
=L∥∇2f(x∗)−1∥. 因此选取
x
0
x_0
x0使得
∥
x
0
−
x
∗
∥
≤
min
(
r
,
1
/
L
~
)
\Vert x_0-x^*\Vert\le\min\left(r,1/\widetilde{L}\right)
∥x0−x∗∥≤min(r,1/L
)即得序列
{
x
k
}
\{x_k\}
{xk}二次收敛于
x
∗
x^*
x∗.
再讨论梯度范数序列
{
∥
∇
f
k
∥
}
\{\Vert\nabla f_k\Vert\}
{∥∇fk∥}的收敛性.
∥
∇
f
k
+
1
∥
=
∥
∇
f
k
+
1
−
∇
f
k
−
∇
2
f
(
x
k
)
p
k
∥
(
∵
∇
f
k
+
∇
2
f
k
p
k
=
0
)
=
∥
∫
0
1
(
∇
2
f
(
x
k
+
t
p
k
)
−
∇
2
f
(
x
k
)
)
p
k
 
d
t
∥
≤
∫
0
1
∥
∇
2
f
(
x
k
+
t
p
k
)
−
∇
2
f
(
x
k
)
∥
∥
p
k
∥
 
d
t
≤
1
2
L
∥
p
k
∥
2
≤
1
2
L
∥
∇
2
f
k
−
1
∥
2
∥
∇
f
k
∥
2
≤
2
L
∥
∇
2
f
(
x
∗
)
−
1
∥
2
∥
∇
f
k
∥
2
.
\begin{aligned}\Vert\nabla f_{k+1}\Vert&=\Vert\nabla f_{k+1}-\nabla f_k-\nabla^2 f(x_k)p_k\Vert(\because \nabla f_k+\nabla^2 f_kp_k=0)\\&=\left\Vert\int_0^1(\nabla^2 f(x_k+tp_k)-\nabla^2 f(x_k))p_k\,\mathrm{d}t\right\Vert\\&\le\int_0^1\Vert\nabla^2f(x_k+tp_k)-\nabla^2f(x_k)\Vert\Vert p_k\Vert\,\mathrm{d}t\\&\le\frac{1}{2}L\Vert p_k\Vert^2\\&\le\frac{1}{2}L\Vert\nabla^2 f_k^{-1}\Vert^2\Vert\nabla f_k\Vert^2\\&\le2L\Vert\nabla^2f(x^*)^{-1}\Vert^2\Vert\nabla f_k\Vert^2.\end{aligned}
∥∇fk+1∥=∥∇fk+1−∇fk−∇2f(xk)pk∥(∵∇fk+∇2fkpk=0)=∥∥∥∥∫01(∇2f(xk+tpk)−∇2f(xk))pkdt∥∥∥∥≤∫01∥∇2f(xk+tpk)−∇2f(xk)∥∥pk∥dt≤21L∥pk∥2≤21L∥∇2fk−1∥2∥∇fk∥2≤2L∥∇2f(x∗)−1∥2∥∇fk∥2.因此梯度范数序列
{
∥
∇
f
k
∥
}
\{\Vert\nabla f_k\Vert\}
{∥∇fk∥}二次收敛性于0.
3.2.2 带Hessian修正的牛顿法 (Cont’d)
本小节主要讨论Hessian非正定情形下的修正牛顿法. 事实上, 对于Hessian非正定情形, 有两种可以获得全局收敛的处理方案:
- 基于修正牛顿法的线搜索. 此时主要对Hessian矩阵 ∇ 2 f k \nabla^2 f_k ∇2fk作必要的修正使它正定, 从而能产生下降方向;
- 信赖域-牛顿法. 与线搜索不同的是, 信赖域可直接纳入非正定的Hessian进行计算. 此法将放在下一章讨论信赖域时提到.
修正牛顿算法的一般步骤为:
算法2 (基于修正牛顿法的线搜索)
给定初始点
x
0
x_0
x0;
for
k
=
0
,
1
,
2
,
…
k=0,1,2,\ldots
k=0,1,2,…
分
解
矩
阵
B
k
=
∇
2
f
(
x
k
)
+
E
k
,
其
中
\quad\quad分解矩阵B_k=\nabla^2 f(x_k)+E_k, 其中
分解矩阵Bk=∇2f(xk)+Ek,其中
若
∇
2
f
(
x
k
)
充
分
正
定
,
则
E
k
=
0
;
否
则
选
取
E
k
使
得
B
k
充
分
正
定
.
\quad\quad\quad若\nabla^2 f(x_k)充分正定, 则E_k=0; 否则选取E_k使得B_k充分正定.
若∇2f(xk)充分正定,则Ek=0;否则选取Ek使得Bk充分正定.
求
解
B
k
p
k
=
−
∇
f
k
\quad\quad求解B_kp_k=-\nabla f_k
求解Bkpk=−∇fk
x
k
+
1
←
x
k
+
α
k
p
k
\quad\quad x_{k+1}\leftarrow x_k+\alpha_kp_k
xk+1←xk+αkpk
其
中
α
k
满
足
W
o
l
f
e
条
件
、
G
o
l
d
s
t
e
i
n
条
件
或
A
r
m
i
j
o
回
溯
条
件
\quad\quad\quad其中\alpha_k满足Wolfe条件、Goldstein条件或Armijo回溯条件
其中αk满足Wolfe条件、Goldstein条件或Armijo回溯条件
end
算法2在 E k E_k Ek选取满足有界修正分解性质时, 可以证明是全局收敛的, 即: 只要Hessian矩阵序列 { ∇ 2 f ( x k ) } \{\nabla^2f(x_k)\} {∇2f(xk)}有界, 就有序列 { B k } \{B_k\} {Bk}的条件数有界: κ ( B k ) = ∥ B k ∥ ∥ B k − 1 ∥ ≤ C , C > 0 , k = 0 , 1 , 2 , … . \kappa(B_k)=\Vert B_k\Vert\Vert B_k^{-1}\Vert\le C,\quad C>0,k=0,1,2,\ldots. κ(Bk)=∥Bk∥∥Bk−1∥≤C,C>0,k=0,1,2,….再来考虑算法2的收敛速度. 分两种情形.
- 序列 { x k } \{x_k\} {xk}收敛到 x ∗ x^* x∗, 且 ∇ 2 f ( x ∗ ) \nabla^2f(x^*) ∇2f(x∗)充分正定. 则由 ∇ 2 f ( x ) \nabla^2f(x) ∇2f(x)的连续性 (或Lipschitz) , 在后期 E k = 0 E_k=0 Ek=0从而恢复到原本的牛顿法, 达到二次收敛.
- ∇ 2 f ( x ∗ ) \nabla^2f(x^*) ∇2f(x∗) (接近) 奇异. 此时 E k E_k Ek将不一定消逝, 且算法的收敛速度可能只有线性. 我们首先需要 B k B_k Bk的条件数适当 (从而满足有界修正分解性质), 其次还需要修正项 E k E_k Ek尽可能的小从而尽量保留二阶信息. 同时计算的耗费也要在可接受的范围.
3.2.2.1 基于特征值的修正
让我们从一个例子说起. 设当前迭代点为
x
k
,
∇
f
k
=
(
1
,
−
3
,
2
)
T
,
∇
2
f
k
=
d
i
a
g
(
10
,
3
,
−
1
)
T
x_k,\nabla f_k=(1,-3,2)^T,\nabla^2f_k=\mathrm{diag}(10,3,-1)^T
xk,∇fk=(1,−3,2)T,∇2fk=diag(10,3,−1)T. 显然二阶信息是不定的. 由特征值分解, 我们有
Q
=
I
,
Λ
=
d
i
a
g
(
λ
1
,
λ
2
,
λ
3
)
Q=I,\Lambda=\mathrm{diag}(\lambda_1,\lambda_2,\lambda_3)
Q=I,Λ=diag(λ1,λ2,λ3), 使得
∇
2
f
k
=
Q
Λ
Q
T
=
∑
i
=
1
n
λ
i
q
i
q
i
T
.
\nabla^2f_k=Q\Lambda Q^T=\sum_{i=1}^n\lambda_iq_iq_i^T.
∇2fk=QΛQT=i=1∑nλiqiqiT.一个直接的想法是, 将对角元中的负元用较小的正数
δ
\delta
δ替代, 譬如说
δ
=
u
\delta=\sqrt{\bm{\mathrm{u}}}
δ=u, 其中
u
\bm{\mathrm{u}}
u是机器精度 (设为
1
0
−
16
10^{-16}
10−16). 则此例中
B
k
=
∑
i
=
1
2
λ
i
q
i
q
i
T
+
δ
q
3
q
3
T
=
d
i
a
g
(
10
,
3
,
1
0
−
8
)
.
B_k=\sum_{i=1}^2\lambda_iq_iq_i^T+\delta q_3q_3^T=\mathrm{diag}(10,3,10^{-8}).
Bk=i=1∑2λiqiqiT+δq3q3T=diag(10,3,10−8).不过, 基于此修正Hessian的搜索方向为
p
k
=
−
B
k
−
1
∇
f
k
=
−
∑
i
=
1
2
1
λ
i
q
i
(
q
i
T
∇
f
k
)
−
1
δ
q
3
(
q
3
T
∇
f
k
)
≈
−
(
2
×
1
0
8
)
q
3
.
p_k=-B_k^{-1}\nabla f_k=-\sum_{i=1}^2\frac{1}{\lambda_i}q_i(q_i^T\nabla f_k)-\frac{1}{\delta}q_3(q_3^T\nabla f_k)\approx-(2\times 10^8)q_3.
pk=−Bk−1∇fk=−i=1∑2λi1qi(qiT∇fk)−δ1q3(q3T∇fk)≈−(2×108)q3.对于很小的
δ
\delta
δ, 这一搜索方向将近与
q
3
q_3
q3平行, 并且长度惊人. 这有悖牛顿法的想法.
不过受此启发, 很多人提出了其他的修正方案. 例如干脆将负元变个符号. 在我们的例子中就是
δ
=
1
\delta=1
δ=1. 或者干脆把负曲率的项去掉, 在我们的例子中就是
B
k
=
∑
i
=
1
2
λ
i
q
i
q
i
T
B_k=\sum_{i=1}^2\lambda_iq_iq_i^T
Bk=∑i=12λiqiqiT. 再比如, 选取
δ
\delta
δ使得
p
k
p_k
pk看起来合理一些.
基于最小F-范数的修正是说, 给定 δ > 0 \delta>0 δ>0, 求 Δ A = arg min B { ∥ B ∥ F ∣ λ min ( A + B ) ≥ δ } . \Delta A=\arg\min_B\{\Vert B\Vert_F|\lambda_{\min}(A+B)\ge\delta\}. ΔA=argBmin{∥B∥F∣λmin(A+B)≥δ}.最后得到的结果是 Δ A = Q ( d i a g ( τ i ) ) Q T , τ i = { 0 , λ i ≥ δ , δ − λ i , λ i < δ . \Delta A=Q(\mathrm{diag}(\tau_i))Q^T,\quad\tau_i=\left\{\begin{array}{ll}0, & \lambda_i\ge\delta,\\\delta-\lambda_i, &\lambda_i <\delta.\end{array}\right. ΔA=Q(diag(τi))QT,τi={0,δ−λi,λi≥δ,λi<δ.这与第一种想法契合.
基于最小2-范数的修正则会给出对角修正. 给定 δ > 0 \delta>0 δ>0, 求 Δ A = arg min B { ∥ B ∥ 2 ∣ λ min ( A + B ) ≥ δ } . \Delta A=\arg\min_B\{\Vert B\Vert_2|\lambda_{\min}(A+B)\ge\delta\}. ΔA=argBmin{∥B∥2∣λmin(A+B)≥δ}.最后得到的结果是 Δ A = τ I , τ = max ( 0 , δ − λ min ( A ) ) . \Delta A=\tau I,\quad\tau=\max(0,\delta-\lambda_{\min}(A)). ΔA=τI,τ=max(0,δ−λmin(A)).实际应用时往往采用试探法, 不断增大 τ \tau τ直至Cholesky分解能够完成. 这与信赖域的修正有些类似.
实际中, 往往不直接做特征值分解, 因为这一步骤的计算量过于庞大. 利用Gauss消去间接地修正往往更受欢迎.
3.2.2.2 修正Cholesky分解
另一种修正Hessian矩阵的方案, 是在Cholesky分解的过程中进行的. 具体说, 如果分解的过程中计算出了负的 (准确说是虚的) 对角元, 则增加一定量保证充分正定. 修正Cholesky分解的应当做到:
- 保证修正的Cholesky因子存在;
- 修正后的矩阵条件数一致有界;
- 若Hessian本身充分正定则不做修正.
设A的LDL分解为 A = L D L T . A=LDL^T. A=LDLT.其中 L L L为下三角矩阵, D D D为对角阵. 相应的算法为
算法3 (LDL分解)
for
j
=
1
,
2
,
…
,
n
j=1,2,\ldots,n
j=1,2,…,n
c
j
j
←
a
j
j
−
∑
s
=
1
j
−
1
d
s
l
j
s
2
\quad\quad c_{jj}\leftarrow a_{jj}-\sum_{s=1}^{j-1}d_sl_{js}^2
cjj←ajj−∑s=1j−1dsljs2;
d
j
←
c
j
j
\quad\quad d_j\leftarrow c_{jj}
dj←cjj;
\quad\quad
for
i
=
j
+
1
,
…
,
n
i=j+1,\ldots,n
i=j+1,…,n
c
i
j
←
a
i
j
−
∑
s
=
1
j
−
1
d
s
l
i
s
l
j
s
\quad\quad\quad\quad c_{ij}\leftarrow a_{ij}-\sum_{s=1}^{j-1}d_sl_{is}l_{js}
cij←aij−∑s=1j−1dslisljs;
l
i
j
←
c
i
j
/
d
j
\quad\quad\quad\quad l_{ij}\leftarrow c_{ij}/d_j
lij←cij/dj;
\quad\quad
end
end
当 A A A不定时, LDL分解是不稳定的. 下面对其加修正. 为了控制修正的质量, 选取两正数 δ , β \delta,\beta δ,β, 要求在计算 L , D L,D L,D的第 j j j列时, 满足: d j ≥ δ , ∣ m i j ∣ ≤ β , i = j + 1 , … , n , d_j\ge\delta,\quad|m_{ij}|\le\beta,\quad i=j+1,\ldots,n, dj≥δ,∣mij∣≤β,i=j+1,…,n,其中 m i j = l i j d j m_{ij}=l_{ij}\sqrt{d_j} mij=lijdj. 为保证上述不等式, 我们只需在算法3中修改一步: 计算对角元 d j d_j dj的公式改为 d j = max ( ∣ c j j ∣ , ( θ j β ) 2 , δ ) , θ j = max j < i ≤ n ∣ c i j ∣ . d_j=\max\left(|c_{jj}|,\left(\frac{\theta_j}{\beta}\right)^2,\delta\right),\quad\theta_j=\max_{j<i\le n}|c_{ij}|. dj=max(∣cjj∣,(βθj)2,δ),θj=j<i≤nmax∣cij∣.下面验证不等式成立. 注意 c i j = l i j d j c_{ij}=l_{ij}d_j cij=lijdj, 因此 ∣ m i j ∣ = ∣ l i j d j ∣ = ∣ c i j ∣ d j ≤ ∣ c i j ∣ β θ j ≤ β , ∀ i > j . |m_{ij}|=|l_{ij}\sqrt{d_j}|=\frac{|c_{ij}|}{\sqrt{d_j}}\le\frac{|c_{ij}|\beta}{\theta_j}\le\beta,\quad\forall i>j. ∣mij∣=∣lijdj∣=dj∣cij∣≤θj∣cij∣β≤β,∀i>j.注意 θ j \theta_j θj可以先于 d j d_j dj得到, 这就是算法中 c i j c_{ij} cij的作用.
3.2.2.3 修正对称不定分解
任一对称矩阵 A A A, 不论正定或不正定, 都有 P A P T = L B L T , PAP^T=LBL^T, PAPT=LBLT,其中 L L L为单位下三角矩阵, B B B为块对角矩阵, 其中块为1阶或2阶, P P P为排列矩阵. 我们之前提到过直接计算不定矩阵的LDL分解不稳定, 这是因为 L , D L,D L,D中可能含有远大于 A A A中元素的项. 但 B B B为块对角矩阵, 其对角元为1阶或2阶矩阵, 这样的分解总是存在且计算稳定.
3.3 拟牛顿法的收敛速度
拟牛顿法的搜索方向为
p
k
=
−
B
k
−
1
∇
f
k
,
p_k=-B_k^{-1}\nabla f_k,
pk=−Bk−1∇fk,其中对称正定矩阵
B
k
B_k
Bk在每步都被更新. 我们假定
α
k
\alpha_k
αk满足Wolfe条件或强Wolfe条件, 且步长线搜索必首先尝试
α
=
1
\alpha=1
α=1. 这一点在实现快速收敛时将起到关键的作用.
下面的定理说明, 若拟牛顿法的搜索方向与牛顿法的搜索方向足够接近, 则随着迭代点向解逼近, 单位步长将最终满足Wolfe条件. 定理同时还给出了拟牛顿法搜索方向必须遵循的条件, 以达成超线性收敛.
定理5 设 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:Rn→R二阶连续可微. 考虑迭代 x k + 1 = x k + α k p k , x_{k+1}=x_k+\alpha_kp_k, xk+1=xk+αkpk,其中 p k p_k pk为下降方向, α k \alpha_k αk满足Wolfe条件 ( c 1 ≤ 1 / 2 c_1\le1/2 c1≤1/2). 若序列 { x k } \{x_k\} {xk}收敛到 x ∗ x^* x∗, 且 ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ ) \nabla f^(x^*)=0,\nabla^2f(x^*) ∇f(x∗)=0,∇2f(x∗)正定, 并且搜索方向满足 lim k → ∞ ∥ ∇ f k + ∇ 2 f k p k ∥ ∥ p k ∥ = 0 , \lim_{k\to\infty}\frac{\Vert\nabla f_k+\nabla^2f_kp_k\Vert}{\Vert p_k\Vert}=0, k→∞lim∥pk∥∥∇fk+∇2fkpk∥=0,则
- 步长 α k = 1 \alpha_k=1 αk=1对充分大的 k k k( ∃ k 0 : k > k 0 \exists k_0: k>k_0 ∃k0:k>k0)满足Wolfe条件;
- 若 α k = 1 , ∀ k > k 0 \alpha_k=1,\forall k>k_0 αk=1,∀k>k0, 则 { x k } \{x_k\} {xk}超线性收敛于 x ∗ x^* x∗.
易得若 c 1 > 1 / 2 c_1>1/2 c1>1/2, 则线搜索可能会排除二次函数的最小点, 且算法将不会采纳单位步长. 若 p k p_k pk是拟牛顿搜索方向, 则上面的极限等价于 lim k → ∞ ∥ ( B k − ∇ 2 f ( x ∗ ) ) p k ∥ ∥ p k ∥ = 0. \lim_{k\to\infty}\frac{\Vert(B_k-\nabla^2 f(x^*))p_k\Vert}{\Vert p_k\Vert}=0. k→∞lim∥pk∥∥(Bk−∇2f(x∗))pk∥=0.从这个结论中我们知道: 想要达成超线性收敛速度并不需要拟牛顿矩阵序列 { B k } \{B_k\} {Bk}收敛于Hessian矩阵 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇2f(x∗), 而只需要 B k B_k Bk沿着搜索方向 p k p_k pk越来越靠近 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇2f(x∗).
定理6 设 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:Rn→R二阶连续可微. 考虑迭代式 x k + 1 = x k + p k x_{k+1}=x_k+p_k xk+1=xk+pk(即 α k \alpha_k αk一致选为1), p k = − B k − 1 ∇ f k p_k=-B_k^{-1}\nabla f_k pk=−Bk−1∇fk. 设 { x k } \{x_k\} {xk}收敛于 x ∗ x^* x∗, f f f在 x ∗ x^* x∗上满足二阶充分条件. 若 lim k → ∞ ∥ ( B k − ∇ 2 f ( x ∗ ) ) p k ∥ ∥ p k ∥ = 0 , \lim_{k\to\infty}\frac{\Vert(B_k-\nabla^2f(x^*))p_k\Vert}{\Vert p_k\Vert}=0, k→∞lim∥pk∥∥(Bk−∇2f(x∗))pk∥=0,则有 { x k } \{x_k\} {xk}超线性收敛于 x ∗ x^* x∗.
证明: 我们用 p k N p_k^N pkN表示牛顿步. 下面证明极限式等价于 p k − p k N = o ( ∥ p k ∥ ) . p_k-p_k^N=o(\Vert p_k\Vert). pk−pkN=o(∥pk∥).设极限式成立, 于是 p k − p k N = ∇ 2 f k − 1 ( ∇ 2 f k p k + ∇ f k ) = ∇ 2 f k − 1 ( ∇ 2 f k − B k ) p k = O ( ∥ ( ∇ 2 f k − B k ) p k ∥ ) ( ∵ ∇ 2 f ( x ) 连 续 且 在 x ∗ 处 正 定 ) = o ( ∥ p k ∥ ) . ( ∵ 极 限 式 ) \begin{aligned}p_k-p_k^N&=\nabla^2f_k^{-1}(\nabla^2f_kp_k+\nabla f_k)\\&=\nabla^2f_k^{-1}(\nabla^2f_k-B_k)p_k\\&=O(\Vert(\nabla^2f_k-B_k)p_k\Vert)(\because \nabla^2f(x)连续且在x^*处正定)\\&=o(\Vert p_k\Vert).(\because 极限式)\end{aligned} pk−pkN=∇2fk−1(∇2fkpk+∇fk)=∇2fk−1(∇2fk−Bk)pk=O(∥(∇2fk−Bk)pk∥)(∵∇2f(x)连续且在x∗处正定)=o(∥pk∥).(∵极限式)反向的证明是显然的. 结合牛顿步的二次收敛与上式, 有 ∥ x k + p k − x ∗ ∥ ≤ ∥ x k + p k N − x ∗ ∥ + ∥ p k − p k N ∥ = O ( ∥ x k − x ∗ ∥ 2 ) + o ( ∥ p k ∥ ) . \Vert x_k+p_k-x^*\Vert\le\Vert x_k+p_k^N-x^*\Vert+\Vert p_k-p_k^N\Vert=O(\Vert x_k-x^*\Vert^2)+o(\Vert p_k\Vert). ∥xk+pk−x∗∥≤∥xk+pkN−x∗∥+∥pk−pkN∥=O(∥xk−x∗∥2)+o(∥pk∥).由于 ∥ x k − x ∗ ∥ − ∥ p k ∥ ≤ ∥ x k + p k − x ∗ ∥ , \Vert x_k-x^*\Vert-\Vert p_k\Vert\le\Vert x_k+p_k-x^*\Vert, ∥xk−x∗∥−∥pk∥≤∥xk+pk−x∗∥, ∥ p k ∥ − ∥ x k − x ∗ ∥ ≤ ∥ x k + p k − x ∗ ∥ , \Vert p_k\Vert-\Vert x_k-x^*\Vert\le\Vert x_k+p_k-x^*\Vert, ∥pk∥−∥xk−x∗∥≤∥xk+pk−x∗∥,经移项就有 ∥ p k ∥ + o ( ∥ p k ∥ ) ≥ ∥ x k − x ∗ ∥ − O ( ∥ x k − x ∗ ∥ 2 ) , \Vert p_k\Vert+o(\Vert p_k\Vert)\ge\Vert x_k-x^*\Vert-O(\Vert x_k-x^*\Vert^2), ∥pk∥+o(∥pk∥)≥∥xk−x∗∥−O(∥xk−x∗∥2), ∥ p k ∥ − o ( ∥ p k ∥ ) ≤ O ( ∥ x k − x ∗ ∥ 2 ) + ∥ x k − x ∗ ∥ . \Vert p_k\Vert-o(\Vert p_k\Vert)\le O(\Vert x_k-x^*\Vert^2)+\Vert x_k-x^*\Vert. ∥pk∥−o(∥pk∥)≤O(∥xk−x∗∥2)+∥xk−x∗∥.因此 ∥ p k ∥ = O ( ∥ x k − x ∗ ∥ ) \Vert p_k\Vert=O(\Vert x_k-x^*\Vert) ∥pk∥=O(∥xk−x∗∥). 于是 ∥ x k + p k − x ∗ ∥ ≤ O ( ∥ x k − x ∗ ∥ 2 ) + o ( ∥ p k ∥ ) = o ( ∥ x k − x ∗ ∥ ) , \Vert x_k+p_k-x^*\Vert\le O(\Vert x_k-x^*\Vert^2)+o(\Vert p_k\Vert)=o(\Vert x_k-x^*\Vert), ∥xk+pk−x∗∥≤O(∥xk−x∗∥2)+o(∥pk∥)=o(∥xk−x∗∥),即有超线性收敛.
注意上面的结论是局部收敛性质. 我们将在后面看到, 拟牛顿法应用时极限式一般是满足的.
4. 步长选取算法
在本章的第一节, 我们谈到了选取步长的两个阶段: 确定区间、二分或插值. 我们将在本节讨论具体的步长选取算法. 考虑最小化函数
ϕ
(
α
)
=
f
(
x
k
+
α
p
k
)
,
\phi(\alpha)=f(x_k+\alpha p_k),
ϕ(α)=f(xk+αpk),其中
α
>
0
\alpha>0
α>0,
p
k
p_k
pk为下降方向. 若原函数
f
(
x
)
=
1
2
x
T
Q
x
−
b
T
x
f(x)=\frac{1}{2}x^TQx-b^Tx
f(x)=21xTQx−bTx为凸二次函数, 则最优步长
α
k
\alpha_k
αk具有解析表达式
α
k
=
−
∇
f
k
T
p
k
p
k
T
Q
p
k
.
\alpha_k=-\frac{\nabla f_k^Tp_k}{p_k^TQp_k}.
αk=−pkTQpk∇fkTpk.而对于一般的非线性函数, 则有必要使用迭代算法确定
α
k
\alpha_k
αk. 线搜索步长的算法需要精心设计, 因为步长的选取会影响非线性优化的强健性与效率.
线搜索步长的方法可根据提供的函数信息加以分类. 譬如有只需函数值的算法. 这种算法往往并不高效. 再如提供梯度信息的算法. 这种算法就能够判定是否选取到了合适的步长. 这里我们仅讨论带导数信息的算法.
4.1 插值
我们先就基于已知 ϕ \phi ϕ函数值和导数值进行插值的方法讨论. 这种方法可以看做是Armijo回溯算法的加强版. 目的就是寻找 α \alpha α既能够带来充分的函数下降, 也不至于太小. 注意充分下降条件又可写作 ϕ ( α k ) ≤ ϕ ( 0 ) + c 1 α k ϕ ′ ( 0 ) . \phi(\alpha_k)\le\phi(0)+c_1\alpha_k\phi'(0). ϕ(αk)≤ϕ(0)+c1αkϕ′(0).我们判定算法的高效性在于, 尽可能少地获取导数信息, 即假定获取导数信息要比获取函数信息要昂贵的多.
假设初始 α 0 \alpha_0 α0给定. 若 ϕ ( α 0 ) ≤ ϕ ( 0 ) + c 1 α 0 ϕ ′ ( 0 ) , \phi(\alpha_0)\le\phi(0)+c_1\alpha_0\phi'(0), ϕ(α0)≤ϕ(0)+c1α0ϕ′(0),则 α 0 \alpha_0 α0恰好满足要求, 终止搜索. 否则, [ 0 , α 0 ] [0,\alpha_0] [0,α0]中就应当有合适的步长. 下面根据 ϕ ( 0 ) , ϕ ′ ( 0 ) , ϕ ( α 0 ) \phi(0),\phi'(0),\phi(\alpha_0) ϕ(0),ϕ′(0),ϕ(α0)建立 ϕ \phi ϕ的二次近似模型 ϕ q ( α ) \phi_q(\alpha) ϕq(α): ϕ q ( α ) = ( ϕ ( α 0 ) − ϕ ( 0 ) − α 0 ϕ ′ ( 0 ) α 0 2 ) α 2 + ϕ ′ ( 0 ) α + ϕ ( 0 ) . \phi_q(\alpha)=\left(\frac{\phi(\alpha_0)-\phi(0)-\alpha_0\phi'(0)}{\alpha_0^2}\right)\alpha^2+\phi'(0)\alpha+\phi(0). ϕq(α)=(α02ϕ(α0)−ϕ(0)−α0ϕ′(0))α2+ϕ′(0)α+ϕ(0).注意这个近似模型满足 ϕ q ( 0 ) = ϕ ( 0 ) , ϕ q ′ ( 0 ) = ϕ ′ ( 0 ) , ϕ q ( α 0 ) = ϕ ( α 0 ) \phi_q(0)=\phi(0),\phi_q'(0)=\phi'(0),\phi_q(\alpha_0)=\phi(\alpha_0) ϕq(0)=ϕ(0),ϕq′(0)=ϕ′(0),ϕq(α0)=ϕ(α0). 新的 α 1 \alpha_1 α1则定义为此二次模型的最小值点, 即 α 1 = − ϕ ′ ( 0 ) α 0 2 2 [ ϕ ( α 0 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 0 ] . \alpha_1=-\frac{\phi'(0)\alpha_0^2}{2[\phi(\alpha_0)-\phi(0)-\phi'(0)\alpha_0]}. α1=−2[ϕ(α0)−ϕ(0)−ϕ′(0)α0]ϕ′(0)α02.若在 α 1 \alpha_1 α1满足充分下降条件, 则终止搜索. 否则继续以 ϕ ( 0 ) , ϕ ′ ( 0 ) , ϕ ( α 0 ) , ϕ ( α 1 ) \phi(0),\phi'(0),\phi(\alpha_0),\phi(\alpha_1) ϕ(0),ϕ′(0),ϕ(α0),ϕ(α1)建立 ϕ \phi ϕ的三次近似模型 (三次近似模型对捕捉函数曲率变化有较好的效果, 常带来二次收敛效果) ϕ c ( α ) = a α 3 + b α 2 + α ϕ ′ ( 0 ) + ϕ ( 0 ) , \phi_c(\alpha)=a\alpha^3+b\alpha^2+\alpha\phi'(0)+\phi(0), ϕc(α)=aα3+bα2+αϕ′(0)+ϕ(0),其中 ( a b ) = 1 α 0 2 α 1 2 ( α 1 − α 0 ) ( α 0 2 − α 1 2 − α 0 3 α 1 3 ) ( ϕ ( α 1 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 1 ϕ ( α 0 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 0 ) . \begin{pmatrix}a\\b\end{pmatrix}=\frac{1}{\alpha_0^2\alpha_1^2(\alpha_1-\alpha_0)}\begin{pmatrix}\alpha_0^2 & -\alpha_1^2\\-\alpha_0^3 & \alpha_1^3\end{pmatrix}\begin{pmatrix}\phi(\alpha_1)-\phi(0)-\phi'(0)\alpha_1\\\phi(\alpha_0)-\phi(0)-\phi'(0)\alpha_0\end{pmatrix}. (ab)=α02α12(α1−α0)1(α02−α03−α12α13)(ϕ(α1)−ϕ(0)−ϕ′(0)α1ϕ(α0)−ϕ(0)−ϕ′(0)α0).对 ϕ c ( x ) \phi_c(x) ϕc(x)求导, 可得 ϕ c \phi_c ϕc的最小值点 α 2 \alpha_2 α2位于区间 [ 0 , α 1 ] [0,\alpha_1] [0,α1]中, 且为 α 2 = − b + b 2 − 3 a ϕ ′ ( 0 ) 3 a . \alpha_2=\frac{-b+\sqrt{b^2-3a\phi'(0)}}{3a}. α2=3a−b+b2−3aϕ′(0).若需要, 此重复这一步骤, 以 ϕ ( 0 ) , ϕ ′ ( 0 ) \phi(0),\phi'(0) ϕ(0),ϕ′(0)和最近的两个 ϕ \phi ϕ函数值建立三次近似模型直至找到 α \alpha α满足充分下降条件. 若算得的 α i \alpha_i αi要比前一个 α i − 1 \alpha_{i-1} αi−1太近或者小很多, 则置 α i = α i − 1 / 2 \alpha_i=\alpha_{i-1}/2 αi=αi−1/2以保证迭代的收敛速度以及最终的 α \alpha α不会太小.
事实上, 后面会提到使用差分的方法获得导数, 从而降低不少耗费. 相应地, 我们有以 ϕ , ϕ ′ \phi,\phi' ϕ,ϕ′在最近的两个 α \alpha α值上构建某个区间 [ a ˉ , b ˉ ] [\bar{a},\bar{b}] [aˉ,bˉ]上的的三次近似模型. 此时三次模型的最小值点要么在区间端点, 要么在区间内部. 内部最小值点的解析表达为 α i + 1 = α i − ( α i − α i − 1 ) [ ϕ ′ ( α i ) + d 2 − d 1 ϕ ′ ( α i ) − ϕ ′ ( α i − 1 ) + 2 d 2 ] , \alpha_{i+1}=\alpha_i-(\alpha_i-\alpha_{i-1})\left[\frac{\phi'(\alpha_i)+d_2-d_1}{\phi'(\alpha_i)-\phi'(\alpha_{i-1})+2d_2}\right], αi+1=αi−(αi−αi−1)[ϕ′(αi)−ϕ′(αi−1)+2d2ϕ′(αi)+d2−d1],其中 d 1 = ϕ ′ ( α i − 1 ) + ϕ ′ ( α i ) − 3 ϕ ( α i − 1 ) − ϕ ( α i ) α i − 1 − α i , d_1=\phi'(\alpha_{i-1})+\phi'(\alpha_i)-3\frac{\phi(\alpha_{i-1})-\phi(\alpha_i)}{\alpha_{i-1}-\alpha_i}, d1=ϕ′(αi−1)+ϕ′(αi)−3αi−1−αiϕ(αi−1)−ϕ(αi), d 2 = s i g n ( α i − α i − 1 ) [ d 1 2 − ϕ ′ ( α i − 1 ) ϕ ′ ( α i ) ] 1 / 2 . d_2=\mathrm{sign}(\alpha_i-\alpha_{i-1})[d_1^2-\phi'(\alpha_{i-1})\phi'(\alpha_i)]^{1/2}. d2=sign(αi−αi−1)[d12−ϕ′(αi−1)ϕ′(αi)]1/2.对于下一次计算时改舍弃 α i − 1 \alpha_{i-1} αi−1还是 α i \alpha_i αi, 需要根据具体的终止条件确定. 我们将在后文对Wolfe条件进行说明.
4.2 初始步长
对于牛顿法与拟牛顿法, 显然应当以
α
0
=
1
\alpha_0=1
α0=1为初始步长. 随着迭代点靠近满足二阶充分条件的极小点,
α
=
1
\alpha=1
α=1将满足Wolfe条件. 根据前述定理, 算法将达到超线性收敛甚至二次收敛速度.
而对于那些会产生尺度不一的搜索方向的算法, 比如最速下降法与共轭梯度法, 我们就需要利用问题本身的信息来决定初始步长. 一个常用的策略是, 假设在迭代点
x
k
x_k
xk的一阶改变量与上一步的相同, 即
α
0
∇
f
k
T
p
k
=
α
k
−
1
∇
f
k
−
1
T
p
k
−
1
,
\alpha_0\nabla f_k^Tp_k=\alpha_{k-1}\nabla f_{k-1}^Tp_{k-1},
α0∇fkTpk=αk−1∇fk−1Tpk−1,从而
α
0
=
α
k
−
1
∇
f
k
−
1
T
p
k
−
1
∇
f
k
T
p
k
.
\alpha_0=\alpha_{k-1}\frac{\nabla f_{k-1}^Tp_{k-1}}{\nabla f_k^Tp_k}.
α0=αk−1∇fkTpk∇fk−1Tpk−1.另一种实用的策略是, 以
f
(
x
k
−
1
)
,
f
(
x
k
)
,
∇
f
k
−
1
T
p
k
−
1
f(x_{k-1}),f(x_k),\nabla f_{k-1}^Tp_{k-1}
f(xk−1),f(xk),∇fk−1Tpk−1构建二次模型, 并定义
α
0
\alpha_0
α0为其最小值点. 这种方案给出
α
0
=
2
(
f
k
−
f
k
−
1
)
ϕ
′
(
0
)
.
\alpha_0=\frac{2(f_k-f_{k-1})}{\phi'(0)}.
α0=ϕ′(0)2(fk−fk−1).若进一步设
α
0
←
min
(
1
,
1.01
α
0
)
,
\alpha_0\leftarrow\min(1,1.01\alpha_0),
α0←min(1,1.01α0), 则我们会发现最终
α
0
=
1
\alpha_0=1
α0=1总会被采纳, 从而保证了牛顿法和拟牛顿法的超线性收敛.
4.3 Wolfe条件下的线搜索步长算法
算法4 (线搜索步长算法)
设
α
0
←
0
\alpha_0\leftarrow 0
α0←0, 选取
α
max
>
0
,
α
1
∈
(
0
,
α
max
)
\alpha_{\max}>0,\alpha_1\in(0,\alpha_{\max})
αmax>0,α1∈(0,αmax);
i
←
1
i\leftarrow1
i←1;
repeat
获
取
ϕ
(
α
i
)
\quad\quad 获取\phi(\alpha_i)
获取ϕ(αi);
\quad\quad
if
ϕ
(
α
i
)
>
ϕ
(
0
)
+
c
1
α
i
ϕ
′
(
0
)
\phi(\alpha_i)>\phi(0)+c_1\alpha_i\phi'(0)
ϕ(αi)>ϕ(0)+c1αiϕ′(0) or
[
ϕ
(
α
i
)
≥
ϕ
(
α
i
−
1
)
[\phi(\alpha_i)\ge\phi(\alpha_{i-1})
[ϕ(αi)≥ϕ(αi−1) and
i
>
1
]
i>1]
i>1]
α
∗
←
\quad\quad\quad\quad\alpha_*\leftarrow
α∗←zoom(
α
i
−
1
,
α
i
)
\alpha_{i-1},\alpha_i)
αi−1,αi) and stop;
获
取
ϕ
′
(
α
i
)
\quad\quad获取\phi'(\alpha_i)
获取ϕ′(αi);
\quad\quad
if
∣
ϕ
′
(
α
i
)
∣
≤
−
c
2
ϕ
′
(
0
)
|\phi'(\alpha_i)|\le-c_2\phi'(0)
∣ϕ′(αi)∣≤−c2ϕ′(0)
α
∗
←
α
i
\quad\quad\quad\quad\alpha_*\leftarrow\alpha_i
α∗←αi and stop;
\quad\quad
if
ϕ
′
(
α
i
)
≥
0
\phi'(\alpha_i)\ge0
ϕ′(αi)≥0
α
∗
←
\quad\quad\quad\quad\alpha_*\leftarrow
α∗←zoom
(
α
i
,
α
i
−
1
)
(\alpha_i,\alpha_{i-1})
(αi,αi−1) and stop;
选
取
α
i
+
1
∈
(
α
i
,
α
max
)
\quad\quad选取\alpha_{i+1}\in(\alpha_i,\alpha_{\max})
选取αi+1∈(αi,αmax);
i
←
i
+
1
\quad\quad i\leftarrow i+1
i←i+1;
end (repeat)
下面明确zoom, 调用形式为zoom ( α l o , α h i ) (\alpha_{lo},\alpha_{hi}) (αlo,αhi), 其中
- 由 α l o , α h i \alpha_{lo},\alpha_{hi} αlo,αhi围住的区间中有满足强Wolfe条件的点;
- α l o \alpha_{lo} αlo满足充分下降条件, 且给出了目前最低的函数值;
- α h i \alpha_{hi} αhi满足 ϕ ′ ( α l o ) ( α h i − α l o ) < 0 \phi'(\alpha_{lo})(\alpha_{hi}-\alpha_{lo})<0 ϕ′(αlo)(αhi−αlo)<0.
每一步迭代zoom都在 α l o , α h i \alpha_{lo},\alpha_{hi} αlo,αhi中间产生 α j \alpha_j αj, 之后再根据1,2,3提出某个端点.
算法5 (zoom)
repeat
插
值
求
得
试
探
步
α
j
\quad\quad插值求得试探步\alpha_j
插值求得试探步αj;
获
取
ϕ
(
α
j
)
\quad\quad获取\phi(\alpha_j)
获取ϕ(αj);
\quad\quad
if
ϕ
(
α
j
)
>
ϕ
(
0
)
+
c
1
α
j
ϕ
′
(
0
)
\phi(\alpha_j)>\phi(0)+c_1\alpha_j\phi'(0)
ϕ(αj)>ϕ(0)+c1αjϕ′(0) or
ϕ
(
α
j
)
≥
ϕ
(
α
l
o
)
\phi(\alpha_j)\ge\phi(\alpha_{lo})
ϕ(αj)≥ϕ(αlo)
α
h
i
←
α
j
\quad\quad\quad\quad\alpha_{hi}\leftarrow\alpha_j
αhi←αj;
\quad\quad
else
获
取
ϕ
′
(
α
j
)
\quad\quad\quad\quad获取\phi'(\alpha_j)
获取ϕ′(αj);
\quad\quad\quad\quad
if
∣
ϕ
′
(
α
j
)
∣
≤
−
c
2
ϕ
′
(
0
)
|\phi'(\alpha_j)|\le-c_2\phi'(0)
∣ϕ′(αj)∣≤−c2ϕ′(0)
α
∗
←
α
j
\quad\quad\quad\quad\quad\quad\alpha_*\leftarrow\alpha_j
α∗←αj and stop;
\quad\quad\quad\quad
if
∣
ϕ
′
(
α
j
)
(
α
h
i
−
α
l
o
)
≥
0
|\phi'(\alpha_j)(\alpha_{hi}-\alpha_{lo})\ge0
∣ϕ′(αj)(αhi−αlo)≥0
α
h
i
←
α
l
o
\quad\quad\quad\quad\quad\quad\alpha_{hi}\leftarrow\alpha_{lo}
αhi←αlo;
α
l
o
←
α
j
\quad\quad\quad\quad\alpha_{lo}\leftarrow\alpha_j
αlo←αj;
end (repeat)
在实施过程中, 需要注意:
- α j \alpha_j αj不应离区间端点太近;
- 当接近最优时, f ( x k ) , f ( x k − 1 ) f(x_k),f(x_{k-1}) f(xk),f(xk−1)可能在机器精度下无法区分. 因此线搜索必须在多次 (譬如, 10) 无法得到函数下降后停止搜索. 类似地还可根据 x x x的变化停止.