Hiroki

大部分笔记已经转移到 https://github.com/hschen0712/machine_learning_notes ,QQ:357033150, 欢迎交流

凸优化中的基本概念

1.1 什么是凸集?

简单来说, 凸集是一个点集, 这个点集有一个性质, 就是在这个集合中任取不同的两个点x和y, 他们之间的线段(包括端点)上的点都属于这个点集,那么就说这个点集是一个凸集。

比如下图中左边的图形是凸集,而右边不是,因为我们可以找到两个点,使它们之间的线段上的点不在集合中

数学上,凸集的定义如下:

给定集合$C$,$\forall x,y\in C$,$0\leq\theta\leq 1$,如果有

$$ \theta x + (1-\theta y)\in C$$

我们就称集合C是凸集,我们把点$\theta x + (1-\theta y)$称为x和y的凸组合。

1.2 什么是凸函数?

假设有一个函数$f:\mathbb{R}^n\to \mathbb{R}$,记其定义域为$\mathcal{D}(f)$,如果$\mathcal{D}(f)$是凸集,且在其中任取两个点$x,y$,满足以下性质:

$$ f(\theta x + (1-\theta y))\leq \theta f(x)+(1-\theta)f(y) $$

那么就称$f$为凸函数。

注意:定义域是凸集这个要求不是必须的,其出发点只是为了使x,y的凸组合有定义

关于凸函数,直观上可以用下图来加深理解:

简单来说,我们在定义域任取两个点x,y, 连接他们得到一条线段,如果这个线段上的点都位于对应函数值上方,我们就说该函数是一个凸函数。

更进一步,如果$x\neq y$且$0<\theta <1$我们称$f$是严格凸的。如果$-f$是凸函数,那么$f$就是凹函数。如果$-f$是严格凸函数,那么$f$就是严格凹函数。

1.3 凸函数的等价判别方法

上面我们讲了什么是凸函数,然而这个定义在现实中很难用于判断一个函数是不是凸的,因此介绍几个等价的定义。

1.3.1 一阶近似

假设函数$f:\mathbb{R}^n\to \mathbb{R}$是可导函数(也就是说$f(x)$的梯度$\nabla_x f(x)$在整个定义域上都存在),则$f$是凸函数当且仅当 其定义域是凸集,且对于所有的$x,y\in\mathcal{D}(f)$有下式成立:

$$ f(y)\geq f(x)+\nabla_x f(x)^T(y-x) $$

 我们将$f(x)+\nabla_x f(x)^T(y-x)$叫做对f的一阶近似,其物理意义实际上是经过点x的切平面,我们用这个切平面上的点来近似$f(y)$。这个公式的含义是:如果f是凸函数,那么它的一阶近似值始终位于函数值的下方。

 1.3.2 二阶近似

假设函数$f:\mathbb{R}^n\to \mathbb{R}$二阶可导(即海塞矩阵在定义域上都有定义),则f是凸函数当且仅当 其定义域是凸集且其海塞矩阵半正定,即:

$$ \nabla^2_x f(x)\succeq 0$$

可能有些同学忘了海塞矩阵长什么样了,这里提一下。假设我们的变量来自n维空间,即$x\in\mathbb{R}^n$,我们记$x=(x_1,x_2,...,x_n)=\{x_i\}_{i=1}^n$,即由n个变量组成的向量。那么海塞矩阵(记为H吧)是一个$n\times n$的方块矩阵,且

$$ H_{ij}=\frac{\partial^2 f(x)}{\partial x_i\partial x_j} $$

 也就是说,$H_{ij}$是f(x)分别对$x_i$和$x_j$进行求导两次得到的。

1.4 凸优化问题

上面已经介绍了凸集和凸函数,是时候到凸优化了吧? 别急,在介绍凸优化概念之前再啰嗦两句。

1.4.1 水平子集(sublevel sets)

由凸函数的概念出发,我们可以引出水平子集(sublevel set)的概念。假定f(x)是一个凸函数, 给定一个实数$\alpha\in\mathbb{R}$,我们把集合

