SVM详细推导及拉格朗日对偶性思考

最近在阅读机器学习西瓜书SVM(Support Vector Mechine)部分的时候,其目标函数使用了拉格朗日乘子法并将其转化为拉格朗日对偶性问题进行求解,并且在后面引入软间隔的SVM也使用了同样的方法,因此自己在网上查阅了相关的资料对其原理进行探索,最后整理在下文。

SVM

2

原始问题

SVM尝试在给定样本集$D={(x_1, y_1),(x_2, y_2),…,(x_m, y_m)}, y_i\in${-1,+1}中找到一个划分超平面,将不同类别的样本分开,如下图:

20180501210333567

​ 根据结构风险最小化的原则,显然上图的红色的线是最好的划分超平面,因为该超平面所产生的分类是最鲁棒的,对未知样本的泛化能力最强。

​ 在样本空间中,划分超平面可通过如下线性方程来描述:

在二维的情况下,超平面就是一条直线,令$w=[a,b]. x=[x,y], b=c$,因此线性方程为 $ax+by+c=0$

“其中$w=(w_1;w_2,;…;w_d)$为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量 $w$和 位移 $b$ 确定,下面我们将其记为$(w,b)$,样本空间中任意点 $x$ 到超平面 $(w,b)$ 的距离可写为:

在二维的情况下,$\parallel w \parallel =\sqrt{a^2+b^2} $。

假设超平面$(w,b)$能将训练样本正确分类,即对任意$(x_i,y_i) \in D$,若$y_i=+1$则有$w^Tx_i+b>0$;若$y_i=-1$,则有$w^Tx_i+b<0$。令:

换句话说,在分类正确的情况下,分类为 $+1$ 的样本$(x_i,y_i)$应该满足$w^Tx_i+b\ge+1$,分类为 $-1$ 的样本$(x_i,y_i)$应该满足$w^Tx_i+b\le-1$。如下图中距离超平面最近的几个训练样本 $\oplus$ 和 $\ominus$ 能使上式成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为:

它们被称为间隔(margin)。

1

为了找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到能满足式(3)中约束的参数 $\omega$ 和 $b$ ,使得 $\gamma$ 最大,即:

等价于:

这就是支持向量机(Support Vector Machine,SVM)的基本型。

对于线性不可分的训练数据集,可以对每个样本点 引进一个松弛变量 ,使得原问题的目标函数变为:

其中, 称为惩罚参数, 值大时对误分类的惩罚增大, 值小时对误分类的惩罚减小。用于调和两者的系数,我们希望求解得到最大间隔划分超平面所对应的模型:

其中 $\omega$ 和 $b$ 是模型的参数,虽然能够直接使用现成的优化计算包求解,但是我们可以使用更加高效的方法,就是使用拉格朗日乘子法得到其“对偶问题”。

对偶问题

对于式每条约束添加拉格朗日乘子$\alpha_i\ge0, \mu_i\ge0$,那么该问题的拉格朗日函数可写为:

考虑函数:

其中 $P$ 为原始问题,如果存在某个 ,那么可令其对应的 使得 ,如果存在某个 使得 ,那么可令其对应的 使得 ,此有:

上述式子说明了如果满足约束,最大化问题和原始问题是一致的。

所以如果再考虑极小化问题

他与原始问题是等价的。

原命题将转化为一个$p$*的问题:

但其实这仍然是一个很难解决的问题,因为我们要先解决含有不等式约束 $\alpha$ 的最大化问题,然后再在 $x$ 上求最小值。如果能将其转化为先求 $x$ 上的最小值,再解决关于 $\alpha$ 的不等式约束的最大化问题就比较简单,即 $d$*

$d$* 就是 $p$* 的对偶性问题,但是常规情况下 $d$*$\le$$p$*,这叫弱对偶性质(Week Duality),举个真实的栗子方便记忆:

对偶间隙 $d$* $-$ $p$* 在满足$Slater$定理的时候间隙会消失,使$d$* $=$ $p$*,即强对偶性质(strong Duality)。根据这篇文章

  1. 原始问题是凸函数
  2. 约束条件是线性约束
  3. 满足KKT条件

是故原问题将转化为其对偶问题:

首先优化内部的拉格朗日方程:

令$L(\omega,b,\xi,\alpha,\mu)$对 $\omega$ 、 $b$ 和 的偏导为零可得到:

注意上式的 $m$ 是样本数量而不是特征维度,第 $i$ 个样本的 $x=(x_1;x_2,…,x_d)$,$d$ 才是样本特征的维度。

代入

分析式$(15)$,其中,而 ,所以对于后面这一项的最大值为 $0$,为了最小化该拉格朗日方程,因此要令尽可能地大,所以再对 的极大,即得对偶问题:

利用约束等式消去 ,从而留下最终约束 ,约束变为

SMO算法

上述问题为求解凸二次规划问题,这样的问题具有全局最优解,但是由于当训练样本容量很大时,现在的最优化算法往往非常低效,因此使用序列最小最优化算法(sequential minimal optimization, SMO)来求解这个问题,这是一种启发式的算法。SMO每次选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。更重要的是,这是子问题可以通过解析方法求得,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的哪一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。其包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。

