最优化方法:共轭梯度法(Conjugate Gradient)

http://blog.csdn.net/pipisorry/article/details/39891197

共轭梯度法(Conjugate Gradient)

共轭梯度法(英语:Conjugate gradient method)。是求解数学特定线性方程组的数值解的方法。当中那些矩阵为对称和正定。共轭梯度法是一个迭代方法。它适用于稀疏矩阵线性方程组,由于这些系统对于像Cholesky分解这种直接方法太大了。这种方程组在数值求解偏微分方程时非经常见。

共轭梯度法也能够用于求解无约束的最优化问题。

在数值线性代数中,共轭梯度法是一种求解对称正定线性方程组的迭代方法。

共轭梯度法能够从不同的角度推导而得,包含作为求解最优化问题的共轭方向法的特例,以及作为求解特征值问题的Arnoldi/Lanczos迭代的变种。

title=%E5%8F%8C%E5%85%B1%E8%BD%AD%E6%A2%AF%E5%BA%A6%E6%B3%95&action=edit&redlink=1" class="new" title="双共轭梯度法(页面不存在)">双共轭梯度法提供了一种处理非对称矩阵情况的推广。

基础

共轭向量

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGlwaXNvcnJ5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="607" height="154" />

显然,共轭向量是线性无关向量.

初等变分原理

最速下降算法的有关性质

范数的‖?‖A的定义为‖x‖A=(Ax,x)。

上面定理表明,最速下降法从不论什么一向量x(0)出发,迭代产生的数列总是收敛到原方程Ax=b的解.而收敛速度的快慢则由A的特征值分布所决定.当A的最小特征值和最大特征值相差非常大时λ1<<λn,最速下降法收敛速度非常慢,非常少用于实际计算.

分析最速下降法收敛较慢的原因,能够发现,负梯度方向从局部来看是二次函数的最快下降方向,可是从总体来看,却并不是最好.对于对称正定矩阵A,共轭梯度法考虑选择关于A共轭的向量p1,p2,...取代最速(0)下降法中的负梯度方向,使迭代法对随意给定的初始点x具有有限步收敛性,即经有限步就能够(在理论上)得到问题的准确解.

皮皮blog

共轭梯度算法

计算共轭梯度算法同一时候构造出关于A共轭的向量pi

求解Ax = b的算法。当中A是实对称正定矩阵。

x0 := 0
k := 0
r0 := b-Ax
repeat until rk is "sufficiently small":

k := k + 1
if k = 1

p1 := r0
else

pk:=rk? 1+rk? 1? rk? 1rk? 2? rk? 2 pk? 1{\displaystyle p_{k}:=r_{k-1}+{\frac {r_{k-1}^{\top }r_{k-1}}{r_{k-2}^{\top }r_{k-2}}}~p_{k-1}}
end if
α k:=rk? 1? rk? 1pk? Apk{\displaystyle \alpha _{k}:={\frac {r_{k-1}^{\top }r_{k-1}}{p_{k}^{\top }Ap_{k}}}}
xk := xk-1 + αk pk
rk := rk-1 - αk A pk
end repeat
结果为xk
或者

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGlwaXNvcnJ5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

共轭梯度法评价

  共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法须要存储和计算Hesse矩阵并求逆的缺点。共轭梯度法不仅是解决大型线性方程组最实用的方法之中的一个,也是解大型非线性最优化最有效的算法之中的一个。 在各种优化算法中,共轭梯度法是非常重要的一种。
其长处是所需存储量小,具有步收敛性。稳定性高,并且不须要不论什么外来參数。

  下图为共轭梯度法和梯度下降法搜索最优解的路径对照示意图:

注:绿色为梯度下降法。红色代表共轭梯度法

from:http://blog.csdn.net/pipisorry/article/details/39891197

ref: [wiki 共轭梯度法] [wiki 共轭梯度法的推导]

[数值分析 钟尔杰]

时间: 2024-10-28 15:30:44

最优化方法:共轭梯度法(Conjugate Gradient)的相关文章

共轭梯度法(conjugate gradient method)

