当前位置:首页 » 操作系统 » 对偶的算法

对偶的算法

发布时间: 2023-06-08 07:52:54

⑴ 支持向量机原理讲解(一)

支持向量机(Support Vector Machine,以下简称SVM),作为传统机器学习的一个非常重要的分类算法,它是一种通用的前馈网络类型,最早是由Vladimir N.Vapnik 和 Alexey Ya.Chervonenkis在1963年提出,目前的版本(soft margin)是Corinna Cortes 和 Vapnik在1993年提出,1995年发表。深度学习(2012)出现之前,如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。

SVM本来是一种线性分类和非线性分类都支持的二元分类算法,但经过演变,现在也支持多分类问题,也能应用到了回归问题。本篇文章重点讲解线性支持向量机的模型原理和目标函数优化原理。

在讲解SVM模型之前,我们可以先简单了解感知机模型的原理,因为这两个模型有一些相同的地方。在二维平面中,感知机模型是去找到一条直线,尽可能地将两个不同类别的样本点分开。同理,在三维甚至更高维空间中,就是要去找到一个超平面。定义这个超平面为wTx+b=0(在二维平面中,就相当于直线w_1 x+w_1 y+b=0),而在超平面上方的点,定义为y=1,在超平面下方的点,定义为y=-1。而这样的超平面可能是不唯一的,那么感知机是怎么定期最优超平面呢?从感知机模型的目标函数中,我们了解到它是希望让所有误分类的点(定义为M)到超平面的距离和最小。其目标函数如下:

(注:加入 是因为点若在超平面下, 为负数,需要乘上对应的 )

当w和b成比例增加了之后,比如都扩大N倍,会发现,分子和分母都会同时扩大N倍,这对目标函数并不影响。因此,当我们将W扩大或缩小一定倍数使得,||w||=1,分子也会相应的扩大或缩小,这样,目标函数就能简化成以下形式:

这个思想将会应用到支持向量机的目标函数优化上,后文将会详细讲解。

正如上文所说,线性支持向量机的思想跟感知机的思想很相似。其思想也是对给定的训练样本,找到一个超平面去尽可能的分隔更多正反例。不同的是其选择最优的超平面是基于正反例离这个超平面尽可能远。

从上图可以发现,其实只要我们能保证距离超平面最近的那些点离超平面尽可能远,就能保证所有的正反例离这个超平面尽可能的远。因此,我们定义这些距离超平面最近的点为支持向量(如上图中虚线所穿过的点)。并且定义正负支持向量的距离为Margin。

对SVM思想有一定理解之后,设超平面为 。我们讲解一下函数间隔和几何间隔的区别。

给定一个样本 , 表示点x到超平面的距离。通过观察 和 是否同号,我们判断分类是否正确。所以函数间隔定义 为:

而函数间隔不能正常反应点到超平面的距离,因为当我们等比例扩大 和 的时候,函数间隔也会扩大相应的倍数。因此,我们引入几何间隔。

几何间隔就是在函数间隔的基础下,在分母上对 加上约束(这个约束有点像归一化),定义为 :


其实参考点到直线的距离,我们可以发现几何间隔就是高维空间中点到超平面的距离,才能真正反映点到超平面的距离。

根据SVM的思想,我们可以知道是要取最大化支持向量到超平面的几何间隔,所以目标函数可以表示为:

在感知机模型最后,我们知道当同时扩大w和b,分子分母都会同样扩大,对目标函数不影响,所以在这里我们将分子(支持向量到超平面的函数间隔)扩大或压缩等于1,则目标函数可以转化为:

但是上式并不是凸函数,不好求解,再进一步转化为:

上式就是一个凸函数,并且不等式约束为仿射函数,因此可以使用拉格朗日对偶去求解该问题。

根据拉格朗日乘子法,引入拉格朗日乘子α,且α≥0我们可以知道,先不考虑min,(2)问题等价于:

然后再考虑min,则有:

应用拉格朗日对偶性,通过求解对偶问题得到最优解,则对偶问题的目标函数为:

这就是线性可分条件下支持向量机的对偶算法。这样做的优点在于:一是原问题的对偶问题往往更容易求解,二者可以自然的引入核函数,进而推广到非线性分类问题。

从(4)中,我们可以先求目标函数对于 和 的极小值,再求拉格朗日乘子 的极大值。

首先,分别对 和 分别求偏导数,并令为0:


得:

将(5)和(6)代入(4)得到:

对(7)取反得到:

只要我们可以求出(8)中极小化的 向量,那么我们就可以对应的得到 和 ,而求解 需要使用SMO算法,由于该算法比较复杂,我们将在下一篇文章专门讲解。假设我们现在已经使用SMO算法得到了最优的 值,记为

再求 :

对于任一样本 有:

注意到任一样本都有 ,则将右式的1用 代:

将(9)代入上式,可以得到:

这样,我们就能够求解得到线性支持向量机的目标函数的各个参数,进而得到最优的超平面,将正负样本分隔开。但是在上文中我们没有讲解求 向量的SMO算法,在下篇文章,将会详细讲解SMO算法,欢迎继续关注。

