这一讲我们将介绍优化问题中的一种典型分类:数学规划(Programming)。
- 实际上,我们遇到的大多数优化问题都可以被整理成规划问题的形式,而规划问题有多种高效的求解方法。
规划问题(Programming)
线性规划(Linear Programms)
我们从最简单的规划问题,即线性规划开始。
- 线性规划的目标函数与约束条件均为仿射函数,其标准形式如下(目标函数不考虑常数项):
p∗=x∈Rnmins.t.c⊤xAx=y,x≥0.
实际上,任意线性规划都可以转化为上述标准形式。具体而言,如果原始线性规划问题:
- 具有不等式约束,可以引入松弛变量转为等式约束 + 松弛变量非负约束;
- 存在没有非负约束的变量,可以引入两个非负约束松弛变量,分别表示该变量的正部与负部,这样就可以用这两个松弛变量之差代替。
简单证明
例:一种线性规划的常见形式如下:
p∗=x∈Rnmins.t.c⊤xAx≤y可将其转化为标准形式:
zmins.t.(c~)⊤zA′z=y,z≥0其中:
x=x+−x−,s=y−Axz=x+x−s,c~=c−c0,A′=(A−AI)
- 线性规划问题属于凸优化问题,且其可行域一定是凸集。
- 上述线性规划问题标准形式的对偶问题形式如下:
d∗=λ∈Rnν∈Rmmax s.t.−y⊤νc−λ+A⊤ν=0,λ≥0.
简单推导如下:原始问题的拉格朗日函数为
L(x,λ,ν)=c⊤x−λ⊤x+ν⊤(Ax−y)=(c−λ+A⊤ν)⊤x−ν⊤y
因此对偶函数为
g(λ,ν)=x∈Rnmin{(c−λ+A⊤ν)⊤x−ν⊤y}=x∈Rnmin{(c−λ+A⊤ν)⊤x}−ν⊤y={−ν⊤y,−∞,c−λ+A⊤ν=0,otherwise.
只考虑c−λ+A⊤ν=0的情形(作为约束条件),就得到上述对偶问题。
- 线性规划问题有多种方法进行求解。所有带约束的凸优化问题求解方法都可以用于线性规划,其中最常用的方法是内点法(interior method),这会在之后进行介绍。这里我们先介绍线性规划专用的方法:单纯形法。
- 单纯形法(simplex algorithm)由George Dantzig与1947年提出。其核心思想是:核心思想在于:如果线性规划问题的可行域是有界的,那么其至少存在一个最优解是其可行域的一个“顶点”。
-
要证明这一论断,我们需要先考察线性规划可行域的结构。定义以下概念:
- 多面体(polyhedron):空间中有限个半平面的交集。
- 多边形(polygon):有界的多面体。【也称为多胞形(polytope)】
由此可知线性规划的可行域属于多面体。以标准形式为例,其可行域可由如下半平面交集构成:
{x∈Rn∣ai⊤x≤yi}{x∈Rn∣ai⊤x≥yi}{x∈Rn∣xj≥0}
其中ai⊤为矩阵A的行向量,yi,xj分别为y与x的分量。
-
再定义极值点:设集合K⊆Rn,那么如果对于x∈K,不存在y,z∈K∖{x},θ∈[0,1]使得x=θy+(1−θ)z,那么就称x为集合K的极限点。
- 特别地,当K为多面体,那么其极值点也被称为多面体的顶点。可以证明,有界多面体只有有限个顶点,且这些顶点构成这个有界多面体的凸包【可参见知乎文章】。
-
有了这些定义,我们可以得到线性规划的主定理:对于上述线性规划的标准形式,设可行域Ω={x∈Rn∣Ax=y,x≥0}有界(即可行域是有界多面体),那么线性规划的最优值可在其可行域的顶点取到。【注:这并不代表最优值点一定是顶点】
- 定理证明如下:由上述理论可知Ω可表示为顶点(向量)的凸包。记其顶点向量为v1,⋯,vk,那么对任意x∈Ω,其可表示为顶点向量的凸组合,即
x=i=1∑kαivi,αi≥0,i=1∑kαi=1
那么线性规划问题就可以改写为
p∗=α1,…,αk∈Rmins.t. i=1∑kαi(c⊤vi)αi≥0,i=1,⋯,k,i=1∑kαi=1.
而
i=1∑kαi(c⊤vi)≥i=1∑kαi(j∈{1,…,k}minc⊤vj)=(j∈{1,…,k}minc⊤vj)=1(i=1∑kαi)=j∈{1,…,k}minc⊤vj.
因此线性规划问题目标函数的最小值一定能在x为v1,⋯,vk中的一个时取到。
-
根据这一主定理,我们就能得到单纯形法解决线性规划问题的通用步骤(前提是已经转化为标准形式):
- 以可行域Ω的一个顶点v作为初始解;
- 如果其存在相邻顶点w满足c⊤w<c⊤v,那么就将v更新为w;
- 循环上述步骤,直到所有顶点都被搜索完,得到最终最优解v∗。
当然,我们也可以将这种方法推广到无界可行域线性规划问题中,其核心仍然是局部搜索 + 贪心迭代。
二次规划(Quadratic Programs)
顾名思义,二次规划问题的目标函数为二次函数,但约束函数仍然为仿射函数。其标准形式如下:
p∗=x∈Rnmins.t.21x⊤Hx+c⊤xAx≤yCx=z,
其中H∈Sn。
- 当然,上述标准形式中H为非对称矩阵时也可以通过以下转换变为对称矩阵:
21x⊤Hx=21x⊤(2H+H⊤)x
- 二次规划问题不一定是凸优化问题。实际上,二次规划问题称为凸优化问题的充要条件是H∈S+n,即H为半正定矩阵。
- 这实际上很容易理解,因为目标函数的Hessian矩阵就是H本身,根据二阶凸性条件即得结论。
- 求解二次规划问题时,方法会随着约束条件具体形式的变化有所不同。下面我们只考虑无约束条件和只有等式约束条件的情形(实际上后者可以通过一定方法转化为前者,可参见知乎文章):
- 在进行求解之前,需要对H和c进行分类讨论:H∈S+n,H∈S+n,c∈N(H)∖{0}以及H∈S+n,c∈N(H)⊤=R(H⊤)=R(H)。
- H∈S+n
此时H存在负特征值λ,设对应的单位特征向量为v。取xt=tv,则有
p∗≤21xt⊤Hxt+c⊤xt=2t2v⊤Hv+tc⊤v=2t2v⊤λv+tc⊤v≤2λt2+t∥c∥2∥v∥2=2λt2+t∥c∥2
又因为λ<0,令t→∞,则p∗≤−∞,故p∗=−∞。
- H∈S+n,c∈N(H)∖{0}
由条件可知H存在零特征值,取其对应的一个特征向量v,满足c⊤v=0。取xt=−t⋅sgn(c⊤v)⋅v,则有
p∗≤21xt⊤Hxt+c⊤xt=21t2v⊤Hv−t⋅sgn(c⊤v)⋅c⊤v=21t2v⊤0−t⋅∣c⊤v∣=−t⋅∣c⊤v∣.
同样令t→∞,则p∗≤−∞,故p∗=−∞。
- H∈S+n,c∈R(H)
由条件可知存在x0使得c=−Hx0。那么目标函数可以作如下转换(可以看作配方):
21x⊤Hx+c⊤x=21x⊤Hx−x0⊤Hx=21x⊤Hx−x0⊤Hx+21x0⊤Hx0−21x0⊤Hx0=21(x⊤Hx−2x0⊤Hx+x0⊤Hx0)−21x0⊤Hx0=21≥0(x−x0)⊤H(x−x0)−21x0⊤Hx0.
由此可知要使目标函数取最小值,需要让x−x0∈N(H),即x∈x0+N(H)。
- 满足这一条件的解不止一个,其中最典型的一种解是x=−H†c,其中H†表示H的M-P逆。【关于M-P逆的性质可见知乎文章该补补高代了~】
- 二次规划对偶问题的分类讨论与上面类似,我们给出最终的对偶问题的形式(推导留给读者):
d∗=λ,μmaxs.t.−21(c+A⊤λ+C⊤μ)⊤H†(c+A⊤λ+C⊤μ)−y⊤λ−z⊤μλ≥0,c+A⊤λ+C⊤μ∈R(H).
二次约束二次规划(QCQP)
同样顾名思义,QCQP问题的目标函数为二次函数,且约束条件也为二次不等式。其标准形式如下:
p∗=x∈Rnmins.t.21x⊤Hx+c⊤x21x⊤Pix+bi⊤x+ci≤0,i=1,⋯,m21x⊤Qix+di⊤x+fi=0,i=1,⋯,p
其中H,P1,⋯,Pm,Q1,⋯,Qp∈Sn。
- 如果H,P1,⋯,Pm∈S+n且Q1=⋯=Qp=0,那么这个问题就是凸优化问题。
QCQP的求解方法不详细展开,具体可参考知乎文章。这次引用的知乎文章有点多ww~
二阶锥规划(SOCP)
下面我们将介绍一类更广泛的规划问题:二阶锥规划(second-order cone programs)。事实上,上述线性规划与凸二次规划都可以看作二阶锥规划的特殊情况。
- 二阶锥规划的目标函数为仿射函数,而约束是一个“二阶锥”条件,即决策变量的仿射函数约束在一个二阶锥中。其标准形式如下:
p∗=x∈Rnmins.t.c⊤x∥Aix−yi∥2≤bi⊤x+zi,i=1,⋯,m.
其中Ai∈Rdi×n,yi∈Rdi,bi∈Rn,zi∈R。
- 由此可见,二阶锥约束严格包含所有仿射约束。(只需要Ai=0,yi=0或bi=0,zi=0即可)
- 二阶锥规划一定是凸优化问题。实际上,二阶锥规划的可行域可看作一个二阶锥的仿射变换,因而一定是凸集。
- 下面我们尝试将凸QCQP问题转化为二阶锥规划问题(这样就能证明二阶锥规划问题包含凸QCQP,进而包含LP和凸QP):考虑下述凸QCQP形式
p∗=x∈Rnmins.t.21x⊤Hx+c⊤x21x⊤Pix+bi⊤x+ci≤0,i=1,⋯,mCx=z.
其中H,P1,⋯,Pm∈S+n。
- 首先使用上境图重述,将目标函数转为仿射函数:
p∗=x∈Rnt∈Rmins.t.t+c⊤x21x⊤Pix+bi⊤x+ci≤0,i=1,⋯,m21x⊤Hx≤t,Cx=z.
- 然后将第一个约束条件转为二阶锥条件:
⟹⟹⟹⟹21x⊤Pix+bi⊤x+ci≤0x⊤Pix+2(bi⊤x+ci)≤0Pi1/2x22+(21+bi⊤x+ci)2−(21−bi⊤x−ci)2≤0Pi1/2x22+(21+bi⊤x+ci)2≤(21−bi⊤x−ci)2[Pi1/2x21+bi⊤x+ci]2≤21−bi⊤x−ci.
其中最后一次转换右式大于0的推导:
bi⊤x+ci≤−21x⊤Pix≤21⟹21−bi⊤x−ci≥0.
- 第二个约束条件转换类似,最终得到转换后的SOCP问题:
p∗=x∈Rnmins.t.t+c⊤x[Pi1/2x21+bi⊤x+ci]2≤21−bi⊤x−ci,i=1,⋯,m[H1/2x21−t]2≤21+t∥Cx−z∥2≤0.
- 二阶锥规划还有一个重要的定理:SOCP的对偶问题仍然是SOCP。以上述SOCP标准形式为例,我们尝试将其对偶问题转化为SOCP标准形式。
- 这里我们使用锥对偶性进行推导:设Ki:={(u,r)∈Rdi×R∣∥u∥2≤r}为Rdi+1中的一个二阶锥,并记d=i=1∑mdi,那么上述SOCP标准形式可以转化为
x∈Rnmins.t.c⊤x−(Aix−yi,bi⊤x+zi)⪯Ki0,i=1,⋯,m.
由此我们可以得到拉格朗日函数
L(x,λ,μ)=c⊤x−i=1∑m[λi⊤(Aix−yi)+μi(bi⊤x+zi)]=(c−i=1∑m(Ai⊤λi+μibi))⊤x+i=1∑m(λi⊤yi−μizi).
其中λ=(λ1,⋯,λm)∈Rd,λi∈Rdi,μ∈Rm。然后我们就能得到对偶函数
g(λ,μ)=x∈RnminL(x,λ,μ)=⎩⎨⎧i=1∑m(λi⊤yi−μizi),−∞,if i=1∑m(Ai⊤λi+μibi)=c,otherwise.
进而得到对偶问题
λ∈Rdμ∈Rmmaxs.t.i=1∑m(λi⊤yi−μizi)i=1∑m(Ai⊤λi+μibi)=c,(λi,μi)⪰Ki0,i=1,⋯,m.
其中最后一个约束条件利用了Ki的对偶锥为其自身的性质。将其改写为SOCP标准形式可得:
λ∈Rdμ∈Rmmaxs.t.i=1∑m(λi⊤yi−μizi)i=1∑m(Ai⊤λi+μibi)−c2≤0,λi2≤μi,i=1,⋯,m.
当然也可以不使用锥对偶直接进行推导,但这样比较复杂,这里就不赘述了。
- SOCP问题一般使用内点法进行求解,这在之后会进行详细阐述。
半正定规划(SDP)
接下来我们在二阶锥的基础上进一步推广,得到本讲所讨论的最广义的规划问题:半正定规划(Semidefinite Programming)。
注:在下面的表述中,我们将沿用之前二阶凸性条件中使用的⪰与⪯表示半正(负)定矩阵。
- 半正定规划的不等式形式如下:
x∈Rnmins.t.c⊤xF0+i=1∑nxiFi⪯0.
其中c∈Rn,F0,F1,…,Fn∈Sd。这一约束条件也被称为线性矩阵不等式,而对应的可行域也被称为谱多面体(spectrahedron)。
- 实际上,如果半正定规划有多条线性矩阵不等式约束,它们可以合并为一个约束条件。【只需要将各个对应F矩阵合并为一个准对角矩阵即可】
- 半正定规划还有如下标准形式:
X∈Snmins.t.tr(CX)tr(AkX)=bk,k=1,⋯,mX⪰0.
其中C,A1,…,Am∈Sn,且b1,…,bm∈R。
- 下面我们证明这两种形式之间可以相互转化:
- 不等式形式⟹标准形式
首先我们引入一个“松弛”矩阵Y∈Sd,将不等式形式转换为
x∈RnY∈Sdmins.t.c⊤xY+F0+i=1∑nxiFi=0,Y⪰0.
将第一个约束条件中的矩阵分解为单个元素,得到
Yjk+(F0)jk+i=1∑nxi(Fi)jk=0,j,k=1,⋯,d
一个直接的想法是将x元素直接转化为对角矩阵,但这无法得到的矩阵是正定的。因此我们考虑引入x的正部x+与负部x−,其分量定义如下:
xi+={xi,0,xi>0xi≤0,xi−={0,−xi,xi>0xi≤0,i=1,⋯,n
那么上述形式可进一步转换为
x+∈Rnmins.t.c⊤(x+−x−)Yjk+(F0)jk+i=1∑n(xi+−xi−)(Fi)jk=0,j,k=1,⋯,d,xi+≥0,i=1,⋯,n,xi−≥0,i=1,⋯,n,Y⪰0.
这样我们就可以构造正定准对角矩阵:
Z:=diag(x+)diag(x−)Y∈S2n+d.
其中diag(⋅)表示将向量元素作为对角线元素的对角矩阵。以Z作为决策变量(矩阵),那么原形式可表示为
Z∈S2n+dmins.t.i=1∑nci(Z1,i−Z2,i)Z3,jk+(F0)jk+i=1∑n(Z1,i−Z2,i)(Fi)jk=0,Zi,j=0,∀(i,j)∈O,Z⪰0.
其中Z1,i和Z2,i分别表示x+和x−的第i个元素,Z3,jk表示Y的(i,j)位置元素,O表示除左上2n×2n对角线元素和右下d×d元素之外的其他指标。
由此可知,目标函数可用tr(CZ)表示,而又因为前两个约束条件都是仿射函数,所以可以用tr(AkZ)=bk表示(k=1,⋯,d2+∣O∣)
注:这里的Ak在原始的仿射函数定义中不一定是对称矩阵,但因为
tr(AkZ)=tr(Z⊤Ak⊤)=tr(Ak⊤Z)=tr(2(Ak+Ak⊤)Z)
我们可以将其转换为对称矩阵2Ak+Ak⊤。
- 标准形式⟹不等式形式
这里我们需要引入一个从矩阵展平到向量的函数vec:Rm×n→Rmn。基于这个函数,我们有
tr(CX)=vec(C)⊤vec(X),tr(AkX)=vec(Ak)⊤vec(X)
那么目标函数就可以转化为c⊤x,其中c=vec(C),x=vec(X);第一个约束条件则可以转化为ak⊤x=bk,其中ak=vec(Ak)。
下面我们需要再将约束条件转化为线性矩阵不等式。对于前m个约束条件,其转换相对容易:
ak⊤x=bk⟺i=1∑mxi(ak)i=bk⟺−bk+i=1∑mxi(ak)i=0⟺−bk+i=1∑mxi(αk)i⪯0且−(−bk+i=1∑mxi(αk)i)⪯0,
其中(ak)i可看作一个1×1矩阵。
对于最后一个约束条件X⪰0,它的转换就麻烦一些。我们直接给出最后的结果:
X⪰0⟺−i=1∑nxi,iEii+21i=1∑nj=1j=i∑nxi,j(Eij+Eji)⪯0
其中Eij表示只有(i,j)元素为1,其余位置元素均为0的矩阵,xi,j表示矩阵X的(i,j)位置对应元素。
综上,我们只需要将所有线性矩阵不等式合并为一个,就得到最终的SDP不等式形式。
- 与二阶锥规划一样,半正定规划的对偶问题也是其自身。【证明略,留给读者】
- 下面我们再尝试将二阶锥规划问题转化为半正定规划问题:
- 在推导之前,我们先给出如下引理:设(x,t)∈Rm+1,则有
∥x∥2≤t⟺[tIx⊤xt]⪰0.
其证明如下:
[tIx⊤xt]⪰0⟺[ab]⊤[tIx⊤xt][ab]=t(∥a∥22+b2)+2ba⊤x≥0,∀(a,b)∈Rm+1.
又由柯西-施瓦茨不等式与均值不等式:
t(∥a∥22+b2)+2ba⊤x≥t(∥a∥22+b2)−2∣b∣∥a∥2∥x∥2≥2∣b∣∥a∥2(t−∥x∥2)
其中第一个不等号在a=−Kx(K>0)时取等,第二个不等号在∥a∥2=b时取等。又因为a,b的任意性,可得
[tIx⊤xt]⪰0⟺2∣b∣∥a∥2(t−∥x∥2)≥0∀(a,b)∈Rm+1⟺t−∥x∥2≥0.
从而引理得证。
- 现在考虑SOCP问题的标准形式(见上),设Kd为Rd里的一个二阶锥。那么约束条件可以作如下转换:
∥Aix−yi∥2≤bi⊤x+zi⟺(Aix−yi,bi⊤x+zi)∈Kdi+1⟺[(bi⊤x+zi)I(Aix−yi)⊤Aix−yibi⊤x+zi]⪰0⟺[ziI−yi⊤−yizi]+j=1∑nxj[(bi)jI(Ai)j⊤(Ai)j(bi)j]⪰0
这样我们就能将约束条件转换为线性矩阵不等式。
注:半正定规划计算复杂度往往较高,一般难以用于解决大规模问题。
- 最后,我们将上述讨论的所有规划问题之间的包含关系梳理如下,作为本讲的结尾:
线性规划⊂凸二次规划⊂凸QCQP⊂二阶锥规划⊂半正定规划⊂凸优化问题