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

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

  首先我们需要解决的问题是:求满足线性方程(1):机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)的解x.

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

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

  1. 随机选取一个初始点,记为机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),并记为此时方程(1)的残差机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),记第一个搜索方向为机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),搜索步长为机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解).

  2. 现在假设我们已经按照某个迭代公式在第k步求出了机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),此时的残差机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),前面k次的搜索方向分别为机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),很明显这些变量都是已知的,而现在我们需要求的是第k次的搜索方向机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解).在CG理论中,有这么一个假设,即机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)的线性组合,记为机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解).

  3. 为了求出机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),就必须求出系数机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),怎么求呢?CG理论中另外一个性质就是:机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)这k个向量关于A共轭,即满足共轭方程机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),其中0<=j<=k-1. 下面就可以利用该性质列出k个方程来求解这些系数了,其结果为:当0<=j<k-1时,系数机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解);当j=k-1时,系数机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解). 因此此时的搜索方向机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解).

  4. 既然的值有了机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解),搜索方向机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)也有了,下一步就改确定搜索步长机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)了,求它的思想是使机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)取得极值,即导数为0。一旦求出了,则下一个迭代点机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)也就求出了。表达式对求导为0后可求得机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解).

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

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

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

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

  参考资料:

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

上一篇:sysvol共享没有出现的处理办法!


下一篇:[喵咪BELK实战(1)]浅谈日志的重要性以及介绍BELK