凸集
对于点集C,如果∀x,y∈C满足以x,y为端点的线段都落在C内,就称C为凸集。以x,y为端点的线段写成方程的形式是u=x+θ(y−x),θ∈[0,1]。因此“线段落在C内”这一条件可以写作“θx+(1−θ)y∈C,θ∈(0,1)”。通常把1−θ记作θˉ,把θx+θˉy称为x,y的凸组合。于是验证凸集只要验证两两点的凸组合都落在凸集内。
一般地,n个点的凸组合定义为θ1x1+⋯+θnxn,其中θi≥0,i=1∑nθi=1。如果x1,⋯,xn都在凸集C内,那么它们的凸组合也在C内(对n归纳,证明很容易)。
常见的凸集有:空集,Rn,超平面, 多面体,1-范数球,半正定矩阵集合等。证明它们是凸集只需验证它们两两的凸组合落在集合内。
保凸运算
凸集的交集依然是凸集:C=i∈I⋂Ci,因为显然交集内任意两点的凸组合依然在凸集中,可见“交”是保凸运算。
对于向量x,x→Ax的变换称为线性变换,x→Ax+b的变换称为仿射变换。仿射变换是保凸运算。设仿射映射Ax+b为f(x),凸集C的像f(C)依然是凸集。反过来,如果某个仿射变换的像是凸集,其原像也是凸集:C′是凸集⇒f−1(C′)是凸集。
凸包
对于点集S,定义S的凸包conv(S)为包含S的最小凸集(最小指任何conv(S)的真子集都不是包含S的凸集,或任何包含S的凸集都包含conv(S))。下面证明,conv(S)恰好是S中所有任取m个点做凸组合得到的所有点集合,即conv(S)={i=1∑mθixi∣xi∈S,θi≥0,i=1∑mθi=1}。“包含S”与“凸集”是显然的,而任何一个满足“包含S的凸集”的集合C一定包含上式的右式,因此S就是最小的。
我们定义过线性独立是指若干向量的线性组合为0向量时所有的系数都为0。下面定义仿射独立的概念,n+1个点仿射独立当且仅当从中选取一个点并让剩余点与它做差后的n个向量线性独立。对于给定的m+1个仿射独立的点x0,⋯,xm,称它们构成的凸包conv{x0,⋯,xm}为这m+1个点的单纯形。
凸集上的投影
定义点x到点集C的距离为C中的点到x距离的下确界,即dist(C,x)=z∈Cinf∥x−z∥。下面我们证明,如果C是凸集并且是闭集,那么存在一个唯一的x^使得∥x−x^∥=dist(C,x)。这个x^就称为x在C上的投影,记为PC(x)。
先证存在性。任取C中某个y,取S=C∩Bˉ(x,∥x−y∥),其中Bˉ是以第一个参数为球心,第二个参数为半径的闭球。由于C∖S中的点到x的距离都要大过∥x−y∥,因此不可能小于dist(C,x),于是我们只需证明S中存在∥x−y∥关于y的最小值存在。因为这个最小值一旦存在就意味着它是C上的最小值,因此也就等于dist(C,x)。而闭集与闭集的交集依然是闭集,而闭球是有界集,因此S是有界闭集(紧集)。∥x−y∥关于y显然是连续函数。紧集上的连续函数存在最小值。证毕。
再证唯一性。假如有两个点处取到最小值,那么这两个点与x形成等腰三角形。因为C是凸集, 等腰三角形的底边都落在集合内。连接底边的中点与x,得到的线段必然小于腰。与最小值矛盾。(代数证明用向量的极化恒等式)
凸集上的投影有下面的性质:
如果C是凸集并且是闭集,那么x^=PC(x)当且仅当∀z∈C都有⟨x−x^,z−x^⟩≤0。这在直观上是容易想象的,它指出由投影点指向x与凸集上另外一点的两条向量的夹角不可能是锐角,这恰好体现了“凸性”。(证明时为了方便我们可以引入参数t来描述线段这一性质)。
这个性质的一个推论是,对于两个点x,y,它们一定满足∥PC(x)−PC(y)∥≤∥x−y∥。这称为凸集上投影的非扩张性,投影点间的距离相比于两点原来的距离不会变得更长。从几何上看,这四个点形成的类似四边形的形状的两个底角都不是锐角,因此底边的长度会更短。
我们还可以这样描述凸性:任取闭的凸集C外的一点x0,我们都可以找到一个过x0的超平面,使得C严格落在该超平面的一侧。这个性质用数学语言描述为,存在单位向量w使得x∈Csup⟨x,w⟩<⟨x0,w⟩,其中w就是超平面的法向量。容易发现,这要把w取在PC(x0)到x0的方向上就好了。
现在考虑x0落在边界上的情况。凸集具有这样的性质,任取它的一个边界点x0,都存在一个过x0的超平面使得凸集落在它的一侧(注意,这里我们没有要求C是闭集)。用数学语言描述,∀x0∈\partC,∃P={x∣⟨w,x⟩=⟨w,x0⟩},使得∀x∈C,⟨w,x⟩≤⟨w,x0⟩。这样的超平面称为支撑超平面。注意支撑超平面不一定是唯一的(例如,三角形是凸集,在它的一个角上就存在不只一条直线把它“支撑”起来)。为了证明这一点,我们先假设C是闭集。这样我们就可以用刚才的结论了。我们取一系列点逼近x0,于是有一列满足不等式的wi。由于wi是单位向量,它的每一维都是有界的,于是我们可以找到一个w的收敛子列,这样我们就最终收敛到了一个w,并容易证明这就是我们要找的超平面。对于C不是闭集的情况,我们可以取它的闭包。唯一的问题是,闭包的边界点和原集合的边界点并不能等价。而事实上我们可以证明对于凸集,闭包的边界点就是原集合的边界点,证明略。
现在假设我们有两个不交的凸集C1,C2。下面我们要证明存在这样的超平面,使得C1,C2分别落在超平面的两侧。这样的超平面称为分离超平面。用数学描述,只要证明存在w使得∀x1∈C1,x2∈C2,⟨w,x1⟩≤⟨w,x2⟩恒成立。也即⟨w,x1−x2⟩≤0。把所有的x1−x2看作一个新的集合,容易发现这也是一个凸集。那么由于注意到0向量不落在集合内,我们通过刚才的结论就已经找到了我们要的超平面了。
凸函数
凸函数是对于任意两个自变量x,y都满足Jensen不等式成立的函数,即∀x,y,∀θ∈(0,1)都有f(θx+θˉy)≤θf(x)+θˉf(y),即自变量的凸组合对应的函数值始终不大于相应自变量对应的函数值做同样的凸组合。当然为了满足θx+θˉy始终在定义域内,我们要求凸函数的定义域dom f必须也要是凸集。直观上,函数的图形一定是“凸”的。把Jensen不等式中的小于等于改作小于,称为“严格凸函数”。改作大于等于,称为“凹函数”。
一个多元函数是凸函数,当且仅当取任意定义域中的直线,在该直线上函数是一元情形下的凸函数。
可微函数f是凸函数当且仅当∀x,y∈S,f(y)≥f(x)+∇f(x)⊤(y−x),这称为凸函数判定的一阶条件。这意味着从某个点x处看,整个函数都落在该点的切平面上方。将梯度的那一项理解为方向导数,这就回到了一元的情况:切线斜率始终小于割线斜率。
二阶可微函数f是凸函数当且仅当∀x∈S,∇2f(x)始终是半正定的,这称为凸函数判定的二阶条件。∇2f称为Hesse矩阵。