擬牛頓演算法,SR1,DFP,BFGS步驟

2021-10-06 04:55:52 字數 2038 閱讀 3878

在牛頓演算法中我們要面對逆向的hessian以及二階的偏導。導致我們的計算量很大,為了提高效率,如果無法使用hessian矩陣h(x),或者如果計算逆矩陣的計算量太大(複雜度為o(n ^ 3),則擬牛頓法可以 僅可用於基於一階導數,f( x)(具有複雜度 o(n ^ 2))的梯度g來建立乙個近似hessian的矩陣或其逆的近似矩陣 ,類似於先前考慮的broyden方法。我們可以使用擬牛頓演算法。

下面我們考慮最小化函式f(x)。 圍繞點x_n+1進行泰勒展開得到如下方程:

下面對x求導我們可以得到:

evaluating at x=x_n,並且設g(x_n) = g_n那麼上面的式子就可以變為:

其中矩陣b _n 是hessian矩陣h_n 的正割近似,最後的等式稱為割線方程。 為了方便起見,我們進一步定義:

那麼上面的公式可以變為:

那麼我們有了hessian的近似矩陣,這樣我們就可以達成了擬牛頓演算法 的條件。

擬牛頓步驟:

初始化x_0 以及b_0 設定n=0

計算梯度g_n 並且找到向量:

計算:更新公式來滿足擬牛頓演算法:

如果達到終止條件,則結束,沒達到條件則返回第二步n=n+1。

在我們的這個求解區域性最小值中, b_n也就是我們的近似矩陣,要是乙個正定舉證。(正定矩陣的定義看我的另一篇文章)

sr1 是擬牛頓演算法中的一種,這裡b_n的更新需要新增乙個附加項。

在這裡u是乙個向量。uut 是第一級的矩陣。以及加上我們的割線條件,就可以得到:

該方程式表示u與w=y_n - b_n s_n的方向相同,因此可以寫成 u = cw 。 換回來我們得到:

然後我們求的c等於:

那麼bn就會變成:

接下來反轉b_n+1我們可以得到:

要想得到上面的結果,我們還可以使用對偶分割條件的方法:

但是sr1 演算法有個問題就是需要bn的逆向保持正定。

在整個迭代過程中可能很難維持這一要求。 在以下dfp和bfgs方法中可以避免此問題。

在這個演算法中需要新增兩個額外附加項:

更具割線定理,我們可以得到:

然後將簡化拓展:

像bfgs和dfp一樣,它可能會出現捨入錯誤和行搜尋不準確的情況。 bfgs和sr1更新之間的顯著區別是,如果bk為正定且skyk> 0,則bfgs保證產生正定bk + 1,而sr1不具有此屬性。sr1公式在許多情況下都可以生成更準確的hessian近似值。

bfgs優於dfp的原因在於,bfgs有自校正的性質(self-correcting property)。通俗來說,如果某一步bfgs對hessian陣的估計偏了,導致優化變慢,那麼bfgs會在較少的數輪迭代內(取決於線搜尋的質量),校正估計的hessian陣。

最優化演算法3 擬牛頓法1

計算量大,每次都需要計算hesse矩陣,對於自變數維數較高的優化函式,計算量是相當大的 hesse矩陣可能存在不正定的問題,此時求得的迭代方向可能不是下降方向 為了解決上述問題,需要求hesse矩陣近似矩陣 b 將函式在 x 處二階展開 f x f x g t x x frac x x tg x x...

牛頓法與擬牛頓法學習筆記(四)BFGS 演算法

機器學習演算法中經常碰到非線性優化問題,如 sparse filtering 演算法,其主要工作在於求解乙個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的乙個演算法是 l bfgs。為了解這個演算法的數學機理,這幾天做了一些調研,現把學習過程中理解的一些東西整理出來。目...

最優化演算法3 2 擬牛頓法 BFGS演算法

相較於 最優化演算法3 擬牛頓法1 bfgs演算法使用秩二矩陣校正hesse矩陣的近似矩陣 b 即 b b k alpha mu k mu k t beta nu k nu k t 將函式在 x 處二階展開 f x f x g t x x frac x x tg x x 上式求導等於0,得 g k ...