1. 程式人生 > >牛頓法與擬牛頓法學習心得

牛頓法與擬牛頓法學習心得

1. 引言

在logistics迴歸中,我們通常使用梯度下降法(Gradient Decend)來優化目標函式。但梯度下降法的策略實際上是比較片面的,因為它只使用了一階導資訊,搜尋方向(梯度方向)比較偏向於區域性資訊。所以,我們引入了牛頓法。 這裡推薦一個牛頓法的講解系列Blog,講的很好,深入淺出,個人認為比李航大神的推導還要更詳細一點。 https://blog.csdn.net/itplus/article/details/21896453 所以關於牛頓法的詳細推導本篇不再贅述,下面只說一些總結。

2. 牛頓法

為了在優化過程中得到更好的效果,牛頓法應運而生。其基本思想是,通過二階泰勒展開引入函式的二階導資訊,這樣在優化過程中,優化目標不僅會根據梯度方向、還會根據梯度的變化趨勢作改變,以此來加快優化速度。 牛頓法有一些特點:

  1. 海塞矩陣必須正定,至於原因下面說。
  2. 具有二次收斂性,即當目標函式f(x)f(x)為二次函式時,牛頓法只需迭代一次就能達到最優值。

牛頓法也有不少缺點:

  1. 牛頓法的步長是固定的,所以在高次冪函式下,可能會有區域性震動的情況,即f(xk+1)>f(xk)f(x_{k+1})>f(x_k)
  2. f(x)f(x)必須有二階連續偏導數,否則無法用泰勒公式展開。

2.1 為什麼海塞矩陣必須正定

假設目標函式的x是個標量,那麼對f(x)f(x)在第k次迭代結果的x(k)x^{(k)}處附近用泰勒公式二階展開:f

(x)=f(x(k))+f(x(k))(xx(k))+12f(x(k))(xx(k))2f(x)=f(x^{(k)})+f\prime(x^{(k)})(x-x^{(k)})+\cfrac{1}{2}f\prime\prime(x^{(k)})(x-x^{(k)})^2\quad 高等數學中有一個經典的推論,即某個具有二階連續導數的函式,當某個點x的一階導為0,二階導>0時,則x為極小值點。我們在優化目標函式時,往往都是把優化問題作為一個極小化問題考慮。 所以當目標函式的x是個向量
時,式中的12f(x(k))\cfrac{1}{2}f\prime\prime(x^{(k)})就變成了H(x)H(x)(Hesse matrix), 正定矩陣有一個必要條件 即 特徵值λ>0\lambda>0,直觀上理解就是矩陣所代表的某個常數大於零,也就對應了二階導>0這一項。所以當H(x)H(x)正定時,可以推斷目標函式的優化方向是最小化方向,只有這樣才能繼續優化下去。

3.擬牛頓法

牛頓法固然收斂速度快,但其弱點也十分明顯,條件苛刻都是其次,單是對H(x)H(x)求逆這一步操作就十分繁瑣。所以引入了擬牛頓法,即“類似牛頓法的方法”,通過將H(x)H(x)替換為一個滿足擬牛頓條件的近似矩陣G(x)G(x)來簡化操作,使優化過程中不用再求二階導矩陣的逆,這樣也就大大提高了優化的效能。 關於牛頓法與擬牛頓法的更加細節的問題,參閱開頭推薦的博文即可。