引言
这是中科大最优化理论的笔记,中科大凌青老师的凸优化课程,详尽易懂,基础扎实。不论是初学者还是从业多年的人,都值得系统地好好学一遍。
本文介绍种重要的凸集:超平面与半空间、球和椭球、多面体、单纯形。
超平面与半空间
超平面是具有下面形式的集合
{
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就是一个实数了。