⑵ 支持向量机(SVM)基本原理

看了很多关于SVM的博客,但是常常只能保存书签之后看,有时候有的博客就突然没了,这里就作为搬运工总结一下之后自己看吧。主要内容来自于:
支持向量机通俗导论(理解SVM的三层境界)

线性回归
给定数据集 , 其中, ,线性回归试图学习到一个线性模型,尽可能地输出正确标记.

如果我们要用线性回归算法来解决一个分类问题,(对于分类,y 取值为 0 或者 1),但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0,就算所有训练样本的标签 y 都是 0 或 1但是如果算法得到的值远大于 1 或者远小于 0 的话,就会感觉很奇怪。所以我们在接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在 0 到 1 之间。

所以逻辑回归就是一个分类算法,这个算法的输出值永远在 0 到 1 之间.
我们先看二分类的LR,具体做法是:利用sigmoid 函数,将每一个点的回归值映射到0,1之间.sigmoid函数特性如下:

如图所示,令 , 当 z > 0 , z 越大, sigmoid 返回值越接近1(但永远不会超过1). 反之,当z < 0时,z 越小, sigmoid 返回值越接近0(但永远不会小于0).

支持向量机 ,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为 特征空间 上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

线性分类器
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):

logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。
假设函数:

其中x是n维特征向量,函数g就是logistic函数。

图像为:

在超平面w x+b=0确定的情况下,|w x+b|能够表示点x到距离超平面的远近,而通过观察w x+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y (w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。
定义函数间隔 (用表示)为

而超平面(w,b)关于T中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔:

但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。

事实上,我们可以对法向量w加些约束条件,从而引出真正定义点到超平面的距离--几何间隔(geometrical margin)的概念。

假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量, 为样本x到超平面的距离,如下图所示:

根据平面几何知识,有

其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念), 是单位向量(一个向量除以它的模称之为单位向量)。

又由于x0 是超平面上的点,满足 f(x0)=0,代入超平面的方程 ,可得 ,即

随即让此式 的两边同时乘以 ,再根据 和 ,即可算出 :

为了得到 的绝对值,令 乘上对应的类别 y,即可得出几何间隔(用 表示)的定义:

从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y (wx+b) = y f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。

对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半。

通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放w的长度和b的值,这样可以使得 的值任意大,亦即函数间隔 可以在超平面保持不变的情况下被取得任意大。但几何间隔因为除上了 ,使得在缩放w和b的时候几何间隔的值 是不会改变的,它只随着超平面的变动而变动,因此,这是更加合适的一个间隔。换言之,这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。

于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为

同时需满足一些条件,根据间隔的定义,有

回顾下几何间隔的定义 ,可知:如果令函数间隔 等于1(之所以令等于1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),则有 = 1 / ||w||且 ,从而上述目标函数转化成了:

相当于在相应的约束条件 下,最大化这个1/||w||值,而1/||w||便是几何间隔。

据了解,

由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (al variable) 的优化问题,即通过求解与原问题等价的对偶问题(al problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。

那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子 ,(Lagrange multiplier),定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题)

然后令:

容易验证,当某个约束条件不满足时,例如 ,那么显然有 (只要令 即可)。而当所有约束条件都满足时,则最优值为 ,亦即最初要最小化的量。

因此,在要求约束条件得到满足的情况下最小化 ,实际上等价于直接最小化 (当然,这里也有约束条件,就是 ≥0,i=1,…,n) ,因为如果约束条件没有得到满足, 会等于无穷大,自然不会是我们所要求的最小值。

具体写出来,目标函数变成了:

这里用 表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而 又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:

交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用 来表示。而且有 ≤ ,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。

换言之,之所以从minmax 的原始问题,转化为maxmin 的对偶问题,一者因为 是 的近似解,二者,转化为对偶问题后,更容易求解。

下面可以先求L 对w、b的极小,再求L对 的极大。

KKT条件
≤ 在满足某些条件的情况下,两者等价,这所谓的“满足某些条件”就是要满足KKT条件。

要让两者等价需满足strong ality (强对偶),而后有学者在强对偶下提出了KKT条件,且KKT条件的成立要满足constraint qualifications,而constraint qualifications之一就是Slater条件。所谓Slater 条件,即指:凸优化问题,如果存在一个点x,使得所有等式约束都成立,并且所有不等式约束都严格成立(即取严格不等号,而非等号),则满足Slater 条件。对于此处,Slater 条件成立,所以 ≤ 可以取等号。

一般地,一个最优化数学模型能够表示成下列标准形式:

其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束的数量。
KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。

而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件:

我们这里的问题是满足 KKT 条件的(首先已经满足Slater条件,再者f和gi也都是可微的,即L对w和b都可导),因此现在我们便转化为求解第二个问题。

也就是说,原始问题通过满足KKT条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为3个步骤:首先要让L(w,b,a) 关于 w 和 b 最小化,然后求对 的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

对偶问题求解的3个步骤

将以上结果代入之前的L:

得到:

具体推导过程是比较复杂的,如下所示:

最后,得到:

