《共轭梯度法》读书笔记(三)——共轭梯度法

共轭梯度法

共轭方向法中,最大的问题在于寻找一组彼此独立的向量 u1,...,un u 1 , . . . , u n ,如果选取不当,那么和高斯消元法就没有区别了。共轭梯度法 (Conjugate Gradient)实际上是一种特殊的共轭方向法,它取 ui=r(i) u i = r ( i )

首先为何残差是彼此独立的?首先,由于共轭方向法每次(A正交地)消除了一个维度上的误差,所以有

dTiAe(j)=0(i<j) d i T A e ( j ) = 0 ( i < j )

由于 r(j)=Ae(j) r ( j ) = − A e ( j ) ,于是有 dTir(j)=0 d i T r ( j ) = 0 。另外,由于现在的 ui=r(i) u i = r ( i ) ,所以

span{d1,...,dn}=span{ui,...,un}=span{r(1),...,r(n)} s p a n { d 1 , . . . , d n } = s p a n { u i , . . . , u n } = s p a n { r ( 1 ) , . . . , r ( n ) }

r(j) r ( j ) di(i<j) d i ( i < j ) 张成的子空间正交,因此也和所有的 r(i)(i<j) r ( i ) ( i < j ) 正交。

共轭梯度法和最速下降法的区别

这里我产生的一个疑问是,残差其实就是梯度的(反)方向,既然当次迭代的梯度方向总是和之前的梯度方向垂直,那么它和最速下降法有什么区别?为何最速下降法会出现“之”字形的迭代路线?我认为是这样的。首先,在最速下降法中,当次迭代的梯度方向也是和上次迭代梯度方向垂直,但和再之前的梯度方向就不垂直了,所以会有“之”形路线。然后,共轭梯度法要求的是关于矩阵正交,并非直接正交。在上一节的图中,我们可以看到关于矩阵正交的形状,通过拉伸,可以看到,它才能真正的分离维度,普通的正交反而是有偏差的。共轭方向法将本来普通正交的梯度向量,调整为新的关于矩阵正交,虽然张成的空间是一样的,但方向更加合理,所以能保证在 n n 步内迭代收敛。

共轭梯度法的优势

于是我们可以看到,起码共轭梯度法作为一种特殊的共轭方向法,是没有错误的。那共轭梯度法有什么优势呢?

先来看一个有趣的性质。在上一节的末尾,我们提到了迭代更新残差的方法:

r(i+1)=r(i)α(i)Adi

注意到新的残差(或梯度)引入了一个新的维度(因为新的搜索方向和之前所有梯度张成的空间关于矩阵正交)。即假设 span{r(0),...,r(i+1)}=D(i+1) s p a n { r ( 0 ) , . . . , r ( i + 1 ) } = D ( i + 1 ) ,那么有 rank(D(i+1))=rank(D(i))+1 r a n k ( D ( i + 1 ) ) = r a n k ( D ( i ) ) + 1 。显然 r(i)D(i) r ( i ) ∈ D ( i ) ,新维度只能来源于 Adi A d i ,而 diD(i) d i ∈ D ( i ) ,所以 A A 带来的变换引入了新维度。引申开来,不难得到

D(i)=span{d1,...,dn}=span{d1,Ad1,A2d1,...,Ai1d1}=span{r(1),Ar(1),A2r(1),...,Ai1r(1)}

诸如此类的,由一个向量反复乘以同样的矩阵变换张成的子空间被成为克雷洛夫子空间 (Krylov Subspace)。这样的子空间有一个很好的性质,那就是施密特正交化法会变得非常容易。

在上一节中,我们给出了施密特正交化法的参数表达式,

βij=r(i)AdjdTjAdj β i j = r ( i ) A d j d j T A d j

由于

rT(i)r(j+1)=rT(i)(r(j)α(j)Adj)=rT(i)r(j)α(j)rT(i)AdjrT(i)Adj=1α(j)[rT(i)r(j)rT(i)r(j+1)] r ( i ) T r ( j + 1 ) = r ( i ) T ( r ( j ) − α ( j ) A d j ) = r ( i ) T r ( j ) − α ( j ) r ( i ) T A d j r ( i ) T A d j = 1 α ( j ) [ r ( i ) T r ( j ) − r ( i ) T r ( j + 1 ) ]

由于 i>j i > j ,所以

(i=j+1):βij=1α(j)rT(i)r(i)dTjAdj(i>j+1):βij=0 ( i = j + 1 ) : β i j = − 1 α ( j ) r ( i ) T r ( i ) d j T A d j ( i > j + 1 ) : β i j = 0

这样,共轭梯度法作为一种特殊的共轭方向法,解决了施密特正交化法速度慢的问题。当然 α(j) α ( j ) 的表达式和之前是一致的,即

α(j)=dTjr(j)dTjAdj α ( j ) = d j T r ( j ) d j T A d j

代入 α(j) α ( j ) ,得到

βi=βi,i1=rT(i)r(i)dTi1r(i1)=rT(i)r(i)rT(i1)r(i1) β i = β i , i − 1 = − r ( i ) T r ( i ) d i − 1 T r ( i − 1 ) = − r ( i ) T r ( i ) r ( i − 1 ) T r ( i − 1 )

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值