目录
- 一句话概括
- 一、凸和非凸的区别
- 二、凸函数和非凸函数
- 三、凸优化和非凸优化
- 凸优化:
- 常见的凸优化方法:
- 凸优化的一般求解过程
- 非凸优化:
一句话概括
凸(Convex):在该区间函数图象上的任意两点所连成的线段上的每一个点都位于函数图象的下方(或上方)。
非凸(Non-Convex):函数在该区间上有多个极值,即系统有多个稳定的平衡态。
一、凸和非凸的区别
直观判断一个集合是否为Convex的方法,如下图:
若集合中任意两点连线上的点都在集合内,则该集合为凸集。
具体的,若为凸集,集合中任意两点,则有。
反之,若存在,则为非凸集合。
二、凸函数和非凸函数
凸函数就是一个定义在某个向量空间的凸子集(区间)上的实值函数。对于凸子集中任意两个向量有成立。常见的凸函数有:指数函数,非负对数函数,仿射函数,二次函数,常见的范数函数,凸函数非负加权的和等。
一个典型的凸函数,任意两点连线上所有的点都在函数图像的下方,如下图:
非凸函数,两点连线上的点可能分布在函数图像的两侧,如下图:
三、凸优化和非凸优化
凸优化:
任何局部最优解即为全局最优解。通常使用一个局部优化算法,如贪婪算法(Greedy Algorithm)或梯度下降算法(Gradient Decent)来计算局部最优解。
实际问题中,判断是否凸优化问题可以参考以下几点:
- 目标函数如果不是凸函数,则不是凸优化问题。
- 决策变量中包含离散变量(0-1变量或整数变量),则不是凸优化问题。
- 约束条件写成时,如果不是凸函数,则不是凸优化问题。
常见的凸优化方法:
1. 线性规划(LP, Linear Programming):
其中目标函数和不等式约束都是仿射函数(最高次数为1的多项式函数),且表示按元素小于等于。
2. 二次规划(QP, Quadratic Programing):
其中目标函数为凸二次型,不等式约束为仿射函数。
3. 二次约束的二次规划(QCCP, Quadratically Contrained Quaratic Programing):
其中目标函数和不等式约束都是凸二次型。
4. 半正定规划(SDP, Semidefinite Programing):
其中需要最优化的变量是一个对称的半正定矩阵,且为对阵矩阵。
凸优化的一般求解过程
找到一个点列使得目标函数值持续减少,直到触发停止条件或达到一个最小值。
设为第k次迭代的值,为第k次搜索方向,为第k次迭代的步长,则第k次迭代公式为:
其中第k次的搜索方向满足:
非凸优化:
通常情况下较难求解,可行域集合可能存在无数个局部最优点,求解全局最优算法复杂度是指数级(NP hard)。
因为非凸优化的难度较高,可以考虑将非凸优化转化为凸优化问题解决:
- 修改目标函数,使之转化为凸函数。
- 抛弃一些约束条件,使新的可行域为凸集并且包含原可行域。