首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

对Conjugate Gradient 优化的简单理解

  • 25-03-03 23:01
  • 4663
  • 7307
blog.csdn.net

文章出处: http://www.cnblogs.com/tornadomeet/p/3265225.html

上一篇文章主要介绍了共轭梯度的基本概念和几何理解。这里转载一篇讲述共轭梯度算法的文章。

数学优化方法在机器学习算法中至关重要,本篇博客主要来简单介绍下Conjugate Gradient(共轭梯度法,以下简称CG)算法,内容是参考的文献为:An Introduction to the Conjugate Gradient Method Without the Agonizing Pain,具体细节大家还需仔细阅读那篇文章,这篇博客并不是重现那篇论文的内容,只是简单的梳理下CG算法的流程,以及它的重要思路,方便大家理解CG算法。

  首先我们需要解决的问题是:求满足线性方程(1):的解x.

  那么有人就这么认为了:这个解x不就是吗?对,这样说也不能算错,但是如果A不可逆那么x这样就解不出来了。另外当A矩阵的尺度非常大时(比如几百万维),即使其逆存在,这样计算的计算量也太大。而CG算法则可以通过少数的几步迭代来求出其近似解,虽然求出的解是近似的,但是其精度可以达到很高,完全可以满足我们的需求。

  下面就来看看CG算法实现时的大概流程:

  1. 随机选取一个初始点,记为,并记为此时方程(1)的残差,记第一个搜索方向为,搜索步长为.

  2. 现在假设我们已经按照某个迭代公式在第k步求出了,此时的残差,前面k次的搜索方向分别为,很明显这些变量都是已知的,而现在我们需要求的是第k次的搜索方向.在CG理论中,有这么一个假设,即为,的线性组合,记为.

  3. 为了求出,就必须求出系数,怎么求呢?CG理论中另外一个性质就是:和这k个向量关于A共轭,即满足共轭方程,其中0<=j<=k-1. 下面就可以利用该性质列出k个方程来求解这些系数了,其结果为:当0<=j;当j=k-1时,系数. 因此此时的搜索方向.

  4. 既然的值有了,搜索方向也有了,下一步就改确定搜索步长了,求它的思想是使取得极值,即导数为0。一旦求出了,则下一个迭代点也就求出了。表达式对求导为0后可求得.

  5. 循环步骤2,3,4,直到满足收敛条件。

  上面只是CG算法的基本版本,而常见的CG算法版本是针对上面的计算公式和作了进一步推导,利用Krylov 子空间的一些性质,最后简化为:和,同时对残差也是经过迭代得到(此处省略)。 由简化前后(此处省略N公式)对比可知,将原先表达式中一些矩阵和向量的乘积运算量减小了,因为很大一部分矩阵乘向量都转换成了向量乘向量。

 

  最后附上论文中关于CG算法的流程图,大家可以参考上面5个步骤来理解CG的主要思路,本博客中的符号可能和论文中的不一定相同,且公式也不一定是正确的,博文只是让大家知道这些公式是由什么理论推出的,有个宏观认识,一切需以论文中的内容为主。

   

 

  参考资料:

  Shewchuk, J. R. (1994). An introduction to the conjugate gradient method without the agonizing pain, Carnegie Mellon University, Pittsburgh, PA.


文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60791 人正在系统学习中
注:本文转载自blog.csdn.net的Kevein111的文章"https://blog.csdn.net/carrierlxksuper/article/details/17444109"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top