引言
这是中科大最优化理论的笔记,中科大凌青老师的凸优化课程,详尽易懂,基础扎实。不论是初学者还是从业多年的人,都值得系统地好好学一遍。
本文介绍种重要的凸集:超平面与半空间、球和椭球、多面体、单纯形。
超平面与半空间
超平面是具有下面形式的集合
{ x ∣ a T x = b } (1) \{x|a^Tx=b\} \tag 1 {x∣aTx=b}(1)
其中 a ∈ R n , a ≠ 0 , b ∈ R a \in R^n,\,\, a\neq 0,\,\, b\in R a∈Rn,a=0,b∈R。
a T x a^Tx aTx是内积, x ∈ R n x \in R^n x∈Rn。如果是二维的,那么 a T x a^Tx aTx就是直线,如果是三维的,就是平面。
假设 x 0 x_0 x0是超平面上的任意一点,即任意满足 a T x 0 = b a^Tx_0=b aTx0=b的点,那么式 ( 1 ) (1) (1)可以表示为
{ x ∣ a T ( x − x 0 ) = 0 } (2) \{x|a^T(x-x_0) =0 \} \tag 2 {x∣aT(x−x0)=0}(2)
内积为零,说明 a T a^T aT与 x − x 0 x-x_0 x−x0正交(垂直),假设在二维空间中:
x 0 x_0 x0是超平面上一点,对于超平面上任意一点 x x x, x − x 0 x-x_0 x−x0如上图黑色向量所示,与向量 a a a正交。
这是二维空间,如果是三维空间,那么该超平面就是一个(真的)平面:
上图左侧是二维空间中的超平面(直线),右侧是三维空间中的超平面(平面)。
R 2 R^2 R2上由 a T x = b a^Tx=b aTx=b定义的超平面决定了两个半空间。由 a T x ≥ b a^Tx \geq b aTx≥b决定的半空间(无阴影)是向 a a a扩展的半空间;由 a T ≤ b a^T \leq b aT≤b确定的半空间(阴影部分)向 − a -a −a方向扩展。
我们来看下超平面是仿射集吗?显然它是仿射集,因为它的定义就是一条直线,所以也是凸集。
那是否为凸锥呢?只有该直线过原点才是凸锥( a T x = 0 a^Tx=0 aTx=0)。
那半空间是凸集吗?肯定是凸集,空间内任意两点构成的线段一定在半空间内。它不是仿射集,因为集合两点构成的直线有可能有另外一部分超出了该集合。只有当半空间经过原点是才有可能是凸锥。
球和椭球
R n R^n Rn中的空间Euclid球具有下面的形式
B ( x c , r ) = { x ∣ ∣ ∣ x − x c ∣ ∣ 2 ≤ r } = { x ∣ ( x − x c ) T ( x − x c ) ≤ r } (3) B(x_c,r) = \{x| \,\, ||x-x_c||_2 \leq r\} = \{ x|\,\, \sqrt{(x-x_c)^T(x-x_c)} \leq r\} \tag 3 B(xc,r)={x∣∣∣x−xc∣∣2≤r}={x∣(x−xc)T(x−xc)≤r}(3)
其中 x c ∈ R x_c \in R xc∈R是球心,标量 r > 0 r > 0 r>0为半径。 B ( x c , r ) B(x_c,r) B(xc,r)由距离球心 x c x_c xc不超过 r r r的所有点组成。
在二维空间中的球就是一个圆,它显然是凸集。那么是否为仿射集呢?只有当半径为零,坍塌为一个点是才是仿射集。同时该点落在原点上才是凸锥。
我们能很容易看出来该集合是一个凸集,那如何用公式证明呢?
∀ x 1 , x 2 ∈ B \forall x_1,x_2 \in B ∀x1,x2∈B,即有 ∣ ∣ x 1 − x c ∣ ∣ 2 ≤ r , ∣ ∣ x 2 − x c ∣ ∣ 2 ≤ r ||x_1-x_c||_2 \leq r,||x_2-x_c||_2 \leq r ∣∣x1−xc∣∣2≤r,∣∣x2−xc∣∣2≤r, ∀ θ , 1 ≥ θ ≥ 0 \forall \,\, \theta, \,\, 1 \geq \theta \geq 0 ∀θ,1≥θ≥0,那么我们要证明连接这两点的线段也在集合内,有:
∣ ∣ θ x 1 + ( 1 − θ ) x 2 − x c ∣ ∣ 2 = ∣ ∣ θ ( x 1 − x c ) + ( 1 − θ ) ( x 2 − x c ) ∣ ∣ 2 ≤ ∣ ∣ θ ( x 1 − x c ) ∣ ∣ 2 + ∣ ∣ ( 1 − θ ) ( x 2 − x c ) ∣ ∣ 2 = θ ∣ ∣ x 1 − x c ∣ ∣ 2 + ( 1 − θ ) ∣ ∣ x 2 − x c ∣ ∣ 2 ≤ r \begin{aligned} ||\theta x_1 +(1-\theta)x_2 - x_c ||_2 &= || \theta(x_1 -x_c) + (1-\theta)(x_2-x_c)||_2 \\ &\leq || \theta(x_1 -x_c) ||_2 + ||(1-\theta)(x_2-x_c)||_2 \\ &= \theta||x_1-x_c||_2 +(1-\theta)||x_2-x_c||_2 \\ &\leq r \end{aligned} ∣∣θx1+(1−θ)x2−xc∣∣2=∣∣θ(x1−xc)+(1−θ)(x2−xc)∣∣2≤∣∣θ(x1−xc)∣∣2+∣∣(1−θ)(x2−xc)∣∣2=θ∣∣x1−xc∣∣2+(1−θ)∣∣x2−xc∣∣2≤r
其中利用了三角不等式 ∣ ∣ a + b ∣ ∣ ≤ ∣ ∣ a ∣ ∣ + ∣ ∣ b ∣ ∣ ||a+b|| \leq ||a|| + ||b|| ∣∣a+b∣∣≤∣∣a∣∣+∣∣b∣∣。
另一个相关的凸集是椭球,它们具有如下形式,
ε = { x ∣ ( x − x c ) T P − 1 ( x − x c ) ≤ 1 } (4) \varepsilon =\{ x|(x-x_c)^TP^{-1}(x-x_c) \leq 1 \} \tag 4 ε={x∣(x−xc)TP−1(x−xc)≤1}(4)
其中 x c ∈ R n x_c \in R^n xc∈Rn, P ∈ S + + n P \in S^n_{++} P∈S++n,即 P P P是对称正定矩阵。
一个对称矩阵为正定的,当且仅当其所有的特征值均为正的。
矩阵 P P P决定了椭球从 x c x_c xc向各个方向扩展的幅度。 ε \varepsilon ε的半轴长度由 λ i \sqrt{\lambda_i} λi给出,这里 λ i \lambda_i λi为 P P P的特征值。
球可以看成是 P = r 2 I P=r^2I P=r2I的椭球。
下面是一个椭球在二维空间中的例子:
中心 x c x_c xc在上图的实心点,两个半轴由线段表示。
公式 ( 4 ) (4) (4)不太好理解,这和我们以前学的椭球的定义不太一样。我们就通过一个例子来理解。
假设在 R 2 R^2 R2中
P = [ 4 0 0 1 ] P = \left[ \begin{matrix} 4 & 0 \\ 0 & 1 \\ \end{matrix} \right] P=[4001]
首先求它的特征值,特征方程为
∣ 4 − λ 0 0 1 − λ ∣ = 0 ⇒ ( 4 − λ ) ( 1 − λ ) = 0 \left| \begin{matrix} 4 -\lambda& 0 \\ 0 & 1 -\lambda\\ \end{matrix} \right| = 0 \quad \Rightarrow (4-\lambda)(1-\lambda) = 0 4−λ001−λ =0⇒(4−λ)(1−λ)=0
即 P P P的特征值为 4 4 4或 1 1 1都大于零。因此它是正定的,且又是对称的。
同时假设椭球的球心在原点处, x = ( x 1 , x 2 ) T x=(x_1,x_2)^T x=(x1,x2)T,有
x T P − 1 x = [ x 1 x 2 ] [ 4 0 0 1 ] − 1 [ x 1 x 2 ] = [ 1 4 x 1 x 2 ] [ x 1 x 2 ] = 1 4 x 1 2 + x 2 2 x^TP^{-1}x = \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} 4 & 0 \\ 0 & 1 \end{bmatrix}^{-1} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \\ = \begin{bmatrix} \frac{1}{4}x_1 & x_2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \\ = \frac{1}{4}x_1^2 + x_2^2 xTP−1x=[x1x2][4001]−1[x1x2]=[41x1x2][x1x2]=41x12+x22
即 { ( x 1 , x 2 ) ∣ 1 4 x 1 2 + x 2 2 ≤ 1 } \{(x_1,x_2) |\frac{1}{4}x_1^2 + x_2^2 \leq 1 \} {(x1,x2)∣41x12+x22≤1}是长轴为 2 2 2,短轴为 1 1 1的椭圆。
多面体
多面体(Polyhedra)被定义为有限个线性等式和不等式的解集(集合):
P = { x ∣ a j T x ≤ b j , j = 1 , ⋯ , m , c j T x = d j , j = 1 , ⋯ , p } (5) \mathcal P = \{x| a_j^Tx \leq b_j,\, j=1,\cdots,m, \quad c_j^Tx=d_j,\, j =1,\cdots,p\} \tag{5} P={x∣ajTx≤bj,j=1,⋯,m,cjTx=dj,j=1,⋯,p}(5)
不等式表达的是半空间;等式表达式超平面。所以多面体实际上是一些半空间和一些超平面的交集。
上面是由五个半空间的交集定义的多面体。
但要注意,多面体不一定是有界的,只有一个半空间约束的也叫多面体。
如果是有界的就称为有界多面体,多面体是凸集。
单纯形
单纯形(Simplex)是一种特殊的多面体。
在 R n R^n Rn空间中选择 v 0 , ⋯ , v k v_0,\cdots,v_k v0,⋯,vk共 k + 1 k+1 k+1个点, v 1 − v 0 , ⋯ , v k − v 0 v_1-v_0,\cdots,v_k-v_0 v1−v0,⋯,vk−v0线性无关,则与上述点相关的单纯形为:
C = conv { v 0 , ⋯ , v k } = { θ 0 v 0 + ⋯ + θ k v k , θ ≥ 0 , 1 T θ = 1 } (6) C=\text{conv} \{v_0,\cdots,v_k\} = \{\theta_0v_0 +\cdots + \theta_kv_k,\theta \ge 0,\pmb 1^T\theta = 1\} \tag{6} C=conv{v0,⋯,vk}={θ0v0+⋯+θkvk,θ≥0,1Tθ=1}(6)
显然这是一个凸包,其中 θ \theta θ向量的每个分量都大于零,且 θ \theta θ各分量之和等于1。
这个单纯形的仿射维数为 k k k,因此也称为 R n R^n Rn空间的 k k k维单纯形。
一些常见的单纯形: 1维单纯形是一条线段;2维单纯形是一个三角形(包含其内部);3维单纯形是一个四面体。
我们来看二维空间单纯形的例子。
在二维空间中选择 k = 1 k=1 k=1,即选择两个点: v 0 , v 1 v_0,v_1 v0,v1。
那么 v 1 − v 0 v_1 -v_0 v1−v0是否是线性无关的,显然只要这个向量不等于零,它就是线性无关的。由这两点所构造的单纯形是一个线段。
如果把 k k k加1,即令 k = 2 k=2 k=2,那么此时就有两个向量了:
此时所对应的单纯形就是包含内部的三角形:
如果再让 k + 1 = 3 k+1=3 k+1=3,那么无法在二维空间中构成单纯形,因为二维空间只需要两个向量就能确定,三个向量一定不是线性无关的。
证明: 单纯形是多面体的一种
解: 首先基于单纯的定义
x ∈ C ∈ R n x \in C \in R^n x∈C∈Rn, C C C为单纯形 ⇔ \Leftrightarrow ⇔ x = θ 0 v 0 + ⋯ + θ k v k , θ ≥ 0 , 1 T θ = 1 x = \theta_0v_0 +\cdots + \theta_kv_k, \quad \theta \ge 0,\pmb 1^T\theta = 1 x=θ0v0+⋯+θkvk,θ≥0,1Tθ=1, v 1 − v 0 , ⋯ , v k − v 0 v_1-v_0,\cdots,v_k-v_0 v1−v0,⋯,vk−v0线性无关。
定义一个新的向量和矩阵:
[ θ 1 ⋯ θ k ] T = y y ≥ 0 1 T y ≤ 1 [ v 1 − v 0 , ⋯ , v k − v 0 ] = B ∈ R k × k [\theta_1 \cdots \theta_k]^T = y\quad y\geq 0 \quad \pmb 1^T y \leq 1 \\ [v_1-v_0, \cdots, v_k - v_0] = B \in R^{k \times k} [θ1⋯θk]T=yy≥01Ty≤1[v1−v0,⋯,vk−v0]=B∈Rk×k
注意这个向量去掉了 θ 0 \theta_0 θ0,所以 1 T y ≤ 1 \pmb 1^T y \leq 1 1Ty≤1。
然后把 x x x拆开
x ∈ C ⇔ x = θ 0 v 0 + ⋯ + θ k v k = v 0 − v 0 ( 1 − θ 0 ) + θ 1 v 1 + ⋯ + θ k v k = v 0 − v 0 ( θ 1 + θ 2 + ⋯ + θ k ) + θ 1 v 1 + ⋯ + θ k v k = v 0 + θ 1 ( v 1 − v 0 ) + ⋯ + θ k ( v k − v 0 ) = v 0 + B y (7) \begin{aligned} x \in C \Leftrightarrow x &=\theta_0v_0 +\cdots + \theta_kv_k\\ &= v_0 - v_0(1-\theta_0) + \theta_1 v_1 + \cdots + \theta_k v_k\\ &= v_0 - v_0(\theta_1 + \theta_2 + \cdots + \theta_k) + \theta_1 v_1 + \cdots + \theta_k v_k \\ &= v_0 +\theta_1(v_1 - v_0) + \cdots + \theta_k(v_k - v_0)\\ &= v_0 + By \end{aligned} \tag{7} x∈C⇔x=θ0v0+⋯+θkvk=v0−v0(1−θ0)+θ1v1+⋯+θkvk=v0−v0(θ1+θ2+⋯+θk)+θ1v1+⋯+θkvk=v0+θ1(v1−v0)+⋯+θk(vk−v0)=v0+By(7)
因为 B B B中的 k k k个向量是线性无关的,所以 r a n k ( B ) = k , k ≤ n rank(B)=k, \, k \leq n rank(B)=k,k≤n,说明 B B B是一个列满秩矩阵。
所以可以把 B B B变成一个
[ I k 0 ] \begin{bmatrix} I_k\\ 0 \end{bmatrix} [Ik0]
上面是一个 k × k k\times k k×k的单位阵,下面是一个 ( n − k ) × k (n-k) \times k (n−k)×k的零矩阵。
即存在非奇异矩阵
A = [ A 1 A 2 ] n × n A =\begin{bmatrix} A_1\\ A_2 \end{bmatrix}_{n \times n} A=[A1A2]n×n
可以使得
A B = [ A 1 A 2 ] B = [ I k 0 ] AB = \begin{bmatrix} A_1\\ A_2 \end{bmatrix} B = \begin{bmatrix} I_k\\ 0 \end{bmatrix} AB=[A1A2]B=[Ik0]
把 ( 7 ) (7) (7)式两边左乘这样一个 A A A有:
A x = A v 0 + A B y ⇔ [ A 1 A 2 ] v 0 + [ A 1 B A 2 B ] y ⇔ { A 1 x = A 1 v 0 + y A 2 x = A 2 v 0 ⇔ { A 1 x ≥ A 1 v 0 1 T A 1 x ≤ 1 + 1 T A 1 v 0 利用 y 的性质得到这两个不等式 A 2 x = A 2 v 0 \begin{aligned} &Ax = Av_0 + ABy \\ &\Leftrightarrow \begin{bmatrix} A_1\\ A_2 \end{bmatrix}v_0 + \begin{bmatrix} A_1B\\ A_2B \end{bmatrix}y\\ &\Leftrightarrow \begin{cases} A_1x = A_1v_0 + y \\ A_2x = A_2v_0 \end{cases} \\ &\Leftrightarrow \begin{cases} A_1x \geq A_1v_0 \\ \pmb 1^T A_1x \leq \pmb 1 + \pmb 1^TA_1v_0 & 利用y的性质得到这两个不等式\\ A_2x = A_2v_0 \end{cases} \end{aligned} Ax=Av0+ABy⇔[A1A2]v0+[A1BA2B]y⇔{A1x=A1v0+yA2x=A2v0⇔⎩ ⎨ ⎧A1x≥A1v01TA1x≤1+1TA1v0A2x=A2v0利用y的性质得到这两个不等式
这里说的 y y y的性质是指 y ≥ 0 1 T y ≤ 1 y\geq 0 \quad \pmb 1^T y \leq 1 y≥01Ty≤1。
如果改变 y y y就可以得到单纯形中所有的点,即单纯形中任意的 x x x都可以由上面包含不等式的三个式子描述。
所以说任何的单纯形都是一个多面体(等式和不等式约束)。
一些矩阵集合
记对称矩阵集合 S n = { x ∈ R n × n ∣ x = x T } S^n = \{x \in R^{n \times n} | x=x^T\} Sn={x∈Rn×n∣x=xT}
记对称半正定矩阵集合 S + n = { x ∈ R n × n ∣ x = x T , x ≽ 0 } S^n_+ = \{x \in R^{n \times n} | x=x^T, x ≽ 0\} S+n={x∈Rn×n∣x=xT,x≽0}
其中,$ x ≽ 0 表示 表示 表示x$的所有奇异值都是大于等于零的。
记对称正定矩阵集合 S + + n = { x ∈ R n × n ∣ x = x T , x ≻ 0 } S_{++}^n = \{x \in R^{n \times n} | x=x^T, x ≻ 0\} S++n={x∈Rn×n∣x=xT,x≻0}
那这三个集合是不是凸集?
我们先来看集合 S + n S_+^n S+n有什么性质。
回顾下凸锥的定义,集合 C C C是凸锥(Convex cone) 等价于对于任意 x 1 , x 2 ∈ C x_1,x_2 \in C x1,x2∈C和 θ 1 , θ 2 ≥ 0 \theta_1,\theta_2 \geq 0 θ1,θ2≥0都有 θ 1 x 1 + θ 2 x 2 ∈ C \theta_1x_1 + \theta_2x_2 \in C θ1x1+θ2x2∈C。
证明: S + n S_+^n S+n是凸锥
∀ θ 1 ≥ 0 , θ 2 ≥ 0 ∀ A , B ∈ S + n \forall \theta_1 \geq 0,\theta_2 \geq 0\quad \forall A,B \in S_+^n ∀θ1≥0,θ2≥0∀A,B∈S+n证明凸锥组合 θ 1 A + θ 2 B ∈ S + n \theta_1A + \theta_2B \in S_+^n θ1A+θ2B∈S+n。
对称很好证明,如果 A , B A,B A,B都是对称矩阵,那么它们的凸锥组合也一定是对称矩阵。
如何证明半正定呢?如何矩阵 A A A或 B B B是半正定矩阵的话,那么对于任意的 X X X有:
∀ x ∈ R n x T A x ≥ 0 x T B x ≥ 0 \forall x \in R^n \quad x^TAx \geq 0 \quad x^TBx \geq 0 ∀x∈RnxTAx≥0xTBx≥0
其中$ x^TAx, x^TBx$都是标量。
下面我们要证明这里的凸锥组合也满足这个性质,即
x T ( θ 1 A + θ 2 B ) x = x T θ 1 A x + x T θ B x ≥ 0 x^T(\theta_1 A + \theta_2B)x = x^T\theta_1Ax + x^T\theta Bx \geq 0 xT(θ1A+θ2B)x=xTθ1Ax+xTθBx≥0
证明完毕。
如果 A , B A,B A,B都是对称矩阵,那么它们的凸锥组合也一定是对称矩阵,所以对称的矩阵集合也是一个凸锥。
那对称的正定矩阵集合是不是凸锥呢?
考虑最简单的情况,假设维度 n = 1 n=1 n=1, S + n = R + S_+^n = R_+ S+n=R+,即变成了一个非负的实数空间。
首先标量的转置是等于本身的,其次这个标量值要大于等于零的。
对应的 S + + n = R + + S_{++}^n = R_{++} S++n=R++,即一个正实数集合,那么显然不是凸锥,因为它不包括原点(零),但是它是一个凸集。
S n = R S^n=R Sn=R就是一个实数了。