概述
共轭梯度算法在最优化问题中备受关注,有两层用途,一是可以求解线性方程 Ax=b ;二是可以求解最优化问题。相对于最速下降法,它没有额外的矩阵存储并且比更快,一般N步内收敛。实际收敛效率依赖于系数矩阵特征值的分布。
主要介绍一下内容:
1. 线性共轭梯度算法
2. 共轭方向算法
3. 共轭梯度算法
4. 收敛性
5. 非线性共轭梯度算法
线性共轭梯度算法
共轭梯度算法是一个求解线性方程的迭代方法
问题形式
CG算法求解问题的两种形式:
1. 线性方程 Ax=b 并且要求A是对称正定矩阵。
2. 最优化问题:
共轭性
给定一个非零向量集合 { p0,p1,p2...pn−1 }和一个对称正定矩阵A;如果向量集合相对于A是共轭的当且仅当 pTiApj=0, i≠j
如果向量集合是共轭的,则他们之间是相互线性独立。
证明:反证法。如果不是线性独立,则有 pi=λpj ,则 pTiApj=λpTjApj≠0 ,不满足共轭条件。
共轭方向算法
共轭方向算法(Conjugate Direction Method)不同于共轭梯度方法,共轭向量提前给出。
算法描述
- 给定共轭方向集合{ p0,p1,p2...pn−1 }和任意初始点 x0
- 计算 xk+1=xk+αkpk
- 计算最优步长 α ,即优化 ϕ(xk+αpk) ,通过求解单变量最优化问题,可以容易得到最优步长
αk=−rTkpkpTkApk
关于 αk 的计算
对于任何初始点 x0 共轭方向算法最多N步可以收敛到最优解 x∗
证明:思路通过上述算法可以表示出最优解。
1. 由于 pi 线性独立,则在N维空间中可以生成整个空间,因此