数学优化方法在机器学习算法中至关重要,本篇博客主要来简单介绍下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<k-1时,系数;当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.

机器学习数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)相关推荐

  1. 机器学习数据挖掘笔记_15(关于凸优化的一些简单概念)

    没有系统学过数学优化,但是机器学习中又常用到这些工具和技巧,机器学习中最常见的优化当属凸优化了,这些可以参考Ng的教学资料:http://cs229.stanford.edu/section/cs22 ...

  2. 机器学习数据挖掘笔记_14(GMM-HMM语音识别简单理解)

    为了对GMM-HMM在语音识别上的应用有个宏观认识,花了些时间读了下HTK(用htk完成简单的孤立词识别)的部分源码,对该算法总算有了点大概认识,达到了预期我想要的.不得不说,网络上关于语音识别的通俗 ...

  3. 机器学习数据挖掘笔记_25(PGM练习九:HMM用于分类)

    前言: 本次实验是用EM来学习HMM中的参数,并用学好了的HMM对一些kinect数据进行动作分类.实验内容请参考coursera课程:Probabilistic Graphical Models 中 ...

  4. Adam优化器简单理解和实现

    前言:因为要实现GAN,简单理解一下训练过程需要用到的Adam优化器. 零.何为优化器 机器学习的任务就是优化参数使之达到最合适的值,同时也就是时损失函数达到最小.损失函数即目标函数的值与真实值的差值 ...

  5. 机器学习数据挖掘笔记_18(PGM练习二:贝叶斯网络在遗传图谱在的应用)

    前言: 这是coursera课程:Probabilistic Graphical Models 上的第二个实验,主要是用贝叶斯网络对基因遗传问题进行一些计算.具体实验内容可参考实验指导教材:bayes ...

  6. AdamW优化器简单理解

    1.SGD L2 regularization 和 Weight decay 只在SGD优化的情况下是等价的. 2.自适应学习率算法 Adam自动调整学习率,大幅提高了训练速度,也很少需要调整学习率, ...

  7. Adam优化器简单理解

    参考链接:https://www.jianshu.com/p/aebcaf8af76e

  8. python优化算法工具包_12种Python 机器学习 数据挖掘工具包,一定让你受益匪浅...

    作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词).相比于C++或Java,Python让开发者能够用更少的代码表达想法. ...

  9. 机器学习中的数学——共轭梯度法(Conjugate Gradient)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

最新文章

  1. 解释器模式(interpreter)解析例子
  2. 组策略管理——软件限制策略(5)
  3. es6 函数解构的用途
  4. appium连接模拟器时屏幕倒转
  5. jdbc事务和事务的隔离级别
  6. ip地址和MAC地址的捆绑
  7. 幽默度识别第一名解决方案代码及说明
  8. 美了美了!22款精美的 iOS 应用程序图标模板
  9. html怎么做小米logo,案例:纯CSS小米logo样式
  10. IAR在写结构体时不提示_U盘被写保护了以后怎么办?
  11. 在线web表单设计器
  12. iOS 各种证书的作用、有效期、过期的后果和解决办法
  13. dns被劫持怎么办、如何完美解决网站DNS域名被劫持
  14. 蜜瓜文案:水果蜜瓜文案短句,水果店蜜瓜发朋友圈文案
  15. LeetCode每日一题495. 提莫攻击
  16. angularjs常见错误_AngularJS开发人员应避免的7大错误
  17. 【JAVA】Java8对时间的一些常用操作记录。例如:LocalDateTime、ZoneId等。
  18. GridView中动态生成ItemTemplate模板列
  19. 自然语言处理(二)——词性标注与命名实体识别
  20. ThinkPHP5多语言切换项目实战

热门文章

  1. 计算机游戏攻略 185,少儿编程游戏CodeMonkey通关攻略:第180-185关
  2. 一对一直播源码系统平台搭建
  3. 全国大学生大数据技能竞赛——基于Scala和Echart的大数据分析与挖掘
  4. 三菱FX3U PLC模拟量DA模块应用编程
  5. 项目总结:人脸识别签到系统
  6. spring实战-Spring-JSP标签
  7. [转载]C/C++头文件一览
  8. 每个业务部门都是一个利润中心,人力资源管理部门也不例外
  9. sarscape中做SBAS第二步干涉流报错40001(已解决)
  10. 计算机的随想作文500字,生活随想作文500字(通用5篇)