凸优化相关问题

支持向量机(SVM)必备知识(KKT、slater、对偶)

一、凸集和凸函数

在讲解凸优化问题之前我们先来了解一下凸集和凸函数的概念

1、凸集

凸集: 在点集拓扑学与欧几里得空间中,凸集是一个点集,其中每两点之间的直线上的点都落在该点集中。千言万语不如一张图来的明白,请看下图:
在这里插入图片描述简单地说,没有空洞和凹入部分的集合叫做凸集。

凸组合:凸集中任意两点的连线部分(包括这两个点)叫做这两个点的凸组合
严格凸组合: 不包括这两个点叫做严格凸组合
凸集的性质: 凸集的并集、加减法、数乘,仍是凸集。
凸集的例子: 欧式空间,超平面,半空间(被一个超平面分割的空间),多面集(凸多面体),多面锥,等。

2、凸函数

凸函数: 一个定义在向量空间的凸子集C(区间)上的实值函数f,如果在其定义域C上的任意两点x,y以及t∈[0,1]有:
在这里插入图片描述
即:任意两个自变量x1x2,任意x在x1x2之间,则有f(x1)f(x2)连线在f(x)上方。
下面是严谨的数学定义:
在这里插入图片描述

二、凸优化问题

0、仿射函数和线性函数

仿射函数即由1阶多项式构成的函数,一般形式为 f (x) = A x + b,这里,A 是一个 m×k 矩阵,x 是一个 k 维向量,b是一个m维向量,实际上反映了一种从 k 维到 m 维的空间映射关系。
设f是一个矢性(值)函数,若它可以表示为f(x1,x2,…,xn)=A1x1+A2x2+…+Anxn+b,其中Ai可以是标量,也可以是矩阵,则称f是仿射函数。其中的特例是,标性(值)函数f(x)=ax+b,其中a、x、b都是标量。此时严格讲,只有b=0时,仿射函数才可以叫“线性函数”(“正比例”关系)。
参考资料

1、凸优化定义

凸优化: 凸优化是指一种比较特殊的优化,是指求取最小值目标函数为凸函数的一类优化问题。其中,目标函数为凸函数且定义域为凸集的优化问题称为无约束凸优化问题。而目标函数不等式约束函数均为凸函数等式约束函数仿射函数,并且定义域凸集的优化问题为约束优化问题

上面是来自百度百科定义,下面我们对其总结,将其公式化!

2、凸优化性质:

1、目的是求取目标函数的最小值
2、目标函数和不等式约束函数都是凸函数,定义域是凸集;
3、若存在等式约束函数,则等式约束函数为仿射函数;
4、对于凸优化问题具有良好的性质,局部最优解便是全局最优解。

一个凸优化问题用公式描述为: 在这里插入图片描述

向量形式为:
在这里插入图片描述
若目标函数f(x)以及不等式约束条件g(x)是凸函数,而等式约束条件h(x)是仿射函数,定义域是凸集,则以上问题是一个凸优化问题

二、拉格朗日乘子法与KKT条件

拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。
  如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。

1、拉格朗日乘数法的思想

先看一个例子:求:双曲线xy=3上离远点最近的点。 翻译成数学语言:
在这里插入图片描述
注意:约束条件g(x,y)是对目标函数的定义域的约束。
用垂直于z轴的等间距平面去切割空间曲面,得到等值面图:
在这里插入图片描述在这里插入图片描述可以看到等值线越靠外,函数值越大,因此在xy=3这个双曲线的限制条件下,想象等值线的圆形在变大,一直到两个曲线相切时,函数有极小值,最小值点发生在等值线与xy=3双曲线相切时。很显然有两个点都能达到极小值。
再想:两个曲线(多维是曲面)相切时,意味着各自切线平行,也意味着各自法线平行!法线就是梯度向量!问题已经解决了。再从另一个角度理解,最值点在沿着xy=3曲线上,函数f(x,y)的变化率为0的地方,即过此点的等值线(面)。
在这里插入图片描述由方程组求出极值点(x,y),然后带入目标函数就可以求的目标函数的极值了,
另外用拉格朗日乘数法求出极值点,是不能确定极大值点或极小值点,且不能用二阶偏导来确定,因为受限于条件,需用实际问题的意义来判定。
将上面的解题思想换一个表达形式:
1、改写约束条件为统一格式:
在这里插入图片描述
2、原问题变为:
在这里插入图片描述
3、构造拉格朗日函数:lambda取任意值
在这里插入图片描述

