看了幾篇關於牛頓法的相關介紹,感覺非常好,尤其是擬牛頓條件的推導以及dfp等演算法的推導過程十分詳細明了。這裡記錄一下,方便之後查閱
牛頓法:
擬牛頓條件:
dfp演算法:
bfgs演算法
f-bfgs演算法
**:1)牛頓法(newton's method)
牛頓法是一種在實數域和複數域上近似求解方程的方法。方法使用函式f (x)的泰勒級數的前面幾項來尋找方程f (x) = 0的根。牛頓法最大的特點就在於它的收斂速度很快。
首先,選擇乙個接近函式 f (x)零點的 x
0,計算相應的 f (x
0) 和切線斜率f ' (x
0)(這裡f '
表示函式 f
的導數)。然後我們計算穿過點(x
0,
f (x
0)) 並且斜率為f '(x
0)的直線和 x
軸的交點的x
座標,也就是求如下方程的解:
我們將新求得的點的 x
座標命名為x
1,通常x
1會比x
0更接近方程f (x) = 0的解。因此我們現在可以利用x1
已經證明,如果f ' 是連續的,並且待求的零點x
是孤立的,那麼在零點x
周圍存在乙個區域,只要初始值x
0位於這個鄰近區域內,那麼牛頓法必定收斂。 並且,如果f ' (x)不為0, 那麼牛頓法將具有平方收斂的效能. 粗略的說,這意味著每迭代一次,牛頓法結果的有效數字將增加一倍。下圖為乙個牛頓法執行過程的例子。
由於牛頓法是基於當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱為是"切線法"。牛頓法的搜尋路徑(二維情況)如下圖所示:
關於牛頓法和梯度下降法的效率對比:
從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到乙個盆地的最底部,梯度下降法每次只從你當前所處位置選乙個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了區域性的最優,沒有全域性思想。)這一段簡單來說就是梯度下降僅僅考慮了梯度,而牛頓法不僅考慮了梯度,而且還考慮了梯度的變化(即:梯度的梯度)。
根據wiki上的解釋,從幾何上說,牛頓法就是用乙個二次曲面去擬合你當前所處位置的區域性曲面,而梯度下降法是用乙個平面去擬合當前的區域性曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
牛頓法的優缺點總結:
優點:二階收斂,收斂速度快;
缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的hessian矩陣的逆矩陣,計算比較複雜。
2)擬牛頓法(quasi-newton methods)
擬牛頓法是求解非線性優化問題最有效的方法之一。
擬牛頓法的本質思想是改善牛頓法每次需要求解複雜的hessian矩陣的逆矩陣的缺陷,它使用
正定矩陣(因為只有正定矩陣才能保證牛頓法的搜尋方向是向下搜尋的)
來近似hessian矩陣的逆,從而簡化了運算的複雜度。
擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標函式的梯度。通過測量梯度的變化,構造乙個目標函式的模型使之足以產生超線性收斂性。這類方法大大優於最速下降法,尤其對於困難的問題。另外,因為擬牛頓法不需要二階導數的資訊,所以有時比牛頓法更為有效。如今,優化軟體中包含了大量的擬牛頓演算法用來解決無約束,約束,和大規模的優化問題。
具體步驟:
擬牛頓法的基本思想如下。首先構造目標函式在當前迭代xk
的二次模型:
這裡bk是乙個對稱正定矩陣,於是我們取這個二次模型的最優解作為搜尋方向,並且得到新的迭代點:
其中我們要求步長ak
滿足wolfe條件。這樣的迭代與牛頓法類似,區別就在於用近似的hesse矩陣bk
代替真實的hesse矩陣。所以擬牛頓法最關鍵的地方就是每一步迭代中矩陣bk
的更新。現在假設得到乙個新的迭代xk+1,並得到乙個新的二次模型:
我們盡可能地利用上一步的資訊來選取bk。具體地,我們要求
從而得到
這個公式被稱為割線方程。
常用的擬牛頓法有dfp演算法和bfgs演算法。
牛頓法和擬牛頓法
正在學習牛頓法,找到一篇非常詳細的部落格,特將目錄整理下來,方便今後回想和查詢。一 牛頓法 主要內容 1 泰勒展開式。比較基礎。2 牛頓法。從其應用的兩個方面來介紹 2.1 求方程的根 一階泰勒展開。2.2 解決最優化問題 二階泰勒展開。此部分又分為兩種情況 二維情況和高維情況。其中,二維情況比較常...
牛頓法和擬牛頓法
牛頓法和擬牛頓法是求解無約束最優化問題的常用方法,收斂速度快。牛頓法是迭代演算法,每一步需要求解目標函式的海塞矩陣 hesse matrix 的逆矩陣,計算複雜。擬牛頓法通過正定矩陣近似海塞矩陣的逆矩陣或海塞矩陣,計算速度快。牛頓法 考慮無約束優化問題 min f x 其中x 為目標函式的極小值點 ...
牛頓法與擬牛頓法學習筆記(一)牛頓法
好文!先轉在看!機器學習演算法中經常碰到非線性優化問題,如 sparse filtering 演算法,其主要工作在於求解乙個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的乙個演算法是 l bfgs。為了解這個演算法的數學機理,這幾天做了一些調研,現把學習過程中理解的一些...