“倒数第4步”推导到“倒数第3步”使用了线性代数的转置运算,由于ai和yi都是实数,因此转置后与自身一样。“倒数第3步”推导到“倒数第2步”使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法运算法则。最后一步是上一步的顺序调整。

从上面的最后一个式子,我们可以看出,此时的拉格朗日函数只包含了一个变量,那就是 (求出了 便能求出w,和b,由此可见,则核心问题:分类函数 也就可以轻而易举的求出来了)。

上述式子要解决的是在参数上 求最大值W的问题,至于 和 都是已知数。要了解这个SMO算法是如何推导的,请跳到下文第3.5节、SMO算法。

总结
让我们再来看看上述推导过程中得到的一些有趣的形式。首先就是关于我们的 hyper plane ,对于一个数据点 x 进行分类,实际上是通过把 x 带入到 算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到:

因此分类函数为:

这里的形式的有趣之处在于,对于新点 x的预测,只需要计算它与训练数据点的内积即可(表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数 都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。

为什么非支持向量对应的 等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。

回忆一下我们通过 Lagrange multiplier得到的目标函数:

注意到如果 xi 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而 又是非负的,为了满足最大化, 必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。

至此,我们便得到了一个maximum margin hyper plane classifier,这就是所谓的支持向量机(Support Vector Machine)。当然,到目前为止,我们的 SVM 还比较弱,只能处理线性的情况,不过,在得到了对偶al 形式之后,通过 Kernel 推广到非线性的情况就变成了一件非常容易的事情了(通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题”)。

事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢?对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。

具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:

而在我们遇到核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:

这里ϕ:X->F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:

首先使用一个非线性映射将数据变换到一个特征空间F,
然后在特征空间使用线性学习器分类。

而由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:

如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法:
核是一个函数K,对所有x,z,满足 ,这里φ是从X到内积特征空间F的映射。

来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢(下文将会有一个相应的三维空间图)?

事实上,上图所述的这个数据集,是用两个半径不同的圆圈加上了少量的噪音生成得到的,所以,一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 和 来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:

注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 ,那么显然,上面的方程在新的坐标系下可以写作:

关于新的坐标 ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射 ,将 按照上面的规则映射为 ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。

再进一步描述 Kernel 的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,你我可能无法把 5 维空间画出来,不过由于我这里生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在 轴上的一个正圆)

因此我只需要把它映射到 ,这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的

核函数相当于把原来的分类函数:

映射成:

而其中的 可以通过求解如下 al 问题而得到的:

这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射

⑶ 求解原始问题和对偶问题常用的优化算法有哪些

1. 支持向量机的目的是什么?
对于用于分类的支持向量机来说,给定一个包含正例和反例(正样本点和负样本点)的样本集合,支持向量机的目的是寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是简单地分看,其原则是使正例和反例之间的间隔最大。
超平面是什么呢?简单地说,超平面就是平面中的直线在高维空间中的推广。那么,对于三维空间,超平面就是平面了。对于更高维的空间,我们只能用公式来表达,而缺少直观的图形了。总之,在n维空间中的超平面是n-1维的。
超平面的公式为。公式中的w为可以调整的系数向量,b为bias。注意我们的表达习惯,所有的向量都是列向量,所以在第一项的内积中向量w需要进行转置。
现在考虑样本集合{xi,di},xi是输入的特征,di是样本对应的分类。现在规定当样本xi属于第一类时,di为1,当xi属于第二类时,di为-1。
那么,线性可分的意思就是一个超平面可以把两类样本完全地分割开来。用公式表达就是:

你现在可能会问,那么如果不是线性可分的情况应该怎么办呢?事实是这些会在后面处理到。在这里我们首先讨论线性可分的情况,然后将其拓展到线性不可分的情况.
现在假设对于线性可分的样本集,我们有了一个分割超平面,现在我们想通过调整w0和b0让它分割的正样本和负样本保持最大的间隔,这样我们就获得了最优的超平面。实际上在操作过程中,我们最大化的是离超平面最近的点到超平面的距离。也就是说,我们要让超平面尽量远离最近的点。从图中可见超平面到正样本最近点的距离和超平面到负样本最近点的距离是相等的。这是个巧合么?
假设我们已经找到了一个超平面,它离正样本最近点的距离大于离负样本最近点的距离,那么这个离超平面最近的点就是负样本中的最近点。而考虑到我们的目标,我们还会调整超平面的位置使它还可以增大一些,即使这样会牺牲离正样本最近点的距离。所以调整到最后的结果肯定是超平面离两侧最近点的距离是等距的。

