內點法介紹(Interior Point Method)

在面對無約束的優化命題時,我們可以採用牛頓法等方法來求解。而面對有約束的命題時,我們往往需要更高級的算法。單純形法(Simplex Method)可以用來求解帶約束的線性規劃命題(LP),與之類似的有效集法(Active Set Method)可以用來求解帶約束的二次規劃(QP),而內點法(Interior Point Method)則是另一種用於求解帶約束的優化命題的方法。而且無論是面對LP還是QP,內點法都顯示出了相當的極好的性能,例如多項式的算法複雜度。本文主要介紹兩種內點法,障礙函數法(Barrier Method)和原始對偶法(Primal-Dual Method)。其中障礙函數法的內容主要來源於Stephen Boyd與Lieven Vandenberghe的Convex Optimization一書,原始對偶法的內容主要來源於Jorge Nocedal和Stephen J. Wright的Numerical Optimization一書(第二版)。

爲了便於與原書對照理解,後面的命題與公式分別採用了對應書中的記法,並且兩者方法針對的是不同的命題。兩種方法中的同一變量可能在不同的方法中有不同的意義,如 μ 。在介紹玩兩種方法後會有一些比較。

障礙函數法(Barrier Method)

對於障礙函數法,我們考慮一個一般性的優化命題:

minsubject tof0(x)fi(x)0,i=1,...,mAx=b(1)
這裏 f0,...,fm:RnR 是二階可導的凸函數。同時我也要求命題是有解的,即最優解 x 存在,且其對應的目標函數爲 p 。此外,我們還假設原命題是可行的(feasible)。此時,存在最優的對偶變量 λν ,與原始變量 x 一道,滿足如下的KKT條件:
f0(x)+i=1mλifi(x)+ATνAxfi(x)λλifi(x)=0=b0,i=1,...,m0=0,i=1,...,m(2)
其中,λifi(x)=0 被稱爲Complementary Condition。

我們可以看出,KKT條件中的不等式使得對KKT系統的求解難以爲繼,因此Barrier Method的思想就是通過在原始的目標函數中添加一個障礙函數(也可以理解成懲罰函數)來代替約束條件中的不等式約束。也就是說,把命題(1)變成下面的樣子:

minsubject tof0(x)+i=1mI(fi(x))Ax=b(3)
然後我們再考慮 I(u) 這個函數究竟選擇什麼樣的一種函數好呢,其實最好是像一堵牆的一樣的函數,在沒有違反約束時,函數值爲0,當違反約束時,函數值爲正無窮,就像下圖中紅色虛線這樣一個函數
這裏寫圖片描述

但是很可惜,紅色虛線的這個函數在某些點上是不可導的,因此並不適用,那麼下面的想法就是用類似的函數,比如上圖中的幾條藍色曲線表示的函數來近似這個函數。這樣一個近似的函數的表達式如下:
I^(u)=(1/t)log(u)
其中 t 是用於調整近似程度的參數,從上圖可以看出,t 越大近似效果越好。將上面的近似函數替換到(3)的優化命題中,可以得到如下的一個近似的優化命題:
minsubject tof0(x)+i=1m(1/t)log(fi(x))Ax=b(4)

這裏我們定義如下的對數障礙(logarithmic barrier):
ϕ(x)=i=1mlog(fi(x))(5)
因此,我們後面的討論就集中與下面這個命題:
minsubject totf0(x)+ϕ(x)Ax=b(6)

Central Path

針對(6)中不同的 t>0 值,我們定義 x(t) 爲相應優化命題的解。那麼,central path 就是指所有點 x(t),t>0 的集合,其中的點被稱爲 central points。central path 上的點滿足如下的充分必要條件,首先 x(t) 都是嚴格可行的,即:

Ax(t)=b,fi(x(t))<0,i=1,...,m
此外還存在對偶變量 ν^ 使得下面的等式成立(Lagrangian函數的導數爲0):
0=tf0(x(t))+ϕ(x(t))+ATν^=tf0(x(t))+i=1m1fi(x(t))fi(x(t))+ATν^(7)

我們可以從對偶變量的角度進一步研究上式,給等號兩邊都乘上 1t ,我們有:

0=f0(x(t))+i=1m1tfi(x(t))fi(x(t))+ATν^t
我們發現如果令
λi(t)=1tfi(x(t)),ν=ν^t(8)
就取得了與(2)式中的第一個等式基本一致的結果。也就是說,x(t) 能最小化 Lagrangian函數
L(x,λ,ν)=f0(x)+i=1mλifi(x)+νT(Axb)
即,λ(t)ν(t) 是原命題(1)的一組可行的對偶變量(dual feasible),其實可以理解爲能使 Lagrangian函數倒數爲0的就是 dual feasible 的。

那麼此時,對偶命題的目標函數值爲:

g(λ(t),ν(t))=f0(x(t))+i=1mλi(t)fi(x(t))+ν(t)T(Ax(t)b)=f0(x(t))mt
上式中的等號可能有點難以理解,但其實就是把(8)式代入的結果。

