我卸不下对你的喜欢,
因为爱会慢慢增加重量。
我醉心于你的发香,
因为它让回想有了画面感。
在虚拟的土壤与
真实的肉体上,
文字与真心蔓延滋长了
我们的感情。
脑海储存着幸福,
不断放送着你可爱的模样。
——畅宝宝的傻逼哥哥
Hestenes与Stiefel提出了一种生成共轭方向的有效方法,就是共轭梯度法。该方法中,每次迭代生成方向,当迭代第k+1次时,用前一个方向dk生成新的点xk+1,然后βdk加上−gk+1(新点处的负梯度)生成新的方向dk+1。
共轭方向法基于下面的定理,除了定义生成共轭方向的方法外,其余都与上篇文章的定理1一样。
定理1:(a)如果H是正定矩阵,那么对任意初始点x0与初始方向
由递推关系
生成的序列收敛到唯一解x∗,其中
(b)梯度gk与{g0,g1,…,gk−1}正交,即
证明:收敛性的证明与上篇文章的定理1一样,所以还需要证明的就是方向d0,d1,…,dn−1组成一个共轭集合,即
接下来我们用归纳法进行证明。假设
我们需要说明
令S(v0,v1,…,vk)是向量v0,v1,…,vk生成的子空间,因为
故当k=0时,我们有
因为d0=−g0。另外,由等式4可得
即g1,d1是g0,Hg0的线性组合,所以
同样地,对于k=2我们有
因此
继续用归纳法,我们可以得到
现在根据等式4可得
当i=k时,等式5得出
当i<k时,等式9表明
所以Hdi可以用线性组合
来表示,其中αi,i=0,1,…,k是常数。接下来根据等式10与等式12
根据上篇文章定理2第一部分的正交性,上式的第一项等于零,而根据假设等式6可知,上式第二项等于零。结合等式11与13我们有
对于k=0,等式14得出
且根据等式6与14,我们得出
(b)根据等式8与9可知,g0,g1,…,gk生成的子空间与d0,d1,…,dk是一样的,因此他们是线性无关的,由此可得
其中aj是常数,j=0,1,…,i。根据上篇文章的定理2可知
上面定理中αk,βk的表达式可以进一步化简,根据等式4可得
其中根据上篇文章的定理2可知
故
所以等式2的α表达式可以改成
另一方面,因为
所以
接下来根据等式8与9可得
或者
又因为
所以等式5,15,16与17得到
上面的原则与定理得到了下面的算法:
对于二维凸二次问题,上述算法得到的解的轨迹如图1所示,注意x1=x0−α0g0,其中α0是最小化f(x0−αg0)的α值,与最速下降法一样。
共轭梯度算法的主要优点为:
- 梯度是有限的,并且与前面的方向向量线性无关,当然除了问题的解本身外。
- 计算相对简单,相比最速下降法稍微复杂一点点。
- 不需要线搜索。
- 对于凸二次问题,该算法n次迭代就能收敛。
- 第一次选的方向就是最速下降的方向,所以第一次得带就能很好的减少
f(x) 。 - 因为方向是基于梯度信息的,当应用到非二次问题时,该算法有较好的收敛性。
- 不需要考虑海森矩阵的逆。
该算法的缺点为:
- 需要存储,计算海森矩阵。
- 对于非二次问题,存在极个别情况会无法达到收敛。
图1