机器学习: 共轭梯度算法(PCG)

匿名 (未验证) 提交于 2019-12-03 00:22:01

今天介绍数值计算和优化方法中非常有效的一种数值解法,共轭梯度法。我们知道,在解大型线性方程组的时候,很少会有一步到位的精确解析解,一般都需要通过迭代来进行逼近,而 PCG 就是这样一种迭代逼近算法。

我们先从一种特殊的线性方程组的定义开始,比如我们需要解如下的线性方程组:

Ax=b

这里的 A(n×n) 是对称,正定矩阵, b(n×1) 同样也是已知的列向量,我们需要通过 Ab 来求解 x(n×1), 这其实是我们熟知的一些线性系统的表达式。

首先,我们来看一种直观的解法,我们定义满足如下关系的向量为关于 矩阵 A 的共轭向量,

uTAv=0

因为矩阵 A 是对称正定矩阵,所以矩阵 A 定义了一个内积空间:

u,vA:=Au,v=u,ATv=u,Av=uTAv

基于此,我们可以定义一组向量 P

P={p1,,pn}

其中的向量 p1 , p2, … , pn 都是互为共轭的,那么 P 构成了 Rn 空间的一个基,上述方程的解 x 可以表示成 P 中向量的线性组合:

x=i=1nαipi

根据上面的表达式,我们可以得到:

Ax=i=1nαiApipkTAx=i=1nαipkTApipkT)pkTb=i=1nαipk,piA(Ax=bu,vA=uTAv)pk,b=αkpk,pkA(uTv=u,vik:pk,piA=0)

这意味着:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!