从这节开始,我们开始介绍线性共轭梯度法。首先,在此我想更正一下大家的认识。共轭梯度法分为线性共轭梯度法和非线性共轭梯度法,网上几乎所有的文章都将线性共轭梯度法看成是共轭梯度法,我认为这是不太准确的。线性共轭梯度法面对的函数是二次函数且采取的线搜索为精确线搜索,因此具有二次终止性。但是非线性共轭梯度法面对的函数是一般函数,且采取的线搜索可以是任意的线搜索,一般也不具备二次终止性。后面会详细介绍
1、引言
1952 年,Hestense 和 stiefel 在研究求解线性方程组
其中为正定矩阵,
时提出了一种新的算法,我们称为线性共轭梯度法,之所以叫这个名字,是因为它解决是线性方程组且取当前点的负梯度方向与前面搜索方向共轭化,后面会详细介绍。(求解 (1) 的方法之前就有主元法,高斯-赛德尔迭代法,雅可比迭代法,详细的可参考《数值分析》)
求解 (1) 的解等价于求解下面的一个二次函数的极小值
关于,(1) 和 (2) 这两个问题之所以会等价,这在前面的文章《最优化理论的基础》里面有谈到过。
2、共轭方向法
首先需明确的是共轭方向法是假定存在一组共轭方向,探讨是一般的性质问题。非线性共轭梯度法只是共轭方向法的一种而已,它教会我们如何构造共轭方向。所有对共轭方向法的探讨很有必要。
:设
为
阶对称正定矩阵,
为一组
维向量组,如果
则称是
共轭的.
如果,则共轭性就等价于正交性。显然,如果
是
共轭的,则他们是线性无关的。这个证明很简单,在此就不详细给出。
对于 (2) 中的问题,任给初始点,采用精确线搜索,即是采取如下迭代方式
:对于
中的函数,考虑
和
,则
中的迭代至多进行
步,且每一个迭代点
都是
在
和方向
所张成的线性流形
中的极小点
:证明分为两步:
(1)、证明对所有的,有
由于
故当时有
:上式中第一项为
是由于精确线搜索,第二项为
是由于共轭向量组。
当时,
,故
式成立。
(2)、证是
在线性流形上的极小点。设
那么
其中。由于
是线性无关的,
是列满秩,所有
是正定的,故而
是函数
的极小值点。
:(1)、上面的过程需要用到之前的《最优化理论的基础》
(2) 、由于是
维线性空间,那个线性无关的
必定可以张成
维线性空间,所有共轭方向法具有二次终止性,即是对于二次函数,采用精确线搜索,共轭方向法能够有限步终止。
3、共轭梯度法
共轭梯度法是著名的共轭方向法,它的基本思想是取当前点的负梯度方向与搜索方向进行共轭化,从而产生当前点的搜索方向。共轭梯度法需要较少的存储和计算量,所有处理无约束优化问题是非常有效的。
考虑一般的二次目标函数,其实这里写的有点啰嗦,与 (2) 等价
则其梯度
令初始搜索方向为负梯度方向
则
其中由精确线搜索得到,根据共轭方向法的性质,我们有
,令
选择合适的,使得
在 (8) 式两边同时左乘 得
以上只是简单展示了
是如何计算出来的,但是却很有必要,因为我们要通过数学归纳法来说明,网上有很多共轭梯度法的版本,都不严谨。
既然已知,由
式,我们就可以知
,再由精确线搜索,就可知
.
由前面共轭方向法,我们知,由 (8) 和 (10) 我们有
现归纳假设已得到相互共轭的搜索方向,精确线搜索得到的步长为
,且满足
现令
其中的选择满足
对 (15) 左乘,得
利用 (13) 式,我们有
设,其中
由精确线搜索得到,根据共轭方向法的
,我们有
又由的表达式
与 (17) 相结合有
由 (16) 式和 (18) 式,我们就有
所以,我们便得到了一组由负梯度方向形成的共轭方向,形式如下
若为二次函数,
采用精确线搜索,上面的
等价于
特别地,它是满足 (12),(13)和(14)的关系。直白来说就是当前的搜索方向与前面的方向都共轭,当前点的梯度方向与前面的方向与梯度都正交,还有就是当前点的梯度与方向作内积是当前点梯度的欧式范数的平方(其实这是说明共轭梯度法产生的方向是充分下降的,以后肯定会详细介绍充分下降)
以上便是线性共轭梯度法的知识,到此也就结束了,不过在此提一下,我们的证明可能看似复杂,主要是我们还想表明共轭梯度法具有 (13) 和 (14) 的性质。
还有就是后面的推导的时候,我是分两个时间段写的,感觉不是很连贯。之所以没有参考书籍,因为 (19) 式很多书上描述的不一样,主要也就是系数的差别,其实也无关紧要,不过现在论文都是按照 (19) 式写,所以我也想统一一下。