牛頓法

(轉自http://blog.csdn.net/njucp/article/details/50488869)

“牛頓下降法和梯度下降法在機器學習和自適應濾波中的都很重要,本質上是爲了尋找極值點的位置。但是收斂的速度不同。 本文中就兩種方法來探究一下,哪種收斂方法速度快“


牛頓下降法的遞推公式:

xn+1=xnf(xn)/f′′(xn)

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

xn+1=xnμf(xn)

解釋一

下圖是兩種方法的圖示表示,紅色爲牛頓下降法,綠色爲梯度下降法,從圖中直觀的感覺是,紅色線短,下降速度快。因爲牛頓下降法是用二次曲面去擬合當前的局部曲面,而梯度下降法是用平面去擬合當前的局部曲面,一般用二次曲面擬合的更好,所以一般牛頓算法收斂快。

紅顏色的

關於以上的說法中,梯度下降法是用平面去擬合當前的局部曲面。梯度 f’(x)的方向是函數變大的方向。這裏需要解釋一下,對於一維情況而言,梯度方向只有正方向和負方向。至於爲什麼梯度下降算法就是用平面去擬合了,大多數情況下,沒有講的詳細。接下來就聊一下爲什麼。

首先考慮一下這個公式,這是一階泰勒展式,其實就是用平面去擬合函數的局部曲面。

f(x+Δx)=f(x)+f(x)Δx

我們的目的是使得左邊的值變小,那是不是應該使得下面的式子變爲負值。
f(x)Δx

這樣不就會使得左邊的式子變小嗎。
但是如何使得上式一定爲負值,簡單的方法就是:
Δx=f(x)

這樣上式就變爲
f(x+Δx)=f(x)f(x)f(x)

現在滿足使得下式變小了
f(x+Δx)


但是不要忘了以上所有的一切只有在局部成立,也就是說在小範圍才成立,那麼下式就有很能太大

Δx=f(x)

所以加個小的修正的因子,上式就變爲:
Δx=μf(x)

最終得到公式:

xn+1=xnμf(xn)

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



至於說牛頓下降法是用二次曲面去擬合當前的局部曲面,首先考慮一下下式:

f(x+Δx)=f(x)+f(x)Δx+1/2f′′(x)Δx2

同樣我們希望左式最小,那麼將左式看成是△x的函數,當取合適的△x值時,左邊的式子達到極小值,此時導數爲0。因此對上式進行求導數,得到一下公式:

0=f(x)+f′′(x)Δx

此時可得到公式:
xn+1=xnf(xn)/f′′(xn)

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


綜上而言,牛頓下降法利用了函數的更多的信息,能夠更好的擬合局部曲面,所以收斂的速度也會加快。

解釋二

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

接下來考慮如下公式:

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


Δx=μf(x)

結合兩個式子,得到:

f(x+Δx)=f(x)μf′′(x)f(x)

令左邊的式子爲0,得到:
μ=1/f′′(x)

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

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