註明:本文的向量均取為列向量。
本文嘗試通過線搜素的方法解決無約束優化問題 。
線搜尋方法是在每一步迭代中先計算乙個線性方向p_k,然後決定乙個步長alpha_k。具體迭代點變化如下所示:
因此,線搜尋方法的關鍵在於怎樣確定搜尋方向以及每一次迭代的步長應取多大。
對於搜尋方向p_k,乙個最基本的要求就是該方向為所優化的函式的下降方向,從數學角度來說,該方向必須要滿足
p_k'*df_k<0(其中'為轉置,df為導數)。因此,搜尋方向經常有如下形式:
其中,b_k是乙個對稱非奇異矩陣。當b_k為單位矩陣時,線搜尋方向即最速下降方向;當b_k取為f的黑塞矩陣時,線搜尋方向即為牛頓方向;當b_k是乙個近似的黑塞矩陣時,線搜尋方向是擬牛頓方向。因為有如下式子:
所以,該搜尋方向是下降方向。
接下來,討論如何確定搜尋方向p_k和步長alpha_k以保證在初始點較遠時,該演算法依然能保證收斂。
步長確定
在確定步長的過程中存在乙個矛盾,我們希望選擇乙個能使f達到充分下降的步長,但與此同時,我們又不想在選擇的過程中浪費太多時間。傳統的線搜尋演算法是通過計算一系列候選步長alpha,當這些值滿足一些確定條件時停止。線搜尋方法通常有兩步:第一是計算乙個可接受的步長區間,第二是在這個區間裡通過對分或插值的方法計算乙個可接受的步長。
步長alpha_k需要滿足的乙個最基本的條件是f(x_k+alpha_k*p_k)wolfe 條件
乙個比較通用的不精準線搜尋條件是步長alpha_k應該滿足使得目標函式f充分下降,應滿足如下不等式:
其中常數項c1取值為(0,1),通常取為c1=1e-4。換句話說,f的下降量需與alpha_k和p_k'df成正比。該不等式也稱為armijo條件。該條件在alpha充分小時即可成立,因此不能保證演算法的效率。為了排除不可接受的小步長,引出了第二個條件,curvature條件:
其中c2取值為(c1,1),通常取c2=0.9。
這兩個條件統稱為wolf條件,即
goldstein條件
與wolf條件一樣,goldstein條件確保了步長為充分下降,並且足夠大。形式如下:
其中0回溯線搜尋
如果採用回溯的方法來確定步長,即先選擇乙個足夠大的步長alpha_0,然後逐步縮小步長,即可保證所選步長不會太小,這樣就可忽略curvature條件。演算法如下:
在計算過程中,初始步長alpha為1(牛頓和擬牛頓演算法),其它的演算法各有不同的值。在每一步迭代中,rho的取值可發生變化,事實上,我們只需要確保對於常數0基於wolfe條件的線搜尋演算法
該演算法有兩步。第一,給定乙個初始步長alpha_1,增大步長直到找到另外乙個可接受的步長或者包含所需步長的區間。第二步涉及到乙個zoom演算法,該演算法能依次縮短區間直到找到乙個可接受的步長。
程式設計求解
無約束優化問題
線性搜尋下降演算法 常用的終止準則 left nabla f left x right right leq epsilon 選擇步長 基於區間的直接搜尋法 非精確搜尋準則 下降方向 不同的下降方向選取方式就有了不同的演算法 收斂性 收斂速度 基本思想 給定初始點 x 0 依次沿著座標軸 e 1,do...
無約束優化問題(二)
在演算法框架中我們提到,不同的方式確定搜尋方向或搜尋步長,就會得到不同的演算法,而梯度法就是用負梯度方向作為搜尋方向,即dk f xk 那麼,為什麼要用負梯度方向作為搜尋方向?因為負梯度方向是當前點的最速下降方向 就是說在xk 的某個鄰域內,在這個方向上往前走,函式值一定是下降最快的 下面我們給出數...
優化演算法 無約束優化
無約束優化問題可以表示為 min l theta 其中目標函式 l cdot 是光滑的。如何針對不同的目標函式,不同的應用場景求解乙個無約束優化問題是機器學習領域的關注點。經典的優化演算法可以分為直接法和迭代法兩大類。直接法,就是能夠直接給出優化問題的最優解的方法,這種方法能夠通過乙個解析式直接求出...