漫步最优化三十七——共轭梯度法












——
Hestenes与Stiefel提出了一种生成共轭方向的有效方法,就是共轭梯度法。该方法中,每次迭代生成方向,当迭代第k+1次时,用前一个方向dk生成新的点xk+1,然后βdk加上gk+1(新点处的负梯度)生成新的方向dk+1

共轭方向法基于下面的定理,除了定义生成共轭方向的方法外,其余都与上篇文章的定理1一样。

1(a)如果H是正定矩阵,那么对任意初始点x0与初始方向

d0=g0=(b+Hx0)

由递推关系
xk+1=xk+αkdk(1)

生成的序列收敛到唯一解x,其中

αkgdk+1βk=gTkdkdTkHdk=b+Hxk=gk+1+βkdk=gTk+1HdkdTkHdk(2)(3)(4)(5)

(b)梯度gk{g0,g1,,gk1}正交,即

gTkgi=0for 0i<k

收敛性的证明与上篇文章的定理1一样,所以还需要证明的就是方向d0,d1,,dn1组成一个共轭集合,即

dTkHdi=0for0i<k and 1kn

接下来我们用归纳法进行证明。假设

dTkHdi=0for0i<k(6)

我们需要说明

dTk+1Hdi=0for0i<k+1

S(v0,v1,,vk)是向量v0,v1,,vk生成的子空间,因为

gk+1=gk+αkHdk(7)

故当k=0时,我们有

g1=g0+α0Hd0=g0α0Hg0

因为d0=g0。另外,由等式4可得

d1=g1+β0d0=(1+β0)g0+α0Hg0

g1,d1g0,Hg0的线性组合,所以

S(g0,g1)=S(d0,d1)=S(g0,Hg0)

同样地,对于k=2我们有

g2=d2=g0[α0+α1(1+β0)]Hg0+α0α1H2g0[1+(1+β0)β1]g0+[α0+α1(1+β0)+α0β1]Hg0α0α1H2g0

因此

S(g0,g1,g2)S(d0,d1,d2)=S(g0,Hg0,H2g0)=S(g0,Hg0,H2g0)

继续用归纳法,我们可以得到

S(g0,g1,,gk)S(d0,d1,,dk)=S(g0,Hg0,,Hkg0)=S(g0,Hg0,,Hkg0)(8)(9)

现在根据等式4可得

dTk+1Hdi=gTk+1Hdi+βkdTkHdi(10)

i=k时,等式5得出

dTk+1Hdk=gTk+1Hdk+βkdTkHdk=0(11)

i<k时,等式9表明

HdiS(d0,d1,,dk)

所以Hdi可以用线性组合

Hdi=i=1kaidi(12)

来表示,其中αi,i=0,1,,k是常数。接下来根据等式10与等式12

dTk+1Hdi=i=0kaigTk+1di+βkdTkHdi=0for i<k(13)(14)

根据上篇文章定理2第一部分的正交性,上式的第一项等于零,而根据假设等式6可知,上式第二项等于零。结合等式11与13我们有

dTk+1Hdi=0for 0i<k+1(15)

对于k=0,等式14得出

dT1Hdi=0for 0i<1

且根据等式6与14,我们得出

dT2HdidT3HdidTkHdi=0for 0i<2=0for 0i<3=0for 0i<k

(b)根据等式8与9可知,g0,g1,,gk生成的子空间与d0,d1,,dk是一样的,因此他们是线性无关的,由此可得

gi=j=0iajdj

其中aj是常数,j=0,1,,i。根据上篇文章的定理2可知

gTkgi=j=0iajgTkdj=0for 0i<k

上面定理中αk,βk的表达式可以进一步化简,根据等式4可得

gTkdk=gTkgkβk1gTkdk1

其中根据上篇文章的定理2可知

gTkdk1=0


gTkdk=gTkgk

所以等式2的α表达式可以改成

αk=gTkgkdTkHdk(16)

另一方面,因为

Hdk=1αk(gk+1gk)

所以

gTk+1Hdk=1αk(gTk+1gk+1gTk+1gk)(17)

接下来根据等式8与9可得

gkS(d0,d1,,dk)

或者

gk=i=0kaidi

又因为

gTk+1gk=i=0kaigTk+1di=0(18)

所以等式5,15,16与17得到

βk=gTk+1gk+1gTkgk

上面的原则与定理得到了下面的算法:

11x0ε2g0d0=g0,k=03Hk,xkαk=gTkgkdTkHkdkxk+1=xk+αkdkfk+1=f(xk+1)4αkdk<ε,x=xk+1,f(x)=fk+15gk+1βk=gTk+1gk+1gTkgkdk+1=gk+1+βkdkk=k+13

对于二维凸二次问题,上述算法得到的解的轨迹如图1所示,注意x1=x0α0g0,其中α0是最小化f(x0αg0)α值,与最速下降法一样。

共轭梯度算法的主要优点为:

  • 梯度是有限的,并且与前面的方向向量线性无关,当然除了问题的解本身外。
  • 计算相对简单,相比最速下降法稍微复杂一点点。
  • 不需要线搜索。
  • 对于凸二次问题,该算法n次迭代就能收敛。
  • 第一次选的方向就是最速下降的方向,所以第一次得带就能很好的减少f(x)
  • 因为方向是基于梯度信息的,当应用到非二次问题时,该算法有较好的收敛性。
  • 不需要考虑海森矩阵的逆。

该算法的缺点为:

  • 需要存储,计算海森矩阵。
  • 对于非二次问题,存在极个别情况会无法达到收敛。


漫步最优化三十七——共轭梯度法
图1