牛顿法和拟牛顿法介绍

最优化笔记,主要参考资料为《最优化:建模、算法与理论》


文章目录

  • 一、经典牛顿法
    • (1) 迭代格式
    • (2)收敛性
  • 二、拟牛顿法
    • (1) 割线方程
    • (2) BFGS公式
    • (3) BFGS全局收敛性
  • 参考资料


梯度法仅仅依赖函数值和梯度的信息(即一阶信息),如果函数 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)T2f(xk)dk+o( dk 2).
忽略高阶项 o ( ∥ d k ∥ 2 ) o\left(\|d^k\|^2\right) o(dk2),并将等式右边视作 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αk2f(xk)1f(xk).(2)
当步长 α k = 1 \alpha_k=1 αk=1时迭代格式(2)被称为经典牛顿法

(2)收敛性

牛顿法和拟牛顿法介绍_第1张图片

经典牛顿法是收敛速度很快的算法,但它的收敛是有条件的:

  1. 初始点 x 0 x_0 x0 必须距离问题的解充分近,即牛顿法只有局部收敛性,当 x 0 x_0 x0 距问题的解较远时,牛顿算法在多数情况下会失效;
  2. 第二,海瑟矩阵 ∇ 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+1x=xk2f(xk)1f(xk)x=2f(xk)1[2f(xk)(xkx)(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)=012f(xk+t(xxk))(xkx)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)(xkx)(f(xk)f(x)) 01[2f(xk+t(xxk))2f(xk)](xkx)dt 01 2f(xk+t(xxk))2f(xk) xkx dt xkx 201Lt dt2L xkx 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 xxr,有 ∥ ∇ 2 f ( x ) − 1 ∥ ⩽ 2 ∥ ∇ 2 f ( x ∗ ) − 1 ∥ \|\nabla^2f(x)^{-1}\|\leqslant 2\|\nabla^2f(x^*)^{-1}\| 2f(x)12∥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+1x 2f(xk)1 2f(xk)(xkx)(f(xk)f(x)) L 2f(x)1 xkx 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\| xkx2 xk+1x 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} x0x 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)(xxk+1)+O( xxk+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+1xk点差 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 sk2,只希望近似海瑟矩阵的矩阵 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),其算法基本框架如下:

牛顿法和拟牛顿法介绍_第2张图片

要保证算法收敛,近似矩阵要满足正定的要求:

牛顿法和拟牛顿法介绍_第3张图片

拟牛顿法的关键在于近似矩阵 B K B^{K} BK H K H^K HK怎么计算,下面介绍经典的BFGS公式。

(2) BFGS公式

牛顿法和拟牛顿法介绍_第4张图片

牛顿法和拟牛顿法介绍_第5张图片

(3) BFGS全局收敛性

牛顿法和拟牛顿法介绍_第6张图片

参考资料

  1. 刘浩洋、户将、李勇锋、文再文. 最优化:建模、算法与理论. 高教出版社, 2022.
  2. http://faculty.bicmr.pku.edu.cn/~wenzw/

你可能感兴趣的:(凸优化,算法)