为了更形象地表现正负样本的间隔,我们可以在分割超平面的两侧再定义两个超平面H1和H2(如图中虚线所示),这两个超平面分别通过正样本和负样本中离分割超平面最近的样本点(图中加了外圈)。从以上分析可以知道,超平面H1和H2离分割超平面是等距的。
我们定义超平面H1和H2上面的点叫做支持向量。正负样本的间隔可以定义为超平面H1和H2之间的间隔,它是分割超平面距最近正样本点距离和最近负样本点距离之和。
从图中可以看出,支持向量对于分割超平面的位置是起到关键作用的。在优化分割超平面位置之后,支持向量也显露出来,而支持向量之后的样本点则对分类并不关键。为什么这样说呢?因为即使把支持向量以外的样本点全部删除,再找到最优的分割超平面,这个超平面的位置跟原先的分割超平面的位置也是一样的。总结起来就是:
支持向量包含着重构分割超平面所需要的全部信息!
2. 样本点到超平面距离的表示
如何求一点到超平面的距离呢?
现在我们来看看系数向量w0是什么含义?回忆一下,w0实际上是超平面的法向量!
那么,对于任意一个样本点x,它可以表示为:

其中xp是x在超平面上的投影,r是x到超平面的几何距离(几何间隔)。
设 ,
现在由定义有g(xp)为0,则有。
现在我们开看,g(x)实际上度量了样本点x到超平面的距离,在||w0||恒定的情况下,g(x)绝对值的大小反映了几何间隔r的大小。我们给g(x)起个名字叫做函数间隔。注意几何间隔r和函数间隔g(x)都是有正负号的,代表着处于超平面的不同侧。

3. 最大化间隔
我们已经知道了函数间隔和几何间隔的表示,现在回到正题,我们需要最大化支持向量到分割超平面的距离,当然在最开始我们不知道哪些向量是支持向量。
我们的目的是最大化支持向量到分割超平面的几何间隔r,而不是最大化函数间隔g(x),为什么呢?因为超平面方程的系数可以同比例增大或者减小,而不改变超平面本身。所以||w0||是不固定的,这就会影响函数间隔g(x)的大小。
所以我们需要最大化的是几何间隔r,这等价于我们固定||w0||,然后最大化函数间隔g(x)。但是实际上我们不会这么做,通常的处理方法是固定函数间隔g(x)的绝对值为1,然后最小化||w0||。也就是说我们把支持向量到分割超平面的函数间隔g(x)的绝对值设定为1,然后最小化||w0||。

4. 正式的表述
现在我们可以正式地表述这个问题了。我们需要最小化||w0||,也就是最小化超平面权重向量w0的欧几里得范数。但是有没有限定条件呢?还记得上一节最后一句话么?
“也就是说我们把支持向量到分割超平面的函数间隔g(x)设定为1,然后最小化||w0||”
所以最小化||w0||是有限定条件的,如何表述限制条件呢?我们把支持向量对应的g(x)定为+1或者-1(取决于支持向量处于分割超平面的哪一侧,也就是说是正样本还是负样本),也就表明了对于所有的正样本点来说,g(x)是>=+1的,而对于负样本来说,g(x)是<=-1的。
回想g(x)的定义:

我们可以把限制条件写下来:

现在我们可以把上面的问题写的更简练:
目标函数:

限制:

1/2是为了以后计算方便所加的,N是样本点的个数。
现在我们的第一个任务结束了,我们把要寻找最优的分割超平面的问题转化为带有一系列不等式约束的优化问题。这个最优化问题被称作原问题。我们不会直接解它,而是把它转化为对偶问题进行解决。至于如何将其转化为对偶问题,这是以后几节的内容。
等式约束极小的最优性条件
对支持向量机的求解都是将上节说的原问题转化为对偶问题进行求解的,这些内容都是最优化课程中的内容。
回忆上节的内容,我们的目标是寻找函数在若干约束条件下的最小值。在上节的原问题中,约束条件是包含不等式的,本节先考虑简单的问题,即考虑只包含等式约束的最优化问题:
(1)
其中f(x)被称作目标函数,而下面是一系列的等式约束。回想一下,当没有任何约束存在的时候,应该怎样寻找最优点呢?事实上x*是最优点的必要条件是:

而如果函数f(x)是凸函数的话,这个条件也是充分条件。
插入一个说明,如果函数f(x)是一个实值函数,x是一个n维向量,那么f(x)对向量x的导数被定义为:

回到目前的问题,当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。
为了形象化地分析这个问题,我们考虑目标函数是三变量的函数并且只有一个约束的情况:
(2)
从几何上来看,上面的问题(2)就是从曲面上来寻找函数的最小值。假设问题(2)的最优解是。我们现在做曲面Ω上任一条通过点x的光滑曲线l:(由于曲线l是在曲面Ω上的,所以自然有)。
令最优点对应的t为t*。因为x*是曲面Ω上的最优点,所以x*也是曲线l上的最优点,所以t*是一元函数的最优点,所以在这一点它的导数是0。通过链式法则我们得到:

这个式子说明了在x*这一点,函数的梯度向量 和曲线l在x*处的切线是垂直的。由于曲线l是任意的,所以梯度向量和曲面Ω是垂直的。
回忆高等数学的结论,的方向就是曲面Ω的法线方向,所以和必然在同一直线的方向上,所以必定存在一个常数μ*,有。
我们可以把它写成更加精炼的形式。如果我们构造二元函数,上面的结论就可以表达为必定存在着常数μ*,使。
我们把构造的函数称作拉格朗日函数,而其中的μ称作拉格朗日乘子。

