牛頓法爲什麼是二階的

查了很多地方說牛頓法是二階算法,一直沒找到二階項在哪。花了大半天的時間才弄明白。記錄一下。
牛頓法一般應用場景:

  1. 求方程的根;
  2. 求解最優化方法;

比如要求f(x)=0f(x)=0的根。
首先,選擇一個接近函數 f(x)f(x)零點的 x0x_0,計算相應的 f(x0)f(x_0)和切線斜率f(x0)f ' (x_0)(這裏ff '表示函數ff的導數)。然後我們計算穿過點(x0,f(x0))(x_0, f (x_0))並且斜率爲f(x0)f '(x0)的直線和 xx 軸的交點的xx座標,也就是求如下方程的解:
f(x1)f(x0)=f(x0)(x1x0) f(x_1)-f(x_0) = f^{\prime}\left(x_{0}\right) \cdot (x_1-x_0)
通常x1會比x0更接近方程f (x) = 0的解。因此我們現在可以利用x1開始下一輪迭代。迭代公式可化簡爲如下所示:
xn+1=xnf(xn)f(xn) x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{\prime}\left(x_{n}\right)}
已經證明,如果f ’ 是連續的,並且待求的零點x是孤立的,那麼在零點x周圍存在一個區域,只要初始值x0位於這個鄰近區域內,那麼牛頓法必定收斂。 並且,如果f ’ (x)不爲0, 那麼牛頓法將具有平方收斂的性能. 粗略的說,這意味着每迭代一次,牛頓法結果的有效數字將增加一倍。下圖爲一個牛頓法執行過程的例子。

由於牛頓法是基於當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱爲是"切線法"。牛頓法的搜索路徑(二維情況)如下圖所示:

牛頓法搜索動態示例圖:
 牛頓法搜索示意圖關於牛頓法和梯度下降法的效率對比:

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

根據wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
  在這裏插入圖片描述
  注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。

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


當我們將牛頓法用作優化算法的時候,它就是二階的。
假設我們有一個凸優化問題
minxf(x) \min _{x} f(x)
也就是說我們要找一個x來最小化f(x)。對於凸優化問題,f(x)的最小值點就是f(x)的極值點,也就是導數爲0的點。那麼我們上面的優化問題就轉換爲了如下的求根問題:
f(x)=0 f^{\prime}(x)=0
利用牛頓法求解上面的式子,我們先選取初始點x0,然後進行如下迭代
xn+1=xnf(xn)f(xn) x_{n+1}=x_{n}-\frac{f^{\prime}\left(x_{n}\right)}{f^{\prime \prime}\left(x_{n}\right)}
直到xn+1xn<ϵ| x_{n+1}-x_{n} |<\epsilon
綜上,牛頓法求根是一階算法,我們將優化問題轉爲求根問題需要一階導數,所以用牛頓法進行最優化是二階算法。

參考資料
http://sofasofa.io/forum_main_post.php?postid=1000966
https://www.cnblogs.com/shixiangwan/p/7532830.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章