數值優化(Numerical Optimization)學習系列-無梯度優化(Derivative-Free Optimization)

概述

在實際應用中,有些目標函數的梯度不容易計算,即使使用有限差分等近似算法,也會因爲噪聲的存在導致結果不精確。無梯度優化算法(DFO-Derivative-Free Optimization)可以在不計算梯度的情況下進行問題的最優化,主要有兩類思路,一是根據目標函數的樣本進行擬合,對擬合函數進行最優化;二是用一些啓發式算法。
1. 有限差分和誤差
2. 基於模型近似的方法
3. 座標和模式搜索方法
4. 其他DFO方法
5. 總結

有限差分和誤差

有限差分方法在某些情況下可能會有一定的誤差,例如如果函數值需要通過隨機試驗進行模擬,此時會引入人爲誤差或者儀器誤差。
因此對問題進行建模時,將誤差引入目標函數中,然後利用有限差分和梯度相關算法進行優化。

f(x)=h(x)+ϕ(x)
其中函數h表示某平滑函數,ϕ 表示誤差分佈函數,該函數可以和參數x有關也可以無關。

對誤差進行建模後,然後利用中心有限差分方法,進行梯度的計算

fxif(x+ϵei)f(xϵei)2ϵ

噪聲水平(Noise Level)定義爲:
在x附近噪聲最大值。η(x;ϕ)=sup||zx||ϵ|ϕ(z)|

此時使用有限差分方法,近似誤差來源於固有誤差和噪聲誤差

基於模型的方法

主要思路是,在第k步迭代時,基於該點進行模型近似,通過採樣推導出模型中的參數,基於該模型進行最優化計算。

二次模型近似

在第k步迭代時,構建一個二次模型進行近似

mk(xk+p)=c+gTp+12pTGp
,其中g和G分別表示函數f的一階和二階梯度。
由於該模型參數c、g和G都是未知的,因此需要1+n+(n+1)n/2=(n+1)(n+2)/2個未知數需要計算。
所以基於點Xk需要採樣這麼多個點進行未知數計算。
樣本Y=y1,y2...yq ,假設該集合中的點值都比x_k大。根據擬合等式mk(yl)=f(yl)
此時可以唯一確定模型m,然後利用信賴域或者梯度方法進行最優化。

在實際應用中,我們僅需要更新模型M即可,不用每次都重新計算。可以選擇合適方便計算的基函數。

算法過程如下
這裏寫圖片描述
這裏寫圖片描述

算法過程如下
1. 構建插值集合Y=y1,y2...yq 需要保證線性方式的解存在。
2. 求解插值方程
3. 根據二次模型進行最優解計算
4. 根據最優解的效果,決定是否採用該解。
5. 根據一個幾何過程更新幾何Y。

二次模型的缺點:樣本點選擇是O(n^2)的,如果維度越高計算複雜度越大。因此可以考慮線性模型,此時只有O(n+1)個樣本需要求解,複雜度會降低。

座標和模式搜索方法

不同於梯度相關的算法,基於模式搜索方法的搜索方向都是事先確定好的,該方法需要從方向集合中選擇一個下降方向作爲搜索方向並且更新該方向集合,之後利用線搜索決定步長,逐步迭代得到最優解。
座標下降是模式搜索方法中的一個特例。

座標搜索方法(Coordinate SearchMethod)

該方法也稱之爲座標下降法或者變量交替方法,主要思路是依次沿着座標軸方向進行線搜索。
詳細過程如下
1. 選擇某個迭代點x=(x1,x2…xn),固定x2…xn,優化x1使得目標函數最小
2. i=2..n 優化x_i使得目標函數最小
3. 重複以上步驟
對於二維情況下,搜索過程如下
這裏寫圖片描述

  1. 從上圖中可以看出,對於條件數比較大的問題,收斂速度非常低。
  2. 實際中,如果沿着線性獨立的搜索方向搜索,可能不能保證收斂。但是優點是不需要計算梯度,並且對於變量鬆耦合的情況下,收斂速度可以接受。
  3. 另外爲了進行優化,搜索方向可以選擇爲{e1,e2...en,en1...e1 }

