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

本文深入探讨了共轭梯度法的原理及其与最速下降法的区别,展示了该方法如何利用残差作为彼此独立的方向来加速求解线性方程组的过程。此外,还介绍了共轭梯度法在克雷洛夫子空间中的应用及施密特正交化过程的简化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共轭梯度法

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

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

dTiAe(j)=0(i<j)diTAe(j)=0(i<j)

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

span{d1,...,dn}=span{ui,...,un}=span{r(1),...,r(n)}span{d1,...,dn}=span{ui,...,un}=span{r(1),...,r(n)}

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

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

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

共轭梯度法的优势

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

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

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

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

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βij=r(i)AdjdjTAdj

由于

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)Tr(j+1)=r(i)T(r(j)−α(j)Adj)=r(i)Tr(j)−α(j)r(i)TAdjr(i)TAdj=1α(j)[r(i)Tr(j)−r(i)Tr(j+1)]

由于i>ji>j,所以

(i=j+1):βij=1α(j)rT(i)r(i)dTjAdj(i>j+1):βij=0(i=j+1):βij=−1α(j)r(i)Tr(i)djTAdj(i>j+1):βij=0

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

α(j)=dTjr(j)dTjAdjα(j)=djTr(j)djTAdj

代入α(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)Tr(i)di−1Tr(i−1)=−r(i)Tr(i)r(i−1)Tr(i−1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值