4、构造方程组:对L中的与f相同的变量依次求偏导等于0,再加上约束条件组成方程组在这里插入图片描述
)
由方程组求出极值点(x,y),然后带入目标函数就可以求的目标函数的极值了。

2、拉格朗日等式约束

最后总结:
一般的含有等式约束的求极值问题可以描述为:求目标函数f(x1,x2,…,xn) 在k个附加条件 hi(x1,x2,…,xn)=0 (等式约束)的约束条件下的极值

在这里插入图片描述
求解步骤:
1、构造拉格朗日函数:lambda取任意值,可正可负可为零
在这里插入图片描述4、构造方程组:对L的变量(x1,x2,…,xn)依次求偏导等于0,再加上约束条件组成方程组:

在这里插入图片描述解方程组,得到极值点(x1,x2,…,xn)带入目标函数可得到极值

3、拉格朗日不等式约束

1、无约束条件下的最小值

求f(x,y)的极小值
在这里插入图片描述

在这里插入图片描述即f(x,y)在原点处取得极值。

2、求在不等式约束条件下的f(x,y)的极值
1、极值点在可行域内(不包含边界)

在这里插入图片描述

因此可以画出f(x,y)一系列的等值线。f(x,y)的图形时一个球体。

等值线如下图,同心圆为等高线,圆的半径越大,等高线也越大,即f(x,y)值越大。
在这里插入图片描述
求解:1、先画出可行域
在这里插入图片描述
约束区域为绿色虚线区域,由观察可知f(x,y)在无条件下的极值点包含在可行域内,因此,目标函数最小值依然是为0。

2、极值点不在可行域内

修改不等式约束条件:
在这里插入图片描述
求解:1、先画出可行域
在这里插入图片描述如图,f(x,y)在无条件下的极值点不在约束条件下的可行域之内,此时当f(x,y)的等值线与约束条件的边界直线相切时(约束条件的梯度与目标函数的梯度共线且方向相反),f(x,y)有最小值,极值点为切点。
因为约束条件的梯度与目标函数的梯度共线且方向相反时取得极值所以
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述特别注意利用拉格朗日乘数法所求出的极值点包括所有的极大值点、极小值点、鞍点。具体是还需要实际问题判别。
一个参数用二阶导数判断
多参数用海森矩阵判断

3、总结

1、极小值点落在可行域内(不包含边界):这个时候可行域的限制不起作用,相当于没有约束,直接f(x)的梯度等于0求解,这个时候g(x极小值点)<0(因为落在可行域内)。
2、极小值点落在可行域外(包含边界):可行域的限制起作用,极小值点应该落在可行域边界上即g(x)=0,类似于等值约束,此时有g(x)的梯度和f(x)的负梯度同向(alpha>=0的原因)。

三、KKT条件

我们把极值点可行域内与极值点不在可行域内的两种情况统一到一起:

即:总结不等式约束条件下的目标函数求极值的两种情况,可以构造拉格朗日函数来转换求解问题。
对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x就是极小值点。
这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。
特别注意:优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。
不是凸优化的话,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。

给出优化目标函数和约束条件:
在这里插入图片描述然后构造拉格朗日函数:
在这里插入图片描述则:所求的极小值点x
=(x1,x2,…,xn)满足一下三个条件(KKT条件)

在这里插入图片描述求解此方程组,可得极值点。而得到的极值点,极值点包括所有的极大值点、极小值点、鞍点。具体是还需要实际问题判别。
如果问题是凸优化问题则,此时求出的就是极值点,因为问题是凸优问题化和满足KKT的点是极值点是充要条件。

如果问题不是凸优化,还需要附加多一个正定的条件才能变成充要条件((海森矩阵为正定矩阵)二阶导数大于0才能保证该点是极小值点)
在这里插入图片描述
最后将等式约束也加进去
在这里插入图片描述
其满足的充分必要的KKT条件为:
在这里插入图片描述

简单总结一下,考虑凸优化问题。

对于无约束的优化问题,直接令梯度等于0求解。

对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。

对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解。

四、参考资料

支持向量机(SVM)必备知识(KKT、slater、对偶)
仿射函数、线性函数的区别?
图解KKT条件和拉格朗日乘子法
拉格朗日乘数法和KKT条件
如何理解拉格朗日乘子法?

五、自我检查

下面的参数lambda 就是上面的alpha,即在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值