模式搜索方法

每次搜索方向都是從一個“結構集”中選取,找到某個下降點,進行線搜索,否則修改步長,重複該過程。
該方法會受到噪聲點、函數值不精確、不平滑的影響。算法過程如下這裏寫圖片描述
算法描述如下
定義
* Dk 表示第k迭代的方向集合
* γk 表示第k步線性搜索參數,即步長,如果找到下降方向,則xk+γkpk 爲最優點
* ρ(t) 爲遞增函數,並且當t接近0時,該函數值爲0
算法過程
1. 初始化搜索方向集合D0
2. 循環迭代一下過程,直到搜索步長滿足給定閾值。
3. 如果找到滿足一定下降條件的搜索方向,則修改最優值點,並且增大步長。
4. 否則減少步長
關鍵點

  1. 初始化搜索方向集合D0 如何選取,需要保證包含最優解的方向。
  2. 有理論保證如果搜索方向滿足一下條件,則一定能保證收斂。
    κ(Dk)=minvRnmaxpDkvTp||v||||p||δ
    βmin||p||βmaxpDk
  3. 條件1說明需要保證最少有一個搜索方向和最優方向的夾角小於90,即cos(θ ) > δ ,不能再相反的方向,否則不容易收斂。
  4. 條件2說明搜索方向的模不能相差太大,因此搜索步長統一進行縮放。
  5. 滿足條件的搜索方向有 {e1,e2...en,e1...en },供2n個搜索方向或者{pi=12neei,pn+1=12ne },供n+1個點
  6. 遞增函數可以選擇爲ρ(t)=Mt3/2

其他DFO算法

共軛方向算法

類似於共軛梯度方法,該方法的目標是最優化

f(x)=12xTAxbTx
,不同點在於共軛方向的計算僅僅依靠函數值得到,不依賴梯度的計算。

Parallel subspace property

通過該方法可以找到一系列共軛方向,並且沿着該方向可以得到最優解,以二維情況爲例
這裏寫圖片描述
如上圖如果直線l1和l2平行,並且x1*和x2*是目標函數沿着該直線的最優解,則x1*-x2*共軛於直線的法向量。
因此只要沿着某兩個平行子空間尋找最優解,則最優解的差就共軛於該平面的法向量。
假設{p1,p2...pl }是線性獨立的向量,定義兩個平行平面

s1={x1+i=1..lαipi}
s2={x2+i=1..lαipi}
並且目標函數沿着該平面的最優解分佈爲x1*和x2*,則x2*-x1*共軛於p1,p2...pl

證明很簡單
由於x1*是最優解,則有

f(x1+αipi)αi=f(x1+αipi)pi
,當αi=0f(x1)pi=0
0=(f(x1)f(x2))pi=(Ax1bAx2+b)pi=(x1x2)Api

根據共軛條件可以得到。

Nelder-Mead 方法

也叫做Nelder-Mead simplex reflection方法。
保存n+1個點,並且這些點構成一個單純性,在每次循環中搜索使得函數值最低的點,去掉後,用其他更好的點替代。

Implicit Filtering方法

對比於帶有噪聲的有限微分方法,適用於noise level隨着迭代減小的情形。

總結

通過該小結的學習,可以瞭解到
1. 對於梯度不可求的複雜函數,可以通過DFO的方式進行優化
2. 通過隨機試驗估計函數值的最優化問題,可以考慮帶噪聲的有限差分。
3. 瞭解基於模型的方法,但是複雜度可能會比較大
4. 瞭解座標下降法和模式搜索算法
5. 瞭解基於共軛方向等其他方法。

發佈了59 篇原創文章 · 獲贊 123 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章