1. 程式人生 > >最優化方法小結

最優化方法小結

概述

最優化問題的一般數學模型:
minf(x)
s.t.hi(x)=0,i=1,...,m;
gj(x)0,j=1,...,p.

其中x是n維向量,在實際問題中也被叫做決策變數,s.t.為subject to的縮寫,用來表示約束條件,因此, hi(x)gj(x)稱為約束函式,其中hi(x)=0為等式約束,gj(x)0為不等式約束。求極小值的函式f稱為目標函式,求極大值的問題可以通過取負數轉換為極小值問題,因此這裡都以極小值問題來討論。

因此,根據有無約束函式,可以將最優化問題分為有約束最優化和無約束最優化問題;根據目標函式和約束函式的型別,可分為線性規劃(目標函式和約束函式均為線性函式)和非線性規劃; 另外,如目標函式為二次函式,而約束函式全部是線性函式的最優化問題稱為二次規劃問題,當目標函式不是數量函式而是向量函式時,就是多目標規劃,還有用於姐姐多階段決策問題的動態規劃等

最優化方法的一般迭代演算法,以下降演算法為例:
給定初始點x0,k=0
(1) 確定點xk處的可行下降方向pk;
(2)確定步長αk>0,使得f(xk+αkpk)<f(xk);
(3)令xk+1=xk+αkpk;
(4)若xk+1滿足某種終止條件,則停止迭代,以xk+1為最優近似解,否則k=k+1,轉(1)

無約束最優化問題

根據選取搜尋方向時是否使用目標函式的導數,將無約束最優化問題分為兩類:
1 解析法:最速下降法,Newton法,共軛梯度法,擬Newton法
2 直接法:Powell的方向加速法

梯度下降(Gradient Descent)

梯度下降法通常也稱為最速下降法。最速下降法是用負梯度方向為搜尋方向的,最速下降法越接近目標值,步長越小,前進越慢。
這裡有一篇覺得寫的很好:

再談 最速下降法
補充一點小結:
最速下降法雖然名字裡有最速兩個字,但其實指的是選取的下降方向針對當前區域性來說是最快的下降方向,即負梯度方向,對整體來說不一定是最速下降方向。最速下降法逼近極小點的路線是鋸齒形的,並且越靠近極小點步長越小,即越走越慢。
這裡寫圖片描述
最速下降法對一般函式而言都有很好的整體收斂性,即對初始點的要求不高

收斂速度:線性收斂

因此,雖然最速下降法具有很好的整體收斂性,但由於其收斂速度太慢並不是很好的實用演算法,但是有一些有效演算法是基於它改進的,如批量梯度下降,隨機梯度下降等,以後整理。

Newton法

最速下降法的本質是用線性函式去近似目標函式,因此要想快速得到,需要考慮對目標函式的高階逼近。牛頓法就是通過二次模型近似目標函式得到的,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。先建立一個這樣的巨集觀認識,下面詳細說。

Newton法解方程

牛頓法是一種利用迭代思想近似求解方程的方法,使用函式 f ( x ) 的泰勒級數的前面幾項來尋找方程 f ( x ) = 0 的根。取百度百科的原理部分如下:
這裡寫圖片描述
由於牛頓法是基於當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱為是”切線法”。牛頓法的搜尋路徑(二維情況)如下圖所示:
牛頓法搜尋動態示例圖: [reference: http://www.cnblogs.com/maybe2030/p/4751804.html ]
這裡寫圖片描述

Newton法最優化

由前面我們知道我們的任務是最小化目標函式f,因此可以轉化為求解函式f的導數f=0的問題,這樣就可以把優化問題看成方程(f=0)的求解問題。

推導:
對目標函式f(x)xk進行泰勒級數展開,忽略二階導之後的高階項
f(x)qk(x)=fk+gTk(xxk)+12(xxk)TGk(xxk)
矩陣的形式你可能看起來有點懵,其實對應我們常見的形式就是
這裡寫圖片描述
根據上一節解方程的過程我們知道下一次近似的xk+1應滿足qk(xk+1)=0=gk+Gk(xk+1xk)
xk+1=xkG1kgk
在實際應用中,求逆運算太複雜,我們一般通過解方程Gkp=gk來確定.

基本步驟
每一步迭代過程中,通過解線性方程組得到搜尋方向,然後將自變數移動到下一個點,然後再計算是否符合收斂條件,不符合的話就一直按這個策略(解方程組→得到搜尋方向→移動點→檢驗收斂條件)繼續下去。

優缺點:
收斂速度快:二階收斂速度(收斂速度明顯快過梯度下降)

因為牛頓法的收斂速度確實很快,因此人們針對牛頓法的缺點做出了各種改進版本,如阻尼牛頓法,Goldstein-price修正等,上面這個參考連線中有提到。

共軛方向法

共軛方向法是介於梯度下降法和Newton法之間的方法,為什麼這麼說呢?我們根據Newton法的介紹可以知道對於二次函式,Newton法只需要迭代一次就可以得到極小值(當然假設是存在的),而最速下降法需要迭代無窮多次,但是Newton法的計算代價太大,因此我們放鬆要求,只要找到在有限次迭代後可得到二次函式極小點的演算法就是有效的演算法,這種演算法稱為具有二次終止性。

理論基礎:共軛方向及其性質

G為n階正定矩陣,

相關推薦

no