关于只有等式约束的拉格朗日函数的引入,也可以参考维基网络中的两个变量函数的例子。
以上是一个特殊情形的分析,并且只包含了一个约束。那么包含等式约束的一般情况,也就是问题(1)来说,我们同样可以构造拉格朗日函数,不过由于包括多个等式约束,表达稍微不同:

也就是说,每一个等式约束都对应着一个拉格朗日乘子。那么x*是最优点的必要条件就是,存在相应的拉格朗日乘子μ*,使得以下两个式子成立:
(实际上就是原问题(1)的约束条件换了种写法)
这两个式子就是最优点的必要条件,当然如果函数是凸函数的话,这两个式子也是充分条件。
现在我们的目标达到了,也就是把目标函数和一系列的等值约束融合到了一个函数(拉格朗日函数)里面,这样只需要解(3)和(4)这两个式子就可以找到最优点,其优点是不言而喻的。而在下一节中我们将会讨论包含不等式约束的最优化问题。
寻找最优值的下界
我们首先要引入包含不等式约束的优化问题,标准形式如下:
(1)
f(x)是目标函数,而后面分别是一系列的不等式约束和等式约束。
我们首先明确几个概念:
可行点(可行解):所有满足约束的点x。
可行域:所有可行点组成的点集,记为R。正式写出来就是:

最优点(最优解):满足约束(也就是处于可行域之内)并且使目标函数达到最小的点,记为x*。
最优值:如果找到了x*,p* = f(x*) 就是最优值。
明确了这些概念以后我们就接着说下面的内容了。
与上节所说的只包含等式约束的情况类似,我们定义拉格朗日函数如下:

我们来看看,这与上节的拉格朗日函数有什么不同?多了一系列的不等式约束对应的项,所以也多了一系列的拉格朗日乘子。在这里需要强调的是,所有的λi必须是大于等于0的(也即是不等式约束对应的乘子要求大于等于0,我们记为λ≥0,意思是每个都λi≥0)。至于为什么要这样要求,后面自然可以看出来。
接下来我们定义一个重要的函数,我们定义拉格郎日对偶函数(the Lagrange al function)如下:
(2)
所以拉格朗日对偶函数就是把看成x的函数所找到的最小值。找到这个最小值有什么意义呢?
我们先把结论写下来,这个结论十分重要,是本节论述的目的:
对偶函数产生了原问题(1)最优值p*的一个下界,也就是说,对于任意的λ≥0和任意的μ来说,有:
(3)
那么如何证明(3)呢?
这个证明步骤十分简洁。假设x*是原问题(1)中的最优解,也就是f(x*) = p*。

最后两行的推导是考虑到x*是在可行域R内的,所以肯定有,当然前提是λ≥0,这也就是为什么在一开始要做这个规定的原因了。
我们如何理解这个不等式(3)呢?下面给出两个直观的解释:
解释一:线性逼近的解释

我们首先重写问题(1),就是把问题(1)换个更加紧凑的方式来表达,首先我们定义示性函数:

同样我们也可以定义另外一个示性函数:

有了这两个示性函数的帮助,现在我们可以把问题(1)重新写成一个没有约束的形式:
(4)
我们来看看这个优化问题(4)和问题(1)是等价的么?我们可以把(4)的后面两大项看做是对违反约束条件的x的惩罚函数。起的作用是对违反不等式约束的x进行“无限的”惩罚,也就一旦,惩罚就等于无穷大。而起的作用是对违反等式约束的x进行惩罚,一旦,惩罚就为无穷大。这样对(4)中目标函数的优化跟对(1)中目标函数在约束条件下的优化就是同一回事,是不是?也就是说,(1)和(4)这两个问题是等价的问题,但是在(4)中约束被融合到目标函数中来了。

现在我们再回头看看(2),也就是拉格朗日对偶函数,它也是个优化问题,我们对比它所优化的函数和(4)中所优化的函数,把它们重写在一起:
(2)中的目标函数
(4)中的目标函数
可见在问题(2)和问题(4)中,我们优化的目标函数区别在于惩罚项不同,(4)中的惩罚项是无限的,就是说一旦违反约束,就施加无穷大的惩罚;而在(2)中我们的惩罚项是线性的,就是说随着gi(x)和hi(x)的不同,惩罚项是线性变化的。所以(2)和(4)中需要优化的目标函数有很大的不同,用(2)来逼近(4)是很不准确的。但是我们可以看出,对于任意的u,任意的λ≥0和任意的μ来说都有:
(我们把λ限制为大于等于0了)
所以在任意点,(2)中的目标函数的值都是小于(4)中的目标函数的值,所以(2)中找到的最优值肯定是小于(4)中找到的最优值的。再结合前面说的(1)和(4)是等价的问题,所以不等式(3)是成立的。

解释二:交换max和min的次序
我们首先可以看出:

