梯度下降法與牛頓法的比較
兩種方法的詳細講解可以參考:
梯度下降演算法(Gradient Descent Optimization)
牛頓法(Newton Methods)、阻尼牛頓法和擬牛頓法
相同點
二者都是求解無約束最優化問題的常用方法
不同點
(1)原理方面
梯度下降法的搜尋方向是沿著等高線的法向量方向進行搜尋,每次迭代優化方向為梯度方向,即當前點所在等高線的法向。但往往等高線很少是正圓形,這種情況下搜尋次數會過多。
牛頓法搜尋方向為橢圓中心方向,這個方向也叫做牛頓方向,牛頓法的更新方程
H
k
−
1
∇
f
(
X
k
)
H_k^{-1} \nabla f(X_k)
Hk−1∇f(Xk) 中包含兩個部分:
∇
f
(
X
k
)
\nabla f(X_k)
(2)收斂方面:梯度下降法是一階收斂,牛頓法是二階收斂,所以牛頓法更快
(3)計算量方面:牛頓法需要計算海森矩陣的逆,計算複雜,代價比較大,因此有了擬牛頓法
(4)步長方面:牛頓法中海森矩陣的逆在迭代過程中不斷減小,可以起到逐步減小步長的效果;但梯度下降法中的步長是一定的,因此越接近最優值時,步長應該不斷減小,否則會在最優值附近來回震盪。
深度學習中往往採用梯度下降法
深度學習中,往往採用梯度下降法作為優化運算元,而很少採用牛頓法,主要原因有以下幾點:
(1)神經網路通常是非凸的,這種情況下,牛頓法的收斂性難以保證;
(2)即使是凸優化,只有在迭代點離全域性最優很近時,牛頓法才會體現出收斂快的優勢;
(3)牛頓法需要用到梯度和Hessian矩陣,這兩個都難以求解,得到Hessian矩陣的複雜度過高;
(4)在高維非凸優化問題中,鞍點相對於區域性最小值的數量非常多,而且鞍點處的損失值相對於區域性最小值處也比較大。牛頓法的步長是通過導數計算而來的。所以當臨近鞍點的時候,步長會變得越來越小,這樣牛頓法就很容易陷入鞍點之中。而梯度下降法的步長是預設的固定值,相對容易跨過一些鞍點。