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

gTkgi=0for 0≤i<k

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

dTkHdi=0for0≤i<k and 1≤k≤n

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

dTkHdi=0for0≤i<k(6)

我们需要说明

dTk+1Hdi=0for0≤i<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,d1是g0,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表明

Hdi∈S(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 0≤i<k+1(15)

对于k=0,等式14得出

dT1Hdi=0for 0≤i<1

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

dT2HdidT3Hdi⋮dTkHdi=0for 0≤i<2=0for 0≤i<3⋮=0for 0≤i<k

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

gi=∑j=0iajdj

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

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

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

−gTkdk=gTkgk−βk−1gTkdk−1

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

gTkdk−1=0

故

−gTkdk=gTkgk

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

αk=gTkgkdTkHdk(16)

另一方面,因为

Hdk=1αk(gk+1−gk)

所以

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

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

gk∈S(d0,d1,…,dk)

或者

gk=∑i=0kaidi

又因为

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

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

βk=gTk+1gk+1gTkgk

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

算法1:共轭梯度算法步骤1输入x0并初始化容忍误差ε步骤2计算g0并令d0=−g0,k=0步骤3输入Hk,即xk处的海森矩阵计算αk=gTkgkdTkHkdk令xk+1=xk+αkdk并计算fk+1=f(xk+1)步骤4如果∥αkdk∥<ε,输出x∗=xk+1,f(x∗)=fk+1算法结束步骤5计算gk+1计算βk=gTk+1gk+1gTkgk生成新的方向dk+1=−gk+1+βkdk令k=k+1然后回到步骤3

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

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

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

该算法的缺点为:

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


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

相关文章:

  • 2022-01-20
  • 2021-08-09
  • 2021-05-06
  • 2022-01-09
  • 2021-12-25
  • 2021-05-26
  • 2021-03-30
猜你喜欢
  • 2021-12-25
  • 2022-12-23
  • 2021-12-25
  • 2021-08-10
  • 2022-12-23
相关资源
相似解决方案