两个变量二次规划的求解方法

对于SVM我们优化下述问题:

其中 为核函数。

那么SMO的最优化问题的子问题可以写成:

其中 为常数项,所以子问题可以简化为:

因为 ,由约束 得:

将该式带入式 ,并消去 ,得:

进行求导得:

整理上式得:

因为 更新前后都要满足约束,所以将 代入式 得:

,其中 是输入空间到特征空间的映射,得:

上式是最优化问题 沿着约束方向未经剪辑即未考虑不等式约束时 的最优解 ;然后再求剪辑后 的解

1042406-20161128221540099-1580490663

求得 的解为

变量的选择方法

为分离超平面

检验训练样本点 是否满足 KKT 对偶互补条件,即:

已知的约束有:

  • 如果 ,则有 ,即样本在支持向量上或者已经被正确分类。
  • 如果 ,则有 ,此时样本在支持向量上。
  • 如果,则有,此时样本在支持向量与分类边界之间。

SMO算法称选择第一个变量为外层循环,这个变量需要选择在训练集中违反KKT条件最严重的样本点。具体地,检验训练样本点 是否满足KKT条件,即:

一般来说,首先选择违反 这个条件的点。如果这些支持向量都满足KKT条件,再选择违反 的点。

SMO算法称选择第二个变量为内层循环,假设在外层循环中已经找到第一个变量 ,现在要在内层循环中找到第二个变量 。第二个变量选择的标准是希望能使 有足够大的变化。由 知, 是依赖 的,为了加快计算速度,一种简单的做法是选择 ,使其对应的最大。因为, 已经确定。如果 是正的,那么选择最小的 作为 ;如果 是负的,那么选择最大的 作为 。为了节省计算时间,将所有 值保存在一个列表中。

在特殊情况下,如果内层循环通过以上方法选择的 不能使目标函数有足够的下降,那么采用以下启发式规则继续选择 。遍历在间隔边界上的支持向量,依次将其对应的变量作为 试用,知道目标函数有足够的下降。若找不到合适的 ,那么遍历训练数据集;若仍找不到合适的 ,则放弃第一个 , 再通过外层循环寻求另外的

对于阈值 $b$ 和差值 ,在每次完成两个变量的优化后,都要重新计算阈值 $b$。当 ,由KKT条件可知:

于是

的定义式有

式的

消去 式的前两项得:

同样,如果 ,那么

最终的 为:

在每次完成两个变量的优化后,还必须更新其对应的 值,并将它们保存在列表中。 值的更新要用到 以及所有支持向量对应的

其中 是所有支持向量的集合。

总的来说SMO算法流程如下:

拉格朗日乘子法

拉格朗日对偶性相关知识是李航《统计机器学习》的内容,而对于拉格朗日乘子法几何意义,主要是网上的解释,我认为解释的比较生动的是马同学的解释,总结的比较精炼的是卢健龙的回答,当然两篇都是来自同一个知乎的帖子

原始问题

假设是定义在 上的连续可微函数。考虑约束最优化问题:

将此称为最优化问题为原始最优化问题或原始问题。

首先,引入广义拉格朗日函数

这里,是拉格朗日乘子,。考虑 $x$ 的函数:

这里,下标 $P$ 表示原始问题。

假设给定某个 $x$。如果 $x$ 违反原始问题的约束条件,即存在某个 $i$ 使得 或者存在某个 $j$ 使得 ,那么有

因为若某个 $i$ 使得约束 ,则可令 使得 ;若某个 $j$ 使 , 则可令 使 ,而将其余各 均取为0。

相反地,如果 $x$ 满足约束条件,则有

所以如果考虑极小化问题

它是与原始最优化问题等价的,即它们有相同的解。

该问题称为广义拉格朗日函数的极小极大问题。这样一来,就把原始最优化问题表示为广义拉格朗日函数的极小极大问题。为了方便,定义原始问题的最优值

称为原始问题的值。

对偶问题

定义

再考虑极大化 , 即

问题 称为广义拉格朗日函数的极大极小问题。

可以将广义拉格朗日函数的极大极小问题表示为约束最优化问题:

称为原始问题的对偶问题。定义对偶问题的最优值

称为对偶问题的值。

原始问题和对偶问题的关系

定理:若原始问题和对偶问题都有最优值,则

推论:假设函数 是凸函数(不等式约束), 是仿射函数(等式约束);并且假设不等式约束 是严格可行的,即存在 $x$ 对所有 $i$ 又 ,则存在 使 是原始问题的解, 是对偶问题的解,并且:

且其充分必要条件是满足KKT条件:

几何意义

拉格朗日乘子法具有很直观的几何意义。

单约束情况

比如在给定函数$f(x,y)=x^2y-3$找到曲线上距离原点最近的点,其可以转化为

(图来自马同学)可以看成一个圆心为原点半径逐渐增大的圆上寻找一个与曲线$f(x,y)=x^2y-3的$交点,不难发现圆上通过该交点的切线也将相切于曲线$f(x,y)=x^2y-3$

v2-0ca0c5ef4e43e02ac37886894da84daf_hd

