Active set strategies
Active set的基本思想和Simplex方法(Simplex方法參考 “一步一步走向錐規劃 - LP”)的基本思想大體一致,就是要先找到一個可行解 feasible solution, fs, 然后沿著邊或者面繼續找可行解。 但是對應到QP和LP還是有很不一樣的,就是LP的最優解肯定是在角(extreme points)上, 但是QP不是,并且如果QP對應的不是凸問題(non-convex),那么Active set可能只能找到一個局部最優(local optimum)。
前面我大體對比了Active Set和Simplex的基本思想, 下面我們詳細說一下Active Set的思路。 為了, 囊括前面的4種情況, Active Set算法, 首先從feasible region, FR里面選擇一個點, 然后沿著梯度方向(如果有最值definite,就是最值方向, 如果沒有最值indefinite,就是梯度方向), 直到feasible region, FR 的邊界, 如果最值點在FR里面inner, 那么就找到最值。但是如果不在, 那么就找到一個邊界點。 ?那么沿著前面的限制和梯度夾角小的方向繼續前進。 這時候可能又遇到另外一個限制, 這時候就找到一個頂點, 然后繼續沿著新遇到的限制和梯度夾角小的方向前行。 直到在某個點,限制方向和梯度方向垂直了。
什么叫 active set 和 inactive set ?
這個問題相對比較簡單,就是如果在一個點x所在的feasible region的所有邊界就叫這些邊界在x這個點被active, 而其他邊界就是 inactive。
給定一個可行點, 如何找到這點和最優點的方向(點0')?
如下圖所示,隨機給定一個可行點 feasible point, 但是如果這個點是一個內部點inner, 那么這個點對應的active set就是空集。既然是空集, 那么就是一個unconstrained/equality constrained quadratic problem, 所以對應的最優點(optimum)就是0'點。
給定一個可行點, 如何找到這點和最優點方向上的限制點(點1)?
這時候, 我們利用截距之間的比例,計算到占比uk, 然后根據uk計算出dk于邊界的交點的位置。 有三點要注意:
1, 選擇最大的uk是為了保證最接近無限制極值點0'。 越接近越優
2, 如果uk>1意味著無限制極值點就在可行區域(feasible region)里面, 那么直接用這個點。
3, 限制ai dk > 0為了保證求到的方向上是向著區域外面的,這樣才有交點。
如果找到一個交點(點1), 如何找到下一個交點(點2)?
換到術語來說, 就是已經 有一個working set了,如何換到另外一個working set。
在找到一個交點(點1)之后我們就找到了一個限制, 然在這個限制下我們求解equality-constrainted QP, EQP就找一個新的最優點1', 再通過截距比例就得到了兩個限制的交點了(點2)這時候,就會更新2對應的working set, 然后就可以同理求解到點3了。
算法什么時候停止呢?
其實很簡單, 當我們發現對應的最優點x*和working set都無法再更新了, 那么算法就停止了。 譬如上圖對應的最優點3, 對應的限制直線,已經在我們的working set里面了, 那么就無法再更新了, 意味著我們已經求解到了最優解了。
這樣我們把Active Set的算法小結一下如下:
再舉個例子!
隨意一個點(2,0)x0 出發確定了直線A限制, 然后找到A和B的交點(x1)加入直線B限制, 然后找到最優點(x2),不是交點,更新到B, 然后再找, 發現和D的交點(x4), 然后再找到x5,然后發現點和working set都不再更新了。
另外可以看到本質上, active set算法和simplex算法思想一致, 所以active set算法不是多項式polynomial時間算法。 另外, 對于非凸情況, 由于梯度方向不太一致, 算法會變得很復雜。
Interior-point methods
一般來說Path-following methods,或者trajectory-following, 或者barrier都是 interior-point methods 的別稱或者一種。
前面我們講了active set本質思想是和simplex思想一致的, 但是這樣的算法復雜度依賴于限制條件組成的邊或者角數量,所以都不是多項式復雜度的。 在線性問題中,我們提到了Karmarkar算法的基本思想(參考 “一步一步走向錐規劃 - LP”), 通過仿射投影(affine projection)的方法,通過內部(interior)向最優點靠近。 ?在QP里面, 主要利用了central path 和 barrier的兩種思想。
什么是central path?
在我們利用標準形式(Standard) [ Ax = b, x >= 0 ]進行KKT條件求解之后, 我們發現, primal feasible, dual feasible一起滿足形式F(x, y, z) = 0, 所以一個KKT條件解要滿足F=0。 為了一步步達到這個目標,我們讓F = [0, 0, t I ]^T。 然后讓 t -> 0 逐步逼近, 而這個逼近的途徑叫做central path。
而要求解一個函數與自變量軸的交點(F(x,y,z)=0),牛頓法是一個很好的辦法。 因此接下來,經常用牛頓法進行優化處理。
至此, 我們似乎完美的搞定了這個問題了, 其實沒有,如何找到第一個滿足要求的點呢?v( t0 ) 必須可以取到,從而使得 t0 > 0。還記得在講述Simplex算法的時候, 也有類似的經歷, 如何找到第一個可行解(feasible solution), 那時候我們講述了Big-M的思想(參考 “一步一步走向錐規劃 - LP”), 這個思想改造了目標公式進行求解到第一個可行解。 這里我們講述另外一個思想,barrier思想, 也是類似, 對目標公式進行改造求解到第一個可行解。
什么barrier思想?
由于沿著邊界會帶來復雜度不可以控制, 那么如何避免接近邊界呢?這里分了兩步走:
引入slack variables把限制形式標準化, 把不等式放到第一象限。
定義barrier function 函數,使得接近邊界時候變得過大。
其實Logarithmic Barrier Method最早是由K.R. Frisch在他的書 Principles of linear programming中提出來的, 大概1954年就提出來了。 最后Barrier思想的完善是下面兩位牛人完成的,Anthony Fiacco和 Garth McCormick。 他們都是美國最早研究nonlinear programming, NLP方面的早期奠基人。 但是這個方法在大型線性規劃的時候,過于復雜,直到來自印度的Karmarkar在1984年提出基于遞歸的仿射投影的了Karmarkar算法(參考 “一步一步走向錐規劃 - LP”)。 從此極大促進了NLP的發展。
Logarithmic barrier functions是什么?
在barrier思想要求下, 很容易就扎到一個Logarithmic Barrier函數
直接通過圖示來看是如何避開原點的和坐標軸的。
為什么要選擇log函數呢?
其實log函數有一些很好的性質導致的:
log函數是凸函數
log函數可以模擬indicatorfunction 指示函數
log函數的導數形式比較好。
大家會不會想起, 邏輯回歸里面的sigmoid函數么。
對應的一階和二階導數的形式, 在Gradient decent,或者Newton method里面會用到。
有人就問了, 既然是為了模擬指示函數indicator function, 那么別的函數也可以的吧? 對的, 除了logarithmic barrier還有inverse barrier等。
如何做到interior的?
這樣我們再來看, 如果feasible region, FE里面的點,離邊界越近的點, 在logarithmic barrier情況下, 越難以取到, 那么容易取到的就是中線的點了。 從而實現了interior!
具體的數學上, barrier是如何一步一步實現的呢?
通過利用log函數極好的 導數性質, 我們通過構建找到了一個關系式, 剛好滿足central path的要求。 所以我們就可以通過logarithmic的關系來替代原來的形式。 ?這就是log barrier 強大的地方。 把一個有限制的形式, 通過改寫目標關系式求解一個無限制的形式。
Central Path 其他情況?
除了利用Log Barrier method進行求解, 還有一些實用的方法可以改進central path的適用范圍, 譬如引入scalar function進行縮放, 再引入centering parameter,引入bias。
另外,對于非凸情況的時候, Central Path的表現就要很奇怪了,要看起始點的位置了。
QP 對偶(duality)
什么是QP對偶?
QP對偶, 就是通過lagrange 對偶構造后得到的對偶問題, 前面在線性規劃LP里面, 我們直接給出線性規劃的對偶(參考“一步一步走向錐規劃 - LP”), 但是在QP中,已經沒有了形式上的完美的對稱關系,需要從對偶的本質進行構造了。
怎么得到對偶? 什么是 Lagrange duality construction?
對偶的構造, Lagrange提出了很好的一個構造過程, 這里就不詳細講述更多數學上的充要條件了(更多細節參考 “一挑三, FJ vs KKT”)。
如何理解Lagrange duality construction ?
如同線性規劃里面一致, 我們依然可以通過類似資源(原料)價格的關系理解, 通過購買的原料, 造出產品后,產品的成本價格(cost price)在最大的情況下應該和原料價格最低一致(resource cost), 這樣達到資源配置最優(optimum), 沒有浪費。 下面給出了圖形化的理解, 在線性規劃里面有一個詳細的線性規劃的例子(參考 “一步一步走向錐規劃 - LP”)可以作為類比。
這樣, 我們來看最大化這個截距(與L線的交點)的高度是如何等價于求Lagrange duality?
由此我么對比一下convex和strong duality的關系:
再進一步, 在對偶間隙duality gap的基礎上我們再來看一下,在公式上,Interior-point method是如何發展而來的?
相比active set method, ASM, interior point method, IPM還是有很多優勢的, 對于中大型問題, 部分IPM可以保證polynominal時間復雜度。 這還是極大的優勢!
QP的擴展概述
二次限制QP, QCQP
QCQP 是Robust QP的一種數學體現。所謂Robust,就是我們對x分布的方差進行限制, 有一個上限。 更多細節就不展開了。
在引入了二次限制后, 就順帶引入augmented Lagrangian 和 Penalty method思想了。 這里就舉個例子引入一下:
引入了Penalty思想和Augmented Lagrangian之后, 我們就能把二次限制轉換成無限制的二次規劃。 簡單對比active set method, ASM和penalty method, PM,可以看到penalty方法還是有很大的局限性的, iterations次數多,而且,找的點不夠精確。
小結, 這里我們總結了一下QP的作為LS和LP擴展的含義, 以及QP里面拉格朗日和對偶是如何發揮作用的, 尤其是active set和interior point method是如何工作的。 下次, 我們會進一步理解Second order cone programming (SOCP)是如何進一步擴展QP的。再補充下下, QP是個爆發式發展和應用的部分, 不可能一個短文介紹到所有, 這里拋磚引玉的介紹下基本思想, 希望有講清楚。 如果大家捧場, 以后希望繼續多介紹點QP的其他方面, 譬如iterative 的KKT system求解, interior point方法的收斂性。
參考:
http://www.cs.cityu.edu.hk/~cheewtan/CS8292Class/Lec4.pdf
https://neos-guide.org/content/quadratic-programming-algorithms
https://www.math.uh.edu/~rohop/fall_06/Chapter3.pdf
http://www.math.uiuc.edu/documenta/vol-ismp/41_cottle-richard.pdf
https://www-user.tu-chemnitz.de/~helmberg/workshop04/vandenbussche.pdf
http://faculty.uml.edu/hung_phan/572optim/ntKKT.pdf
https://gilkalai.wordpress.com/2008/11/04/a-diameter-problem-6-abstract-objective-functions/
https://www.cs.umd.edu/users/oleary/a607/607constrbarhand.pdf