1. 程式人生 > >最小二乘法—牛頓法

最小二乘法—牛頓法

最小二乘法

二、牛頓法(Newton’s method)

牛頓法是一種在實數域和複數域上近似求解方程的方法。方法使用函式f (x)的泰勒級數的前面幾項來尋找方程f(x)=0的根。牛頓法最大的特點就在於它的收斂速度很快。

具體步驟:
首先,選擇一個接近函式 f(x)f(x) 零點的 x0x_0(起始位置),計算相應的 f(x0)f(x_0) 和切線斜率f(x0)f′(x_0)。 然後我們計算穿過點$(x_0,f(x_0)) 並且斜率為f′(x_0)$的直線和 xx 軸的交點的x座標,也就是求如下方程的解: xf(x0)+f(x0)x0f(x0)=0x·f'(x_0)+f(x_0)-x_0·f'(x_0)=0
我們將新求得的點的 xx 座標命名為x1x_1,通常x1x_1會比x0x_0更接近方程 f(x)=0f(x)=0 的解。 因此我們現在可以利用 x1x1 開始下一輪迭代。迭代公式可化簡為如下所示: xn+1=xnf(xn)f(xn)x_{n+1} = x_n -\frac{f(x_n)}{f'(x_n)}

已經證明,如果f′是連續的,並且待求的零點x是孤立的,那麼在零點x周圍存在一個區域,只要初始值x0位於這個鄰近區域內,那麼牛頓法必定收斂。 並且,如果f′(x)不為0, 那麼牛頓法將具有平方收斂的效能. 粗略的說,這意味著每迭代一次,牛頓法結果的有效數字將增加一倍。下圖為一個牛頓法執行過程的例子。 這裡寫圖片描述

牛頓法和梯度下降法的效率對比:

從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。 通俗地說,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步, 牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。 所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。 (牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了局部的最優,沒有全域性思想。)

牛頓法的優缺點總結:

優點:二階收斂,收斂速度快;   缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的Hessian矩陣的逆矩陣,計算比較複雜。

三、擬牛頓法

擬牛頓法是求解非線性優化問題最有效的方法之一。
擬牛頓法的本質思想是改善牛頓法每次需要求解複雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的複雜度。 擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標函式的梯度。 通過測量梯度的變化,構造一個目標函式的模型使之足以產生超線性收斂性。這 類方法大大優於最速下降法,尤其對於困難的問題。另外,因為擬牛頓法不需要二階導數的資訊,所以有時比牛頓法更為有效。 如今,優化軟體中包含了大量的擬牛頓演算法用來解決無約束,約束,和大規模的優化問題。