优化方法:凸优化与拉格朗日乘子法

拉格朗日乘子法

在数学分析中,如果需要计算多元函数的极值,可以通过让偏导数等于零来求驻点。如果带约束条件,就要用到拉格朗日乘子法,思路是把约束条件和原函数组合成拉格朗日函数,再计算拉格朗日函数的导数为0的点。

此法在数学分析中讲解得十分详细,乘子仅作为沟通不同偏导数的桥梁,使用线性代数的知识也可以十分轻松的计算出对应的结果。

凸优化在做什么

国内外对凸函数的定义是相反的,这里为了方便做论文的同学使用了国外的定义。

首先我们需要区分一下凸的意思。一元函数里我们学过,如果二阶导数大于零,函数叫凸函数(也叫下凸函数),小于零时叫凹函数(也叫上凸函数)。如果集合中任意两点的连线都落在集合内部,就把它叫做凸集。

凸集

我们看到凸集内各点都是连通的,不存在两点间连线有部分在图形外,非凸集则不同:

任意两点间的连线可能会在图形外部。凹函数问题只需加个负号就可以转化成凸优化问题,那非凸问题呢?很难直接转化,不过下面几种运算可以保持凸性,方便我们判断和构造凸函数。

非负加权

凸函数的定义就是下面这个不等式,对任意的x、y和0≤θ≤1都成立:

对多个凸函数做非负加权求和,凸性依然保持。

维度变换

我们可以对自变量做一次仿射变换,也就是把自变量换成Ax+b,再定义一个新函数。

定义:

展开我们有

我们将内部的系数提取出来就能得到不等关系:

最大值

如果同时存在多个凸函数,取它们的逐点最大值,得到的还是凸函数,也就是:

用凸函数定义放缩一下就能证明这一点。

对偶问题

掌握了一些保凸运算我们就可以学一下对偶问题,在机器学习内有一种分类算法叫做支持向量机(SVM),这种算法的要点就是核函数的计算和对偶问题,为了能让我们的超平面能划分的更居中一些,我们首先定义一下超平面和我们需要的关系:

我们知道$\frac{1}{2}||w||^2$和分类间隔有关,最小化它等价于让超平面到两类最近点的距离尽量大,剩余的部分是我们需要满足的约束条件,对于这个函数我们很容易证明这是一个凸函数,所以我们需要求出他的最优解,即对这个拉格朗日函数进行拉格朗日对偶优化,我们分别对L求出关于w和b的偏导数:

代入我们的拉格朗日函数中得到:

加入限制条件后,我们得到最后的结果:

对偶问题的约束需要用KKT条件来刻画,这个名字没有文字含义,就是三个人名的缩写。

在某些教材上会把对偶问题简化为:

留个作业

我们知道多元函数可以使用矩阵的形式进行便捷表达,这种做法的优化问题我们应该怎么做呢?这种优化方法其实已经说了,大家可以简单了解一下~

结语

参考文档:

运筹学学习笔记: https://zhuanlan.zhihu.com/p/87485105

凸优化和SVM对偶就讲到这里,运筹学里还有更多内容,感兴趣可以顺着参考文档继续看,后面遇到分类问题再回来翻翻就好。


优化方法:凸优化与拉格朗日乘子法
https://blog.minloha.cn/posts/21010669b53c6f2022120154.html
作者
Minloha
发布于
2022年12月1日
更新于
2022年12月1日
许可协议