该方法是快速求解Ax=b线性系统的方法,他要求矩阵A是对称正定矩阵. 算法执行过程: matlab实现: clear;%删除工作空间的所有变量,释放系统内存 clc;%清楚命名窗口 A=[4 1;1 3]; b=[1,2]'; N=length(b); %解向量的维数 fprintf('库函数计算结果:'); x=inv(A)*b %库函数计算结果 x=[2;1]; %初始点 eps=0.0000001; %精度 r=b-A*x; p=r; for k=0:N-1 fprintf('第%d次迭代

共轭梯度法求解协同过滤中的 ALS

协同过滤是一类基于用户行为数据的推荐方法,主要是利用已有用户群体过去的行为或意见来预测当前用户的偏好,进而为其产生推荐.能用于协同过滤的算法很多,大致可分为:基于最近邻推荐和基于模型的推荐.其中基于最近邻推荐主要是通过计算用户或物品之间的相似度来进行推荐,而基于模型的推荐则通常要用到一些机器学习算法.矩阵分解可能是被研究地最多的基于模型的推荐算法,在著名的 Netflix 大赛中也是大放异彩,核心思想是利用低维隐向量为每个用户和物品建模,进而推测用户对物品的偏好.现在的关键问题是如果要用矩阵分解

L-BFGS

L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源.本文主要通过对于无约束最优化问题的一些常用算法总结,一步步的理解L-BFGS算法,本文按照最速下降法 - 牛顿法 - 共轭梯度法 - 拟牛顿法 - DFP矫正 - BFGS 矫正 - LBFGS算法这样一个顺序进行概述.(读了一些文章之后,深感数学功底不够,在计算机视觉领域和机器学习领域,数学还是王道) 1. 最优化方法的迭代思想: 最优化方法采用的都

Math concepts / 数学概念(转)

https://www.codelast.com/math-concepts-%E6%95%B0%E5%AD%A6%E6%A6%82%E5%BF%B5/ 这里记录了我在学习过程中遇到或总结的一些基础数学概念,保存于此,与需要者共享. Following are some basic math concepts I read or summarized in my learning process, I wrote them down here to share with those who ne

Math concepts / 数学概念

链接网址:Math concepts / 数学概念 – https://www.codelast.com/math-concepts-%e6%95%b0%e5%ad%a6%e6%a6%82%e5%bf%b5/ 这里记录了我在学习过程中遇到或总结的一些基础数学概念,保存于此,与需要者共享. Following are some basic math concepts I read or summarized in my learning process, I wrote them down her

机器学习之——判定边界和逻辑回归模型的代价函数

判定边界(Decision Boundary) 上一次我们讨论了一个新的模型--逻辑回归模型(Logistic Regression),在逻辑回归中,我们预测: 当h?大于等于0.5时,预测y=1 当h?小于0.5时,预测y=0 根据上面的预测,我们绘制出一条S形函数,如下: 根据函数图像,我们知道,当 z=0时,g(z)=0.5 z>0时,g(z)>0.5 z<0时,g(z)<0.5 又有: 所以 以上,为我们预知的逻辑回归的部分内容.好,现在假设我们有一个模型: 并且参数?是向

信赖域算法

最速下降法/steepest descent,牛顿法/newton,共轭方向法/conjugate direction,共轭梯度法/conjugate gradient 及其他 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno 信赖域(Trust Region)算法是怎么一回事 LM(Levenberg-Marquard)算法的实现

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成本下,如何使利润最大化"等.最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称.随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优

共轭梯度法

共轭梯度法(英语:Conjugate gradient method),是求解数学特定线性方程组的数值解的方法,其中那些矩阵为对称和正定.共轭梯度法是一个迭代方法,它适用于稀疏矩阵线性方程组,因为这些系统对于像Cholesky分解这样的直接方法太大了.这种方程组在数值求解偏微分方程时很常见. 共轭梯度法也可以用于求解无约束的最优化问题. 双共轭梯度法提供了一种处理非对称矩阵情况的推广. 方法的表述 设我们要求解下列线性系统 , 其中n-×-n矩阵A是对称的(也即,AT = A),正定的(也即,x