最速下降法與牛頓法的收斂速率

在MIT的公開課[Introduction to Computer Science and Programming Using Python] 6.00.1x 中,Eric Grimson曾提到過迭代算法的思想就在於將當前迭代點向正確的方向移動一定的“步長”,然後檢驗目標值是否滿足一定要求。同時,“方向”和“步長”也是不同優化算法主要關心的兩個方面。除此之外,我們還關心不同優化算法的收斂速率(rate of convergence),這表徵了算法是否能在儘量少的迭代次數之外逼近最優解。本文以最速下降法(Steep Descent)和牛頓法(Netwon Method)爲例,說明不同算法的收斂速率。本文主要參考了Jorge Nocedal 和 Stephen J. Wright 的 Numerical Optimization 一書(第二版)。

最速下降法(Steep Descent)

最速下降法的思路是以當前迭代點的導數方向的相反方向,也就是下降最快的方向(名字由來),爲前進方向。步長選取的一種思路是選擇相應的步長使得目標函數取在前進方向上取得最小值。

這裏我們以一個簡單的二次規劃命題爲例進行說,即

f(x)=12xTQx+cTx
其中 Q 是對稱正定陣。對於目標函數 f(x) ,記當前的迭代點爲 xkf(x)xk 處的一階導數爲 fk=Qx+c 。於是在 xk 處的前進方向即爲 fk 。 要確定前進的步長,即要是的下面這個以 α 爲決策變量的優化命題取得最小值:
f(xαfk)=12(xαfk)TQ(xαfk)+cT(xαfk)
令上式對 α 的導數爲 0 即可求得對應步長爲:
αk=fTkfkfTkQfk
因此,每一步更新迭代點的過程爲:
xk+1=xkfTkfkfTkQfkfk

因此,最速下降法的迭代軌跡可以用下圖描述。
這裏寫圖片描述

圖片來源:Nocedal, Jorge, and Stephen J. Wright. “Numerical Optimization 2nd.” (2006).

通過仿真,可以看出,如下圖這樣一個二次函數

這裏寫圖片描述

在二維投影上的迭代過程如下圖:
這裏寫圖片描述


在Numerical Optmization一書中,證明了最速下降法是線性收斂的(一階收斂)。首先,針對二次函數有下式成立:

12xxQ=f(x)f(x)
其中,xQ=xTQxx 是最優點。同時可以證明:
xk+1xQ(λnλ1λn+λ1)2xkxQ
其中 λ1λ2λnQ 的特徵值。

對於一般性的二階可導的函數,在滿足一定要求的前提下,也有下面的收斂速率的描述:

f(xk+1)f(x)r2f(x)f(x)
其中,
r(λnλ1λn+λ1,1)
這裏,λ1λ2λn2f(x) 的特徵值。

從這個結論可以看出,通常意義下,我們可以用條件數作爲一個優化命題難解程度的衡量,如果條件數越大,在上圖等高線中的圓圈就越扁,相應的收斂速度就越慢。而當條件數較小時,尤其在極端情況下,矩陣的特徵值都全等時,上圖的等高線就呈現完美的圓形,因此一步就可以收斂。

Numerical Optmization一書中對這一結果的評論是=“the steepest descent method can have an unacceptably slow rate of convergence, even when the Hessian is reasonably well conditioned.”並舉例說,一個條件數爲800的對象,f(x1)=1f(x)=0 。那麼根據上面的定理,在1000次迭代之後目標函數的值仍然還是0.08。

但是利用上面的結論,如果我們提前知道目標函數的最優值 f(x) ,我們可以對最速下降法的迭代次數做出估計,通過隨機生成100個二次規劃的命題,我在這裏比較了上式給出的迭代次數上界和實際迭代次數,結果如下圖:

這裏寫圖片描述

從圖中可以看出,並不能說這裏給出的上界是“緊”還是“不緊”。

牛頓法(Newton Method)

相對於最速下降法,牛頓法的下降方向並不是迭代點的導數方向,而是在迭代點出Taylor展開到二階後取得最小值的方向。即對於一般性的連續二階可到的函數 f(x) ,在 xk 處展開到二階爲

f(xk+p)fk+pTfk+12pT2fk
對上求極小值(即令一階導等於0),可以得到在當前點的Newton方向爲
pNk=2f1kfk

因爲Newton法是求二階近似後的最小值,因此對於無約束的二次規劃,Newton法可以一步收斂到最小值,如圖:

這裏寫圖片描述

對於一般性的函數,上面的Newton Step並不能保證目標函數單調下降,但在滿足一定條件的情況下,並在最優點附近的鄰域內,可以證明牛頓法是二階收斂的,也就是說收斂速度要快於最速下降法。具體的證明在這裏不加贅述,這裏只給出推導的結論:

xk+pNkxL2f(x)1xkx2
其中,L 是證明過程中用到的 Lipschitz 常數。

Ref.
Nocedal, Jorge, and Stephen J. Wright. “Numerical Optimization 2nd.” (2006).

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