最优化笔记,主要参考资料为《最优化:建模、算法与理论》
梯度法仅仅依赖函数值和梯度的信息(即一阶信息),如果函数 f ( x ) f(x) f(x)充分光滑,则可以利用二阶导数信息构造下降方向 d k d^k dk.牛顿类算法就是利用二阶导数信息来构造迭代格式的算法.由于利用的信息变多,牛顿法的实际表现可以远好于梯度法,但是它对函数 f ( x ) f(x) f(x) 的要求也相应变高.
一、经典牛顿法
(1) 迭代格式
对于可微二次函数
f
(
x
)
f(x)
f(x),考虑目标函数
f
f
f 在点
x
k
x_k
xk 的二阶泰勒展开
f
(
x
k
+
d
k
)
=
f
(
x
k
)
+
∇
f
(
x
k
)
T
d
k
+
1
2
(
d
k
)
T
∇
2
f
(
x
k
)
d
k
+
o
(
∥
d
k
∥
2
)
.
f\left(x^k+d^k\right)=f\left(x^k\right)+\nabla f\left(x^k\right)^{\mathrm{T}}d^k+\frac12\left(d^k\right)^{\mathrm{T}}\nabla^2f\left(x^k\right)d^k+o\left(\left\|d^k\right\|^2\right).
f(xk+dk)=f(xk)+∇f(xk)Tdk+21(dk)T∇2f(xk)dk+o(
dk
2).
忽略高阶项
o
(
∥
d
k
∥
2
)
o\left(\|d^k\|^2\right)
o(∥dk∥2),那么我们可以将右边表达式近似为
f
(
x
k
+
d
k
)
f\left(x^k+d^k\right)
f(xk+dk),通常我们是需要求
min
f
\min f
minf,那么我们可以将等式右边看作
d
k
d^k
dk 的函数并极小化(极小化右边等价于极小化
f
(
x
k
+
d
k
)
f\left(x^k+d^k\right)
f(xk+dk),二阶近似),对等式右边关于
d
k
d^k
dk求导得
∇ 2 f ( x k ) d k = − ∇ f ( x k ) . ( 1 ) \nabla^2f\left(x^k\right)d^k=-\nabla f\left(x^k\right). \quad (1) ∇2f(xk)dk=−∇f(xk).(1)
方程(1)被称为牛顿方程,
d
k
d^k
dk 被称为牛顿方向。若
∇
2
f
(
x
k
)
\nabla^2f\left(x^k\right)
∇2f(xk) 非奇异,则可以得到
d
k
d^k
dk的显示表达式,可构造迭代格式
x
k
+
1
=
x
k
−
α
k
∇
2
f
(
x
k
)
−
1
∇
f
(
x
k
)
.
(
2
)
x^{k+1}=x^k-\alpha_k\nabla^2f\left(x^k\right)^{-1}\nabla f\left(x^k\right). \quad (2)
xk+1=xk−αk∇2f(xk)−1∇f(xk).(2)
其中
α
k
\alpha_k
αk为步长,当步长
α
k
=
1
\alpha_k=1
αk=1时迭代格式(2)被称为经典牛顿法。
(2)收敛性
经典牛顿法是收敛速度很快的算法,但它的收敛是有条件的:
- 初始点 x 0 x_0 x0 必须距离问题的解充分近,即牛顿法只有局部收敛性,当 x 0 x_0 x0 距问题的解较远时,牛顿算法在多数情况下会失效;
- 第二,海瑟矩阵 ∇ 2 f ( x ) \nabla^2f(x) ∇2f(x)需要为正定矩阵.
下面给出经典牛顿法收敛性的证明.
从牛顿法的定义(1)和最优值点
x
∗
x^*
x∗ 的性质
∇
f
(
x
∗
)
=
0
\nabla f\left(x^*\right)=0
∇f(x∗)=0 可得
x
k
+
1
−
x
∗
=
x
k
−
∇
2
f
(
x
k
)
−
1
∇
f
(
x
k
)
−
x
∗
=
∇
2
f
(
x
k
)
−
1
[
∇
2
f
(
x
k
)
(
x
k
−
x
∗
)
−
(
∇
f
(
x
k
)
−
∇
f
(
x
∗
)
)
]
.
\begin{aligned} x^{k+1}-x^* & =x^k-\nabla^2 f\left(x^k\right)^{-1} \nabla f\left(x^k\right)-x^* \\ & =\nabla^2 f\left(x^k\right)^{-1}\left[\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right] . \end{aligned}
xk+1−x∗=xk−∇2f(xk)−1∇f(xk)−x∗=∇2f(xk)−1[∇2f(xk)(xk−x∗)−(∇f(xk)−∇f(x∗))].
我们把后面一项凑出二阶导的格式,由常见的积分技巧可得
∇
f
(
x
k
)
−
∇
f
(
x
∗
)
=
∫
0
1
∇
2
f
(
x
k
+
t
(
x
∗
−
x
k
)
)
(
x
k
−
x
∗
)
d
t
,
\nabla f\left(x^k\right)-\nabla f\left(x^*\right)=\int_0^1 \nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)\left(x^k-x^*\right) \mathrm{d} t,
∇f(xk)−∇f(x∗)=∫01∇2f(xk+t(x∗−xk))(xk−x∗)dt,
因此我们有估计
∥
∇
2
f
(
x
k
)
(
x
k
−
x
∗
)
−
(
∇
f
(
x
k
)
−
∇
f
(
x
∗
)
)
∥
=
∥
∫
0
1
[
∇
2
f
(
x
k
+
t
(
x
∗
−
x
k
)
)
−
∇
2
f
(
x
k
)
]
(
x
k
−
x
∗
)
d
t
∥
⩽
∫
0
1
∥
∇
2
f
(
x
k
+
t
(
x
∗
−
x
k
)
)
−
∇
2
f
(
x
k
)
∥
∥
x
k
−
x
∗
∥
d
t
⩽
∥
x
k
−
x
∗
∥
2
∫
0
1
L
t
d
t
=
L
2
∥
x
k
−
x
∗
∥
2
,
\begin{aligned} & \left\|\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right\| \\ = & \left\|\int_0^1\left[\nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)-\nabla^2 f\left(x^k\right)\right]\left(x^k-x^*\right) \mathrm{d} t\right\| \\ \leqslant & \int_0^1\left\|\nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)-\nabla^2 f\left(x^k\right)\right\|\left\|x^k-x^*\right\| \mathrm{d} t \\ \leqslant & \left\|x^k-x^*\right\|^2 \int_0^1 L t \mathrm{~d} t \\ = & \frac{L}{2}\left\|x^k-x^*\right\|^2, \end{aligned}
=⩽⩽=
∇2f(xk)(xk−x∗)−(∇f(xk)−∇f(x∗))
∫01[∇2f(xk+t(x∗−xk))−∇2f(xk)](xk−x∗)dt
∫01
∇2f(xk+t(x∗−xk))−∇2f(xk)
xk−x∗
dt
xk−x∗
2∫01Lt dt2L
xk−x∗
2,
其中第二个不等式是由于海瑟矩阵的局部利普希茨连续性. 又因为
∇
2
f
(
x
∗
)
\nabla^2 f\left(x^*\right)
∇2f(x∗)是非奇异的且
f
f
f 二阶连续可微, 因此存在
r
r
r, 使得对任意满足
∥
x
−
x
∗
∥
⩽
r
\left\|x-x^*\right\| \leqslant r
∥x−x∗∥⩽r,有
∥
∇
2
f
(
x
)
−
1
∥
⩽
2
∥
∇
2
f
(
x
∗
)
−
1
∥
\|\nabla^2f(x)^{-1}\|\leqslant 2\|\nabla^2f(x^*)^{-1}\|
∥∇2f(x)−1∥⩽2∥∇2f(x∗)−1∥,结合上式,可得:
∥
x
k
+
1
−
x
∗
∥
⩽
∥
∇
2
f
(
x
k
)
−
1
∥
∥
∇
2
f
(
x
k
)
(
x
k
−
x
∗
)
−
(
∇
f
(
x
k
)
−
∇
f
(
x
∗
)
)
∥
⩽
L
∥
∇
2
f
(
x
∗
)
−
1
∥
∥
x
k
−
x
∗
∥
2
.
\begin{aligned} &\left\|x^{k+1}-x^*\right\| \\ & \leqslant\left\|\nabla^2 f\left(x^k\right)^{-1}\right\|\left\|\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right\| \\ & \leqslant L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\|\left\|x^k-x^*\right\|^2 . \end{aligned}
xk+1−x∗
⩽
∇2f(xk)−1
∇2f(xk)(xk−x∗)−(∇f(xk)−∇f(x∗))
⩽L
∇2f(x∗)−1
xk−x∗
2.即:
∥
x
k
+
1
−
x
∗
∥
∥
x
k
−
x
∗
∥
2
⩽
L
∥
∇
2
f
(
x
∗
)
−
1
∥
\frac{\left\|x^{k+1}-x^*\right\|}{\left\|x^k-x^*\right\|^2 } \leqslant L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\|
∥xk−x∗∥2
xk+1−x∗
⩽L
∇2f(x∗)−1
因此, 当初始点
x
0
x^0
x0 满足
∥
x
0
−
x
∗
∥
⩽
min
{
δ
,
r
,
1
2
L
∥
∇
2
f
(
x
∗
)
−
1
∥
}
=
def
δ
^
\left\|x^0-x^*\right\| \leqslant \min \left\{\delta, r, \frac{1}{2 L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\|}\right\} \stackrel{\text { def }}{=} \hat{\delta}
x0−x∗
⩽min⎩
⎨
⎧δ,r,2L
∇2f(x∗)−1
1⎭
⎬
⎫= def δ^时, 可保证迭代点列一直处于邻域
N
δ
^
(
x
∗
)
N_{\hat{\delta}}\left(x^*\right)
Nδ^(x∗) 中, 因此
{
x
k
}
Q
\left\{x^k\right\} \mathrm{Q}
{xk}Q-二次收敛到
x
∗
x^*
x∗.
二、拟牛顿法
牛顿法在理论上和实践中均取得很好的效果.然而对于大规模问题,函数的海瑟矩阵计算代价特别大或者难以得到,即便得到海瑟矩阵我们还需要求解一个大规模线性方程组.那么能否使用海瑟矩阵或其逆矩阵的近似来进行牛顿迭代呢?拟牛顿法便是这样的算法,它能够在每一步以较小的计算代价生成近似矩阵,并且使用近似矩阵代替海瑟矩阵而产生的迭代序列仍具有超线性收敛的性质.
拟牛顿方法不计算海瑟矩阵 ∇ 2 f ( x ) \nabla^2f(x) ∇2f(x) , 而是构造其近似矩阵 B k B^k Bk 或其逆的近似矩阵 H k H^k Hk. 我们希望 B k B^k Bk 或 H k H^k Hk 仍然保留海瑟矩阵的部分性质,例如使得 d k d^k dk 仍然为下降方向.
(1) 割线方程
设 f ( x ) f(x) f(x)是二阶连续可微函数.对一阶向量值函数 ∇ f ( x ) \nabla f(x) ∇f(x)在点 x k + 1 x^{k+1} xk+1处一阶泰勒近似,得
∇ f ( x ) = ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) + O ( ∥ x − x k + 1 ∥ 2 ) , \nabla f(x)=\nabla f(x^{k+1})+\nabla^2f(x^{k+1})(x-x^{k+1})+\mathcal{O}(\left\|x-x^{k+1}\right\|^2), ∇f(x)=∇f(xk+1)+∇2f(xk+1)(x−xk+1)+O( x−xk+1 2),
令 x = x k x=x^k x=xk,且 s k = x k + 1 − x k \color{red}{s^k=x^{k+1}-x^k} sk=xk+1−xk为点差, y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) \color{red}{y^k=\nabla f(x^{k+1})-\nabla f(x^k)} yk=∇f(xk+1)−∇f(xk)为梯度差,得
∇ 2 f ( x k + 1 ) s k + O ( ∥ s k ∥ 2 ) = y k . \nabla^2f(x^{k+1})s^k+\mathcal{O}(\left\|s^k\right\|^2)=y^k. ∇2f(xk+1)sk+O( sk 2)=yk.
现忽略高阶项 ∥ s k ∥ 2 \|s^k\|^2 ∥sk∥2,只希望近似海瑟矩阵的矩阵 B k + 1 B^{k+1} Bk+1满足方程
B k + 1 s k = y k , B^{k+1}s^k=y^k, Bk+1sk=yk,
或其逆阵
H
k
+
1
H^{k+1}
Hk+1满足
H
k
+
1
y
k
=
s
k
.
H^{k+1}y^k=s^k.
Hk+1yk=sk.
上述两个方程即称为割线方程。所以在拟牛顿算法中,我们用
B
k
+
1
B^{k+1}
Bk+1来近似海塞矩阵
∇
2
f
(
x
)
\nabla^2 f(x)
∇2f(x),其算法基本框架如下:
要保证算法收敛,近似矩阵要满足正定的要求:
拟牛顿法的关键在于近似矩阵 B K B^{K} BK或 H K H^K HK怎么计算,下面介绍经典的BFGS公式。
(2) BFGS公式
(3) BFGS全局收敛性
参考资料
- 刘浩洋、户将、李勇锋、文再文. 最优化:建模、算法与理论. 高教出版社, 2022.
- http://faculty.bicmr.pku.edu.cn/~wenzw/