等式約束QP命題的求解(Solving equality-constrained QP)

在有效集法(Active Set Method)中,在每次迭代中都要求解一個等式約束的 QP 命題。本文主要對這一問題的求解方法進行關注。此外,本文還會涉及到部分關於 Range Space,Null Space 等內容。主要參考的是 Nocedal 的 Numerical Optimization 一書。

等式約束 QP 命題

這裏我們考慮如下的一個等式約束 QP 命題:

minxsubject toq(x)=12xTGx+cTxAx=b,(1a)(1b)

其中,ARm×n 是等式約束的係數。整個優化命題有 n 個決策變量(優化變量),m 條等式約束(mn )。寫出該優化命題的 Lagrange 多項式爲:

L=12xTGx+cTxλT(Axb)

其中,λ 被稱爲 Lagrange 乘子,也可以稱爲對偶變量。由此可以寫出其 KKT 條件爲:

Gx+cATλ=0Ax=b

將上式寫成矩陣形式爲:

[GAAT0][xλ]=[cb]

而在實際計算中,我們往往不是直接計算最優點 x 而是計算其由某個初始的估計點 x 向最優點前進的一步 p ,即 x=x+p 。因此我們以 p 而不是 x 作爲優化變量,可以將上面的方程改寫爲:

[GAAT0][pλ]=[gh](2)

其中,

h=Axb,g=c+Gx,p=xx

(2) 式中的矩陣通常被稱作 KKT 矩陣,在一定的假設下(矩陣 A 行滿秩,ZTGZ 正定,其中 Z 的列由矩陣 A 的零空間的基組成),可以證明該矩陣是非奇異的,也就是說存在唯一的解 (x,λ) 滿足 (2) 式。因此,我們下面討論的問題就主要集中在如何求解 (2) 的方程組。求解這個方程組的方法主要有兩大類,一類是直接進行矩陣分解來求解,另一類是通過迭代的方法來求解。這裏我們只介紹直接進行矩陣分解的方法。

直接分解的方法求解 KKT 系統

首先我們記

K=[GAAT0]

雖然一般 G 陣都是對稱正定的,但我們可以證明擴展後的 K 陣是不定的(indefinite)。因此我們無法直接對 K 陣進行 Cholesky 分解。直接求解 KKT 系統的方法有以下三種,Full Space / Full KKT System 方法,Range Space / Schur-Complement 方法,Null-Space 方法。關於 Range Space 和 Null Space 的介紹,可以參考 這篇文檔 ,這篇文檔裏從幾何上兩個空間進行了講解。關於本文的介紹的三種直接分解 KKT 系統進行求解的方法,出來參考 Numerical Optimization 一書之外,還可以參考 這篇文檔,結合文檔和書來看可能更容易理解。對三種方法在不同情況下的優劣的分析和比較超出了筆者現在的能力,可能會在進一步的學習之後補充相應的內容。

Full Space / Full KKT System 方法

雖然這裏的 K 陣不具有正定性,但還有對稱性這一特性可以利用,因此我們可以考慮採用對稱不定分解(Symmetric Indefinite Factorization)來對 K 陣進行分解。即對於一個一般性的對稱矩陣 K,有

PTKP=LBLT(3)

其中 P 是置換矩陣(Permutation Matrix)的引入是爲了保證計算過程中的數值穩定性,L 是單位下三角矩陣,B 是塊對角矩陣,即對角線上是 1×1 或者 2×2 的塊矩陣。結合 (2) 式和 (3) 式,同時因爲置換矩陣是正交陣,即 PPT=I ,可以有

PTKPPT[pλ]=PT[gh]


LBLTPT[pλ]=PT[gh]

因此,我們可以通過下面的一系列步驟來求解

solve Lzsolve Bz^solve LTz¯set [pλ]=PT[gh]=z=z^=Pz¯to obtain z;to obtain z^to obtain z¯

可以看出,在上面的方程組中,因爲 LLT 都是三角陣,因此計算量都較小;B 是塊對角矩陣,也只需要求解一些小型的 1×1 或者 2×2 的方程組,因此計算量也不大。

Range Space / Schur-Complement 方法

採用這種方法需要保證 K 陣中的 G 陣是正定的,這樣我們可以 (2) 式中的第一個方程得到 pλ 之間的關係,然後代入第二個方程中進行求解。即向第一個方程的等號左右兩邊同乘 AG1 可以得到

AG1ATλ=AG1g+Ap

將第二個方程代入即可得:

AG1ATλ=AG1gh

其中,AG1AT 是對稱正定陣,因此可以採用 Cholesky 等較爲高效的分解算法來進行分解,提高方程組求解的效率。當通過上式求解得到 λ 之後,可以通過求解下面的方程來還原 p

Gp=ATλg

在該方法中,因爲需要對 G 陣進行求逆,同時需要對 AG1AT 進行分解,因此該方法更適合以下幾種情況:

  1. G 陣條件數較小且易於求逆,比如 G 是對角陣或者分塊對角陣,或者
  2. G 陣的逆可以用其他方法顯式地表達出來;
  3. 原優化命題的約束數目 m 較小,這樣需要分解的 AG1AT 陣的維數就較小。

另外,Schur-Complement 這個名稱來源於線性代數中的一個術語,因爲如果我們對原矩陣 KG 陣爲軸(pivot)進行分塊的高斯消去,就可以得到下式

[G0ATAG1AT]

其中,AG1AT 就是矩陣 KG 陣的 Schur-Complement。

Null-Space 方法

這裏我們不加深入討論地引入關於 Null Space 的一些理論和方法,關於這些方法的進一步討論,可以參看原書,我也會在後續的另一篇博文中進行更深入地討論。

Null Space 方法不需要 G 正定的假設,因此有更廣的適用面,同時也不需要對 G 進行求逆,但是需要了解 A 陣的零空間(Null Space)的基矩陣 Z 的信息。

假如我們把向量 p 劃分成如下的兩部分,即

p=YpY+ZpZ(4)

其中,ZRn×(nm) 是零空間矩陣,YRn×m 是任意可以使 [Y|Z] 非奇異的矩陣。pY 是長度爲 m 的向量,pZ 是長度爲 nm 的向量。將 (4) 式代入到 (2) 式的第二條方程中,同時因爲有 AZ=0 ,我們可以得到

(AY)pY=h

可以證明 AYm×m 的非奇異矩陣,因此可以哦通過求解上面的方程組得到 pY 。此外,我們將 (4) 式代入到 (2) 式的第一條方程中去可以得到

GYpYGZpZ+ATλ=g

等式兩邊同乘 ZT 可以得到

(ZTGZ)pZ=ZTGYpYZTg

上面的方程組可以通過對 ZTGZ 進行 Cholesky 分解來求解。然後我們可以用下面的方程來求解對偶變量 λ :

(AY)Tλ=YT(g+Gp)

nm 較小時,Null Space 方法會非常有效。這種方法的缺陷在於我們需要計算零空間矩陣 Z 而這對於一些規模較大的問題可能會比較麻煩。計算 Z 的一種方法是對 A 陣進行 QR 分解。相關內容可能在後續的博文中介紹。

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