天天看點

梯度下降法Vs牛頓下降法

Author: Frank

在機器學習領域中,梯度下降法和牛頓下降法是兩個非常有分量的方法。兩者在本質上都是為了尋找極值點的位置,但是牛頓下降法的收斂速度更快。下面以單變量函數為例來進行基本的解釋。

牛頓下降法的遞推公式: 

梯度下降法Vs牛頓下降法

梯度下降算法的遞推公式: 

xn+1=xn−μ∗f′(xn)

方法比較:

一般稱 梯度下降法用平面去拟合目前的局部曲面,牛頓法用二次曲面來拟合。下圖中紅色的收斂軌迹代表牛頓法,另一條為梯度下降法。

梯度下降法Vs牛頓下降法
原理闡釋:

梯度下降法:

一階泰勒展式如下所示: 

f(x+Δx)≈f(x)+f′(x)∗Δx 在通過疊代尋找極小值點過程中,就是尋找Δx,使得疊代之後的點x+Δx對應的f(x+Δx)<f(x)。  由上式可知,隻需要 f′(x)∗Δx<0即可。進而可令: 簡單的方法就是:  Δx=−f′(x)Δx=−f′(x)

這樣上式就變為 

f(x+Δx)=f(x)−f′(x)∗f′(x)

泰勒展式隻在局部成立,Δx不能太大,但是取Δx=−f′(x) 有可能太大,進而需要加個小的修正的因子,上式就變為: 

Δx=−μ∗f′(x)Δx=−μ∗f′(x)

最終得到公式: 

xn+1=xn−μ∗f′(xn)xn+1=xn−μ∗f′(xn)

這就是為什麼說梯度下降算法是用平面拟合函數的局部曲面。

梯度下降法Vs牛頓下降法
牛頓下降法:

二階泰勒展式如下所示:

f(x+Δx)≈f(x)+f′(x)Δx+1/2∗f′′(x)∗Δx2

同樣希望疊代之後的點x+Δx對應的f(x+Δx)<f(x)。那麼将左式看成是△x的函數,當取合适的△x值時,左邊的式子達到極小值,此時導數為0,上式對Δx求導數,得: 

0=f′(x)+f′′(x)∗Δx0=f′(x)+f″(x)∗Δx

此時可得到公式: 

xn+1=xn−f′(xn)/f′′(xn)xn+1=xn−f′(xn)/f″(xn)

是以說牛頓下降法是用二次曲面來拟合函數的局部曲面。

兩種方法的關系:

關于梯度下降算法,其中最重要的就是要确定步長μ,它的值嚴重的影響了梯度下降算法的表現。

接下來考慮如下公式: (疊代後x+Δx處的導數為零時,對應最理想的情況)

f′(x+Δx)=f′(x)+f′′(x)∗Δxf′(x+Δx)=f′(x)+f″(x)∗Δx

和 

Δx=−μ∗f′(x)Δx=−μ∗f′(x)

結合兩個式子,得到: 

f′(x+Δx)=f′(x)−μ∗f′′(x)∗f′(x)f′(x+Δx)=f′(x)−μ∗f″(x)∗f′(x)

令左邊的式子為0,得到: 

μ=1/f′′(x)μ=1/f″(x)

由此可見牛頓下降法是梯度下降法的最優情況,是以牛頓下降法的收斂的速度必然更快。

牛頓法同時考慮了目标函數的一、二階偏導數,考慮了梯度變化趨勢,因而能更合适的确定搜尋方向加快收斂,但牛頓法也存在以下缺點:

1、對目标函數有嚴格要求,必須有連續的一、二階偏導數,海森矩陣必須正定;

2、計算量大,除梯度外,還需計算二階偏導矩陣及其逆矩陣。

--------------------------------

梯度法從初始點的領域開始判斷,用目标函數的一階偏導、以負梯度方向作為搜尋方向,在局部進行下降,隻考慮目标函數在疊代點的局部性質,然後步步逼近極值,往往是走之字型的。

牛頓法在二階導數的作用下,從函數的凸性出發,直接搜尋怎樣到達極值點,也就是說在選擇方向時,不僅考慮目前坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。從收斂速度來看,梯度下降是線性收斂,牛頓法是超線性的,至少二階收斂。

多變量函數需要用到Hessian matrix, 原理相同,可以參考:點選打開連結

繼續閱讀