前面讲了那么多关于凸集、凸函数的知识,然而都是铺垫,现在我们才来到了这门课的重头戏部分——凸优化问题!
一般优化问题的形式为
minimize f 0 ( x ) subject to f i ( x ) ≤ 0 , i = 1 , … , m h i ( x ) = 0 , i = 1 , … , p \begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &h_{i}(x)=0, \quad i=1, \ldots, p \end{aligned} minimize subject to f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
其中 f 0 ( x ) f_0(x) f0(x) 为目标函数, f i ( x ) f_i(x) fi(x) 为不等式约束函数, h i h_i hi 为等式约束函数。优化问题的最优解为
p ⋆ = inf { f 0 ( x ) ∣ f i ( x ) ≤ 0 , i = 1 , … , m , h i ( x ) = 0 , i = 1 , … , p } p^{\star}=\inf \left\{f_{0}(x) | f_{i}(x) \leq 0, i=1, \ldots, m, h_{i}(x)=0, i=1, \ldots, p\right\} p⋆=inf{f0(x)∣fi(x)≤0,i=1,…,m,hi(x)=0,i=1,…,p}
如果 p ∗ = ∞ p^*=\infty p∗=∞,则问题不可行;如果 p ∗ = − ∞ p^*=-\infty p∗=−∞ 则该问题没有下界。
最优解则有 f 0 ( x ) = p ∗ f_0(x)=p^* f0(x)=p∗,**局部最优解(local optimal)**有
minimize ( over z ) f 0 ( z ) subject to f i ( z ) ≤ 0 , i = 1 , … , m , h i ( z ) = 0 , i = 1 , … , p ∥ z − x ∥ 2 ≤ R \begin{aligned} \text{minimize} (\text{over } z) \quad& f_{0}(z) \\ \text{subject to} \quad&f_{i}(z) \leq 0, \quad i=1, \ldots, m, \quad h_{i}(z)=0, \quad i=1, \ldots, p \\ &\|z-x\|_{2} \leq R \end{aligned} minimize(over z)subject tof0(z)fi(z)≤0,i=1,…,m,hi(z)=0,i=1,…,p∥z−x∥2≤R
也即只在一个小的邻域内考虑优化问题。
注意:
上面提到的优化问题中有等式和不等式约束,这些我们都称为显式约束(explicit constraints),同时由于 x x x 应属于各个函数的定义域内,因此还有隐式约束(implicit constraint),即
x ∈ D = ⋂ i = 0 m dom f i ∩ ⋂ i = 1 p dom h i x \in \mathcal{D}=\bigcap_{i=0}^{m} \operatorname{dom} f_{i} \cap \bigcap_{i=1}^{p} \operatorname{dom} h_{i} x∈D=i=0⋂mdomfi∩i=1⋂pdomhi
没有显式约束的优化问题被称为无约束优化问题(unconstrained)。比如
minimize f 0 ( x ) = − ∑ i = 1 k log ( b i − a i T x ) \text { minimize } \quad f_{0}(x)=-\sum_{i=1}^{k} \log \left(b_{i}-a_{i}^{T} x\right) minimize f0(x)=−i=1∑klog(bi−aiTx)
是一个无约束优化问题,包含了隐式约束 a i T x < b i a_i^Tx< b_i aiTx<bi。
其实有约束优化问题也可以转化为无约束优化问题,只需要加一个指示函数,一开始提到的一般优化问题就可以利用 δ C \delta_C δC 转化为下面的无约束优化问题,不过这种转化可能并没有太大的意义
min x f 0 ( x ) + δ C ( x ) δ C ( x ) = { 0 f i ( x ) ≤ 0 , h i ( x ) = 0 ∞ \min_x f_0(x)+\delta_{C}(x) \\ \delta_C(x)=\begin{cases}0&f_i(x)\le0,h_i(x)=0 \\ \infty \end{cases} xminf0(x)+δC(x)δC(x)={0∞fi(x)≤0,hi(x)=0
除了优化问题,还有一种可行解问题(Feasibility problem),也就是给定一系列约束来寻找是否有可行解
find x subject to f i ( x ) ≤ 0 , i = 1 , … , m h i ( x ) = 0 , i = 1 , … , p \begin{aligned} \text {find} \quad& x \\ \text { subject to} \quad& f_{i}(x) \leq 0,\quad i=1, \ldots, m \\ & h_{i}(x)=0,\quad i=1, \ldots, p \end{aligned} find subject toxfi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
这实际上也可以转化为一般优化问题
minimize 0 subject to f i ( x ) ≤ 0 , i = 1 , … , m h i ( x ) = 0 , i = 1 , … , p \begin{aligned} \text {minimize} \quad& 0 \\ \text { subject to} \quad& f_{i}(x) \leq 0,\quad i=1, \ldots, m \\ & h_{i}(x)=0,\quad i=1, \ldots, p \end{aligned} minimize subject to0fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
凸优化问题(Convex optimization problem)要求目标函数为凸函数,而且定义域为凸集,这样可以利用凸函数和凸集的优良性质简化问题,因此凸优化问题的一般形式为
minimize f 0 ( x ) subject to f i ( x ) ≤ 0 , i = 1 , … , m A x = b , ★ \begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &Ax=b, \qquad\qquad\qquad\qquad\quad\bigstar \end{aligned} minimize subject to f0(x)fi(x)≤0,i=1,…,mAx=b,★
其中要求目标函数和约束函数 f 0 , f 1 , . . . , f m f_0,f_1,...,f_m f0,f1,...,fm 均为凸函数。
Remarks:需要注意这里还要求等式约束均为仿射函数,这是因为我们希望定义域是凸集,假设等式约束 h i h_i hi 不是线性的,即使 h i h_i hi 是凸函数, { x ∣ h i ( x ) = 0 } \{x|h_i(x)=0\} {x∣hi(x)=0} 也不一定是凸集。比如二次等式约束 ∥ x ∥ 2 = r \Vert x\Vert_2=r ∥x∥2=r,得到的定义域就是一个球面,显然不是一个凸集,这对优化不利。
有时候我们直接拿到的优化问题并不符合上面的形式,但是可以经过化简得到等价问题,就是凸的了,比如
minimize f 0 ( x ) = x 1 2 + x 2 2 subject to f 1 ( x ) = x 1 / ( 1 + x 2 2 ) ≤ 0 h 1 ( x ) = ( x 1 + x 2 ) 2 = 0 \begin{aligned} \text { minimize } \quad& f_{0}(x)=x_{1}^{2}+x_{2}^{2}\\ \text { subject to } \quad& f_{1}(x)=x_{1} /\left(1+x_{2}^{2}\right) \leq 0\\ &h_{1}(x)=\left(x_{1}+x_{2}\right)^{2}=0 \end{aligned} minimize subject to f0(x)=x12+x22f1(x)=x1/(1+x22)≤0h1(x)=(x1+x2)2=0
经过简单化简就有
minimize x 1 2 + x 2 2 subject to x 1 ≤ 0 x 1 + x 2 = 0 \begin{aligned} \text { minimize } \quad& x_{1}^{2}+x_{2}^{2}\\ \text { subject to } \quad& x_{1} \leq 0\\ &x_{1}+x_{2}=0 \end{aligned} minimize subject to x12+x22x1≤0x1+x2=0
对于凸优化问题有一个极其重要的性质,就是
凸优化问题的局部最优解就是全局最优解
证明也很简单,若 x ∗ x^* x∗ 为局部最优解,只需要假设另外一个全局最优解 y ≠ x ∗ , f ( y ) < x y\ne x^*,f(y)
凸优化问题的最优解还有一个很好的判据
x x x 为最优解,当且仅当
∇ f 0 ( x ) T ( y − x ) ≥ 0 for all feasible y \nabla f_{0}(x)^{T}(y-x) \geq 0 \quad \text { for all feasible } y ∇f0(x)T(y−x)≥0 for all feasible y
证明过程只需要应用凸函数的一阶等价定义即可,即 f ( y ) ≥ f ( x ) + ∇ f T ( x ) ( y − x ) f(y)\ge f(x)+\nabla f^T(x)(y-x) f(y)≥f(x)+∇fT(x)(y−x)。
这个怎么直观理解呢?还记得我们之前在拟凸函数那里提到的“支撑超平面”吗?实际上 f 0 ( x ) f_0(x) f0(x) 定义了一个等高线,由于 f 0 f_0 f0 是一个凸函数,因此这个等高线实际上围成了一个凸集,这个凸集也就是一个下水平集。而这里的 ∇ f 0 ( x ) \nabla f_0(x) ∇f0(x) 就是这个下水平集的一个支撑超平面,正如下图所示。同时注意, ∇ f 0 ( x ) \nabla f_0(x) ∇f0(x) 也代表着函数指上升的方向,如果说对任意定义域内的 y y y,都有 ∇ f 0 ( x ) T ( y − x ) ≥ 0 \nabla f_{0}(x)^{T}(y-x) \geq 0 ∇f0(x)T(y−x)≥0 成立,那么说明我们从 x x x 走到 y y y 总会使 f 0 f_0 f0 增大,也就是说 x x x 就是最优解,对应最小值。
利用上面这两个性质,我们可以对很多类型的凸优化问题的最优解有一个认识。
无约束优化问题:对无约束优化问题, x x x 为最优解,当且仅当
x ∈ dom f 0 , ∇ f 0 ( x ) = 0 x\in\text{dom} f_0,\quad \nabla f_0(x)=0 x∈domf0,∇f0(x)=0
等式约束优化问题: min f 0 ( x ) , s . t . A x = b \min\quad f_0(x),\qquad s.t.\quad Ax=b minf0(x),s.t.Ax=b,则有 x x x 为最优解,当且仅当存在 ν \nu ν
x ∈ dom f 0 , A x = b , ∇ f 0 ( x ) + A T ν = 0 x \in \operatorname{dom} f_{0}, \quad A x=b, \quad \nabla f_{0}(x)+A^{T} \nu=0 x∈domf0,Ax=b,∇f0(x)+ATν=0
证明:因为 A x = b Ax=b Ax=b 实际上定义了一个超平面,如果 x x x 为最优解,那么 ∇ f 0 ( x ) \nabla f_0(x) ∇f0(x) 一定没有这个平面内的分量,也就是说 ∇ f 0 ( x ) ∈ ker ( A ) ⊥ \nabla f_0(x)\in \ker(A)^\perp ∇f0(x)∈ker(A)⊥。
这个实际上就等价于 Lagrange 乘子法,我们来看拉格朗日函数的定义
L ( x , v ) = f 0 ( x ) + < A x − b , v > ⟹ { ∇ f 0 ( x ) + A T v = 0 A x − b = 0 L(x,v)=f_0(x)+
非负象限内的优化: min f 0 ( x ) , s . t . x ⪰ 0 \min\quad f_0(x),\qquad s.t.\quad x\succeq 0 minf0(x),s.t.x⪰0, x x x 为最优解,当且仅当
x ∈ dom f 0 , x ⪰ 0 , { ∇ f 0 ( x ) i ≥ 0 x i = 0 ∇ f 0 ( x ) i = 0 x i > 0 x \in \operatorname{dom} f_{0}, \quad x \succeq 0, \quad\left\{\begin{array}{l} \nabla f_{0}(x)_{i} \geq 0 \quad x_{i}=0 \\ \nabla f_{0}(x)_{i}=0 \quad x_{i}>0 \end{array}\right. x∈domf0,x⪰0,{∇f0(x)i≥0xi=0∇f0(x)i=0xi>0
证明:首先由于定义域为非负象限,意味着 ( y − x ) (y-x) (y−x) 可以取到正无穷,因此可以推导出 ∇ f 0 ( x ) ⪰ 0 \nabla f_0(x) \succeq 0 ∇f0(x)⪰0,故 ∇ f 0 T ( x ) x ≥ 0 \nabla f_0^T(x)x\ge0 ∇f0T(x)x≥0。另一方面,对于凸优化问题的最优解,有 ∇ f 0 T ( x ) ( y − x ) ≥ 0 \nabla f_0^T(x)(y-x)\ge0 ∇f0T(x)(y−x)≥0,取 y = 0 y=0 y=0,因此有 ∇ f 0 T ( x ) x ≤ 0 \nabla f_0^T(x)x\le0 ∇f0T(x)x≤0,故 ∇ f 0 T ( x ) x = 0 \nabla f_0^T(x)x=0 ∇f0T(x)x=0。
实际上这里被称为互补性条件(complementary condition),也就是 KKT 条件的一部分。
有时原始优化问题比较难,可以通过等价转换进行简化。
消去等式约束:比如对一般的凸优化问题,等式约束实际上定义了一个超平面,这可以表示为特解 + 一组基的形式
A x = b ⟺ x = F z + x 0 for some z Ax=b \iff x=Fz+x_0 \text { for some } z Ax=b⟺x=Fz+x0 for some z
原始凸优化问题就可转化为
minimize (over z ) f 0 ( F z + x 0 ) subject to f i ( F z + x 0 ) ≤ 0 , i = 1 , … , m \begin{aligned} \text { minimize (over }z) \quad& f_{0}\left(F z+x_{0}\right)\\ \text { subject to } \quad& f_{i}\left(F z+x_{0}\right) \leq 0, \quad i=1, \dots, m \end{aligned} minimize (over z) subject to f0(Fz+x0)fi(Fz+x0)≤0,i=1,…,m
添加等式约束:实际上就是上面的一个逆过程,这个过程中取药添加一个等式约束 y = A x + b y=Ax+b y=Ax+b,由于添加了变量 y y y,会使问题变量数增加,同时优化变量也需要加上 y y y。
引入松弛变量:比如对于线性不等式约束的优化问题
minimize f 0 ( x ) subject to a i T x ≤ b i , i = 1 , . . . , m \begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& a_i^Tx\le b_i,\quad i=1,...,m \end{aligned} minimize subject to f0(x)aiTx≤bi,i=1,...,m
可以引入松弛因子 s i s_i si,得到
minimize f 0 ( x ) subject to a i T x + s i = b i , i = 1 , . . . , m s i ≥ 0 , i = 1 , . . . , m \begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& a_i^Tx + s_i = b_i,\quad i=1,...,m \\ & s_i \ge0,\quad i=1,...,m \end{aligned} minimize subject to f0(x)aiTx+si=bi,i=1,...,msi≥0,i=1,...,m
例子:下面两个优化问题是等价的吗?其中 W T W = I W^TW=I WTW=I
min x f ( x ) + g ( W x ) min c f ( W T c ) + g ( c ) \min_x f(x)+g(Wx) \\ \min_c f(W^T c)+g(c) xminf(x)+g(Wx)cminf(WTc)+g(c)
不一定等价。由于 W T W = I W^TW=I WTW=I,若 W W W 为方针,则二者等价,否则说明 W ∈ R m × n , m ≥ n W\in R^{m\times n},m\ge n W∈Rm×n,m≥n,也即 W W W 为一个瘦高型的矩阵,如果我们取 f ≡ 0 f\equiv 0 f≡0,那么很显然 min x g ( W x ) \min_x g(Wx) minxg(Wx) 与 min c g ( c ) \min_c g(c) mincg(c) 并不等价,因为 W W W 列不满秩。
epigraph 形式:任意标准形式的凸优化问题都可以转化为下面的形式
minimize (over x , t ) t subject to f 0 ( x ) f i ( x ) ≤ 0 , i = 1 , … , m A x = b \begin{aligned} \text { minimize (over }x,t) \quad& t\\ \text { subject to } \quad& f_{0}(x)\\ \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &Ax=b \end{aligned} minimize (over x,t) subject to tf0(x)fi(x)≤0,i=1,…,mAx=b
这种变化很重要,可以将优化目标转化为约束函数,对于后面一些典型凸优化问题的转化很有用。
对某些变量最小化:实际上就是对于存在多个优化变量时,提前通过计算消去一些变量
minimize f 0 ( x 1 , x 2 ) subject to f i ( x 1 ) ≤ 0 , i = 1 , … , m ⟺ minimize f ~ 0 ( x 1 ) subject to f ~ i ( x 1 ) ≤ 0 , i = 1 , … , m \begin{aligned} \text { minimize } \quad& f_{0}\left(x_{1}, x_{2}\right)\\ \text { subject to } \quad& f_{i}\left(x_{1}\right) \leq 0, \quad i=1, \dots, m \end{aligned} \iff \begin{aligned} \text { minimize } \quad& \tilde{f}_{0}\left(x_{1}\right)\\ \text { subject to } \quad& \tilde{f}_{i}\left(x_{1}\right) \leq 0, \quad i=1, \dots, m \end{aligned} minimize subject to f0(x1,x2)fi(x1)≤0,i=1,…,m⟺ minimize subject to f~0(x1)f~i(x1)≤0,i=1,…,m
其中 f ~ 0 ( x 1 ) = inf x 2 f 0 ( x 1 , x 2 ) \tilde{f}_0(x_1)=\inf_{x_2}f_0(x_1,x_2) f~0(x1)=infx2f0(x1,x2)。
拟凸函数跟凸函数有一些相似的性质,尤其是拟凸函数的任意下水平集都是凸集,因此很多时候对于拟凸问题,也可以用凸优化的一些方法有效解决。
拟凸优化问题(Quasi convex optimization) 的一般定义为与凸优化基本相同,只不过目标函数 f 0 ( x ) f_0(x) f0(x) 可以是拟凸函数,但约束函数 f 1 , . . . , f m f_1,...,f_m f1,...,fm 仍需要是凸函数。
Remarks:我个人觉得这里其实约束函数也可以是拟凸函数?因为即使是拟凸函数, f i ( x ) ≤ 0 f_i(x)\le0 fi(x)≤0 也可以得到凸的定义域?
但是此时拟凸优化问题就没有凸优化那么好的性质了,比如局部最优解不一定是全局最优解
尽管如此,由于拟凸函数任意下水平集 { x ∣ f ( x ) ≤ t } \{x|f(x)\le t\} {x∣f(x)≤t} 都是凸集,我们可以利用这个性质将其转化为凸函数 ϕ t ( x ) ≤ 0 \phi_t(x)\le0 ϕt(x)≤0 来表示,由此就可以用凸优化来求解。
例子
最简单的例子,拟凸函数 f ( x ) f(x) f(x) 的下水平集可以表示为 { x ∣ f ( x ) ≤ t } \{x|f(x)\le t\} {x∣f(x)≤t},我们可以用函数 ϕ t ( x ) ≤ 0 \phi_t(x)\le0 ϕt(x)≤0 来等价表示
ϕ t ( x ) = { 0 f ( x ) ≤ t ∞ \phi_t(x)=\begin{cases}0 & f(x)\le t \\ \infty \end{cases} ϕt(x)={0∞f(x)≤t
不过这种表示方法意义不大, 这个函数不连续不可微。我们还有其他的表示方法比如
ϕ t ( x ) = dist ( x , { z ∣ f ( z ) ≤ t } ) \phi_t(x)=\text{dist}\left(x,\{z|f(z)\le t\}\right) ϕt(x)=dist(x,{z∣f(z)≤t})
另外,如果拟凸函数 f 0 ( x ) f_0(x) f0(x) 有一些特定的性质,比如 f 0 ( x ) = p ( x ) / q ( x ) f_0(x)=p(x)/q(x) f0(x)=p(x)/q(x),其中 p ( x ) p(x) p(x) 为凸函数,而 q ( x ) > 0 q(x)>0 q(x)>0 为凹函数(容易证明此时 f 0 f_0 f0 为拟凸函数),那么我们还可以取 ϕ t ( x ) \phi_t(x) ϕt(x) 为
ϕ t ( x ) = p ( x ) − t q ( x ) \phi_t(x)=p(x)-t q(x) ϕt(x)=p(x)−tq(x)
拟凸优化问题的求解
假如当前拟凸优化问题的最优解为 p ∗ p^* p∗,那么对于寻找可行解问题 t<p∗
find x s . t . ϕ t ( x ) ≤ 0 , f i ( x ) ≤ 0 , i = 1 , … , m , A x = b \begin{aligned} \text{find} \quad& x \\ s.t. \quad& \phi_{t}(x) \leq 0, \quad f_{i}(x) \leq 0, \quad i=1, \ldots, m, \\ &A x=b \end{aligned} finds.t.xϕt(x)≤0,fi(x)≤0,i=1,…,m,Ax=b
如果 t ≥ p ∗ t\ge p^* t≥p∗,则该问题有可行解,如果 t < p ∗ t
线性规划(Linear program)问题的一般形式为
minimize c T x + d subject to G x ⪯ h A x = b \begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject tocTx+dGx⪯hAx=b
联系我们前面提到的凸优化问题最优解性质,有 c T ( y − x ) ≥ 0 c^T(y-x)\ge0 cT(y−x)≥0,也即目标函数的等高线是一系列超平面
例子 1:对于 piecewise-linear minimization 问题(无约束优化)
minimize max i = 1 , … , m ( a i T x + b i ) \text { minimize } \max _{i=1, \ldots, m}\left(a_{i}^{T} x+b_{i}\right) minimize i=1,…,mmax(aiTx+bi)
可以转化为
minimize t subject to a i T x + b i ≤ t \begin{aligned} \text { minimize} \quad& t\\ \text { subject to} \quad& a_i^Tx + b_i \le t \end{aligned} minimize subject totaiTx+bi≤t
例子 2:多面体的切比雪夫中心(Chebyshev center)
P = { x ∣ a i T x ≤ b i , i = 1 , … , m } \mathcal{P}=\left\{x | a_{i}^{T} x \leq b_{i}, i=1, \dots, m\right\} P={x∣aiTx≤bi,i=1,…,m}
可以用优化问题表示为
maximize r subject to a i T x c + r ∥ a i ∥ 2 ≤ b i , i = 1 , … , m \begin{aligned} \text{maximize} \quad& r\\ \text{subject to} \quad& a_{i}^{T} x_{c}+r\left\|a_{i}\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject toraiTxc+r∥ai∥2≤bi,i=1,…,m
线性分式规划(Linear-fractional program) 的一般形式为
minimize f 0 ( x ) subject to G x ⪯ h A x = b \begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject tof0(x)Gx⪯hAx=b
其中 f 0 ( x ) = c T x + d e T x + f , dom f 0 ( x ) = { x ∣ e T x + f > 0 } f_0(x)=\frac{c^Tx+d}{e^Tx+f},\quad \text{dom}f_0(x)=\{x|e^Tx+f>0\} f0(x)=eTx+fcTx+d,domf0(x)={x∣eTx+f>0}。这个问题可以等价转化为线性规划。
二次规划(Quadratic program)的一般形式为
minimize ( 1 / 2 ) x T P x + q T x + r subject to G x ⪯ h A x = b \begin{aligned} \text{minimize} \quad& (1/2)x^TPx+q^Tx+r \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject to(1/2)xTPx+qTx+rGx⪯hAx=b
其中 P ∈ S + n P\in S_{+}^n P∈S+n。
与线性规划不同的是,目标函数的等高线变成了椭球面
例子:最小二乘就是最经典的二次规划的例子, min ∥ A x + b ∥ 2 2 \min \Vert Ax+b\Vert_2^2 min∥Ax+b∥22
二次约束二次规划(Quadratically constrained quadratic program)的一般形式为
minimize ( 1 / 2 ) x T P 0 x + q 0 T x + r 0 subject to ( 1 / 2 ) x T P i x + q i T x + r i ≤ 0 A x = b \begin{aligned} \text{minimize} \quad& (1/2)x^TP_0x+q_0^Tx+r_0 \\ \text{subject to} \quad& (1/2)x^TP_ix+q_i^Tx+r_i \le 0 \\ &A x=b\end{aligned} minimizesubject to(1/2)xTP0x+q0Tx+r0(1/2)xTPix+qiTx+ri≤0Ax=b
其中 P i ∈ S + n P_i\in S_{+}^n Pi∈S+n。
一般会限制 P 1 , . . . , P m ∈ S + + n P_1,...,P_m\in S_{++}^n P1,...,Pm∈S++n,也就是不能为 0 矩阵(有什么意义吗?不关键)
二次锥规划(Second-order cone programming)的一般形式为
minimize f T x subject to ∥ A i x + b i ∥ 2 ≤ c i T x + d i , i = 1 , … , m F x = g \begin{array}{cl} \text { minimize } & f^{T} x \\ \text { subject to } & \left\|A_{i} x+b_{i}\right\|_{2} \leq c_{i}^{T} x+d_{i}, \quad i=1, \ldots, m \\ & F x=g \end{array} minimize subject to fTx∥Aix+bi∥2≤ciTx+di,i=1,…,mFx=g
其实 SOCP 比前面几种问题都更广泛,他们都可以看作是 SOCP 的一种情况
对于优化问题,有时候我们的参数比如 a i , b i a_i,b_i ai,bi 等都是不确定的,他们可能是在一定范围内属于某个集合,也可能是一个随机变量,这个时候就引入了鲁棒优化的概念。
对于线性规划问题来说,比如
minimize c T x + d subject to a i T x ≤ b i \begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& a_i^Tx\le b_i \end{aligned} minimizesubject tocTx+daiTx≤bi
一种是考虑确定性模型,也即
minimize c T x + d subject to a i T x ≤ b i for all a i ∈ E i \begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& a_i^Tx\le b_i \text{ for all } a_i\in\mathcal{E}_i \end{aligned} minimizesubject tocTx+daiTx≤bi for all ai∈Ei
如果 E i = { a ˉ i + P i u ∣ ∥ u ∥ 2 ≤ 1 } \mathcal{E}_{i}=\left\{\bar{a}_{i}+P_{i} u |\|u\|_{2} \leq 1\right\} Ei={aˉi+Piu∣∥u∥2≤1} 是一个椭球,则该问题可以转化为一个 SOCP 问题
maximize c T x subject to a ˉ i T x + ∥ P i T x ∥ 2 ≤ b i , i = 1 , … , m \begin{aligned} \text{maximize} \quad& c^Tx\\ \text{subject to} \quad& \bar{a}_{i}^{T} x+\left\|P_{i}^Tx\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject tocTxaˉiTx+∥∥PiTx∥∥2≤bi,i=1,…,m
另一种是随机性模型,即
minimize c T x subject to prob ( a i T x ≤ b i ) ≥ η , i = 1 , … , m \begin{aligned} \text{minimize} \quad& c^{T} x \\ \text{subject to} \quad& \operatorname{prob}\left(a_{i}^{T} x \leq b_{i}\right) \geq \eta, \quad i=1, \ldots, m \end{aligned} minimizesubject tocTxprob(aiTx≤bi)≥η,i=1,…,m
假如 a i ∼ N ( a ˉ i , Σ i ) a_i\sim\mathcal{N}(\bar{a}_i,\Sigma_i) ai∼N(aˉi,Σi) 服从高斯分布,则该问题同样可以转化为一个 SOCP 问题
maximize c T x subject to a ˉ i T x + Φ − 1 ( η ) ∥ Σ i 1 / 2 x ∥ 2 ≤ b i , i = 1 , … , m \begin{aligned} \text{maximize} \quad& c^Tx\\ \text{subject to} \quad& \bar{a}_{i}^{T} x+\Phi^{-1}(\eta)\left\|\Sigma_{i}^{1 / 2} x\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject tocTxaˉiTx+Φ−1(η)∥∥∥Σi1/2x∥∥∥2≤bi,i=1,…,m
首先定义单项式函数(monomial function) f ( x ) = c x 1 a 1 x 2 a 2 ⋯ x n a n , dom f = R + + n f(x)=cx_1^{a_1}x_2^{a_2}\cdots x_n^{a_n},\quad \text{dom}f=R_{++}^n f(x)=cx1a1x2a2⋯xnan,domf=R++n,其中 c > 0 , a i c>0,a_i c>0,ai 为任意实数;
正项式函数(posynomial function) f ( x ) = ∑ k c k x 1 a 1 k x 2 a 2 k ⋯ x n a n k , dom f = R + + n f(x)=\sum_k c_k x_1^{a_{1k}} x_2^{a_{2k}}\cdots x_n^{a_{nk}},\quad \text{dom}f=R_{++}^n f(x)=∑kckx1a1kx2a2k⋯xnank,domf=R++n
然后就可以定义**几何规划(geometric program)**了
minimize f 0 ( x ) subject to f i ( x ) ≤ 1 , i = 1 , . . . , m h i ( x ) = 1 , i = 1 , . . . , p \begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& f_i(x)\le 1,\quad i=1,...,m \\ &h_i(x)=1,\quad i=1,...,p \end{aligned} minimizesubject tof0(x)fi(x)≤1,i=1,...,mhi(x)=1,i=1,...,p
其中 f i f_i fi 为正项式, h i h_i hi 为单项式。
首先说明,这个优化问题并不一定是凸的,因为 a i a_i ai 可以取任意实数,比如 a i = 1 / 2 a_i=1/2 ai=1/2 就不是凸的。那么我们这里为什么要介绍这个问题呢?别急,一会稍微做一个变换我们就可以解决这个问题了。那还有一个问题,这种形式的函数有什么意义呢?为什么专门引入这样一种非凸优化问题呢?我们看这个单项式函数 c x 1 a 1 x 2 a 2 ⋯ x n a n cx_1^{a_1}x_2^{a_2}\cdots x_n^{a_n} cx1a1x2a2⋯xnan,像不像体积或者面积的表达式?这也是他被称为“几何规划”的原因吧。
好,现在我们怎么把这个非凸的问题转化为凸优化问题呢?加个 log \log log 就行啦!对单项式来说
log f ( x ) = ∑ i a i log x i + log c = a T y + b f ( x ) = e a T y + b \begin{aligned} \log f(x) &= \sum_i a_i \log x_i +\log c = a^Ty+b \\ f(x) &= e^{a^Ty+b} \end{aligned} logf(x)f(x)=i∑ailogxi+logc=aTy+b=eaTy+b
对多项式来说
log f ( x ) = log ( ∑ i exp ( a i T y + b i ) ) \log f(x)=\log \left(\sum_i \exp(a_i^Ty+b_i)\right) logf(x)=log(i∑exp(aiTy+bi))
这么一来,取完对数后的问题就是凸的了,而且我们也知道 log \log log 是一个单射函数,原始优化问题就变成了
minimize log ( ∑ k exp ( a 0 k T y + b 0 k ) ) subject to log ( ∑ k exp ( a i k T y + b i k ) ) ≤ 0 , i = 1 , . . . , m G y + d = 0 \begin{aligned} \text{minimize} \quad& \log \left(\sum_k \exp(a_{0k}^Ty+b_{0k})\right) \\ \text{subject to} \quad& \log \left(\sum_k \exp(a_{ik}^Ty+b_{ik})\right)\le 0,\quad i=1,...,m \\ &Gy+d=0 \end{aligned} minimizesubject tolog(k∑exp(a0kTy+b0k))log(k∑exp(aikTy+bik))≤0,i=1,...,mGy+d=0
前面所讲到的都是标量函数,约束条件也都是函数值与 0 比大小,而前面的章节中我们也提到了广义不等式,对于正常锥则可以定义不等号。所以我们可以定义一种凸优化问题,这种凸优化问题的约束条件不再是普通不等式,而是广义不等式
minimize f 0 ( x ) subject to f i ( x ) ⪯ K i 0 , i = 1 , . . . , m A x = b \begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& f_i(x)\preceq_{K_i} 0,\quad i=1,...,m \\ &Ax=b \end{aligned} minimizesubject tof0(x)fi(x)⪯Ki0,i=1,...,mAx=b
其中 f 0 : R n → R f_0:R^n\to R f0:Rn→R 为凸函数, f i : R n → R k i f_i:R^n\to R^{k_i} fi:Rn→Rki 为关于正常锥 K i K_i Ki 的凸函数。
注意这种带有广义不等式约束的凸优化问题与普通凸优化问题有着相同的性质,比如可行集为凸的,局部最优解就是全局最优解等。
一种简单形式的凸优化问题就是向量形式的,也就是说目标函数与约束都是仿射函数
minimize c T x subject to F x + g ⪯ K 0 A x = b \begin{aligned} \text{minimize} \quad& c^Tx \\ \text{subject to} \quad& Fx+g\preceq_K 0 \\ &Ax=b \end{aligned} minimizesubject tocTxFx+g⪯K0Ax=b
这种向量形式的广义不等式实际上就是对每个元素进行比较,因此实际上可以按照每一行拆分成多个不等式,如果取 K = R + m K=R_+^m K=R+m 就与普通的线性规划(LP)没什么区别了。
接下来要介绍的就是重头戏**半正定规划(Semidefinite program)**了,我们取 K = S + n K=S^n_+ K=S+n
minimize c T x subject to x 1 F 1 + x 2 F 2 + ⋯ + x n F n + G ⪯ K 0 A x = b \begin{aligned} \text{minimize} \quad& c^Tx \\ \text{subject to} \quad& x_1 F_1+x_2F_2+\cdots+x_nF_n+G\preceq_K 0 \\ &Ax=b \end{aligned} minimizesubject tocTxx1F1+x2F2+⋯+xnFn+G⪯K0Ax=b
其中 F i , G ∈ S n F_i,G\in S^n Fi,G∈Sn。
这里的不等式约束就是大名鼎鼎的线性矩阵不等式(linear matrix inequality, LMI)。
如果说我们现在有两个不等式约束怎么办呢?
x 1 F ^ 1 + x 2 F ^ 2 + ⋯ + x n F ^ n + G ⪯ K 0 x 1 F ~ 1 + x 2 F ~ 2 + ⋯ + x n F ~ n + G ⪯ K 0 x_1 \hat{F}_1+x_2\hat{F}_2+\cdots+x_n\hat{F}_n+G\preceq_K 0 \\ x_1 \tilde{F}_1+x_2\tilde{F}_2+\cdots+x_n\tilde{F}_n+G\preceq_K 0 x1F^1+x2F^2+⋯+xnF^n+G⪯K0x1F~1+x2F~2+⋯+xnF~n+G⪯K0
合成一个更大的矩阵就可以了,实际上这种操作在后面也会经常见到
x 1 [ F ^ 1 0 0 F ~ 1 ] + x 2 [ F ^ 2 0 0 F ~ 2 ] + ⋯ + x n [ F ^ n 0 0 F ~ n ] + [ G ^ 0 0 G ~ ] ⪯ 0 x_{1}\left[\begin{array}{cc} \hat{F}_{1} & 0 \\ 0 & \tilde{F}_{1} \end{array}\right]+x_{2}\left[\begin{array}{cc} \hat{F}_{2} & 0 \\ 0 & \tilde{F}_{2} \end{array}\right]+\cdots+x_{n}\left[\begin{array}{cc} \hat{F}_{n} & 0 \\ 0 & \tilde{F}_{n} \end{array}\right]+\left[\begin{array}{cc} \hat{G} & 0 \\ 0 & \tilde{G} \end{array}\right] \preceq 0 x1[F^100F~1]+x2[F^200F~2]+⋯+xn[F^n00F~n]+[G^00G~]⪯0
这是因为分块对角矩阵为正定矩阵等价于每一个子块都为正定矩阵。
例子 1:半正定规划之所以重要,是因为他的形式更广泛,前面说 SOCP 包含了 LP、QP、QCQP,而半正定规划则包含了 SOCP!比如下面的 SOCP 问题就可以转化为 SDP
S O C P : minimize f T x subject to ∥ A i x + b i ∥ 2 ≤ c i T x + d i , i = 1 , … , m S D P : minimize f T x subject to [ ( c i T x + d i ) I A i x + b i ( A i x + b i ) T c i T x + d i ] ⪰ 0 , i = 1 , … , m \begin{aligned} SOCP:\qquad \text{minimize}&\quad f^{T} x \\ \text{subject to}&\quad \left\|A_{i} x+b_{i}\right\|_{2} \leq c_{i}^{T} x+d_{i}, \quad i=1, \ldots, m \\ \\ SDP:\qquad \text{minimize}&\quad f^{T} x \\ \text{subject to}&\quad \left[\begin{array}{cc} \left(c_{i}^{T} x+d_{i}\right) I & A_{i} x+b_{i} \\ \left(A_{i} x+b_{i}\right)^{T} & c_{i}^{T} x+d_{i} \end{array}\right] \succeq 0, \quad i=1, \ldots, m \end{aligned} SOCP:minimizesubject toSDP:minimizesubject tofTx∥Aix+bi∥2≤ciTx+di,i=1,…,mfTx[(ciTx+di)I(Aix+bi)TAix+biciTx+di]⪰0,i=1,…,m
例子 2:最小化矩阵的最大特征值 min λ max ( A ( x ) ) \min \lambda_{\max}(A(x)) minλmax(A(x)),也可以通过半正定规划来描述
minimize t subject to A ( x ) ⪯ t I \begin{aligned} \text{minimize} \quad& t \\ \text{subject to} \quad& A(x)\preceq tI \end{aligned} minimizesubject totA(x)⪯tI
其中优化变量为 x ∈ R n , t ∈ R x\in R^n,t\in R x∈Rn,t∈R。这种等价转化是因为 λ max ( A ) ≤ t ⟺ A ⪯ t I \lambda_{\max}(A)\le t\iff A\preceq tI λmax(A)≤t⟺A⪯tI。
例子 3:最小化矩阵范数 min ∥ A ( x ) ∥ 2 = ( λ ( A ( x ) T A ( x ) ) ) 1 / 2 \min \Vert A(x)\Vert_2=\left(\lambda\left(A\left(x\right)^TA\left(x\right)\right)\right)^{1/2} min∥A(x)∥2=(λ(A(x)TA(x)))1/2,也可以等价为SDP
minimize t subject to [ t I A ( x ) A ( x ) T t I ] ⪰ 0 \begin{aligned} \text{minimize}&\quad t \\ \text{subject to}&\quad \left[\begin{array}{cc} t I & A(x) \\ A(x)^T & tI \end{array}\right] \succeq 0 \end{aligned} minimizesubject tot[tIA(x)TA(x)tI]⪰0
前面介绍的所有优化问题的目标函数都是标量(尽管约束可能会出现广义不等式),如果目标函数为向量怎么办呢?前面的章节中我们介绍了广义的凸函数,同样也是基于锥定义的(实际上高维空间中“比大小”我们一般都需要通过锥来定义)。
一般的向量优化问题可以表示为
minimize(w.r.t. K) f 0 ( x ) subject to f i ( x ) ≤ 0 , i = 1 , . . . , m h i ( x ) = 0 , i = 1 , . . . , p \begin{aligned}{} &\text{minimize(w.r.t. K)} \quad& f_0(x) \\ &\text{subject to} \quad& f_i(x)\le 0,\quad i=1,...,m \\ & &h_i(x)=0,\quad i=1,...,p \end{aligned} minimize(w.r.t. K)subject tof0(x)fi(x)≤0,i=1,...,mhi(x)=0,i=1,...,p
凸的向量优化问题只需要将上面的等式约束换为仿射函数 A x = b Ax=b Ax=b,同时要求 f 0 f_0 f0 为 K − K- K−convex 的, f 1 , . . . , f m f_1,...,f_m f1,...,fm 为凸的。
向量约束优化问题的最优解相当于在下面的集合中寻找最优解
O = { f 0 ( x ) ∣ x feasible } \mathcal{O}=\{f_0(x)|x \text{ feasible}\} O={f0(x)∣x feasible}
前面在将广义不等式和凸集的时候,我们讲过最小元和极小元的概念,这两个概念是不是已经忘得差不多啦!反正我基本全忘了…让我们来复习一下。
复习:最小元与极小元
下面两幅图分别表示最小元和极小元
利用对偶锥,我们可以获得最小元的等价定义,即
x x x 是集合 S S S 关于 ⪯ K \preceq_{K} ⪯K 的最小元 ⟺ \iff ⟺ 对任意的 λ ≻ K ∗ 0 \lambda \succ_{K*} 0 λ≻K∗0, x x x 为 λ T z \lambda^Tz λTz 在集合 S S S 上的唯一最小解
什么意思呢?也就是说任意的 λ ∈ K ∗ \lambda\in K^* λ∈K∗,实际上都代表了一个法向量,也就是一个支撑超平面。如果 x x x 是最小元,则意味着对任意一个 ( K ∗ K^* K∗所定义的) 支撑超平面来说, x x x 都是支撑点,就像下面这条幅图一样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iGyU5JKH-1584543534267)(https://raw.githubusercontent.com/Glooow1024/ImgHosting/master/hexo/2020/10-minimal.png)]
而极小元的定义是什么呢?
- 充分条件:若对于某些 λ ≻ K ∗ 0 \lambda \succ_{K*} 0 λ≻K∗0, x x x minimizes λ T z \lambda^Tz λTz over S S S, ⟹ \Longrightarrow ⟹ x x x 为极小元
- 必要条件: x x x 为凸集 S S S 的极小元, ⟹ \Longrightarrow ⟹ 存在非 0 的 λ ≻ K ∗ 0 \lambda \succ_{K*} 0 λ≻K∗0 使得 x x x minimizes λ T z \lambda^Tz λTz over S S S
我们来看充分条件,只需要存在某一个 λ ∈ K ∗ \lambda\in K^* λ∈K∗,使得 x x x 为对应支撑超平面的支撑点就可以了。比如下面这幅图,蓝色的点,我们可以找到这样一个蓝色的支撑超平面,使其为支撑点,所以它就是一个极小元;而对于红色的点来说,无论如何不可能找到一个支撑超平面,使其为支撑点,因此他就有可能不是极小元,因为这只是充分条件(对这个例子来说他就不是极小元)。
简单总结一下:
- 最小元:无论沿着锥 K ∗ K^* K∗ 里边哪一个方向走, x x x 都是最小值点,那么他就是最小元;
- 极小元:如果沿着其中某一个方向走, x x x 是最小值点,那么他就是极小元。
复习完了最小元和极小元,不要忘了正事。我们要考虑向量约束优化问题中的最优解
O = { f 0 ( x ) ∣ x feasible } \mathcal{O}=\{f_0(x)|x \text{ feasible}\} O={f0(x)∣x feasible}
这是一个集合,如果 f 0 ( x ) f_0(x) f0(x) 是关于锥 K K K 的最小元,那么对应的 x x x 就被称为最优解(optimal);如果 f 0 ( x ) f_0(x) f0(x) 是关于锥 K K K 的极小元,那么对应的 x x x 则被称为 Pareto optimal。
例子:假如我们取 K = R + q K=R_+^q K=R+q,其中
f 0 ( x ) = ( F 1 ( x ) , . . . , F q ( x ) ) f_0(x)=(F_1(x),...,F_q(x)) f0(x)=(F1(x),...,Fq(x))
相当于有 q q q 个不同的目标 F i F_i Fi,最好的情况当然是希望 F i F_i Fi 都是最小的。
若 x ∗ x^* x∗ 为最小元(存在)就说明任意其他可行解 y y y 都有 f 0 ( x ∗ ) ≤ f ( y ) f_0(x^*)\le f(y) f0(x∗)≤f(y),正是我们希望的;
而如果只能得到极小元 x p o x^{po} xpo,就有对任意可行解 y y y, f 0 ( y ) ⪯ f 0 ( x p o ) ⟹ f 0 ( x p o ) = f ( y ) f_0(y)\preceq f_0(x^{po})\Longrightarrow f_0(x^{po})=f(y) f0(y)⪯f0(xpo)⟹f0(xpo)=f(y)。这是什么意思呢?
最后给我的博客打个广告,欢迎光临
https://glooow1024.github.io/
https://glooow.gitee.io/