凸优化笔记 10:凸优化问题
前面讲了那么多关于凸集、凸函数的知识,然而都是铺垫,现在我们才来到了这门课的重头戏部分——凸优化问题!
1. 一般优化问题
一般优化问题的形式为
最优解则有
注意:
- 有的优化问题有最小值,但是没有可行解,比如
; - 有的问题根本就没有最小值,比如
- 有的问题只有局部最小值,比如
上面提到的优化问题中有等式和不等式约束,这些我们都称为显式约束(explicit
constraints),同时由于
其实有约束优化问题也可以转化为无约束优化问题,只需要加一个指示函数,一开始提到的一般优化问题就可以利用
2. 凸优化问题
2.1 凸优化问题定义
凸优化问题(Convex optimization
problem)要求目标函数为凸函数,而且定义域为凸集,这样可以利用凸函数和凸集的优良性质简化问题,因此凸优化问题的一般形式为
Remarks:需要注意这里还要求等式约束均为仿射函数,这是因为我们希望定义域是凸集,假设等式约束
不是线性的,即使 是凸函数, 也不一定是凸集。比如二次等式约束 ,得到的定义域就是一个球面,显然不是一个凸集,这对优化不利。
有时候我们直接拿到的优化问题并不符合上面的形式,但是可以经过化简得到等价问题,就是凸的了,比如
2.2 凸优化问题的最优解
对于凸优化问题有一个极其重要的性质,就是
凸优化问题的局部最优解就是全局最优解
证明也很简单,若
凸优化问题的最优解还有一个很好的判据
为最优解,当且仅当
证明过程只需要应用凸函数的一阶等价定义即可,即
这个怎么直观理解呢?还记得我们之前在拟凸函数那里提到的“支撑超平面”吗?实际上
利用上面这两个性质,我们可以对很多类型的凸优化问题的最优解有一个认识。
无约束优化问题:对无约束优化问题,
这个实际上就等价于 Lagrange
乘子法,我们来看拉格朗日函数的定义
实际上这里被称为互补性条件(complementary condition),也就是 KKT 条件的一部分。
2.3 等价问题化简
有时原始优化问题比较难,可以通过等价转换进行简化。
消去等式约束:比如对一般的凸优化问题,等式约束实际上定义了一个超平面,这可以表示为特解
+ 一组基的形式
引入松弛变量:比如对于线性不等式约束的优化问题
epigraph
形式:任意标准形式的凸优化问题都可以转化为下面的形式
对某些变量最小化:实际上就是对于存在多个优化变量时,提前通过计算消去一些变量
3. 拟凸优化问题
拟凸函数跟凸函数有一些相似的性质,尤其是拟凸函数的任意下水平集都是凸集,因此很多时候对于拟凸问题,也可以用凸优化的一些方法有效解决。
拟凸优化问题(Quasi convex optimization)
的一般定义为与凸优化基本相同,只不过目标函数
Remarks:我个人觉得这里其实约束函数也可以是拟凸函数?因为即使是拟凸函数,
也可以得到凸的定义域?
但是此时拟凸优化问题就没有凸优化那么好的性质了,比如局部最优解不一定是全局最优解
尽管如此,由于拟凸函数任意下水平集
例子
最简单的例子,拟凸函数
假如当前拟凸优化问题的最优解为
4. 典型凸优化问题
4.1 线性规划(LP)
线性规划(Linear program)问题的一般形式为
例子 1:对于 piecewise-linear minimization
问题(无约束优化)
4.2 线性分式规划
线性分式规划(Linear-fractional program) 的一般形式为
4.3 二次规划(QP)
二次规划(Quadratic program)的一般形式为
与线性规划不同的是,目标函数的等高线变成了椭球面
例子:最小二乘就是最经典的二次规划的例子,
4.4 二次约束二次规划(QCQP)
二次约束二次规划(Quadratically constrained quadratic
program)的一般形式为
一般会限制
4.5 二次锥规划(SOCP)
二次锥规划(Second-order cone programming)的一般形式为
4.6 鲁棒线性规划
对于优化问题,有时候我们的参数比如
对于线性规划问题来说,比如
4.7 几何规划(GP)
首先定义单项式函数(monomial function)
正项式函数(posynomial function)
然后就可以定义几何规划(geometric program)了
首先说明,这个优化问题并不一定是凸的,因为
好,现在我们怎么把这个非凸的问题转化为凸优化问题呢?加个
4.8 半正定规划(SDP)
前面所讲到的都是标量函数,约束条件也都是函数值与 0
比大小,而前面的章节中我们也提到了广义不等式,对于正常锥则可以定义不等号。所以我们可以定义一种凸优化问题,这种凸优化问题的约束条件不再是普通不等式,而是广义不等式
注意这种带有广义不等式约束的凸优化问题与普通凸优化问题有着相同的性质,比如可行集为凸的,局部最优解就是全局最优解等。
一种简单形式的凸优化问题就是向量形式的,也就是说目标函数与约束都是仿射函数
接下来要介绍的就是重头戏半正定规划(Semidefinite
program)了,我们取
这里的不等式约束就是大名鼎鼎的线性矩阵不等式(linear matrix inequality, LMI)。
如果说我们现在有两个不等式约束怎么办呢?
例子
1:半正定规划之所以重要,是因为他的形式更广泛,前面说 SOCP
包含了 LP、QP、QCQP,而半正定规划则包含了 SOCP!比如下面的 SOCP
问题就可以转化为 SDP
例子 3:最小化矩阵范数
4.9 向量优化
前面介绍的所有优化问题的目标函数都是标量(尽管约束可能会出现广义不等式),如果目标函数为向量怎么办呢?前面的章节中我们介绍了广义的凸函数,同样也是基于锥定义的(实际上高维空间中“比大小”我们一般都需要通过锥来定义)。
一般的向量优化问题可以表示为
向量约束优化问题的最优解相当于在下面的集合中寻找最优解
复习:最小元与极小元
下面两幅图分别表示最小元和极小元
![]()
利用对偶锥,我们可以获得最小元的等价定义,即
是集合 关于 的最小元 对任意的 , 为 在集合 上的唯一最小解 什么意思呢?也就是说任意的
,实际上都代表了一个法向量,也就是一个支撑超平面。如果 是最小元,则意味着对任意一个 ( 所定义的) 支撑超平面来说, 都是支撑点,就像下面这条幅图一样 ![]()
而极小元的定义是什么呢?
- 充分条件:若对于某些
, minimizes over , 为极小元 - 必要条件:
为凸集 的极小元, 存在非 0 的 使得 minimizes over 我们来看充分条件,只需要存在某一个
,使得 为对应支撑超平面的支撑点就可以了。比如下面这幅图,蓝色的点,我们可以找到这样一个蓝色的支撑超平面,使其为支撑点,所以它就是一个极小元;而对于红色的点来说,无论如何不可能找到一个支撑超平面,使其为支撑点,因此他就有可能不是极小元,因为这只是充分条件(对这个例子来说他就不是极小元)。 ![]()
简单总结一下:
- 最小元:无论沿着锥
里边哪一个方向走, 都是最小值点,那么他就是最小元; - 极小元:如果沿着其中某一个方向走,
是最小值点,那么他就是极小元。
复习完了最小元和极小元,不要忘了正事。我们要考虑向量约束优化问题中的最优解
例子:假如我们取
若
而如果只能得到极小元
- 首先不可能存在另一个
使得每一个元素都有 ,要不然 出现在这里的意义是什么?我们直接选择 作为极小元不就好了吗?如果存在那也顶多是 ,这种情况下 跟 其实没什么区别了。 - 第二点,有可能存在某些
,满足对一些 有 ,而对另一些 则有 ,这意味着 在某些方面表现得比 差,但在另一些方面则表现得更好,这实际上体现了我们在不同因素之间的一种权衡。