上节我们从线性回归模型出发详细阐述了支持向量的来源,以及为什么需要寻找支持向量,如何找到这决策函数等问题,最后问题转化为下面的求最大值问题:
先说明一下分类就是如果:
则被分为 这一类中
则被分为 这一类中
但是两个式子在数学处理上很不方便,合并一下(其实就是乘上分类):
(这就是约束条件了)
所以综上可以写为如下:
受限于
所以问题转化为求极值问题,下面关键是如何求极值?
我们发现极值和分母有关,但是一般分母处理起来不方便,我们可以换个思路,可以倒过来,要求 求极大值,倒过来以后就是求极小值了,即:
受限于
注:这里解释一下倒过来后为什么不是,而是上面那个平方在除2,其实中间省了几步,首先求得极小值和除不除以2没什么关系,因此可以把除2操作去掉,那还剩,为什么还要平方在除2呢?原因在于后面好计算,因为是范数(也就是模),他是很多w平方求和在开方的,大家求向量模没忘吧,平方后就没有开方了,方便计算,为什么又除以2呢?后面会求导,因为是平方了求导会出来一个2,因此除以2,大家可能还会问这些不影响吗?其实是不影响的,因为求极值的目的是为了找到一组向量w使其达到极值,至于极值的大小我们并不关心的,因此可以做一些调整,方便后面的计算,其实这些都是一些数学常用的思路,尤其数学中很复杂的计算,经过这样处理后就很容易计算了或者条理很清晰,就是这个目的。
拉格朗日乘子法
现在问题转化求最小值了,但是存在约束条件,这可怎么求呢?如果没有约束条件就好了,这时候直接求导就可以求极值了,但是如何求呢?这时候我们伟大的数学家拉格朗日提出了解决方法,拉格朗日乘子法,简单的来说就是把约束条件添加到求极值的式子中,又或者称惩罚项(我记得在深度学习中称为惩罚项,他们的目的可能不同,但是形式是一样的),那如何加上去呢?我们先看式子再解释:
把上式的目标函数作为第一项,后面就是把约束项添加上去同时乘上,该参数称为拉格朗日乘子,所以问题就转化为求L得函数极值问题
我们在来看看拉格朗日乘子法这样加入约束条件合不合理呢?这里先给出拉格朗日乘子法的几何解释:
在解释之前呢,还需要给家从最基础讲起,因为通过几何角度解释,因此会画图,会牵扯到多元函数画图,不知道多元函数常见图形的建议先理解一下,本次以二元函数为例讲解,当然本人尽力讲清楚二元函数的图形为什么是这样,好下面开始:
假设二元函数为,我们知道,二元函数在平面的图形是圆,而增加一维z轴以后就是上图的样子,他是三维的,具有立体感,大家可想象一下球在空间的画法,因此俯视图(从上往下看)就是一个圆,只是这个圆随着z轴值不同而变化,没学过多元函数的同学理解起来可能会有点困难,建议先接受这样的图形,上图的二元函数的表达式我们记为,假设有一个约束条件,这个约束条件在二维平面,假如他是个圆,如上图,现在求在约束条件的情况下计算的极小值,怎么做呢?我们都知道如果没有约束条件,极小值其实就是上图的最底部的部分,但是现在有约束条件了,就需要考虑在约束条件的前提下求极小值,怎么求呢?首先呢我们投影,把三维图形投影到二维图形中,大家可以看做,拿一把刀,平行xy平面进行切割立体抛物图形,那么随着刀在不同的z轴上切割,界面圆的半径是不同的投影下来就是一个个不同半径的圆,投影就是俯视图即从上往下看,因为是以z轴进行切割,那么切割的截面的值都是一样的(z值相同),因此投影的圆就称为等值线(和地理的等高线差不多)而且我可以清楚的看到,z值越小投影的圆的半径也越小,没有约束条件的极小值就是投影的中心点,同时也知道,随着投影圆的半径增大,z值圆在增大,因为是凸函数,所以单调。每个圆上的点都是相同z值的,此时二维平面的约束条件是个圆,那么一定有一个圆和约束的圆相切的,那么画到二维平面是什么样呢?
这时候大家别晕了,上面是三维的,即xyz轴,这个图是二维的只有xy轴,其实就是上面的俯视图的效果,大家按照上图发挥一下空间想象力就能得到这张图,我们发现实线就是约束条件了,虚线就是上面的图投影下来的等值线了,那么肯定存在一个等值线的圆和约束条件圆相切,而切点就是极小值了,为什么切点就是极小值呢?因为是凸函数,是单调的,同时我们知道在没有约束条件的情况下等值线圆的中心点就是极小值点,但是有约束条件后,就需要满足约束条件的前提下求极小值点了,因此切点就是满足条件的极值点。好,到这里铺垫知识快讲完了,下面开始针对我们需要说明的问题进行分析:
这个图看起来更形象,在理解上面的以后,看这个图应该很容易了吧,其中为需要求得极值的函数即蓝色虚线,是约束函数即红色实线,大家可以把这两个函数推向高维即他们都是投影下来的,这里两个投影相切的几何意义是什么呢?其实相切地方的梯度他们是相反的,即他们共线,只是反向而已(默认大家都深入理解梯度了,不会的建议看我的这篇文章)那么这个表达式应该怎么写呢?
上面的式子是在约束条件的情况下求极小值:
约束条件为:
写成拉格朗日乘子的形式:
那么问题就转为为求的极值问题了,这极值怎么求呢?根据上图我们知道,在切点的梯度他们是相反的,那么大小可以通过调整,即他们的求和的梯度为零,因此极值就在梯度为零的情况下,因此拉格朗日乘子法就是通过这个点进行求极值,即求的梯度等于0的点,那吗这一点就是极值点,这就是拉个朗日乘子法合理的原因,可能还会有同学迷惑为什么切点的梯度是相反的呢?首先你需要理解什么是梯度,其次你需要搞清楚,当个两个式子联立在一起时他们的解是公共解,解两个式子都满足条件,为什么切点就是极值点,前面也讲了一下,这里再强调一下,首先所求函数应该为凸函数,而需要满足约束条件求极值,因此切点就是极值点,还有不懂的下面留言吧。
简单推倒一下为什么梯度相反:
所以
到这里我们说明了约束条件可以通过拉格朗日的乘子法表示出来是合理的即:
这样写合理的,但是这不能叫拉个朗日的乘子法,因为使用拉格朗日乘子的条件是约束条件应该为等式,而我们的约束条件是不等式,解决不等式约束条件应该是KKT条件(Karush-Kuhn-Tucker 最优化条件)
KKT条件就是为了求约束条件为不等式的凸优化问题,下面给出kkt的一般模式:
我们发现是符合我们之前的条件的,大家不必深究KKt。知道他是做什么的,知道他们的使用条件就可以了。
对偶问题
好,到这里我们就可以解决我们求极值的问题了吗?当然不可以了,因为KKT条件太多,无法继续求解,但是我们可以通过进一步变换,化简:
根据上面的我们知道,梯度为零的点一定是极值点(上面刚讲过的,没忘吧),现在我们就对和求偏导:
得到的值在代入L函数中,会得到新的式子:
最后得到了这个式子:
他有什么特点呢?最大的特点是,从前面求w,b到转换为求即拉格朗日系数的问题,我们在看看上式,是未知数,其他都是已知的,那么数学上我们称为原拉格朗日乘子的对偶问题,那么为什么要这样转换呢?有什么好处呢?这个形式有什么独特之处呢?到这里大家还是不知道什么是对偶,为什么要对偶?目的在哪里?这个式子有什么特点等,下一节来深入讲解对偶的来来龙去脉。
如果觉得《机器学习--支持向量机(二)拉格朗日乘子法详解》对你有帮助,请点赞、收藏,并留下你的观点哦!