$$ \{x\in\mathcal{D}(f)| f(x)\leq \alpha\}$$

叫做$\alpha-$水平子集。 也就是说$\alpha$水平子集是所有满足$f(x)\leq \alpha$的点构成的集合。利用凸函数性质,我们可以证明水平子集也是凸集:

$$ f(\theta x+(1-\theta y))\leq \theta f(x)+(1-\theta)f(y) \leq  \theta \alpha + (1-\theta) \alpha=\alpha $$

水平子集告诉我们,给凸函数添加一个上限,定义域内剩下的点构成的点集还是一个凸集。

1.4.2 仿射函数(affine functions)

数学上,我们把形如

$$ h(x)=Ax+b$$

的函数叫做仿射函数。其中,$A_{n\times m}$,一个向量$b\in\mathbb{R}^m$。直观上理解,仿射函数将一个n维空间的向量通过线性变换A映射到m维空间,并在其基础上加上向量b,进行了平移。

同理,我们可以证明,点集

$$ \{x\in\mathcal{D}(h)| h(x)= 0\}$$

是一个凸集,证明略。

1.4.3 凸优化(convex optimization)

那么回到凸优化问题上来, 什么是一个凸优化问题?

一个凸优化问题可以定义为:

其中f是一个凸函数,C是一个凸集。根据先前介绍过的水平子集等概念,上面问题又可以等价写为:

其中,g(x)是凸函数,h(x)是仿射函数。 也就是说,原约束集C被我们表示为一系列凸集的交集(数学上可以证明,凸集的交集还是凸集)。

1.4.4 局部最优(local optima)和全局最优(global optima)

局部最优:周围小范围 内没有比我小的点。

数学定义:

如果存在$R>0$,对于所有的z:$\left\|x-z\right\|_2<R$,有$f(x)\leq f(z)$,那么就称x是一个局部最优点。

全局最优:我就是整个定义域中的最小的点。

数学定义:

如果对于定义域内的所有z,有$f(x)\leq f(z)$,则称x是全局最优。

现在回到凸优化问题上, 对于凸优化问题,有一个很重要的结论:

对于凸函数来讲, 局部最优就是全局最优。证明如下:

我们用反证法证明。设$x$是一个局部最优,但不是全局最优,于是我们假设全局最优是$z^*$,那么我们有$f(x)>f(z^*)$

由x的局部最优性质,我们有 :

存在$R>0$,对于所有的z:$\left\|x-z\right\|_2<R$,有$f(x)\leq f(z)$

我们考虑$x$和$z^*$的凸组合:$z=\theta x+(1-\theta)z^*$,无论$z^*$在哪里,我们总可以找到一个$\theta$,使得$z$位于$x$的邻域内,使得$f(x)\leq f(z)$

另一方面,由凸函数性质,我们有:

$$ f(z)=f(\theta x+(1-\theta)z^*)\leq\theta f(x)+(1-\theta)f(z^*)<\theta f(x)+(1-\theta)f(x)=f(x)$$

由此得$f(z)<f(x)$,这与$f(x)\leq f(z)$矛盾, 于是我们证明了如果$x$是局部最优,那么同时它也是全局最优。

 1.5 常见凸优化问题

  •  线性规划

如果$f$和$g_i$都是仿射函数,则凸优化问题变为了线性规划问题:

 

 

  • 二次规划

线性规划中,如果$f$变为一个凸二次函数,则凸优化问题变为二次规划:

  • 二次约束二次规划

$f$和$g_i$都是凸二次函数

  • 半定规划

其中,$X\in\mathbb{S}^n$是一个n维对称方阵,并且我们将它约束为半正定矩阵。$C,A_i$都是对称矩阵。这和前面的问题有点不太相同,前面是优化一个向量,而这里是优化一个矩阵。

 

 

 参考:

http://cs229.stanford.edu/section/cs229-cvxopt.pdf

 

 

posted on 2015-10-11 23:14  Hiroki  阅读(10037)  评论(0编辑  收藏  举报

导航