从另一个角度来看,目标函数在取得极值的时候,其极值点的梯度向量的方向与约束函数的在该极值点的梯度方向是一致(平行)的,也就是

其中$ g(x,y)=x^2y-3,f(x,y)=x^2+y^2$, ,$\nabla f=\binom{\frac{\partial f}{\partial x}}{\frac{\partial g}{\partial y}}=\binom{2x}{2y}$为了求取目标函数极值点,因此联立方程组

v2-b59fd83680cc736a4bde6b7714013915_hd

多约束情况

上面说的是单约束的情况下,而在多约束的情况下

那么情况就会变成下图

v2-9611b135439c71afe097bfdcf8d3248c_hd

即$x^2 + y^2$的法线是是$x^2y-3$和$x-y-3$的法线的线性组合:

如果

那么线性组合

联立方程

即可进行求解.

也就是说在等式约束的优化问题中,假定$x$为$d$维向量,给定目标函数$f(x)$以及约束$g(x)=0,h(x)$,寻找$x$的某个取值$x$*使得目标函数最小化(最大化问题可以通过倒数转化为最小化问题),在最优点$x$*处,梯度$\nabla f(x)$和梯度$\nabla g(x)$和$\nabla h(x)$的线性组合的方向必定相同或相反,即存在$\lambda\ne0, \mu\ne0$使得

$\lambda,\mu$称为拉格朗日乘子,定义拉格朗日函数

将其对$x$的偏导数$\frac{\partial L}{\partial x}=0$可以得到式$(*9)$,将其对$\lambda$的偏导数$\frac{\partial L}{\partial \lambda}=0$即能得到约束条件$g(x)=0$,其对$\mu$的偏导数即能得到约束条件,从而将原约束优化问题转化为对拉格朗日函数$L(x,\lambda)$的无约束优化问题。

KKT条件

考虑下述不等式约束问题:

对应的拉格朗日函数为:

此时最优点 $x$*或在$ g(x)<0 $的区域中,或在边界$g(x)=0$上。对于$g(x)\lt0$的情形,约束$g(x)\le0$不起作用,可直接通过条件$\nabla f(x)=0$来获得最优点;这等价于将$\lambda$置零后$L(x, \lambda)$对x求偏导得到最优点,$g(x)=0$得到情形类似于上面等式约束的分析,但值得注意的是,此时$\nabla f(x$*$)$的方向必定与$\nabla g(x$*$)$的方向相反,即存在$\lambda\gt0$使得

虽然这段话我抄自西瓜书的附录,但是它给出的图片解释非常有限,因此我又查阅的相关资料,考虑这种情况:

743682-20160731133814716-619658263

其红色区域代表着约束区域,蓝色是目标函数的等高线,强调这是不等式约束,即要求可行解必须落在约束区域 之内,那么由图可见可行解 $x$ 只能在 或者 的区域内取得,那么会有以下两种情况:

743682-20160731162221497-1767754781

这时候再读上面那句话就可以理解最优点取值的两种情况:

  1. 目标函数最优点与约束区域重叠的时候,即极值点 $x$ 落在 的区域内,可以看成将$\lambda$置零后$L(x, \lambda)$对 $x$ 求偏导得到最优点,即直接极小化 即可。
  2. 目标函数最优点在约束区域之外的时候,即极值点 $x$ 落在 即边界上,此时等价于等式约束优化问题,那么最优点将在约束边界产生,这将转化为上述等式约束的情况。

用公式表达就是意思就是:

上述公式的右边称为Karush-Kuhn-Tucker(简称KKT)条件。

还有一个问题是 的取值,在等式约束优化中,约束函数与目标函数的梯度只要满足平行即可;而在不等式约束中则不然,若 ,这说明可行解 $x$ 是落在约束区域的边界上的,这是可行解应尽量靠近无约束时的解,所以在约束边界上,目标函数的负梯度方向应该远离约束区域朝向无约束时的解,此时正好可得约束函数的梯度方向与目标函数的负梯度方向应该相同,即$\nabla f(x$*$)$的方向必定与$\nabla g(x$*$)$的方向相反,即存在$\lambda\gt0$使得:

这个问题可以举一个形象的例子,假设你去爬山,目标是山顶,但有一个障碍挡住了通向山顶的路,所以只能沿着障碍爬到尽可能靠近山顶的位置,然后望着山顶叹叹气,这里山顶便是目标函数的可行解,障碍便是约束函数的边界,此时的梯度方向一定是指向山顶的,与障碍的梯度同向,下图描述了这种情况:”

743682-20160731135042997-1216295518

对于不等式约束,只要满足KKT条件,依然可以使用拉格朗日乘子法解决,这个条件便是KKT条件。

参考文献

  1. 《机器学习》-周志华
  2. 《统计学习方法》-李航
  3. https://www.cnblogs.com/xxrxxr/p/7538430.html
  4. https://www.cnblogs.com/ooon/p/5721119.html
  5. https://www.zhihu.com/question/38586401
  6. https://zhuanlan.zhihu.com/p/28804123
  7. https://blog.csdn.net/feilong_csdn/article/details/62427148