非线性共轭梯度法:可用于求解大规模问题,并且只需要用到一阶导数的信息
本章的思想就是将共轭梯度法与线搜索以及信赖域技巧相结合,在满足计算效率的情况下可以达到全局收敛性
用这个思路求解的是牛顿步 为什么求解牛顿方程?用到了原函数的二阶信息,求得的解更接近真实解?
一、 非精确牛顿法
第一部分考虑的是求解非精确的牛顿步,求解的依旧是之前提到的牛顿方程:
∇2fkpkN=−∇fk\nabla^{2}f_{k}p_{k}^{N}=-\nabla f_{k}∇2fkpkN=−∇fk
只不过这一节求解的是非精确的牛顿步
非精确牛顿法的局部收敛性:
定义:残差(residual)为 rk=∇2fkpk+∇fkr_{k}=\nabla ^{2}f_{k}p_{k}+\nabla f_{k}rk=∇2fkpk+∇fk
强制序列(forcing sequence) ∥rk∥≤ηk∥∇fk∥,0<ηk<1\parallel r_{k}\parallel\leq \eta_{k}\parallel \nabla f_{k}\parallel,\quad 0<\eta_{k}<1∥rk∥≤ηk∥∇fk∥,0<ηk<1
条件:
- ∇2f(x)\nabla^{2}f(x)∇2f(x):existed,continuous in N(x∗)N(x^{*})N(x∗),∇2f(x∗)\nabla^{2}f(x^{*})∇2f(x∗) positive definite .
- pkp_{k}pk satisfies ∥rk∥≤ηk∥∇fk∥,0<ηk<1\parallel r_{k}\parallel\leq \eta_{k}\parallel \nabla f_{k}\parallel,\quad 0<\eta_{k}<1∥rk∥≤ηk∥∇fk∥,0<ηk<1
结论:
if x0x_{0}x0 sufficiently near x∗x^{*}x∗, {xk}⇒x∗\left\lbrace x_{k}\right\rbrace\Rightarrow x^{*}{xk}⇒x∗,and
∥∇2f(x∗)(xk+1−x∗)∥≤η^∥∇2f(x∗)(xk−x∗)∥\parallel\nabla^{2}f(x^{*}) (x_{k+1}-x^{*})\parallel\leq\hat\eta\parallel \nabla^{2}f(x^{*}) (x_{k}-x^{*})\parallel ∥∇2f(x∗)(xk+1−x∗)∥≤η^∥∇2f(x∗)(xk−x∗)∥
适用范围:所有满足上面的残差和强制序列要求的步长均可达到这样的收敛性;其中强制序列的选择会影响收敛速率
证明思路:
-
∇2f\nabla^{2}f∇2f positive definite and continuous near at x∗⇒∥(∇2fk)−1∥≤Lx^{*}\Rightarrow\parallel(\nabla^{2}f_{k})^{-1}\parallel\leq Lx∗⇒∥(∇2fk)−1∥≤L for xkx_{k}xk sufficiently close to x∗x^{*}x∗.
-
by the definitation of rkr^{k}rk,pkp_{k}pk satisfies ∥pk∥≤(∥∇fk∥+∥rk∥)≤2L∥∇fk∥\parallel p_{k}\parallel\leq (\parallel \nabla f_{k}\parallel+\parallel r_{k}\parallel)\leq 2L\parallel \nabla f_{k}\parallel∥pk∥≤(∥∇fk∥+∥rk∥)≤2L∥∇fk∥
-
by Taylor Theorem
∇fk+1=rk+o(∥∇fk∥)\nabla f_{k+1} = r_{k}+o(\parallel \nabla f_{k}\parallel)∇fk+1=rk+o(∥∇fk∥) -
taking norms ∥∇fk+1∥≤1+η2∥∇fk∥\parallel \nabla f_{k+1}\parallel \leq \frac{1+\eta}{2}\parallel\nabla f_{k}\parallel∥∇fk+1∥≤21+η∥∇fk∥
-
smoothness:∇fk=∇2f(x∗)(xk−x∗)+o(∥xk−x∗∥)\nabla f_{k}=\nabla^{2}f(x^{*})(x_{k}-x^{*})+o(\parallel x_{k}-x^{*}\parallel)∇fk=∇2f(x∗)(xk−x∗)+o(∥xk−x∗∥)
-
∥∇fk+1∥∥∇fk∥≤ηk+o(1)\frac{\parallel \nabla f_{k+1}\parallel}{\parallel\nabla f_{k}\parallel}\leq \eta_{k}+o(1)∥∇fk∥∥∇fk+1∥≤ηk+o(1)
-
if limk→∞ηk=0\lim_{k\rightarrow\infty}\eta_{k}=0limk→∞ηk=0,Q-superlinear
-
making additional assumption :the Hessian ∇2f(x)\nabla^{2}f(x)∇2f(x) is Lipschitz continous near x∗x^{*}x∗,obtain Q-quadratic convergence
在收敛性的证明中,假设 xkx_{k}xk 最终迭代到 x∗x^{*}x∗ 的一个邻域内;在实际的应用中通常也会将牛顿法与线搜索,信赖域技术相结合以达到全局收敛的性质。
Line-Search Newton-CG 方法
思路:用CG方法求解牛顿方程中的 牛顿步,并设置停止准则是 ∥rk∥≤ηk∥∇fk∥,0<ηk<1\parallel r_{k}\parallel\leq \eta_{k}\parallel \nabla f_{k}\parallel,\quad 0<\eta_{k}<1∥rk∥≤ηk∥∇fk∥,0<ηk<1成立
算法内容:
算法特点:
- 求得的是一个非精确解
- 检测负曲率的步骤保证了选取的方向是下降方向(CG适用于系数矩阵正定的情况)
- 当Hessian矩阵接近奇异时算法效果很差
改进:
- 可以对矩阵进行预处理
- 在负特征值检测这一步添加一个阈值(但是这个阈值不好选)
Trust-Region Newton-CG 方法
算法收敛性:由迭代过程,最差的情况也是选到Cauchy Point,所以由第四章的结论可以保证全局收敛
算法内容:
- 一旦检测到负特征值,就停止,选取柯西点
- 当 ∥zk∥\parallel z_{k}\parallel∥zk∥走出信赖域,同样在柯西点处停止
这个定理就是说明在算法迭代的过程中 ∥zk∥\parallel z_{k}\parallel∥zk∥ 是单调递增的,
证明:主要是利用了共轭梯度法中扩展子空间的性质。
预处理(目的是为了加速算法迭代)
方法1、找一个非奇异矩阵DDD,信赖域子问题发生变化:∥Dp∥≤△k\parallel Dp \parallel\leq\triangle_{k}∥Dp∥≤△k,对应的修改 mk(p)m_{k}(p)mk(p).
使得 D−T∇2fkD−1D^{-T}\nabla^{2}f_{k}D^{-1}D−T∇2fkD−1 这一矩阵有更好的分布(如何理解这个分布)。
经过预处理之后
方法2、 不完全Cholesky分解
对于一个正定矩阵 BBB,找到一个下三角矩阵 LLL,使得 B=LTL−RB=L^{T}L-RB=LTL−R.
二、有限内存的拟牛顿法
LIMITED-MEMORY QUASI-NEWTON 方法(和非线性CG的关系;应用框架,)
思路:选取Hessian中的部分列用于代表整个Hessian 的近似,而不是储存所有
优点:降低了存储需求并且达到了可接受的收敛速率,可用于处理大规模问题
很多 limited-memory 方法被提出,这里主要考虑 L-BFGS
缺点: 问题的条件不好时收敛很慢(Hessian矩阵的特征值分布广泛)
L-BFGS思想:利用近几步迭代产生的曲率信息构建近似Hessian (即早些的曲率信息将被忽略,是因为他们对当前的影响不大并且需要占据一部分空间)
PS:类似的还有 SR1-BFGS
一些参数的选择:
γk=sk−1Tyk−1yk−1Tyk−1;Hk0=γkI \gamma_{k}=\frac{s_{k-1}^{T}y_{k-1}}{y_{k-1}^{T}y_{k-1}};H_{k}^{0}=\gamma_{k}Iγk=yk−1Tyk−1sk−1Tyk−1;Hk0=γkI
Compact representation of BFGS updating
用外积的形式更新拟牛顿矩阵
同样的SR1的更新也可以写成这种外积的形式。
三、稀疏拟牛顿更新
求解下面这样的一个优化问题,以获得和精确Hessian 具有相同稀疏性的近似Hessian,约束条件要求满足切线方程.