为什么会有这个结果呢?当x满足约束的时候,也就是对所有的i来说有并且,如果我们想通过调整λ和μ让变大怎么办呢?只有让λ全部为0(注意λ只能大于等于0),这样就消去了小于0的项,至于,无论μ怎么变都是没有影响的。所以当x属于可行域的时候上式的结果是f(x)。如果x违反了约束呢?在做sup运算的时候只需要对满足和的项对应的乘子定为+∞,而把其他的项对应的乘子设为0,就可以让整个式子的结果变为无穷大。
所以我们可以看出来,在问题(1)中的带约束的优化问题和直接优化是一回事,也就是说:

现在我们把inf和sup两个运算符调换次序,显然有:

我们重写(2)式:
(2)
可以看出结论了,也就是λ≥0时(3)式成立:
(3)
好了,费了半天的劲我们说明了一个问题,就是不等式(3)是怎么来的。
总结一下,不等式(3)用文字叙述就是:
如果我们把拉格朗日函数看做是x的函数,然后取下确界(注意:是在整个定义域里取下确界,而不是仅仅在可行域里取值,也就是说取下确界时对x是没有约束的),那么得到的结果就是原优化问题(1)的最优值的一个下界。

至于我们得到这个结果有什么用,下节再说。
对偶问题
回忆上一节,对如下的原问题:
(1)
我们定义了拉格朗日对偶函数:

然后我们证明了:,其中p*是原问题的最优值。
也就是说我们找到了原问题最优值的一个下界。既然我们找到了一个下界,显然我们要找到它最好的下界。什么是最好的下界的?显然就是所有下界当中最大的那一个。所以我们要把最大化,当然我们还要记得我们需要限制。我们把要优化的函数和约束条件正式写下来就是:
(2)
与原问题(1)相对应,我们把上面的问题(2)称作拉格朗日对偶问题(Lagrange al problem)。显然,对偶问题的最优值d*就是我们可以获得的p*的最优下界,也就是所有下界中离p*最近的一个,它们的关系是:
(3)
我们把这个不等式叫做弱对偶性质(Weak Duality)。
顺其自然,我们可以引出一个重要的概念,对偶间隙,其定义为,用文字叙述就是原问题的最优值与通过拉个郎日对偶函数获得的其最好(最大)的下界之差。由不等式(3)可以看出,对偶间隙肯定是大于等于0的。
那么有没有可能在某种情况下,对偶间隙消失了呢?也就是说对偶问题的最优值与原问题的最优值相等了呢?
我们将要叙述一下Slater条件:
Slater条件:
存在x满足:
Slater条件即是说存在x,使不等式约束中的“小于等于号”要严格取到“小于号”。
可以证明,对于凸优化问题(关于凸优化问题,请参考维基网络),如果Slater条件满足了,则:

这种情况称为强对偶性质(Strong Duality)。
下面的问题是,如果对偶间隙消失了,会发生什么有趣的现象呢?
如果对偶间隙消失了,也就是说,如果对偶问题存在着最优点λ*,μ*并且使其对应的最优值等于p*,这时会发生什么情况呢?还记得上一节我们证明的过程么:
(4)
在对偶间隙消失的情况下,中间所有的不等号都要变成等号:
(5)
注意,(5)中的λ和μ都加了星号,表示它们是对偶问题的最优点。(5)中有两个重要的等号,已经加了标记。
我们能得出什么结论?
1 .我们先来看等号1:
它说明了原问题的最优点x*是使取得最小值的点。
2. 我们再来看等号2:
它说明了:

由于我们限制了每一个λi≥0,所以上式中每一项都是非正的。这样我们又可以得出结论:
(6)
等式(6)被称作是互补性条件,我们可以把它换种写法:

或者写成它的等价形式(逆否命题):

也就是说,只要一个不为0,另一个就必为0!
互补性条件有着重要的意义。它说明了当时,x*是处于可行域的内部的,这时不等式约束并不起作用,此时;而的点肯定是可行域边界的点()。也就是说只有积极约束才有不为0的对偶变量。而这在支持向量机中有着重要的意义。回想在第一节我们最后的结论,支持向量机寻找最大间隔超平面可以归结为一个优化问题:
目标函数:

限制:

那么哪些不等式约束对应着不为0的对偶变量呢?显然,只有当时,这个约束对应的对偶变量才可能不为0,而意味着什么?意味着这个约束对应的样本点xi是支持向量!也就是说:
只有支持向量才对应不为0的拉格朗日乘子!

⑷ 小球大间隔模型存在的对偶问题

软间隔
在上文当中我们说了,在实际的场景当中,数据不可能是百分百线性可分的,即使真的能硬生生地找到这样的一个分隔平面区分开样本,那么也很有可能陷入过拟合当中,也是不值得追求的。

因此,我们需要对分类器的标准稍稍放松,允许部分样本出错。但是这就带来了一个问题,在硬间隔的场景当中,间隔就等于距离分隔平面最近的支持向量到分隔平面的距离。那么,在允许出错的情况下,这个间隔又该怎么算呢?

为了解决这个问题,我们需要对原本的公式进行变形,引入一个新的变量叫做松弛变量。松弛变量我们用希腊字母𝜉
ξ
来表示,这个松弛变量允许我们适当放松$y_i(\omega^T x_i + b) \ge 1 这个限制条件,我们将它变成













