数值优化(Numerical Optimization)学习系列-共轭梯度方法(Conjugate Gradient)

概述

共轭梯度算法在最优化问题中备受关注,有两层用途,一是可以求解线性方程 Ax=b ;二是可以求解最优化问题。相对于最速下降法,它没有额外的矩阵存储并且比更快,一般N步内收敛。实际收敛效率依赖于系数矩阵特征值的分布。

主要介绍一下内容:
1. 线性共轭梯度算法
2. 共轭方向算法
3. 共轭梯度算法
4. 收敛性
5. 非线性共轭梯度算法

线性共轭梯度算法

共轭梯度算法是一个求解线性方程的迭代方法

问题形式

CG算法求解问题的两种形式:
1. 线性方程 Ax=b 并且要求A是对称正定矩阵
2. 最优化问题:

minϕ(x)=12xTAxbTx
,要求A对称正定,这样该问题是一个凸问题并且有最优解,根据最优解满足 ϕ(x)=Axb=0r(x) 。在迭代过程中第K步的残差为 rk=Axkb

共轭性

给定一个非零向量集合 { p0,p1,p2...pn1 }和一个对称正定矩阵A;如果向量集合相对于A是共轭的当且仅当 pTiApj=0, ij

如果向量集合是共轭的,则他们之间是相互线性独立。

证明:反证法。如果不是线性独立,则有 pi=λpj ,则 pTiApj=λpTjApj0 ,不满足共轭条件。

共轭方向算法

共轭方向算法(Conjugate Direction Method)不同于共轭梯度方法,共轭向量提前给出。

算法描述

  1. 给定共轭方向集合{ p0,p1,p2...pn1 }和任意初始点 x0
  2. 计算 xk+1=xk+αkpk
  3. 计算最优步长 α ,即优化 ϕ(xk+αpk) ,通过求解单变量最优化问题,可以容易得到最优步长
    αk=rTkpkpTkApk

关于 αk 的计算

αk=arg min(ϕ(xk+αpk))=argmin12(xk+αpk)TA(xk+αpk)bT(xk+αpk)ϕ(α)=0αk=rTkpkpTkApk

对于任何初始点 x0 共轭方向算法最多N步可以收敛到最优解 x

证明:思路通过上述算法可以表示出最优解。
1. 由于 pi 线性独立,则在N维空间中可以生成整个空间,因此

xx0=δ0p0+δ1p1+...+δn1pn1
左边同时乘上 pTkA 得到
pTkA(xx0)=pTkA(δ0p0+δ1p1+...+δn1pn1)=δkpTkApk
,可以推出
δk=pT
  • 9
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值