1. 凸优化问题
优化问题的定义为:
x∈Dminsubject tof(x)gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,r
其中,D=dom(f)∩⋂i=1mdom(gi)∩⋂j=1pdom(hj)。
-
f被称为目标函数(objective or criterion function);
-
g被称为约束函数(inequality constraint function);
-
满足gi(x)≤0且hj(x)=0的点称为可行解(feasible point);
-
所有可行解中函数f(x)最小的点称为最优值(optimal value),记为f∗;
-
使得函数f(x)取得f∗的点x称为最优解(optimal point、solution或minimizer),当然,不是所有凸函数都存在最优解,即解为空,例如直线就不存在;
-
如果点x满足f(x)≤f∗+ϵ,则称点x为ϵ−suboptimal解。
凸优化问题相对优化问题的定义而言,要求函数f和gi(x)是凸函数,hj(x)=ajTx+bj是仿射函数(Ax+b=0)。
对于仿射集和凸集的差别在凸优化-凸集一文也做了分析,二者的差别就在于凸集是线段而仿射集是直线(一维情况下)。很明显,求解凸函数的极小值(convex minimization)和凹函数的极大值(concave maximization)都是凸优化问题(convex optimization problem)。
2. 凸优化解的集合
我们定义凸优化解的集合(Convex solution sets)为Xopt,记为:
Xopt=argminf(x)subject togi(x)≤0,i=1,…,mAx=b
- 凸优化解的集合有一个关键性质就是凸优化解的集合必为凸集。因为,如果凸优化问题不存在最优解,那么解空间为空集,为凸集;如果凸优化问题仅存在一个解,那必定为多维上的一点,而空间上的一点属于凸集;如果存在两个解,那么必定存在一条线段或者一个平面的解的集合,而线段或者平面都是凸集。接下来,就证明为什么存在两个解,就必然会存在多个解:
证明:假设x,y都是优化问题的解,那么对于∀θ,其中1≤θ≤1,则:
-
gi(θx+(1−θ)y)≤θgi(x)+(1−θ)gi(y)≤0;
-
A(θx+(1−θ)y)=θAx+(1−θ)Ay=b;
-
f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)=θf∗+(1−θ)f∗=f∗。
因此,点θx+(1−θ)y也是优化问题argminf(x)的一个解,所以点x,y之间必然存在两点连线上的任意点都是优化问题的最优解。故,凸优化问题解的集合为凸集。也就意味着如果凸优化问题存在两个包含两个以上的解时,那么其必定包含无数个解。对于这一点,其实不是特别好想象。
- 凸优化解的集合还有另外一个性质就是:如果优化函数为严格凸函数,那么它的最优解必是唯一的,即解空间Xopt只包含一个元素,如二次优化问题。
3. 凸优化问题实例:LASSO
熟悉机器学习算法里面的线性回归或者逻辑回归的同学因该明白LASSO问题,其定义为:
β∈Rpminsubject to∥y−Xβ∥22∥β∥1≤s
LASSO是Tibshirani(对就是Tibshirani)在1996年JRSSB上的一篇文章上《Regression shrinkage and selection via lasso》提出的。所谓lasso,其全称是least absolute shrinkage and selection operator,其含义是在限制了∑∥β∥1≤s的情况下,求使得残差平和达到最小的参数的估值。Tibshirani指出,对于回归算法,当s足够小的时候,会使得某些回归系数的估值是0,可以起到变量选择的作用,是逐步回归的一种表现。
因此,对于LASSO算法,其是否是凸优化问题?它的解集合是否是唯一的点?
答案是,LASSO问题是凸优化问题,因为f(x)=∥y−Xβ∥22和g(x)=∥β∥1−s均是凸函数,因此该问题为凸优化问题;如果样本数目n大于特征数目p,且X满秩,那么∇2f(β)=2XTX⪰0,关于β二阶微分恒为半正定p.s.d.,因此,解是唯一的;但是,如果样本数目n小于特征数目p,那么会造成高维特征空间上的维数灾难问题,此时,X为奇异矩阵,则解不唯一。
另一个实例是SVM算法,SVM算法的理论部分我就不多介绍了,会在机器学习算法篇章中对SVM做着重介绍,如果我们记SVM为:
β,β0,ξminsubject to21∥β∥22+Ci∑nξiξi≥0,i=1,…,nyi(xiTβ+β0)≥1−ξi,i=1,…,n
其中,∥β∥1为下图两个虚线边界的距离,ξ为引入分类错误的代价,代表下图错分样本点距正确分类边界的距离。具体如下图:
那么,该问题是否为凸优化问题呢?它的解是否是唯一?
答案是,SVM目标函数是凸优化问题,但是,它的解并不唯一,因为它不是严格凸函数。有兴趣的同学可以留言来解释为什么SVM是凸优化问题!
4. 局部最小值就是全局最小值
局部最优解的定义为:如果∃R>0,使得f(x)≤f(y),其中y满足∥x−y∥2≤R,则点x为优化问题的局部最优解(locally optimal)。
对于凸优化问题,凸函数有一个特别的性质,即局部最优解是全剧最优解(local minima are global minima),即如果x∈D,同时x满足所有约束,那么对于局部y,∥x−y∥2≤ρ,当f(x)≤f(y)时,对于所有可行解y,f(x)≤f(y)。相反,非凸优化问题则不具有该性质,如下图所示。
那么我们需要证明的是为什么凸优化问题的局部最优值就是全局最优值?
证明:这里,我们采用反证法来证明该理论,假设x为凸优化问题的局部最优解,意味着函数在ρ范围内的点的值都小于f(x)。如果我们假设定理是错误的,那么必然存在一点z,使得f(z)<f(x),且∥z−x∥2>ρ。
此时,假设存在一点y,使得y=tz+(1−t)x,其中t∈[0,1],那么:
-
y∈D,因为x∈D,同时z∈D,二者线性组合也必然存在于D;
-
gi(y)=tgi(z)+(1−t)gi(x)≤0,因为gi(z),gi(x)≤0;
-
hi(j)=ajT(tz+(1−t)x)+bj=ajT(tz+(1−t)x)+tbj+(1−t)bj=0。
因此,意味着y同样也是是凸优化问题的可行解。
然后,因为点y在t∈[0,1]内均成立,所以我们可以假设t足够小,但大于0,使得y可以落在点x以ρ为半径的圆内,这时,对于凸优化问题中可行解的两个点z,x之间的点y,我们可以得到如下公式:
f(y)≤tf(z)+(1−t)f(x)
又因为t→0,且之前假设f(z)<f(x),所以tf(z)<tf(x),因此f(y)<f(x),这就与之前最开始假设x为局部最优解的定义相违背,因此,我们最终证明得到local minima are global minima。
5. 凸优化问题的一些性质和Trick
- First-order optimality condition:对于凸优化问题minf(x),subject tox∈C,如果函数f可微,那么当且仅当满足下式时,可行解(feasible point)x为最优解。
∇f(x)T(y−x)≥0∀y∈C
- Partial optimization:如果x=(x1,x2)∈Rn1+n2,那么优化问题
x1,x2mins.t.f(x1,x2)g1(x)≤0,g2(x2)≤0
等价于:
x1mins.t.f~(x1)g1(x1)≤0
其中f~(x1)=min{f(x1,x2):g2(x2)≤0};
SVM采用的hinge loss就是利用的partial optimization的思想。如果我们把SVM优化问题的目标函数记为:
β,β0,ξminsubject to21∥β∥22+Ci∑nξiξi≥0,yi(xiTβ+β0)≥1−ξi
那么我们可以将约束改写为ξi≥max{0,1−yi(xiTβ+β0)},SVM在优化过程中选用的hinge form就是将约束中的大于等于改写为等于,即:
ξi=max{0,1−yi(xiTβ+β0)}
因此,优化目标函数就变为:
β,β0min21∥β∥22+Ci=1∑n[1−yi(xiTβ+β0)]+
上式就是SVM求解目标函数的最终形式,可称为hinge form of SVMs。
- Transformations of variables:如果函数h为单调递增函数,那么凸优化问题等价于:
minf(x),subject tox∈C⟺minh(f(x)),subject tox∈C
优化方法中的最大似然估计MLE就采用log函数对目标函数进行变换,就是采用的这个思想。
- Introducing slack variables:凸优化可以通过引入松弛因子(slack variables)来消除约束(constraints)中的不等式,我们可以把凸优化问题转换为:
minsubject tof(x)si≥0,i=1,…,mgi(x)+si=0,i=1,…,mAx=b
SVM算法都引入slack variables来允许训练误差的出现,防止模型过拟合。
5. 凸优化问题分类
凸优化问题根据目标函数和约束函数的形式分为:
- linear programs:线性规划;
- Quadratic programs:二次规划;
- Semidefinite programs:半正定规划;
- Cone programs:锥规划。
Ryan教授给了一个非常形象的例子来解释凸优化问题在优化问题领域的位置,以及以上几种优化问题间的关联关系,如下图:
线性规划问题(LPs)定义是优化问题满足以下形式,线性规划的实例包括diet problem, transportation problem, basis pursuit和Dantzig selector等:
xminsubject tocTxDx≤dAx=b
二次规划问题(QPs)定义是优化问题满足以下形式,二次规划的实例包括portfolio optimization, lasso, SVM等:
xminsubject toCTx+21xTQxDx≤dAx=b
其中,Q⪰0是半正定。这里需要注意的是,当Q不是半正定的时候,上述问题则不属于凸优化问题。同样,当Q=0时,二次规划问题就变为线性规划问题。
半正定规划问题(SDPs)定义是优化问题满足以下形式:
xminsubject tocTxx1F1+…+xnFn⪰F0Ax=b
其中,Fj∈Sd,同时,A∈Rm×n。从上面的定义可以看出,和线性规划的定义基本一样,这里SDPs要求Fj为矩阵,而LPs为向量,所以线性规划一定隶属于半正定规划的一个特例。