機器學習&數據挖掘筆記_12(對Conjugate Gradient 優化的簡單理解)

 

  數學優化方法在機器學習算法中相當重要,本篇博客主要來簡單介紹下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)的殘差,記第一個搜索方向爲,搜索步長爲.spa

  2. 如今假設咱們已經按照某個迭代公式在第k步求出了,此時的殘差,前面k次的搜索方向分別爲,很明顯這些變量都是已知的,而如今咱們須要求的是第k次的搜索方向.在CG理論中,有這麼一個假設,即,的線性組合,記爲.blog

  3. 爲了求出,就必須求出係數,怎麼求呢?CG理論中另一個性質就是:這k個向量關於A共軛,即知足共軛方程,其中0<=j<=k-1. 下面就能夠利用該性質列出k個方程來求解這些係數了,其結果爲:當0<=j<k-1時,係數;當j=k-1時,係數. 所以此時的搜索方向.博客

  4. 既然的值有了,搜索方向也有了,下一步就改肯定搜索步長了,求它的思想是使取得極值,即導數爲0。一旦求出了,則下一個迭代點也就求出了。表達式對求導爲0後可求得.數學

  5. 循環步驟2,3,4,直到知足收斂條件。it

  上面只是CG算法的基本版本,而常見的CG算法版本是針對上面的計算公式做了進一步推導,利用Krylov 子空間的一些性質,最後簡化爲:,同時對殘差也是通過迭代獲得(此處省略)。 由簡化先後(此處省略N公式)對比可知,將原先表達式中一些矩陣和向量的乘積運算量減少了,由於很大一部分矩陣乘向量都轉換成了向量乘向量。io

 

  最後附上論文中關於CG算法的流程圖,你們能夠參考上面5個步驟來理解CG的主要思路,本博客中的符號可能和論文中的不必定相同,且公式也不必定是正確的,博文只是讓你們知道這些公式是由什麼理論推出的,有個宏觀認識,一切需以論文中的內容爲主。

   

 

  參考資料:

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

相關文章
相關標籤/搜索