查了很多地方說牛頓法是二階演算法,一直沒找到二階項在哪。花了大半天的時間才弄明白。記錄一下。
牛頓法一般應用場景:
求方程的根;
求解最優化方法;
比如要求f(x
)=0f(x)=0
f(x)=0
的根。首先,選擇乙個接近函式 f(x
)f(x)
f(x)
零點的 x
0x_0
x0,計算相應的 f(x
0)f(x_0)
f(x0)
和切線斜率f′(
x0)f ' (x_0)
f′(x0
)(這裡f
′f '
f′表示函式f
ff的導數)。然後我們計算穿過點(x0
,f(x
0))(x_0, f (x_0))
(x0,f
(x0
))並且斜率為f′(
x0)f '(x0)
f′(x0)
的直線和 x
xx 軸的交點的x
xx座標,也就是求如下方程的解:
f (x
1)−f
(x0)
=f′(
x0)⋅
(x1−
x0)f(x_1)-f(x_0) = f^\left(x_\right) \cdot (x_1-x_0)
f(x1)
−f(x
0)=
f′(x
0)⋅
(x1
−x0
)通常x1會比x0更接近方程f (x) = 0的解。因此我們現在可以利用x1開始下一輪迭代。迭代公式可化簡為如下所示:
x n+
1=xn
−f(x
n)f′
(xn)
x_=x_-\frac\right)}\left(x_\right)}
xn+1=
xn−
f′(x
n)f
(xn
)已經證明,如果f 』 是連續的,並且待求的零點x是孤立的,那麼在零點x周圍存在乙個區域,只要初始值x0位於這個鄰近區域內,那麼牛頓法必定收斂。 並且,如果f 』 (x)不為0, 那麼牛頓法將具有平方收斂的效能. 粗略的說,這意味著每迭代一次,牛頓法結果的有效數字將增加一倍。下圖為乙個牛頓法執行過程的例子。
牛頓法搜尋動態示例圖:
從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到乙個盆地的最底部,梯度下降法每次只從你當前所處位置選乙個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了區域性的最優,沒有全域性思想。)
根據wiki上的解釋,從幾何上說,牛頓法就是用乙個二次曲面去擬合你當前所處位置的區域性曲面,而梯度下降法是用乙個平面去擬合當前的區域性曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
注:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
牛頓法的優缺點總結:
優點:二階收斂,收斂速度快;
缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的hessian矩陣的逆矩陣,計算比較複雜。
當我們將牛頓法用作優化演算法的時候,它就是二階的。
假設我們有乙個凸優化問題
min x
f(x)
\min _ f(x)
xminf
(x)也就是說我們要找乙個x來最小化f(x)。對於凸優化問題,f(x)的最小值點就是f(x)的極值點,也就是導數為0的點。那麼我們上面的優化問題就轉換為了如下的求根問題:
f ′(
x)=0
f^(x)=0
f′(x)=
0利用牛頓法求解上面的式子,我們先選取初始點x0,然後進行如下迭代
x n+
1=xn
−f′(
xn)f
′′(x
n)x_=x_-\frac\left(x_\right)}\left(x_\right)}
xn+1=
xn−
f′′(
xn)
f′(x
n)
直到∣ xn
+1−x
n∣<
ϵ| x_-x_ |
∣xn+1
−xn
∣<
ϵ綜上,牛頓法求根是一階演算法,我們將優化問題轉為求根問題需要一階導數,所以用牛頓法進行最優化是二階演算法。
參考資料
深度學習為什麼不用二階優化
a.牛頓法使用的是目標函式的二階導數,在高維情況下這個矩陣非常大,計算和儲存都是問題。b.在小批量的情況下,牛頓法對於二階導數的估計雜訊太大。c.目標函式非凸的時候,牛頓法容易受到鞍點或者最大值點的吸引。最大的問題就是計算複雜度。二階一次迭代更新的複雜度是n n,這在高維的時候是不可行的 穩定性。越...
c 類建構函式 二階構造法
為什麼要用二階構造?當類的成員比較簡單,如只有賦值等簡單操作時,普通的建構函式就可以。然而實際中,以物件導向的思維開發程式時,類往往十分複雜,設計到動態記憶體申請 檔案開啟等操作。然而在呼叫建構函式後,無法得知這些複雜的操作是否順利完成。假若動態記憶體未成功申請,然而物件例項在主程式中依然成功建立,...
藍橋杯 二階魔方旋轉 暴力法
魔方可以對它的6個面自由旋轉。我們來操作乙個2階魔方 如圖1所示 為了描述方便,我們為它建立了座標系。各個面的初始狀態如下 x軸正向 綠 x軸反向 藍 y軸正向 紅 y軸反向 橙 z軸正向 白 z軸反向 黃 假設我們規定,只能對該魔方進行3種操作。分別標記為 x 表示在x軸正向做順時針旋轉 y 表示...