上一节笔记:
学弱猹:数值优化(4)——非线性共轭梯度法,信赖域法zhuanlan.zhihu.com————————————————————————————————————
大家好!俗话说得好,DDL是唯一生产力……在DDL的逼迫下,高产自然就来了2333。
在上一节最后我们介绍了信赖域方法,但是遗留了一个问题:二次模型怎么解?毕竟如果柯西点就足够的话,似乎也有点太没含金量了点。所以这一节我们会介绍解二次模型的具体的算法。
那么我们开始吧。
目录
- 信赖域方法的子问题求解
- 逼近信赖域子问题的狗腿法
- 牛顿法
- 非精确牛顿法
- 牛顿CG方法
- 信赖域框架下的牛顿CG方法
Source
- Nocedal, Wright, Numerical Optimization
- 厦门大学课堂笔记,教授主页:https://www.math.fsu.edu/~whuang2/index.html
- 厦门大学课堂笔记,教授主页:http://math.xmu.edu.cn/group/nona/kuidu.html
- P.E. Gill, W. Murray, and Wright M. H. Practical Optimization
信赖域方法的子问题求解
上一节我们留下了二次问题怎么解的问题。事实上,我们有如下的这个性质
Proposition 1:是信赖域子问题的解当且仅当存在,使得,且,并且为对称半正定的矩阵。
求解可以采用Lagrange乘数法和KKT条件的思路。你可以通过KKT条件得到前两个结论,然后通过反证法得到
事实上,虽然这样的子问题是存在一个解析解的形式的,但是有一个问题是我们需要依赖一个线性方程组
逼近信赖域子问题的狗腿法
下面这张图给出了一个狗腿法(dogleg method)的图示
其中
下图给出了一条狗的图示,如果有人养过狗或者被狗追过的话,可以看出狗腿和
如果推广一下,其实狗腿法的迭代公式可以写成这么一个形式
这里的
牛顿法
牛顿法(Newton Method)也是一个很经典的迭代算法,它的思路非常简单:我们直接找方程
如果我们希望迭代收敛,自然也就希望
注意这个迭代公式是没有步长选取的过程的。一个很有意思的结论是它在局部上具有二次收敛性。
Theorem 1:
设为的最小值,设正定,并且在的一个邻域上Lipschitz连续,那么如果说与足够靠近,则牛顿法会使得收敛于,且具有二次收敛速度。
我们证明一下这个结论。既然要看收敛速度,那么自然要计算迭代点与最小值点的差值。设当前的迭代点为
我们希望利用到海塞矩阵的信息,这样就可以利用连续性做放缩。所以我们考虑Taylor展开,得到
只需要再额外注意到
现在我们要利用一个性质,注意到
把这个不等式代进去,就可以得到有
所以如果我们证明了收敛,也就可以通过这个式子得到二次收敛的速度。而这只需要通过拆解,看出
所以只要令
事实上通过这个性质,不难看出牛顿法的快速收敛性,但是存在的问题也很多。如果我们的迭代点并不靠近最小值,怎么保证收敛性呢?解方程的时候,如何保证搜索方向是下降方向呢?事实上,单纯的牛顿法并无法解决这些问题,这就引出了下面的一些修正的方法。
非精确牛顿法
非精确牛顿法(Inexact Newton Method)是在牛顿法的基础上,针对它无法解决的那些问题进行修正得到的方法。其本质上来说,就是解下面的这个方程组
归根到底,我们都是希望使得修正后的矩阵为对称正定阵,这样才能保证方程组有解,并且搜索方向为下降方向。
正如岭回归的想法一样,我们可以考虑通过设置
这里的
有没有更好的方法呢?事实上对于矩阵分解而言,想要知道它的特征值,最好的方式就是Cholesky分解。具体来说,就是考虑下面的这个分解
简写为
我们做如下的调整。
这里的
Proposition 2:,并且
第二个小结论直接根据算法中的
最后提一个稀疏矩阵的处理技巧。如果说海塞矩阵比较的稀疏的话,可以考虑做一个行列变换,使得它非零元素的部分都堆积在右下角,这样的话会使得Cholesky分解得到的矩阵
牛顿CG方法
牛顿CG方法是一种截断共轭梯度(Truncated Conjugate Gradient)方法,它的思想是通过带截断的共轭梯度法来求解牛顿法中涉及到的方程组。为什么说是“带截断的”呢?是因为我们在上一节提过,线性共轭梯度法的计算复杂度主要在于
我们先把带截断的牛顿CG方法的算法放在下面。
我们一步一步来解释这个方法
除去一般的过程和CG相同以外,算法中还有两个标红的地方。第一个地方说如果
第二个地方说满足某一个条件就返回,这个部分从表面上来看是为了保证迭代下降,提前终止使得算法复杂度降低,但是我们到后面会看到它也是为了保证收敛速度。
到这里,相信你已经明白了这个算法的运作原理,但是为什么它能保证我们得到的
(这也是解
(链接)
有说明过这么一个性质:
Proposition 3:是函数在这个空间上的最小值。
在这里因为我们的
这样的矩阵是存在的,也就是
那么可以得到,这个时候的得到的方向
有一点美中不足的地方在于它是对称半正定的,但是没有关系,因为对于一个
这里
根据我们第二节提到的下降方向的充分必要条件,就可以发现
有了这个东西之后,下面的就是正常的线搜索了,也就是说
这里的步长选取条件为B-N条件即可,初始步长取1。
这一部分的理解其实还是有点难度的,需要线性代数的基的相关理论理解的比较到位。
好的,下面我们来解释一下标红的第二个地方究竟是什么含义。
Theorem 2:
设,设在极小值附近存在且连续,正定,且收敛于,那么牛顿CG算法具有超线性收敛速度。并且若在附近Lipschitz连续,那么收敛阶为。
我们证明一下这个结论。我们的想法是利用梯度的性质,因为梯度的本质就是两个函数的差的极限,所以根据中值定理,如果梯度是有限的数,那么它必然会与迭代点的差有相关的关系。
注意到我们有
那么根据
这样的话,因为我们希望看到的是关于梯度的变化情况,所以我们根据Taylor展开,会有
根究数分的知识,因为有连续性在,所以后面的一项就可以写成是
这样的话,综合在一起,就会得到
现在我们相当于得到了一个
因为我们要求函数足够靠近极值点,所以要求
因此代入这个
到此,整个表达式都已经只剩梯度这个变量了,只需要利用中值定理得到存在
成立,就可以得到最终的收敛速度的结论。
信赖域框架下的牛顿CG算法
我们在之前介绍了线搜索方法下实现的牛顿CG算法,但是有一个问题在于,我们虽然可以得到
这个问题和之前的二次凸问题没有本质上的区别,并且因为有了半径的约束,所以我们不会使得
具体的算法形式可以见下面这几张图。
可以看出来,有变化的地方只有两个。一是一开始,如果在CG算法中的搜索方向(也就是
既然要说这样的方法好,自然我们需要了解一下它的收敛性。我们在之前有说,即使是柯西点,我们也能够得到一个信赖域方法的全局收敛性。所以如果我们能够说明函数的每一个点的效力都比柯西点要大(也就是说新的点会使得函数在二次模型的意义下取得更优的值),那么也就可以得到全局收敛性(这是因为更好的点也会满足那个不等式,具体的见上一节的Proposition 3)。为此我们先来观察迭代点的性质。
Proposition 4:
设为牛顿CG方法中得到的迭代点,那么严格递减,并且,假设到第步迭代终止。并且有严格递增,并且
我们证明一下这个结论。注意到我们的Proposition 2,也即
接下来看一下我们迭代点模长的性质,根据我们的迭代公式,可以得到
要说明我们的模长严格递增,只需要说明
根据初始值
注意到因为我们有
再利用一下归纳假设和
事实上,通过这样的推论,我们会发现,如果第一步就返回了,就会返回柯西点,如果没有在第一步返回,就会返回一个比柯西点更好的点。那自然不难证明全局收敛性了。
最后我们简单说两句有关局部收敛性的结论。事实上对于信赖域方法,也有完全相同的局部收敛性结果。一个重要的观察是在迭代点靠近极值点的时候,对应的信赖域方法会使得最终的
到此,我们就算介绍好了牛顿法相关的细节和内容。事实上针对牛顿法而言,使用牛顿CG加上信赖域的框架即可。而且事实上因为牛顿CG单独提供了求解子问题的框架,所以也不会用上开头提到的狗腿法啥的内容。
小结
本节主要介绍的是信赖域子问题的求解,当然重点放在了牛顿法和它的一系列推广上,我们通过介绍牛顿CG方法,连带着介绍了信赖域方法使用的一个具体例子。事实上,子问题的思路在拟牛顿法中得到了极为广泛的应用,这个我们下一节再说。
——————————————————————————————————————
本专栏为我的个人专栏,也是我学习笔记的主要生产地。任何笔记都具有著作权,不可随意转载和剽窃。
个人微信公众号:cha-diary,你可以通过它来获得最新文章更新的通知。
《一个大学生的日常笔记》专栏目录:笔记专栏|目录
《GetDataWet》专栏目录:GetDataWet|目录
想要更多方面的知识分享吗?可以关注专栏:一个大学生的日常笔记。你既可以在那里找到通俗易懂的数学,也可以找到一些杂谈和闲聊。也可以关注专栏:GetDataWet,看看在大数据的世界中,一个人的心路历程。我鼓励和我相似的同志们投稿于此,增加专栏的多元性,让更多相似的求知者受益~