最近的看的一些内容好多涉及到凸优化,没时间系统看了,简单的了解一下,凸优化的两个基本元素分别是凸函数与凸包
凸集
凸集定义如下:
也就是说在凸集内任取两点,其连线上的所有点仍在凸集之内。
凸函数
凸函数的定义如下:
$\theta x+(1-\theta)y$的意思就是说在区间 $(x,y)$ 之间任取一点 $y – \theta(y-x)$ 即为 $\theta x+(1-\theta)y$ , 凸函数的几何意义表示为函数任意两点的连线上的取值大于该点在函数上的取值,几何示意图形如下:
凸函数的一阶充要条件:
一阶充要条件的意思是说 $f$ 可微 ,$f$ 是凸函数当且仅当其切线在某点的取值小于函数本身在该点的取值,一阶充要条件的图形如下:
凸函数的二阶充要条件:
其中要求 $f$ 二阶可微,表示二阶导数在其定义域上需大于 $0$ 才是凸函数。
凸优化
有了以上两个概念,接下来就是凸优化了,凸优化问题通常有如下的形式:
这里 $f$ 为凸函数,$C$ 为凸包,通常还可以写作如下的形式:
这不就是约束规划问题么,这里 $f$ 为凸函数,$g_i(x)$ 为凸函数, $h_i(x)$ 为仿射函数,这么多的约束会把空间约束成如下的形式:
所以只需要在 $x^*$ 的范围里求解即可。对于凸优化问题来说,只有一个全局极值点,性质非常好,直接对偶啊,拉格朗日啊什么的往上招呼就可以了。
凸优化问题有一些特殊的形式,比如说线性规划,二次规划,二次约束的二次规划,与半正定规划,这些特殊形式使得我们可以使用更加优化的方式来求解。
线性规划:
接下来是二次规划:
二次约束二次规划:
参考: cs229 note