参考资料:
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}
凸锥包的图例: