理解牛頓法

牛頓法與梯度下降法相比,收斂速度更快,在搜索空間中進行二階收斂,即以橢圓曲面去逼近最優解,也可以將牛頓法看作二次曲面下的梯度下降法。牛頓法對於凸二次最優問題,迭代一次即可得到最優解。

首先給出無約束最優目標問題定義(統計學習方法附錄B):

minxRnf(x)

其中,x 爲目標函數的極小點。
假設f(x)具有二階連續偏導,若第k次迭代值爲x(k) ,在該點對目標函數二階泰勒展開,得到:

f(x)=f(x(k))+gTk(xx(k))+12(xx(k))H(x(k))(xx(k))
(式1)

其中,gk 表示f(x)在點x(k) 的梯度值,H(x(k)) 是f(x)在點x(k) 的海賽矩陣,表示函數對x,y的二階混合偏導。海賽矩陣定義如下:

H(x)=[2fxiyi]n×n

學習高數時,我們知道,對於有二階倒數的函數求極小值,要使一階導數等於0,二階導數大於0。在這裏,f(x)有極小值也要求一階導數等於0,其海賽矩陣是正定矩陣。
牛頓法的迭代公式通過極小點的必要條件f(x)=0 來推出,具體過程如下:
x(k) 處對式1兩側求導,得:

f(x)=gk+Hk(xx(k))

由極小點條件f(x)=0 得:

gk+Hk(xx(k))=0
, 則
x(k+1)=x(k)H1kgk

pk=H1kgk ,即可得出牛頓法的迭代公式:

x(k+1)=x(k)+pk

綜上,牛頓法的過程如下:
(1)、取初始值x(0) ,置k=0;
(2)、計算gk 的值,若||gk||<ϵ ,則停止迭代,記x=x(k) ;
(3)、計算海賽矩陣Hk ,並求出pk
(4)、利用式 x(k+1)=x(k)+pk 對x值進行更新
(5)、置k=k+1 ,轉步驟(2)。

由過程(3)可知,牛頓法在求解過程中,需要在每次迭代過程中計算海賽矩陣的逆矩陣,比較複雜,這也是制約牛頓法的一個因素,因此人們對牛頓法進行了改進,提出了擬牛頓法。由過程(4)可知,牛頓法使用二階導數來對當前點進行更新,不僅考慮了梯度下降的方向,還考慮了梯度的梯度,根據梯度的變化自動更新步長。此外,牛頓法對初始點的選取敏感,若選取的初始點離極小點太遠,會造成海賽矩陣非正定,從而使得算法不一定收斂,因此在使用中,會配合梯度下降法一起使用,當點離極小點比較近時,使用牛頓法來更新。

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