我卸不下对你的喜欢,
因为爱会慢慢增加重量。
我醉心于你的发香,
因为它让回想有了画面感。
在虚拟的土壤与
真实的肉体上,
文字与真心蔓延滋长了
我们的感情。
脑海储存着幸福,
不断放送着你可爱的模样。
——畅宝宝的傻逼哥哥
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