最优化笔记,主要参考资料为《最优化:建模、算法与理论》
梯度法仅仅依赖函数值和梯度的信息(即一阶信息),如果函数 f ( x ) f(x) f(x)充分光滑,则可以利用二阶导数信息构造下降方向 d k d^k dk.牛顿类算法就是利用二阶导数信息来构造迭代格式的算法.由于利用的信息变多,牛顿法的实际表现可以远好于梯度法,但是它对函数 f ( x ) f(x) f(x) 的要求也相应变高.
对于可微二次函数
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),并将等式右边视作
d
k
d^k
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) 非奇异,可构造迭代格式
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
=
1
\alpha_k=1
αk?=1时迭代格式(2)被称为经典牛顿法。
经典牛顿法是收敛速度很快的算法,但它的收敛是有条件的:
下面给出经典牛顿法收敛性的证明.
从牛顿法的定义(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∫01?Lt?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,有$|\nabla2f(x){-1}|\leqslant 2|\nabla2f(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 仍然为下降方向.
设 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公式。