y_i(\omega^T x_i + b) \ge 1-\xi_i $。

也就是说对于每一条样本我们都会有一个对应的松弛变量𝜉𝑖
ξ
i
,它一共有几种情况。

𝜉=0
ξ
=
0
,表示样本能够正确分类
0<𝜉<1
0
<
ξ
<
1
,表示样本在分割平面和支持向量之间
𝜉=1
ξ
=
1
,表示样本在分割平面上
𝜉≥1
ξ

1
,表示样本异常
我们可以结合下面这张图来理解一下,会容易一些:

松弛变量虽然可以让我们表示那些被错误分类的样本,但是我们当然不希望它随意松弛,这样模型的效果就不能保证了。所以我们把它加入损失函数当中,希望在松弛得尽量少的前提下保证模型尽可能划分正确。这样我们可以重写模型的学习条件:

min12||𝜔||2+𝐶∑𝑖=1𝑚𝜉𝑖𝑠.𝑡.𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏)≥1−𝜉𝑖,𝜉𝑖≥0,𝑖=1,2,3…,𝑛𝑖=1,2,3…,𝑛
min
1
2
|
|
ω
|
|
2
+C

i
=
1
m
ξ
i
s.t.
y
i
(
ω
T
x
i
+b)≥1−
ξ
i
, i=1,2,3…,n
ξ
i
≥0, i=1,2,3…,n
这里的C是一个常数,可以理解成惩罚参数。我们希望||𝜔||2
|
|
ω
|
|
2
尽量小,也希望∑𝜉𝑖

ξ
i
尽量小,这个参数C就是用来协调两者的。C越大代表我们对模型的分类要求越严格,越不希望出现错误分类的情况,C越小代表我们对松弛变量的要求越低。

从形式上来看模型的学习目标函数和之前的硬间隔差别并不大,只是多了一个变量而已。这也是我们希望的,在改动尽量小的前提下让模型支持分隔错误的情况。

模型推导
对于上面的式子我们同样使用拉格朗日公式进行化简,将它转化成没有约束的问题。

首先,我们确定几个值。第一个是我们要优化的目标:𝑓(𝑥)=min𝜔,𝑏,𝜉12||𝜔||2+𝐶∑𝑚𝑖=1𝜉𝑖
f
(
x
)
=
min
ω
,
b
,
ξ
1
2
|
|
ω
|
|
2
+
C

i
=
1
m
ξ
i

第二个是不等式约束,拉格朗日乘子法当中限定不等式必须都是小于等于0的形式,所以我们要将原式中的式子做一个简单的转化:

𝑔(𝑥)=1−𝜉𝑖−𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏)≤0ℎ(𝑥)=−𝜉𝑖≤0
g(x)=1−
ξ
i

y
i
(
ω
T
x
i
+b)≤0 h(x)=−
ξ
i
≤0
最后是引入拉格朗日乘子: 𝛼=(𝛼1,𝛼2,⋯,𝛼𝑚),𝛽=(𝛽1,𝛽2,⋯,𝛽𝑚)
α
=
(
α
1
,
α
2
,

,
α
m
)
,
β
=
(
β
1
,
β
2
,

,
β
m
)

我们写出广义拉格朗日函数:𝐿(𝜔,𝑏,𝜉,𝛼,𝛽)=12||𝜔||2+𝐶∑𝑚𝑖=1𝜉𝑖,+∑𝑚𝑖=1𝛼𝑖(1−𝜉𝑖−𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏))−∑𝑚𝑖=1𝛽𝑖𝜉𝑖
L
(
ω
,
b
,
ξ
,
α
,
β
)
=
1
2
|
|
ω
|
|
2
+
C

i
=
1
m
ξ
i
,
+

i
=
1
m
α
i
(
1

ξ
i

y
i
(
ω
T
x
i
+
b
)
)


i
=
1
m
β
i
ξ
i

我们要求的是这个函数的最值,也就是min𝜔,𝑏,𝜉max𝛼≥0,𝛽≥0𝐿(𝜔,𝑏,𝜉,𝛼,𝛽)
min
ω
,
b
,
ξ
max
α

0
,
β

0
L
(
ω
,
b
,
ξ
,
α
,
β
)


在处理硬间隔的时候,我们讲过对偶问题,对于软间隔也是一样。我们求L函数的对偶函数的极值。

对偶问题
原函数的对偶问题是max𝛼≥0,𝛽≥0min𝜔,𝑏,𝜉𝐿(𝜔,𝑏,𝜉,𝛼,𝛽)
max
α

0
,
β

0
min
ω
,
b
,
ξ
L
(
ω
,
b
,
ξ
,
α
,
β
)
,这个对偶问题要成立需要满足KKT条件。

我们先把这个KKT条件放一放,先来看一下对偶问题当中的内部的极小值。这个极小值没有任何约束条件,所以我们可以放心大胆地通过求导来来计算极值。这个同样是高中数学的内容,我们分别计算∂𝐿∂𝜔

L

ω
,∂𝐿∂𝑏

L

b
和∂𝐿∂𝜉

