漫步最優化三十——非精確線搜索

10.24













——

在多維算法中,大部分計算量都用在執行線搜索時函數與梯度的運算上,因此所需要的運算量主要依賴於所用線搜索的效率與精度。如果需要高精度的線搜索,那麼計算量就比較大。如果非精確線搜索不影響算法的收斂,那麼我們可能減少計算量。

實際發現許多優化算法可以容忍不精確的線搜索,正由於此,對於這些方法我們使用非精確線搜索。

假設

xk+1=xk+αdk

其中dk 是給定的方向向量且α 是無關的搜索參數,存在某個正值α ,使得函數f(xk+1) 有唯一的極小值,泰勒級數的線形近似爲

f(xk+1)=f(xk)+gTkdkα

其中

gTkdk=df(xk+αdk)dα|α=0

上面等式表示圖1中的直線A ,等式

f(xk+1)=f(xk)+ρgTkdkα

表示直線B ,其中0ρ12 ,其斜率從0到12gTkdk ,依賴於ρ 的值。另外等式

f(xk+1)=f(xk)+(1ρ)gTkdkα

表示直線C ,其斜率從gTkdk12gTkdkC,B 之間的夾角θ

θ=tan1[(12ρ)gTkdk1+ρ(1ρ)(gTkdk)2]

如圖2所示。顯然當ρ 從0到12 時,θgTkdk 到0,當固定ρ 爲範圍內的某個值時,兩條直線與曲線f(xk+1) 相交可以得出兩個α 值,α1,α2 ,如圖2所示。


這裏寫圖片描述
圖1

α0 是最小化f(xk+αdk) 得到的α 估計值,對於α=α0 ,如果f(xk+1) 等於或小於直線B 相應的f(xk+1) 值,並且等於或大於直線C 相應的f(xk+1) 值,即
f(xk+1)f(xk)+ρgTkdkα0f(xk+1)f(xk)+(1ρ)gTkdkα0

那麼我們可以判定α0α 的一個估計值,這時候α1α0α2 ,如圖2所示,α1,α2 組成了包含最小值α0 的區間,上面的兩個不等式稱爲Goldstein條件,他們是非精確線搜索的基礎。該方法基於可利用的信息生成估計值α0 ,並檢查Goldstein條件,如果都滿足,那麼接受f(xk+1) 的減少並終止該過程。另一方面,如果任何一個條件不滿足,那麼f(xk+1) 的減少是不充分的,我們需要進一步改善α 的估計值,用αˇ0 表示。假設第一個不等式不滿足,那麼α0>α2 如圖3所示,因爲αL<α<α0 ,所以新的αˇ0 可以用內插來確定。另一方面,如果第二個不等式不滿足,那麼α0<α1 如圖4所示,因爲α0αL<α0<α 之間,所以α0ˇ 可以用外插來確定。

如果f(xk+αdk)α=αL,α=α0 處的函數值以及導數值均已知的話,那麼對於α0>α2α0ˇ 的一個好估計用內插公式

αˇ0=αL+(α0αL)2fL2[fLf0+(α0αL)fL]

得出,對於α0>α2 用外插公式

α0ˇ=α0+(α0αL)f0(fLf0)

確定,其中

fLf0=f(xk+αLdk),fL=f(xk+αLdk)=g(xk+αLdk)Tdk=f(xk+α0dk),f0=f(xk+α0dk)=g(xk+α0dk)Tdk


這裏寫圖片描述
圖2

重複上面的過程直到產生的αˇ0 滿足α1<αˇ0<α2 ,那麼終止非精確線搜索。

這裏寫圖片描述
圖3


這裏寫圖片描述
圖4

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