最优化理论与应用第讲共轭梯度法第7讲-共轭梯度法电子科技大学自动化工程学院彭晓明1线性共轭梯度法非线性共轭梯度法2线性共轭梯度法非线性共轭梯度法3z是一种替代高斯消去法求解线性方程组的方法z适合大规模线性方程组z问题:求解问题求解Ax b,Ax=b其中,A是一个n阶对称正定矩阵4z注意:线性问题Ax=b的解与下面的凸二次函数的极小解是等价的¾这使得我们可以将线性问题的求解与凸二次函数的最小化问题联系起来5z同时可以注意到¾即二次函数(x)的梯度等于线次数性方程组Ax=b的残差(residual)z定义6z定义1如果满足以下条件:{p0,p1,p2,…,p l}与对称正定矩阵A p p p形成共轭。
¾重要性质:共轭向量p 0,p1,p2,…,p l 之间线性无关7z 共轭方向(conjugate direction )j g 法算法描述:给定初始点x0和共{按下面轭方向{p 0,p 1,p 2,…,p n-1},按下面步骤生成迭代解序列{x k}从x k 出发,沿着p k 方向搜索(x)的极小值得到8的步长z由于我们有有9z可以证明(Nocedal, p.103),最多(p)经过n次迭代,得到的xk 收敛于A b *Ax=b的解x*z 共轭方向法的工作过程可以用下面的图来形象描述10z共轭方向法工作过程(二维情况)(x)的等值线;Ԅ()的等值线当矩阵A是一个对角矩阵时由对角矩阵时,由Ԅ(x)的等值线形成的椭圆的轴与坐标轴相平行,共轭方向与坐标轴方向一致,一轴方向致次迭代刚好解决x的个分量x*的一个分量11z共轭方向法工作过程(二维情况)当矩阵A不是一个对角矩阵时由对角矩阵时,由(x)的等值线形成的椭圆的轴与标的椭圆的轴与坐标轴不平行,共轭方向与坐标轴方向不向与标轴方向不一致,再沿着坐标轴方向搜索时轴方向搜索时经过2次不能找到x*!12z 当矩阵A 不是一个对角矩阵时,可以用关于矩阵A 的共轭方向集1合{p 0,p 1,p 2,…,p n-1}构成的矩阵S 对x 进行变换得到一个新的变量1ˆ−=xS x然后定义关于新变量的优化问题13z 这时矩阵S T AS 是一个对角矩阵(h ?)(why?)(x)=(1/2)x Ax b 其中z 例1:T Ax-b T x ,其中04⎡⎤10.41,0.411⎡⎤==⎢⎥⎢⎥A b (x)x*⎣⎦⎣⎦的最小解x 对应的是线性方程组Ax=b 的解0.7143*⎡⎤x 140.7143=⎢⎥⎣⎦z 例1:选择起始点为x 0=[2, 4]T ,共轭梯度方向0707107071⎡[]01-0.70710.7071,0707107071⎤==S p p 0.70710.7071⎢⎥⎣⎦采用共轭方向法进行迭代:α=-1.4142 ,x =x +α*p =[3, 3]T 0100p 0[]α1= -3.2325 , x 2=x 1+α1*p 1=[0.7143,07143]T 0.7143]T 15z 例1:然后,我们用S 对x 进行变换得到个新的变量S 1现在得到一个新的变量y=S -1x ,现在0.600TT⎡⎤⎡⎤,0 1.4 1.4142new new ====⎢⎥⎢⎥⎣⎦⎣⎦A S AS b S b 100 1.41420,*new −⎡⎤⎡⎤===⎢⎥⎢⎥x S x x 选择新的共轭方向4.2426 1.0101⎣⎦⎣⎦10⎡1 0,1⎤==S p p 16[]00 1⎢⎥⎣⎦z例1:采用共轭方向法进行迭代:α0=-1.4142 ,x1=x0+α0*p0=[0,4.2426]Tα1= -3.2325 , x2=x1+α1*p1=[0,=32325x =[01.0101]T ,把得到的x用S 变换得到]2原问题的解为x*=Sx217如何选择共轭方向z 选择{p 0,p 1,p 2,…,p n-1} 为矩阵A 的特征向量(计算代价高)Gram Schmidt process z 通过以下的Gram–Schmidt process ¾假设对于任意的由线性无关的向量集合{v,v 1,v 2,…,v n-1}18z 定理1出发由共轭方向从任意起始点x 0出发,由共轭方向法生成的序列{x k }有以下性质:(1) (2) x是(x)=(1/2)x T Ax-b T x的极小()k ()()解,其中19z 共轭梯度(conjugate gradient)法是特殊的共轭方向法时只需要用到¾在计算共轭向量p k 时,只需要用到共轭向量k -1p k1残差或β的目的是使得20(x)的梯度k 目是使得p k-1和p k 关于A 共轭T ¾将上式两边左乘p k-1A 并利用k-1T A p =0可以得到p k 1pk 21z共轭梯度法基本形式选初始p择最速下降方向共轭方向法22z定理2在共轭梯度法的基本形式中,如果在共轭梯度法的基本形式中如果在第k步迭代时得到的x k≠x,则以x*下性质成立(1)()(2)z与共轭方向法一样,共轭梯度法最多步收敛到多经过n步可以收敛到x*23z有意思的是:共轭梯度法中的梯度{{r0,r1,r2,…,r n-1}之间其实是相互垂直的,而真正共轭的是搜索方向{p0,p1,p2,…,p n-1} ,因此所谓“共轭梯度”的说法其实并不准确梯度实并准确z 共轭梯度法的实用形式¾由定理1中和算法5.1中我们有其实是要证明T =-r T 25r k r k r k p kz 共轭梯度法的实用形式¾又由我们有26z 共轭梯度法的实用形式算¾利用新的αk 和βk+1取代算法5.1中的对应项得到共轭梯度法的实用形式27z 共轭梯度法的实用形式28z可以证明(Nocedal, p.115),如果A 有r个不同的特征值,则算法5.2最个不同的特征值则算法52多经过r步收敛到xx*29共轭梯度法收敛速度z 对于向量z ,定义如下的范数2T =z z AzAx b x我们有A¾对于(x)=(1/2)x TAx-b T x,我们有30z定义矩阵A的条件数(condition number)κ(A)如下b)κ(A) (A的最大特征值)/ (A的最小(A)=(A)/(A特征值)z可以证明(Nocedal, p.117)31z结合()¾说明κ(A) 越小,算法收敛得越快32z前面得出:κ(A) 越小,算法收敛得越快¾能否修改矩阵A从而减小κ(A)?¾办法:对原变量x左乘个非奇异左乘一个非奇异矩阵C从而将(x)=(1/2)x T Ax-b T x 转化为Ax b x33¾办法:从而得到对应的线性方程组为如果κ(C-T AC-1)<κ(A),则达到了我们的目的。
们的目的¾在实际使用时并不需要显式地计算C,而是在算法5.2中引入一个矩阵M=C T C(称为preconditioner)34要内容提要线性共轭梯度法非线性共轭梯度法35非线性共轭梯度法z前面学习的线性共轭梯度法的目的是求解特殊的凸函数---二次函数是求解特殊的凸函数二次函数,那么能否将其扩展用于解决般,那么能否将其扩展用于解决一般的凸函数甚至是非线性函数?z下面学习几种用于此目的的非线性共轭梯度法36z 算法描述(简称FR算法)用线搜索得到的αk代替了线性共轭梯度法中的αk用函数的梯度代替了线性共轭梯度法中的r kkf ∇¾只用到函数值和梯度值37z FR算法中的一个潜在的问题:怎么保证其中的是一个下降方向呢?¾只要做到算法中的步长αk满足强W lfWolfe条件即可(不过要注意0c1c21/2)0<c<<1/238z 与FR 方法的主要区别是选择参数β的方式不同Polak Ribiere z Polak-Ribiere 方法(PR 方法)该方个满¾该方法的一个问题是满足强Wolfe 条件(0<c 1<c 2<1/2)的步长αk 也不能保证其中的是一个下降方向p k+139z Polak-Ribiere方法的修正(PR+方法)z FR PR方法FR-PR40谢谢大家41。