L

ξ


求导之后,我们可以得到:

∂𝐿∂𝜔=0∂𝐿∂𝑏=0∂𝐿∂𝜉=0→𝜔=∑𝑖=1𝑚𝛼𝑖𝑦𝑖𝑥𝑖→∑𝑖=1𝑚𝛼𝑖𝑦𝑖=0→𝛽𝑖=𝐶−𝛼𝑖

L

ω
=0 →ω=

i
=
1
m
α
i
y
i
x
i

L

b
=0 →

i
=
1
m
α
i
y
i
=0

L

ξ
=0 →
β
i
=C−
α
i

我们把这三个式子带入对偶函数可以得到:

𝐿(𝜔,𝑏,𝜉,𝛼,𝛽)=12∑𝑖=1𝑚∑𝑗=1𝑚𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝑥𝑇𝑖𝑥𝑗+𝐶∑𝑖=1𝑚𝜉𝑖+∑𝑖=1𝑚𝛼𝑖(1−𝜉𝑖)−∑𝑖=1𝑚(𝐶−𝛼𝑖)𝜉𝑖=∑𝑖=1𝑚𝛼𝑖−12∑𝑖=1𝑚∑𝑗=1𝑚𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝑥𝑇𝑖𝑥𝑗
L(ω,b,ξ,α,β) =
1
2

i
=
1
m

j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
+C

i
=
1
m
ξ
i
+

i
=
1
m
α
i
(1−
ξ
i
)−

i
=
1
m
(C−
α
i
)
ξ
i
=

i
=
1
m
α
i

1
2

i
=
1
m

j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j

由于𝛽𝑖≥0
β
i

0
,所以我们可以得到0≤𝛼𝑖≤𝐶
0

α
i

C
,所以最后我们可以把式子化简成:

max𝛼∑𝑖=1𝑚𝛼𝑖−12∑𝑖=1𝑚∑𝑗=1𝑚𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝑥𝑇𝑖𝑥𝑗𝑠.𝑡.∑𝑚𝑖=1𝛼𝑖𝑦𝑖=00≤𝛼𝑖≤𝐶,𝑖=1,2,3…,𝑚
max
α

i
=
1
m
α
i

1
2

i
=
1
m

j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
s.t.

i
=
1
m
α
i
y
i
=0 0≤
α
i
≤C, i=1,2,3…,m
将原始化简了之后,我们再回过头来看KKT条件。KKT条件单独理解看起来有点乱,其实我们可以分成三个部分,分别是原始问题可行:

1−𝜉𝑖−𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏)≤0−𝜉𝑖≤0
1−
ξ
i

y
i
(
ω
T
x
i
+b)≤0 −
ξ
i
≤0
对偶问题可行:

𝛼𝑖≥0𝛽𝑖=𝐶−𝛼𝑖
α
i
≥0
β
i
=C−
α
i

以及松弛可行:

𝛼𝑖(1−𝜉−𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏))=0𝛽𝑖𝜉𝑖=0
α
i
(1−ξ−
y
i
(
ω
T
x
i
+b))=0
β
i
ξ
i
=0
我们观察一下倒数第二个条件:𝛼𝑖(1−𝜉−𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏))=0
α
i
(
1

ξ

y
i
(
ω
T
x
i
+
b
)
)
=
0


这是两个式子相乘并且等于0,无非两种情况,要么𝛼𝑖=0
α
i
=
0
,要么后面那串等于0。我们分情况讨论。

如果𝛼𝑖=0
α
i
=
0
,那么𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏)−1≥0
y
i
(
ω
T
x
i
+
b
)

1

0
,样本分类正确,不会对模型产生影响。
如果𝛼𝑖>0
α
i
>
0
,那么𝑦𝑖(𝜔𝑇𝑥𝑖+𝑏)=1−𝜉𝑖
y
i
(
ω
T
x
i
+
b
)
=
1

ξ
i
,则样本是支持向量。由于𝐶=𝛼𝑖+𝛽𝑖
C
=
α
i
+
β
i
,并且𝛽𝑖𝜉𝑖=0
β
i
ξ
i
=
0
。我们又可以分情况:
𝛼𝑖<𝐶
α
i
<
C
,那么𝛽𝑖>0
β
i
>
0
,所以𝜉𝑖=0
ξ
i
=
0
,那么样本在边界上
如果𝛼𝑖=𝐶
α
i
=
C
,那么𝛽𝑖=0
β
i
=
0
,如果此时𝜉≤1
ξ

1
,那么样本被正确分类,否则样本被错误分类
经过了化简之后,式子当中只剩下了变量𝛼
α
,我们要做的就是找到满足约束条件并且使得式子取极值时的𝛼
α
,这个𝛼
α
要怎么求呢?我们这里先放一放,将在下一篇文章当中详解讲解。

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:624
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:355
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:69
php微信接口教程 发布:2025-04-16 17:07:30 浏览:294
android实现阴影 发布:2025-04-16 16:50:08 浏览:786
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:336
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:201
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:796
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:353
土压缩的本质 发布:2025-04-16 16:13:21 浏览:581