开个新坑,总结下最近看的凸优化的东西,主要来自于CS229的讲义。前半部分介绍凸优化的问题定义,后半部分介绍对偶问题和KKT条件,并使用SVM作为例子,展示凸优化在机器学习中的应用。这部分也是SVM理论部分不太好理解的部分,希望我能把它梳理清楚明白。
凸函数
介绍凸函数之前,首先介绍凸集。函数必须定义在凸集上,才能有后续是否是凸函数的讨论。
凸集
若集合$C$中任取两个元素$x$和$y$,对于任意$\theta \in [0,1]$且$\theta \in \mathbb{R}$,都有下面的不等式成立,则集合$C$是凸集:
这句话翻译成不严谨的几何描述,就是在集合$C$中任取两点画一条线段,那幺线段上的所有点都必须在$C$内,如下图所示。为何是这样呢?设$t = \theta x + (1-\theta) y$,稍作变形,可以得到,$t – y = \theta(x-y)$。这说明,$t-y$和$x-y$两个向量共线,也就是这三点共线。由$\theta$的取值范围,进一步知道,$t$在两点之间。这样,我们就把上面抽象的式子和下面直观的图建立了联系。
下面不加证明给出几个特殊的凸集:
$\mathbb{R}^n$
$\{ x; \Vert x\Vert_p \le 1\}$,可以用范数的三角不等式证明
凸集的交集
凸函数
与凸集的定义相类似,如果一个函数$f$定义在凸集上,而且对于其定义域上的任意两个变量取值$x$和$y$,对于任意$\theta \in [0,1]$且$\theta \in \mathbb{R}$,都有下式成立,则函数$f$是凸函数:
Be First to Comment