共轭梯度法

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

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

双共轭梯度法提供了一种处理非对称矩阵情况的推广。

方法的表述

设我们要求解下列线性系统

其中n-×-n矩阵A是对称的(也即,AT = A),正定的(也即,xTAx > 0对于所有非0向量x属于Rn),并且是实系数的。

将系统的唯一解记作x*

最后算法

经过一些简化,可以得到下列求解Ax = b的算法,其中A是实对称正定矩阵。

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

k := k + 1
if k = 1

p1 := r0
else

end if
xk := xk-1 + αk pk
rk := rk-1 - αk A pk
end repeat
结果为xk
时间: 2024-08-28 15:39:32

共轭梯度法的相关文章

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

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

牛顿法、拟牛顿法、共轭梯度法

牛顿法 一: 最速下降法 下降法的迭代格式为xk+1=xk–αkdk , 其中dk为下降方向, 设gk=∇f(xk)≠0, 则下降方向要满足dTkgk<0. 当步长确定时, dTkgk的值越小, 即−dTkgk的值越大, 函数下降得越快. 由Cauchy-Schwartz不等式∣∣dTkgk∣∣≤∥dk∥∥gk∥, 当且仅当dk=−gk时, dTkgk的值最小. 从而−gk是最速下降方向. 则最速下降法的迭代格式为xk+1=xk−αkgk . 这里要注意的是, 最速下降方向只是算法的局部性质.

改进的共轭梯度法

今天看到共轭梯度法的两种实现,一种称为fletcher-reeves(FR-CG)方法,另一种称为polak-ribiere(PR-CG)方法. 在含体积蒙皮的模拟过程中,两者差别不大 又对比了wolfe的c1,c2取值,发现c2取0.1时,共轭梯度法在初始阶段收敛较取0.45时快,但后期收敛慢 在不含体积蒙皮的模拟过程中,两者性能略有差别.但差别与是否只取大于0的beta,是否在梯度与上次迭代梯度方向相近时直接去最速下降法有关.有时候FR较快,有时候PR较快. 最后按照numerical op

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

http://blog.csdn.net/pipisorry/article/details/39891197 共轭梯度法(Conjugate Gradient) 共轭梯度法(英语:Conjugate gradient method).是求解数学特定线性方程组的数值解的方法.当中那些矩阵为对称和正定.共轭梯度法是一个迭代方法.它适用于稀疏矩阵线性方程组,由于这些系统对于像Cholesky分解这种直接方法太大了.这种方程组在数值求解偏微分方程时非经常见. 共轭梯度法也能够用于求解无约束的最优化问题

深度学习之(十一)Deep learning中的优化方法:随机梯度下降、受限的BFGS、共轭梯度法

Deep learning中的优化方法 三种常见优化算法:SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法). 1.SGD(随机梯度下降) 随机梯度下降(Stochastic Gradient Descent, SGD)是随机和优化相结合的产物,是一种很神奇的优化方法,属于梯度下降的一种,适用于大规模问题. 要想扯清楚它,还得先谈谈梯度下降.众所周知,每个优化问题都会有一个目标函数F(w)F(w),梯度下降采用迭代的策略,从初始点w0w0开始,每次沿着目标函数在当前点的负梯

实现共轭梯度法蒙皮模拟

今天把一维搜索和共轭梯度法加在牛顿法前面,发现模拟比较顺利了. 这个是模拟的结果,从左到右硬度递增 来自为知笔记(Wiz) 附件列表 rodCG.gif rodCG0.gif rodCG2.gif

数值线性代数实验-共轭梯度法

一开始用c++的运算符重载程序总是莫名其妙的崩掉,然后以为是运算符重载的问题就写了个class对矩阵重新封装,结果还是崩,然后好久才发现是我把空间开的太大导致程序崩掉,无语,这样就浪费了我一个上午.... 课本上的例题: $$\begin{equation}{\left[ \begin{array}{ccc}10&1&2&3&4\\1& 9& -1& 2& -3\\2& -1& 7& 3& -5\\3&

minimize.m:共轭梯度法更新BP算法权值

minimize.m:共轭梯度法更新BP算法权值 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ Carl Edward Rasmussen在高斯机器学习的MATLAB代码中写到一个优化类的函数:minimize.m,同时,Geoff Hinton在用BP算法精调深度自编码网络时,也借鉴了这个函数minimize.m,下面来简单聊一聊这个函数的大致机理. matlab函数minimum.m用来查找(非线性)多元函数的(局部)最小值.用户必须提供一个

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

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