1. 凸优化介绍
1.1 优化问题
1.1.1 优化问题介绍
在统计学和机器学习领域,要做的绝大部分事情都是一种优化问题,即寻找决策变量x的最优问题minx∈Df(x)\min_{x\in D}f(x)minx∈Df(x)。多数情况下,只需要将具体问题公式化为一个凸优化问题,并写成标准形式,剩下的就交给计算机求解。而具体如何求解优化问题,则需要选择合适的算法。
最初人们认为,优化问题是线性还是非线性,是优化问题的根本区别。而现在人们认为,优化问题是凸还是非凸,才是不同优化问题的根本区别。
1.1.2 优化问题的数学表示minx∈Df(x)s.t. {gi(x)⩽0, i=1,⋯ ,mhi(x)=0, i=1,⋯ ,r\min_{x\in D}f(x)\\ \text{s.t.}\ \begin{cases}g_i(x)\leqslant0,\ i=1,\cdots,m\\h_i(x)=0,\ i=1,\cdots,r\end{cases}x∈Dminf(x)s.t. {gi(x)⩽0, i=1,⋯,mhi(x)=0, i=1,⋯,r式中D=dom(f)∩⋂i=1mdom(gi)∩⋂j=1rdom(hj)D=\text{dom}(f)\cap\mathop{\bigcap}\limits_{i=1}^m\text{dom}(g_i)\cap\mathop{\bigcap}\limits_{j=1}^r\text{dom}(h_j)D=dom(f)∩i=1⋂mdom(gi)∩j=1⋂rdom(hj),dom(f)\text{dom}(f)dom(f)表示f的定义域。x称为决策变量;f(x)称为目标函数,是标量;gig_igi称为不等式约束,是个标量;hjh_jhj称为等式约束,是个标量。
如果存在某个点x∈Dx\in Dx∈D,满足m个不等式约束和n个等式约束,则x称为该优化问题的可行解(feasible point)。可行解可能不存在,也可能存在一个或多个或无穷多个,如果存在无穷多个可行解,则需要找到这些可行解中能让f(x)最小的那个点x∗x^*x∗,x∗x^*x∗称为该优化问题的最优解。
1.2 凸优化问题
1.2.1 凸集
集合C是Rn(n=1,2,⋯ )\bm{R^n}(n=1,2,\cdots)Rn(n=1,2,⋯)的子集,如果集合C满足∀x,y∈C\forall x,y\in C∀x,y∈C,推出tx+(1−t)y∈C, for all 0⩽t⩽1tx+(1-t)y\in C,\ \text{for all}\ 0\leqslant t\leqslant 1tx+(1−t)y∈C, for all 0⩽t⩽1,那么集合C就是凸集。
1.2.2 凸函数
如果函数f:Rn→Rf:R^n\to Rf:Rn→R满足1.dom(f)⊆Rn2.f(tx+(1−t)y)⩽tf(x)+(1−t)f(y), for ∀x,y∈dom(f),0⩽t⩽11. \operatorname{dom}(f) \subseteq R^n\\2. f(tx+(1-t)y)\leqslant tf(x)+(1-t)f(y),\ \text{for}\ \forall x,y\in\text{dom}(f),0\leqslant t\leqslant 11.dom(f)⊆Rn2.f(tx+(1−t)y)⩽tf(x)+(1−t)f(y), for ∀x,y∈dom(f),0⩽t⩽1则该函数为凸函数。凸函数还有其他等价的定义方法。
1.2.3 凸优化问题
在优化问题的数学表示中,若dom(f)为凸集;f,gif,g_if,gi都是凸函数;hjh_jhj为仿射(affine) 函数,即hj(x)=ajTx+bjh_j(x)=a_j^Tx+b_jhj(x)=ajTx+bj,则该问题是一个凸优化问题。不等式约束和等式约束给定了可行解的求解域,要求gig_igi为凸函数和hjh_jhj为仿射函数使得最终的可行域依然是凸集。
1.2.4 凸优化的分类
凸优化的标准问题有4类:① 线性规划(LP);② 二次规划(QP);③ 半正定规划(SDP);④ 锥规划(CP)。这4类标准问题之间是递进的包含关系,难易程度依次递增。
2. 不同类型的凸优化
2.1 线性规划LP
线性规划的数学表示:minx∈DcTxs.t. {Dix⩽di, i=1,⋯ ,mAix=bi, i=1,⋯ ,r\min_{x\in D}c^Tx\\ \text{s.t.}\ \begin{cases}D_ix\leqslant d_i,\ i=1,\cdots,m\\A_ix=b_i,\ i=1,\cdots,r\end{cases}x∈DmincTxs.t. {Dix⩽di, i=1,⋯,mAix=bi, i=1,⋯,r通常会将线性规划写成如下的标准形式:minx∈DcTxs.t. {Ax=bx⩾0\min_{x\in D}c^Tx\\ \text{s.t.}\ \begin{cases}Ax=b\\x\geqslant0\end{cases}x∈DmincTxs.t. {Ax=bx⩾0要注意标准形式并不是简单地将Dx⩽dDx\leqslant dDx⩽d变成了x⩾0x\geqslant 0x⩾0,而是通过引入松弛变量(si=di−Dixs_i=d_i-D_ixsi=di−Dix),每引入一个松弛变量,原不等式约束就会多出一个等式约束,写进Ax=bAx=bAx=b中。所以标准形式的x已经不是原来的x,而是原来的x+松弛变量。
2.2 二次规划QP
二次规划的数学表示如下:minx∈DcTx+12xTQxs.t. {Dx⩽dAx=b\min_{x\in D}c^Tx+\cfrac12x^TQx\\ \text{s.t.}\ \begin{cases}Dx\leqslant d\\Ax=b\end{cases}x∈DmincTx+21xTQxs.t. {Dx⩽dAx=b其中,若矩阵Q⩾0Q\geqslant0Q⩾0就是凸优化问题,如果Q<0Q<0Q<0就不是凸优化问题(也可能通过一些tricks重写为凸优化问题)。通常所说的QP问题,默认指Q⩾0Q\geqslant0Q⩾0。同样,为方便计算机求解,常将二次规划写成如下的标准形式:minx∈DcTx+12xTQxs.t. {Ax=bx⩾0\min_{x\in D}c^Tx+\cfrac12x^TQx\\ \text{s.t.}\ \begin{cases}Ax=b\\x\geqslant0\end{cases}x∈DmincTx+21xTQxs.t. {Ax=bx⩾0机器学习算法中的SVM就是一个QP问题。
2.3 半正定规划SDP
半正定规划的数学表示如下:minx∈DcTxs.t. {x1F1+x2F2+⋯+xnFn⩽F0Ax=b\min_{x\in D}c^Tx\\ \text{s.t.}\ \begin{cases}x_1F_1+x_2F_2+\cdots+x_nF_n\leqslant F_0\\Ax=b\end{cases}x∈DmincTxs.t. {x1F1+x2F2+⋯+xnFn⩽F0Ax=b式中,x=(x1,⋯ ,xn)T∈Rnx=(x_1,\cdots,x_n)^T\in R^nx=(x1,⋯,xn)T∈Rn;Fi∈Rd×dF_i\in R^{d\times d}Fi∈Rd×d是对称矩阵;A∈Rm×nA\in R^{m\times n}A∈Rm×n。其标准形式如下:minX∈DC⋅Xs.t. {Ai⋅X=bi, i=1,⋯ ,nX≥0\min_{X\in D}C\bm{\cdot} X\\ \text{s.t.}\ \begin{cases}A_i\bm{\cdot} X=b_i,\ i=1,\cdots,n\\X\geq0\end{cases}X∈DminC⋅Xs.t. {Ai⋅X=bi, i=1,⋯,nX≥0式中,C⋅X=∑j=1b∑i=1ncijxijC\bm{\cdot} X=\sum_{j=1}^b\sum_{i=1}^nc_{ij}x_{ij}C⋅X=∑j=1b∑i=1ncijxij;C,X∈Rn×nC,X\in R^{n\times n}C,X∈Rn×n是对称矩阵;bi∈R。b_i\in R。bi∈R。
2.4 锥规划CP
2.4.1 锥
锥的定义:对集合X,若∀x∈X\forall x\in X∀x∈X,都有θx∈X, θ⩾0\theta x\in X,\ \theta\geqslant0θx∈X, θ⩾0,则称X为一个锥。
锥并不一定是凸的,一个凸锥需要满足如下的数学性质:若∀x,y∈X\forall x,y\in X∀x,y∈X,都有θ1x+θ2y∈X, θ1,θ2⩾0\theta_1 x+\theta_2y\in X,\ \theta_1,\theta_2\geqslant0θ1x+θ2y∈X, θ1,θ2⩾0,则称X为一个凸锥。
2.4.2 锥规划
锥规划的数学表示如下:minx∈DcTxs.t. {D(x)+d⩽KAx=b\min_{x\in D}c^Tx\\ \text{s.t.}\ \begin{cases}D(x)+d\leqslant K\\Ax=b\end{cases}x∈DmincTxs.t. {D(x)+d⩽KAx=b式中,x∈Rnx\in R^nx∈Rn;D(x)是x的一个线性映射;K是一个闭凸锥。
3. 无约束凸优化问题的求解算法
3.1 无约束凸优化问题
对于一个一般的凸优化问题,如果没有不等式约束gig_igi,也没有等式约束hih_ihi,则该问题就是一个无约束凸优化问题。
对无约束凸优化问题,该问题的最优解在∇f(x)=0\nabla f(x)=0∇f(x)=0处。对于x∈Rnx\in R^nx∈Rn,则有n个方程求解n个未知数。但只有在少数情况下,方程能直接求出解析解。大多数情况下,由于∇f(x)\nabla f(x)∇f(x)是非线性的,很难得到解析解,需要设计迭代算法,利用计算机求解。
3.2 迭代算法
通常一个优化问题的迭代算法,有以下3个步骤:
- 选取起始点
- 设计算法,寻找下一个点
- 重复第2步,知道满足终止条件
算法的设计核心在于第2步,不同的算法主要是这一步的策略不同。而第2步通常有两个事情要做:
- 往哪个方向迈步子
- 步子迈多大
若根据泰勒公式的一阶近似选取下降方向,得到梯度下降。若根据泰勒公式的二阶近似选取下降方向,得到牛顿法。