文章目录
- 前言
- 一、SVM问题的基本形式
- 二、拉格朗日对偶算法
- 这就是一个典型的条件最值问题 (凸优化问题,约束最优化问题)
- 什么叫做对偶性?
- 用拉格朗日对偶算法求解SVM的问题
- 三、对偶性以及强对偶的成立条件
- KKT条件
- 四、强对偶的充要条件
前言
上一篇介绍了 一个点到直线距离的向量理解。
知道这个点到超平面的距离公式:
我们为什么要强调这个点的概念呢,很简单,因为这个点表示的就是数据点,也就是模型的特征。有多少个特征也就意味着这个 x 的长度大小 。
接下来将介绍SVM的原理以及详细的 拉格朗日对偶问题 推导过程。
一、SVM问题的基本形式
以二分类为例子
对于一组已经知道的数据集其中
- x 表示为特征向量表示有k个特征.
- D 中有N 个数据样本。
- y表示的是改数据集的标签 label , 与 分别标记为二分类的两个类。
为什么一个是+1,一个是-1?
前面我们推导过计算点到直线的距离的时候要再分子加个绝对值,这是因为一个超平面必然会划分出两个半空间,超平面是一个等于0 的方程。在超平面的上方的为正,则在下方的为负数。所以将一类标记为+1,一类标记为-1 时,可以化掉绝对值符号,用来表示距离:
由上图可知,要区分D中的两个类目标就是找出一个合理的超平面,图中的直线就是一个超平面。这个超平面必须具备两个功能。
1. 尽可能地让两个类别分在两个不同的半空间。
2. 两个类的点到超平面的距离越大越好。超平面可以表示为:
显然两个半空间就是
和
在SVM问题中,这由于标签 y 标记为+1 ,-1 ,在数学上这两个半空间需要做小小改动。也就是:
为什么需要这样改动?/为什么是1?
这是因为要描述最优的超平面,最优在这里的含义就是尽可能地讲连个类别分开。在距离上定义上版空间要>1 ,下半空间<-1 是为了引出一个两个平行直线之间的 间隔 这一概念,然后“两个分类的数据点点到划分超平面的距离越远越好”问题就可以转换为 间隔越大越好。如图:
这样很容易得到这个间隔的大小为,也就是优化的目标。
“尽可能地让两个类别分在两个不同的半空间。”则是优化的约束条件,不能让样本点落在间隔之内。
也就是样本点到超平面的距离大于1,也就是:
为什么是1?不用纠结这个数值,他就是表示一个“间隔”的意义,后面我们知道只需要最小化分母即可,与分母无关,这是一种问题的等价思想。
将它表示为凸优化问题:
最大化, 在凸优化问题上与最小化分母是等价的。因此就可以得出SVM 问题的基本形式:
二、拉格朗日对偶算法
这就是一个典型的条件最值问题 (凸优化问题,约束最优化问题)
- 插上一句:如果你学过高数,求解一个条件最值问题的时候,通常用拉格朗日乘子法来解。
1.构造拉格朗日函数,
2.分别求各个参数的一阶偏导数=0,
3.分情况讨论,求解最值。 - 在最优化理论里面步骤3就是作为的KKT条件。
什么叫做对偶性?
- 回顾语文:对偶的修辞手法。“海阔凭鱼跃,天高任鸟飞。”这就是对偶。
- 那么拉格朗日的对偶性也是同样的含义:
简单来说: 一个极小极大问题,它的对偶问题就是极大极小问题。以下latex 图片识别次数有限。手推了。
用拉格朗日对偶算法求解SVM的问题
构造拉格朗日函数:
原问题是拉格朗日函数的极小极大,则其对偶问题是拉格朗日函数的极大极小。
因此SVM问题的对偶算法求解思路是:
- 构造拉格朗日函数
- 求一阶偏导数=0的x,代入拉格朗日函数,目的是找到最小的使得求出对偶函数:
- 转化为通过优化拉格朗日乘子来优化出最大的对偶函数问题:
具体步骤:
- 非等式约束一律化为左边<= 右边的形式
- 构造拉格朗日函数:
化简一下等价于:
- 求w,b 的一阶偏导数,并且令一阶偏导数为0 得到:
即可得到: - 将上面等式代入原拉格朗日函数即可得到对偶函数:
所以对 对偶函数 优化 :
对偶问题描述:
三、对偶性以及强对偶的成立条件
KKT条件
- 先看下面的 【 对偶问题 , 拉格朗日函数 , 原问题的关系】
- 原问题和对偶问题等价时,就是强对偶,即存在对偶最优解和原问题最优解等价,要先知道中间这个等号成立的条件是什么。
回顾下高数里面用拉格朗日乘子法求解条件约束问题的最值问题:
- 对于约束问题,先构造拉格朗日函数,高数里考试一般是等式约束。
- 对拉格朗日函数的所有参数都求偏导,然后令偏导为0.得出几个约束条件组。
- 对符合条件的 解代入原函数,求取最值。
- 以上为拉格朗乘子法求解条件约束问题最值的步骤。为什么要说这个求解方法?因为这跟KKT条件极其相像。或者说步骤2 的三个约束条件 就是KKT条件。
求的最值的解一定要符合KKT条件,这是充分条件。
那么什么是KKT条件呢?KKT条件有三个结构 - 1.原问题的约束条件
- 2.对偶问题的约束条件----->非等式约束的拉个朗日乘子
- 3.互补松弛条件 —>下面细说一下
- 4.梯度条件 -->偏导为0
,对于一个拉格朗日函数来说,是怎么得出其KKT条件的呢? - KKT 条件:
1.原问题的约束条件: - 2.对偶问题的约束条件:
这个就是拉格朗日乘子的非等式约束的乘子,要求是大于等于0.所以对偶约束为: - 3.互补松弛条件与梯度条件
这个互补松弛是什么概念呢?这是一个原目标函数的最优解与对偶函数最优解的相等。其中下面公式的表示的是原问题和对偶问题的最优解,那么依照这样的可以得出以下推导: - 从(1)到(2),不难推断出,优化x取最小值的解,必须是最优解,
显然这必要要求这个在最优解取值时一阶偏导数为0,这就是KKT梯度条件。也就是拉格朗日函数的原函数 参数x 的偏导必须为0。
这就是KKT条件4,梯度条件。 - 这也是为什么拉格朗日乘子法需要求偏导取0 的做法。
(可能你会问对拉格朗日乘子求偏导又是为何呢?)
很简单,对拉格朗日乘子求导得到的其实就是KKT条件1 原问题的初始约束条件。 - 再看(2),到(3),这个步骤成立的条件是什么?我们看其第二项,非等式约束项,拉格朗日乘子与非等式约束相乘,一个为大于等于0,一个为小于等于0,那么这一项必然是小于等于0,也就是:
- 要使(2)到(3)成立必须要上述不等式条件取等号! 这就是KKT互补松弛条件:
![在这里插入图片描述](
以上就是KKT条件,那么与强对偶:
成立的关系是符合KKT条件?
错,强对偶的解一定符合KKT条件,符合KKT条件的解不一定是原问题的最优解
四、强对偶的充要条件
存在可行解符合SCQ,Slater 条件。
Slater条件定义:
对于一个凸问题,若存在 ,使得那么凸问题和它的对偶问题一定是强对偶。
(relint D 的含义就是既满足不等式约束,又满足等式约束的点集)
这就是强对偶的条件,SCQ 条件还可以用另一句经常听到的话“拉格朗日函数存在鞍点”,但是这也不是充要条件,因为没有鞍点也可以强对偶,拉格朗日函数有鞍点一定是强对偶。这里不在证明。
如果你不懂什么是鞍点,来看一下这个马鞍的形状,来脑补一下极大极小,和极小极大,留给大家思考。