1. 程式人生 > 實用技巧 >梯度下降法與牛頓法的比較

梯度下降法與牛頓法的比較

兩種方法的詳細講解可以參考:

梯度下降演算法(Gradient Descent Optimization)
牛頓法(Newton Methods)、阻尼牛頓法和擬牛頓法

相同點

二者都是求解無約束最優化問題的常用方法

不同點

(1)原理方面

梯度下降法的搜尋方向是沿著等高線的法向量方向進行搜尋,每次迭代優化方向為梯度方向,即當前點所在等高線的法向。但往往等高線很少是正圓形,這種情況下搜尋次數會過多。

牛頓法搜尋方向為橢圓中心方向,這個方向也叫做牛頓方向,牛頓法的更新方程 H k − 1 ∇ f ( X k ) H_k^{-1} \nabla f(X_k) Hk1f(Xk) 中包含兩個部分: ∇ f ( X k ) \nabla f(X_k)

f(Xk) 是負梯度資訊, H k − 1 H_k^{-1} Hk1 包含了該處的曲率(Hession矩陣描述局部曲率)。如下圖所示, S N S^N SN 方向為牛頓方向, − S -S S 為負梯度方向。

在這裡插入圖片描述

(2)收斂方面:梯度下降法是一階收斂,牛頓法是二階收斂,所以牛頓法更快

(3)計算量方面:牛頓法需要計算海森矩陣的逆,計算複雜,代價比較大,因此有了擬牛頓法

(4)步長方面:牛頓法中海森矩陣的逆在迭代過程中不斷減小,可以起到逐步減小步長的效果;但梯度下降法中的步長是一定的,因此越接近最優值時,步長應該不斷減小,否則會在最優值附近來回震盪。

深度學習中往往採用梯度下降法

深度學習中,往往採用梯度下降法作為優化運算元,而很少採用牛頓法,主要原因有以下幾點:

(1)神經網路通常是非凸的,這種情況下,牛頓法的收斂性難以保證;

(2)即使是凸優化,只有在迭代點離全域性最優很近時,牛頓法才會體現出收斂快的優勢;

(3)牛頓法需要用到梯度和Hessian矩陣,這兩個都難以求解,得到Hessian矩陣的複雜度過高;

(4)在高維非凸優化問題中,鞍點相對於區域性最小值的數量非常多,而且鞍點處的損失值相對於區域性最小值處也比較大。牛頓法的步長是通過導數計算而來的。所以當臨近鞍點的時候,步長會變得越來越小,這樣牛頓法就很容易陷入鞍點之中。而梯度下降法的步長是預設的固定值,相對容易跨過一些鞍點。