如果我們記原命題(1)的目標函數的最小值爲 p ,那麼由優化命題的對偶理論可知(可以參考另一篇博文——優化命題的對偶性(Duality)

f0(x(t))mtq
f0(x(t))qmt
從這裏可以形象地看出,隨着 t 取值增大,x(t) 可以最終收斂到最優解。其中,原始命題與對偶命題的解的差,即 f0(x(t))q 被稱爲 duality gap。

因此這裏可以給出一個 Barried Method 算法的框架(來自Convex Optimization, Algorithm 11.1):


Barrier Method
given strictly feasible x,t:=t(0)>0,μ>1,tolerance ϵ>0
repeat

  1. Centering step. Compute x(t) by minimizing tf0+ϕ , subject to Ax=b , starting at x .
  2. Update. x:=x(t) .
  3. Stopping criterion. quit if m/t<ϵ .
  4. Increase t. t=μt

舉例

這裏用一個例子進行一些補充說明。考察一個簡單的線性規劃:

mincTxsubject to x0
首先令 c=(11),t(0)=4x 的初始點爲(1.3,1)
下面兩圖是第一次迭代,t=4 時的 tf0(x)+ϕ(x) 函數圖象和平面的等高圖,同時第二張圖上還標出了迭代點的軌跡。
這裏寫圖片描述

這裏寫圖片描述

下面是t=8 時的 tf0(x)+ϕ(x) 函數圖象和平面的等高圖,同時第二張圖上還標出了迭代點的軌跡。
這裏寫圖片描述

這裏寫圖片描述

對於本例,central path 就是 x1=x2 這條直線。從迭代點的軌跡可以看出,在第一次迭代後,迭代點一直在central path上移動。

其實對於Barrier Method,我自己之前有個疑問就是,既然我們知道在 x(t) 處的目標函數值與最優解的差肯定小於 mt ,那爲什麼不直接給一個較大的 t 值通過較少的幾次迭代就能算出最有解了呢。真對這一問題,原因可能是這樣的,Barrier Method的計算量是由內外兩層迭代組成的,外層對 t 進行更新:t=μt ,內層用牛頓法求 tf0+ϕ 的解。有仿真結果表明,隨着 μ 值的加大,總的計算量(牛頓迭代次數)在呈現一定階段的下降後並沒有明顯下降。而對與 μ 值的選取則是一個內層迭代次數和外層迭代次數的權衡。μ 值較大時,外層迭代次數少,內層迭代次數多;μ 值較小時情況則相反。一般來說 μ 的取值在 1020 之間比較合適。

原始對偶內點法(Primal Dual Interior Point Method)

在 Primal Dual 的方法中,我們直接考慮一個標準的 LP 命題。

mincTx,subject to Ax=b,x0(9)
它的對偶命題爲:
maxbTλ,subject to ATλ+s=c,s0(10)
上面兩個命題的KKT條件爲:
ATλ+sAxxisi(x,s)=c,=b,=0,i=1,...,n0.(11a)(11b)(11c)(11d)
爲了後面的推導方便,將上面的KKT條件化爲矩陣形式如下:
F(x,λ,s)=ATλ+scAxbXSe(x,s)=0.0,(12a)(12b)
其中,
X=diag(x1,x2,...,xn),S=diag(s1,s2,...,sn),e=(1,1,...1)T

如同一般的優化算法,這裏需要定義一個量來檢驗當前的迭代點與最優點的差距。在Barrier Method中,使用 duality gap 的上界 mt 來檢驗的,在 Primal Dual Method 中,我們定義一個新的 duality measure 來進行某種衡量:

μ=1ni=1nxisi=xTsn
注意:這裏的 μ 與 Barrier Method 中的 μ 意義不同,爲了與各自書中的表達方式對應,分別選用了各自書中的變量記法。

要求解原始的優化命題,需要做的就是去求解 (12) 這樣一個方程組,由於 F 陣第三行中 XS 一項的存在,因此這是一個非線性系統。要求解這樣一個非線性系統,一種實用的方法就是牛頓法。(注意,這裏說的牛頓法是一種求解非線性方程組的方法,與求解優化命題的牛頓法並不完全一樣,但核心思路是一致的,都是在迭代點處進行二階展開。)在當前點處求解一個前進方向,並通過迭代逼近非線性系統的解。

J(x,λ,s)ΔxΔλΔs=F(x,λ,s)
其中 JF 陣的雅各比矩陣。我們將 F 陣中的前兩行分別記爲:
rb=Axb,rc=ATλ+sc(13)
那麼在每次迭代中需要求解的線性系統爲:
0ASAT00I0XΔxΔλΔs=rcrbXSe
因此,在求解得到相應的前進方向後,需要做的就是求解確定一個步長 α 來進行如下的更新
(x,λ,s)+α(Δx,Δλ,Δs)
其中 α(0,1] 的選取要使得原始變量和對偶變量都滿足相應的約束。

看起來這種方法似乎已經可以了,但通過這種被稱爲 affine scaling direction 的方向所得到的 α 往往很小。也就是說,很難在迭代中取得進展。一開始看到這個說法時,我也很難理解這句話的意思。所以在這裏我們用一個圖來說明,令 (9) 中的 c=(101) ,初始點爲(0.7,2) ,這裏不考慮等式約束,直接採用affine scaling direction 的方向得到的迭代點的軌跡爲

這裏寫圖片描述

從圖中可以看出,幾乎在從第二次迭代開始,迭代點就一頭撞上了約束。後面的迭代也只能貼着約束的邊緣來走,因爲要保迭代點不能違反約束,因此每次的步長 α 都只能取得很小。在這一過程中,一共進行了11次迭代才使得 duality measure μ<105

因此,實際上內點法採用的是一個不那麼 aggressive 的牛頓方向,也就是控制迭代點使其徐徐想約束邊界和最優點處靠近。具體的方法是,我們在用牛頓法求解非線性系統時,在每次迭代中並不要求直接實現 xisi=0 ,而是令其等於一個逐漸減少的值,具體來說就是 xisi=σμ ,其中 μ 是當前的 duality measure,σ[0,1] 是用於控制下降速度的下降因子。也就是說,在每次迭代中要求解的方程組應該是

0ASAT00I0XΔxΔλΔs=rcrbXSe+σμe(14)
其中,σ 被稱爲 center parameter 。意在表示我們要通過調整 σ 使得迭代點的軌跡在 central path 附近。

Central Path

在內點法中,central path 是指滿足下面一組方程式的迭代點所組成的所組成的一條弧線

ATλ+sAxxisi(x,s)=c,=b,=τ,i=1,2...n.>0(15a)(15b)(15c)(15d)
這與 (11) 中的KKT 條件的區別就在於在第三個條件的等式右端的 0τ>0 替代了。

也就是說,對偶內點法的基本思路就是依據 central path 計算出相應的方向,並控制步長 α 的選擇使得迭代點位於 central path 的某一個鄰域內。(有關central path 的鄰域的內容,和具體的原始對偶內點法的算法在這裏不作詳細說明,有興趣這可以參考相應書籍。)

關於步長 α 的選取,central parameter σ 的更新,以及更多的收斂性分析的內容,在這裏不作展開。

舉例

與上一張圖對應,我們同樣取 c=(101) ,初始點爲(0.7,2) ,不考慮等式約束。採用對偶內點法的迭代點的軌跡爲

這裏寫圖片描述

可以看出,引入 central path 後,迭代點能在貼近約束邊界後再次遠離約束邊界(也就是靠近 central path) ,從而保證下一次迭代能取得更大的進步。在這一過程中,一共進行了6次迭代就使得 duality measure μ<105

幾個問題

1 Barrier Method 中的 central path 與 Primal Dual Method 中的 central path 是不是一個東西?

是一個東西,我們可以從優化命題的 Lagrangian 函數這一角度出發分析這一點。

Barrier Method 中的優化命題的 Lagrangian 函數爲:

L(x,λ,ν)=f0(x(t))+i=1m1tfi(x(t))fi(x(t))+νT(Ax(t)b)=f0(x(t))+i=1mλifi(x(t))+νT(Ax(t)b)=f0(x(t))mt

Primal Dual Method 中優化命題的 Lagrangian 函數爲:
L(x,s,λ)=cTxi=1nxisiλT(Axb)

從這裏我們可以看出來,Barrier Method 中我們控制 t 使得 duality gap 爲 mt ,在Primal Dual 內點法中我們控制 ni=1xisi=σμ 其實是一致的。而且有

mt=σμ
這樣一個關係的存在。因此我們在 Barrier Method 中增加 t 和與在 Primal Dual 的方法中使 σμ 下降其實是在做一件事情。

2 Central Path 有啥好處?

從上面的舉例可以看出,如果沒有 central path ,迭代點往往非常靠近約束邊界。如果我們能夠將迭代點拉回到 central path 附近,那麼即使這次迭代對與目標函數下降的貢獻不大,那麼也可以使得在下次迭代時目標函數能夠取得較大下降。此外,central path 還對算法的熱啓動(warm start)有影響。因爲在很多場合(例如 MPC),我們需要求解一系列結構一致,參數相似的優化命題,傳統的初始點給點的方法是把上一次的解作爲初始點,但我們可以看出,上一次的解往往靠近約束邊界而並不靠近 central path,因此這種初始點給定方法並不完善。考慮給出一個靠近 central path 點纔是更好的。相關內容可以參考文獻[3]。

3 兩種方法有什麼區別?

從第一問的分析可以看出,二者的共同點還是很明顯的。文獻[2]列出了一些區別,比如 Barrier Method 有內外兩層迭代,而 Primal Dual Method 只有一層迭代。另外一個區別是 Barrier Method 的迭代點肯定是嚴格可行的,而 Primal Dual Method 的迭代點可以是不可行的。關於這一點我還沒有進一步去了解。

Ref.
[1] Boyd, Stephen, and Lieven Vandenberghe. Convex optimization. Cambridge university press, 2004.
[2] Nocedal, Jorge, and Stephen J. Wright. “Numerical Optimization 2nd.” (2006).
[3] Yildirim, E. Alper, and Stephen J. Wright. “Warm-start strategies in interior-point methods for linear programming.” SIAM Journal on Optimization 12.3 (2002): 782-810.

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