参考资料:
1.凌青老师的凸优化课(b站)
2.Stephen Boyd的《凸优化》中译本(清华大学出版社)
文章目录
什么是凸优化
先大致看一下凸优化的定义。
对于一个优化问题,如果目标函数和约束函数都是凸函数,即对任意的
x
,
y
∈
R
n
x,y \in\mathbf{R}^{n}
x,y∈Rn 和
α
,
β
∈
R
\alpha,\beta\in\mathbf{R}
α,β∈R,且满足
α
+
β
=
1
,
α
⩾
0
,
β
⩾
0
\alpha+\beta=1,\alpha\geqslant0,\beta\geqslant0
α+β=1,α⩾0,β⩾0,下列不等式成立:
f
i
(
α
x
+
β
y
)
⩽
α
f
i
(
x
)
+
β
f
i
(
y
)
,
i
=
0
,
1
,
.
.
.
,
m
f_{i}(\alpha x+\beta y)\leqslant\alpha f_{i}(x)+\beta f_{i}(y),i=0,1,...,m
fi(αx+βy)⩽αfi(x)+βfi(y),i=0,1,...,m
这样的函数即为凸函数。
也就是目标函数是凸函数,约束是一个凸集(即约束也由若干个凸函数组成),这样的问题凸优化问题。
这个定义比较绕。
下面开始从一系列基本概念(如仿射集),一步步将思路导向凸优化。
仿射集(Affine Set)
空间中两点连成的直线、线段的表达
先讲讲贯穿空间中的两个点
x
1
x_1
x1、
x
2
x_2
x2(
x
1
,
x
2
∈
R
n
x_1,x_2\in\mathbf{R}^{n}
x1,x2∈Rn)的直线如何表达:
定义一个变量实数
θ
∈
R
\theta\in\mathbf{R}
θ∈R,则有直线:
y
=
θ
x
1
+
(
1
−
θ
)
x
2
y=\theta x_1+(1-\theta)x_2
y=θx1+(1−θ)x2
一定贯穿
x
1
x_1
x1、
x
2
x_2
x2两点。
如果要将这条线上的点集限制在两点之间,需要限定
θ
\theta
θ的范围在0到1之间。
那么
y
=
θ
x
1
+
(
1
−
θ
)
x
2
,
θ
∈
[
0
,
1
]
y=\theta x_1+(1-\theta)x_2,\theta\in[0,1]
y=θx1+(1−θ)x2,θ∈[0,1] 则表示为连接两点的线段。
仿射集
先看一个直观的定义:如果一个集合 C C C是仿射集,则任意选取集合中两点 x 1 , x 2 ∈ C x_1,x_2\in C x1,x2∈C,则连接 x 1 , x 2 x_1,x_2 x1,x2的直线也在集合内。
由此可见,一条直线本身也是一个仿射集,而线段不是仿射集(线段上两点的连线是直线)。
整个二维空间
R
2
\mathbf{R}^{2}
R2也是一个仿射集。二维空间中的一个正方形点集就不是仿射集。
我们可以对仿射集做一个更复杂严谨的定义:
设
x
1
,
.
.
.
,
x
k
∈
C
,
θ
1
,
.
.
.
,
θ
k
∈
R
x_1,...,x_k\in C,{\theta}_1,...,{\theta}_k\in \mathbf{R}
x1,...,xk∈C,θ1,...,θk∈R,
且
θ
1
+
.
.
.
+
θ
k
=
1
{\theta}_1+...+{\theta}_k=1
θ1+...+θk=1,
我们定义一个仿射组合:
θ
1
x
1
+
⋯
+
θ
k
x
k
\theta_{1} x_{1}+\cdots+\theta_{k} x_{k}
θ1x1+⋯+θkxk
如果
C
C
C是一个仿射集,那么这个仿射组合仍然在
C
C
C内。
寻找具有良好性质的仿射集
如上,已知一个(由两点定义的)仿射集:
C
C
C是仿射集,
x
1
,
x
2
∈
C
x_1,x_2\in C
x1,x2∈C,那么
θ
x
1
+
(
1
−
θ
)
x
2
∈
C
\theta x_1+(1-\theta)x_2\in C
θx1+(1−θ)x2∈C
我们看这个仿射集,
x
1
,
x
2
x_1,x_2
x1,x2的系数要求和为1。
那么可不可以存在一个仿射集,不需要有这样的系数和为1的要求呢?
即:
C
C
C是仿射集,
x
1
,
x
2
∈
C
x_1,x_2\in C
x1,x2∈C,那么
α
x
1
+
β
x
2
∈
C
\alpha x_1+\beta x_2\in C
αx1+βx2∈C,
α
,
β
\alpha ,\beta
α,β为实数。
可以寻找一下这样的仿射集。
①假设有一个二维空间中的直线,它是一个仿射集,过
x
1
,
x
2
x_1,x_2
x1,x2两点。设
α
,
β
=
1
\alpha ,\beta=1
α,β=1,那么
x
1
+
x
2
x_1+x_2
x1+x2 这点不在这条线上。这个仿射集不具有这样的性质。
②将这条直线移到过原点,我们会发现,
x
1
+
x
2
x_1+x_2
x1+x2在直线上,且无论
α
,
β
\alpha ,\beta
α,β取何值,点都在这条线上。这个仿射集具有这样的性质!
我们来探究这样的仿射集如何得到。
如果能得到这样的构造方法,我们就可以从一个普通的仿射集中通过一种简单变换,构造出一个特殊的仿射集,使其具有良好的性质(如
α
,
β
\alpha ,\beta
α,β取值不受限)。
任意给一个仿射集
C
C
C(注意它不满足
α
x
1
+
β
x
2
∈
C
\alpha x_1+\beta x_2\in C
αx1+βx2∈C),
C
C
C中所有的元素都减去
x
0
x_0
x0,而
x
0
x_0
x0也是取自
C
C
C中的任意一个元素,这样得到一个新集合
V
V
V。
即
C
C
C相对
x
0
x_0
x0做了一个平移。
那么这个新集合
V
V
V是与
C
C
C相关的一个子空间。
即:
V
=
C
−
x
0
=
{
x
−
x
0
∣
x
∈
C
}
,
x
0
∈
C
V=C-x_{0}=\left\{x-x_{0} \mid x \in C\right\},x_0 \in C
V=C−x0={x−x0∣x∈C},x0∈C
那么对于这个集合
V
V
V:
①它是一个仿射集
②它具有性质:
x
1
,
x
2
∈
V
x_1,x_2\in V
x1,x2∈V,那么
α
x
1
+
β
x
2
∈
V
\alpha x_1+\beta x_2\in V
αx1+βx2∈V,
α
,
β
∈
R
\alpha ,\beta\in\mathbf{R}
α,β∈R。
(证明见凌青老师的视频或书)
总结一下:
如果有任意一个仿射集
C
C
C,我们做一个平移变换
C
−
x
0
C-x_0
C−x0,可构造出一个新的仿射集,它是原仿射集的一个子空间。
(注意这个子空间是与
C
C
C相关的子空间,它不能脱离于
C
C
C单独存在)
由于减去了一个自己包含的
x
0
x_0
x0,它必定经过原点。
它具有比较良好的性质,比如
α
x
1
+
β
x
2
∈
C
\alpha x_1+\beta x_2\in C
αx1+βx2∈C,其中
α
+
β
\alpha+\beta
α+β 不再要求等于1。
线性方程组的解是仿射集
任意一个线性方程组的解空间都是一个仿射集。
比如我们有以下线性方程组:
C
=
{
x
∣
A
x
=
b
}
C=\{x \mid A x=b\}
C={x∣Ax=b},其中
A
∈
R
m
×
n
,
b
∈
R
m
,
x
∈
R
n
A \in \mathbf{R}^{m \times n}, b \in\mathbf{R}^{m}, x\in\mathbf{R}^{n}
A∈Rm×n,b∈Rm,x∈Rn
集合
C
C
C是该线性方程组的解集(解空间),可以证明集合
C
C
C是一个仿射集。
证明:
我们一样可以构造
C
C
C的子空间,我们可以证明
C
C
C的零空间(把b改成0,即
{
x
∣
A
x
=
0
}
\{x \mid A x=0\}
{x∣Ax=0})就是一个子空间,具有和之前的构造仿射集一样的良好性质。
反过来说,任意一个仿射集,也可以写成一个线性方程组的解集。
仿射包
现在我们考虑这样一个问题:
有任意集合
C
C
C(不一定是仿射集),我们如何构造尽可能小的仿射集?
我们称这样的集合为仿射包,记为
aff
C
\text {aff } C
aff C。
在集合
C
C
C中任意取
k
k
k个点,构造一个仿射组合,把所有这样的仿射组合放到一个新的集合中,即为集合
C
C
C的仿射包。
表示为:
aff
C
=
{
θ
1
x
1
+
⋯
+
θ
k
x
k
∣
x
1
,
⋯
,
x
k
∈
C
,
θ
1
+
⋯
+
θ
k
=
1
}
\text { aff } C=\left\{\theta_{1} x_{1}+\cdots+\theta_{k} x_{k} \mid x_{1}, \cdots, x_{k} \in C, \theta_{1}+\cdots+\theta_{k}=1\right\}
aff C={θ1x1+⋯+θkxk∣x1,⋯,xk∈C,θ1+⋯+θk=1}
举例:
①如果C是空间中两个点,它的仿射包是一条直线
②如果C是空间中三个点,它的仿射包是整个空间
R
2
\mathbf{R}^{2}
R2
③如果 C C C是一个仿射集,它的仿射包就是它本身。
凸集(Convex Set)
凸集的学习类比仿射集。仿射集是直线,凸集就是线段。
凸集和凸组合
如果一个集合
C
C
C是凸集,它的任意两点之间的线段仍然在
C
C
C内。
即
x
1
,
x
2
∈
C
x_1,x_2\in C
x1,x2∈C,存在任意
θ
∈
[
0
,
1
]
{\theta}\in [0,1]
θ∈[0,1],使
θ
x
1
+
(
1
−
θ
)
x
2
∈
C
\theta x_{1}+(1-\theta) x_{2} \in C
θx1+(1−θ)x2∈C
因此仿射集是凸集的一个扩展情形,凸集要求更严格。
凸组合类比仿射组合的定义。多了[0,1]区间限制。
一个集合
C
C
C,设任意点
x
1
,
.
.
.
,
x
k
∈
C
,
θ
1
,
.
.
.
,
θ
k
∈
R
x_1,...,x_k\in C,{\theta}_1,...,{\theta}_k\in \mathbf{R}
x1,...,xk∈C,θ1,...,θk∈R,
且
θ
1
+
.
.
.
+
θ
k
=
1
{\theta}_1+...+{\theta}_k=1
θ1+...+θk=1,
θ
1
,
.
.
.
,
θ
k
∈
[
0
,
1
]
{\theta}_1,...,{\theta}_k\in[0,1]
θ1,...,θk∈[0,1]
那么点
θ
1
x
1
+
⋯
+
θ
k
x
k
\theta_{1} x_{1}+\cdots+\theta_{k} x_{k}
θ1x1+⋯+θkxk为(点
x
1
,
.
.
.
,
x
k
x_1,...,x_k
x1,...,xk的)一个凸组合。
这样我们可以扩充凸集的定义,即:
如果
C
C
C为凸集,那么
C
C
C中任意元素的凸组合都
∈
C
\in C
∈C
凸包(Convex Hull)
我们也可以从任意集合 C C C,构造尽可能小的凸集。
我们称这样的集合为凸包,记为
conv
C
\text {conv } C
conv C。
在集合
C
C
C中任意取
k
k
k个点,构造一个凸组合,把所有这样的凸组合放到一个新的集合中,即为集合
C
C
C的凸包。
表示为:
conv
C
=
{
θ
1
x
1
+
⋯
+
θ
k
x
k
∣
x
1
,
⋯
,
x
k
∈
C
,
θ
1
,
.
.
.
,
θ
k
∈
[
0
,
1
]
,
θ
1
+
⋯
+
θ
k
=
1
}
\text {conv } C=\left\{\theta_{1} x_{1}+\cdots+\theta_{k} x_{k} \mid x_{1}, \cdots, x_{k} \in C,{\theta}_1,...,{\theta}_k\in[0,1], \theta_{1}+\cdots+\theta_{k}=1\right\}
conv C={θ1x1+⋯+θkxk∣x1,⋯,xk∈C,θ1,...,θk∈[0,1],θ1+⋯+θk=1}
凸集和凸包的例子
几个二维空间凸集的例子:
凸包的图例:
上图的点集的凸包可以理解成用一根橡皮筋绑住外围点的样子。
凸锥(Convex Cone)
锥、凸锥的定义
我们先看看锥和凸锥的定义。
锥(Cone):
集合
C
C
C是锥,那么对于
C
C
C中任意一个元素
x
x
x,取
θ
⩾
0
\theta\geqslant0
θ⩾0,一定有:
θ
x
∈
C
\theta x\in C
θx∈C
凸锥(Convex Cone):
集合
C
C
C是凸锥,那么对于
C
C
C中任取至少两个元素
x
1
,
x
2
x_1,x_2
x1,x2,取
θ
1
,
θ
2
⩾
0
{\theta}_1,{\theta}_2\geqslant0
θ1,θ2⩾0,一定有:
θ
1
x
1
+
θ
2
x
2
∈
C
{\theta}_1x_1+{\theta}_2x_2\in C
θ1x1+θ2x2∈C
上面凸锥的概念中, θ 1 , θ 2 {\theta}_1,{\theta}_2 θ1,θ2必须要非负,但和凸集相比没有和为1的限制。
图例
①二维空间中,有从原点出发的三条射线,所有射线上的点构成一个集合。
这个集合符合锥的定义,所以它是一个锥。
并且我们能想象如果这些射线不是从原点发射出去的,那就不是一个锥。
但这个集合不是一个凸锥。
②二维空间中,有从原点出发,由两条射线围成了一个往外无线延伸的扇形。
我们在其上任取两点
x
1
,
x
2
x_1,x_2
x1,x2,设系数
θ
1
,
θ
2
{\theta}_1,{\theta}_2
θ1,θ2为1,那么根据平行四边形法则,其向量和一定也在这个扇形区域内。
这个集合就是一个凸锥。
所以我们看到锥系列的最大特征是过原点。
它是非负齐次的。
凸锥组合、凸锥包
类比仿射组合、凸组合,我们可以定义凸锥组合。以及凸锥包。
凸锥组合:
一个集合中取任意点
x
1
,
.
.
.
,
x
k
x_1,...,x_k
x1,...,xk,
且
θ
1
,
.
.
.
,
θ
k
⩾
0
{\theta}_1,...,{\theta}_k\geqslant0
θ1,...,θk⩾0
那么点
θ
1
x
1
+
⋯
+
θ
k
x
k
\theta_{1} x_{1}+\cdots+\theta_{k} x_{k}
θ1x1+⋯+θkxk为(点
x
1
,
.
.
.
,
x
k
x_1,...,x_k
x1,...,xk的)一个凸锥组合。
凸锥包即包含集合本身的最小凸锥。
即取集合中任意点的凸锥组合都在凸锥包内。
凸锥包
C
=
{
θ
1
x
1
+
⋯
+
θ
k
x
k
∣
x
1
,
⋯
,
x
k
∈
C
,
θ
1
,
.
.
.
,
θ
k
⩾
0
}
\text {凸锥包 } C=\left\{\theta_{1} x_{1}+\cdots+\theta_{k} x_{k} \mid x_{1}, \cdots, x_{k} \in C,{\theta}_1,...,{\theta}_k\geqslant0\right\}
凸锥包 C={θ1x1+⋯+θkxk∣x1,⋯,xk∈C,θ1,...,θk⩾0}
凸锥包的图例: