红色石头的个人网站:redstonewill.com

上节课我们主要介绍了线性支持向量机(Linear Support Vector Machine)。Linear SVM的目标是找出最“胖”的分割线进行正负类的分离,方法是使用二次规划来求出分类线。本节课将从另一个方面入手,研究对偶支持向量机(Dual Support Vector Machine),尝试从新的角度计算得出分类线,推广SVM的应用范围。

Motivation of Dual SVM

首先,我们回顾一下,对于非线性SVM,我们通常可以使用非线性变换将变量从x域转换到z域中。然后,在z域中,根据上一节课的内容,使用线性SVM解决问题即可。上一节课我们说过,使用SVM得到large-margin,减少了有效的VC Dimension,限制了模型复杂度;另一方面,使用特征转换,目的是让模型更复杂,减小EinEinE_{in}。所以说,非线性SVM是把这两者目的结合起来,平衡这两者的关系。那么,特征转换下,求解QP问题在z域中的维度设为d^+1d^+1\hat d +1,如果模型越复杂,则d^+1d^+1\hat d +1越大,相应求解这个QP问题也变得很困难。当d^d^\hat d无限大的时候,问题将会变得难以求解,那么有没有什么办法可以解决这个问题呢?一种方法就是使SVM的求解过程不依赖d^d^\hat d,这就是我们本节课所要讨论的主要内容。

比较一下,我们上一节课所讲的Original SVM二次规划问题的变量个数是d^+1d^+1\hat d +1,有N个限制条件;而本节课,我们把问题转化为对偶问题(’Equivalent’ SVM),同样是二次规划,只不过变量个数变成N个,有N+1个限制条件。这种对偶SVM的好处就是问题只跟N有关,与d^d^\hat d无关,这样就不存在上文提到的当d^d^\hat d无限大时难以求解的情况。

如何把问题转化为对偶问题(’Equivalent’ SVM),其中的数学推导非常复杂,本文不做详细数学论证,但是会从概念和原理上进行简单的推导。

还记得我们在《机器学习基石》课程中介绍的Regularization中,在最小化EinEinE_{in}的过程中,也添加了限制条件:wTw≤CwTw≤Cw^Tw\leq C。我们的求解方法是引入拉格朗日因子λλ\lambda,将有条件的最小化问题转换为无条件的最小化问题:min Eaug(w)=Ein(w)+λNwTwminEaug(w)=Ein(w)+λNwTwmin\ E_{aug}(w)=E_{in}(w)+\frac{\lambda}{N}w^Tw,最终得到的w的最优化解为:

∇Ein(w)+2λNw=0∇Ein(w)+2λNw=0

\nabla E_{in}(w)+\frac{2\lambda}{N}w=0

所以,在regularization问题中,λλ\lambda是已知常量,求解过程变得容易。那么,对于dual SVM问题,同样可以引入λλ\lambda,将条件问题转换为非条件问题,只不过λλ\lambda是未知参数,且个数是N,需要对其进行求解。

如何将条件问题转换为非条件问题?上一节课我们介绍的SVM中,目标是:min 12wTwmin12wTwmin\ \frac12w^Tw,条件是:yn(wTzn+b)≥1, for n=1,2,⋯,Nyn(wTzn+b)≥1,forn=1,2,⋯,Ny_n(w^Tz_n+b)\geq 1,\ for\ n=1,2,\cdots,N。首先,我们令拉格朗日因子为αnαn\alpha_n(区别于regularization),构造一个函数:

L(b,w,α)=12wTw+∑n=1Nαn(1−yn(wTzn+b))L(b,w,α)=12wTw+∑n=1Nαn(1−yn(wTzn+b))

L(b,w,\alpha)=\frac12w^Tw+\sum_{n=1}^N\alpha_n(1-y_n(w^Tz_n+b))

这个函数右边第一项是SVM的目标,第二项是SVM的条件和拉格朗日因子αnαn\alpha_n的乘积。我们把这个函数称为拉格朗日函数,其中包含三个参数:b,w,αnαn\alpha_n。

下面,我们利用拉格朗日函数,把SVM构造成一个非条件问题:

该最小化问题中包含了最大化问题,怎么解释呢?首先我们规定拉格朗日因子αn≥0αn≥0\alpha_n\geq0,根据SVM的限定条件可得:(1−yn(wTzn+b))≤0(1−yn(wTzn+b))≤0(1-y_n(w^Tz_n+b))\leq0,如果没有达到最优解,即有不满足(1−yn(wTzn+b))≤0(1−yn(wTzn+b))≤0(1-y_n(w^Tz_n+b))\leq0的情况,因为αn≥0αn≥0\alpha_n\geq0,那么必然有∑nαn(1−yn(wTzn+b))≥0∑nαn(1−yn(wTzn+b))≥0\sum_n\alpha_n(1-y_n(w^Tz_n+b))\geq0。对于这种大于零的情况,其最大值是无解的。如果对于所有的点,均满足(1−yn(wTzn+b))≤0(1−yn(wTzn+b))≤0(1-y_n(w^Tz_n+b))\leq0,那么必然有∑nαn(1−yn(wTzn+b))≤0∑nαn(1−yn(wTzn+b))≤0\sum_n\alpha_n(1-y_n(w^Tz_n+b))\leq0,则当∑nαn(1−yn(wTzn+b))=0∑nαn(1−yn(wTzn+b))=0\sum_n\alpha_n(1-y_n(w^Tz_n+b))=0时,其有最大值,最大值就是我们SVM的目标:12wTw12wTw\frac12w^Tw。因此,这种转化为非条件的SVM构造函数的形式是可行的。

Lagrange Dual SVM

现在,我们已经将SVM问题转化为与拉格朗日因子αnαn\alpha_n有关的最大最小值形式。已知αn≥0αn≥0\alpha_n\geq0,那么对于任何固定的α′α′\alpha',且α′n≥0αn′≥0\alpha_n'\geq0,一定有如下不等式成立:

对上述不等式右边取最大值,不等式同样成立:

上述不等式表明,我们对SVM的min和max做了对调,满足这样的关系,这叫做Lagrange dual problem。不等式右边是SVM问题的下界,我们接下来的目的就是求出这个下界。

已知≥≥\geq是一种弱对偶关系,在二次规划QP问题中,如果满足以下三个条件:

  • 函数是凸的(convex primal)

  • 函数有解(feasible primal)

  • 条件是线性的(linear constraints)

那么,上述不等式关系就变成强对偶关系,≥≥\geq变成=,即一定存在满足条件的解(b,w,α)(b,w,α)(b,w,\alpha),使等式左边和右边都成立,SVM的解就转化为右边的形式。

经过推导,SVM对偶问题的解已经转化为无条件形式:

其中,上式括号里面的是对拉格朗日函数L(b,w,α)L(b,w,α)L(b,w,\alpha)计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。首先,令L(b,w,α)L(b,w,α)L(b,w,\alpha)对参数b的梯度为零:

∂L(b,w,α)∂b=0=−∑n=1Nαnyn∂L(b,w,α)∂b=0=−∑n=1Nαnyn

\frac{\partial L(b,w,\alpha)}{\partial b}=0=-\sum_{n=1}^N\alpha_ny_n

也就是说,最优解一定满足∑Nn=1αnyn=0∑n=1Nαnyn=0\sum_{n=1}^N\alpha_ny_n=0。那么,我们把这个条件代入计算max条件中(与αn≥0αn≥0\alpha_n\geq0同为条件),并进行化简:

这样,SVM表达式消去了b,问题化简了一些。然后,再根据最小值思想,令L(b,w,α)L(b,w,α)L(b,w,\alpha)对参数w的梯度为零:

∂L(b,w,α∂w=0=w−∑n=1Nαnynzn∂L(b,w,α∂w=0=w−∑n=1Nαnynzn

\frac{\partial L(b,w,\alpha}{\partial w}=0=w-\sum_{n=1}^N\alpha_ny_nz_n

即得到:

w=∑n=1Nαnynznw=∑n=1Nαnynzn

w=\sum_{n=1}^N\alpha_ny_nz_n

也就是说,最优解一定满足w=∑Nn=1αnynznw=∑n=1Nαnynznw=\sum_{n=1}^N\alpha_ny_nz_n。那么,同样我们把这个条件代入并进行化简:

这样,SVM表达式消去了w,问题更加简化了。这时候的条件有3个:

  • all αn≥0αn≥0\alpha_n\geq0

  • ∑Nn=1αnyn=0∑n=1Nαnyn=0\sum_{n=1}^N\alpha_ny_n=0

  • w=∑Nn=1αnynznw=∑n=1Nαnynznw=\sum_{n=1}^N\alpha_ny_nz_n

SVM简化为只有αnαn\alpha_n的最佳化问题,即计算满足上述三个条件下,函数−12||∑Nn=1αnynzn||2+∑Nn=1αn−12||∑n=1Nαnynzn||2+∑n=1Nαn-\frac12||\sum_{n=1}^N\alpha_ny_nz_n||^2+\sum_{n=1}^N\alpha_n最小值时对应的αnαn\alpha_n是多少。

总结一下,SVM最佳化形式转化为只与αnαn\alpha_n有关:

其中,满足最佳化的条件称之为Karush-Kuhn-Tucker(KKT):

在下一部分中,我们将利用KKT条件来计算最优化问题中的αα\alpha,进而得到b和w。

Solving Dual SVM

上面我们已经得到了dual SVM的简化版了,接下来,我们继续对它进行一些优化。首先,将max问题转化为min问题,再做一些条件整理和推导,得到:

显然,这是一个convex的QP问题,且有N个变量αnαn\alpha_n,限制条件有N+1个。则根据上一节课讲的QP解法,找到Q,p,A,c对应的值,用软件工具包进行求解即可。

求解过程很清晰,但是值得注意的是,qn,m=ynymzTnzmqn,m=ynymznTzmq_{n,m}=y_ny_mz^T_nz_m,大部分值是非零的,称为dense。当N很大的时候,例如N=30000,那么对应的QDQDQ_D的计算量将会很大,存储空间也很大。所以一般情况下,对dual SVM问题的矩阵QDQDQ_D,需要使用一些特殊的方法,这部分内容就不再赘述了。

得到αnαn\alpha_n之后,再根据之前的KKT条件,就可以计算出w和b了。首先利用条件w=∑αnynznw=∑αnynznw=\sum\alpha_ny_nz_n得到w,然后利用条件αn(1−yn(wTzn+b))=0αn(1−yn(wTzn+b))=0\alpha_n(1-y_n(w^Tz_n+b))=0,取任一αn≠0αn≠0\alpha_n\neq0即αnαn\alpha_n>0的点,得到1−yn(wTzn+b)=01−yn(wTzn+b)=01-y_n(w^Tz_n+b)=0,进而求得b=yn−wTznb=yn−wTznb=y_n-w^Tz_n。

值得注意的是,计算b值,αnαn\alpha_n>0时,有yn(wTzn+b)=1yn(wTzn+b)=1y_n(w^Tz_n+b)=1成立。yn(wTzn+b)=1yn(wTzn+b)=1y_n(w^Tz_n+b)=1正好表示的是该点在SVM分类线上,即fat boundary。也就是说,满足αnαn\alpha_n>0的点一定落在fat boundary上,这些点就是Support Vector。这是一个非常有趣的特性。

Messages behind Dual SVM

回忆一下,上一节课中,我们把位于分类线边界上的点称为support vector(candidates)。本节课前面介绍了αnαn\alpha_n>0的点一定落在分类线边界上,这些点称之为support vector(注意没有candidates)。也就是说分类线上的点不一定都是支持向量,但是满足αnαn\alpha_n>0的点,一定是支持向量。

SV只由αnαn\alpha_n>0的点决定,根据上一部分推导的w和b的计算公式,我们发现,w和b仅由SV即αnαn\alpha_n>0的点决定,简化了计算量。这跟我们上一节课介绍的分类线只由“胖”边界上的点所决定是一个道理。也就是说,样本点可以分成两类:一类是support vectors,通过support vectors可以求得fattest hyperplane;另一类不是support vectors,对我们求得fattest hyperplane没有影响。

回过头来,我们来比较一下SVM和PLA的w公式:

我们发现,二者在形式上是相似的。wSVMwSVMw_{SVM}由fattest hyperplane边界上所有的SV决定,wPLAwPLAw_{PLA}由所有当前分类错误的点决定。wSVMwSVMw_{SVM}和wPLAwPLAw_{PLA}都是原始数据点ynznynzny_nz_n的线性组合形式,是原始数据的代表。

总结一下,本节课和上节课主要介绍了两种形式的SVM,一种是Primal Hard-Margin SVM,另一种是Dual Hard_Margin SVM。Primal Hard-Margin SVM有d^+1d^+1\hat d+1个参数,有N个限制条件。当d^+1d^+1\hat d+1很大时,求解困难。而Dual Hard_Margin SVM有N个参数,有N+1个限制条件。当数据量N很大时,也同样会增大计算难度。两种形式都能得到w和b,求得fattest hyperplane。通常情况下,如果N不是很大,一般使用Dual SVM来解决问题。

这节课提出的Dual SVM的目的是为了避免计算过程中对d^d^\hat d的依赖,而只与N有关。但是,Dual SVM是否真的消除了对d^d^\hat d的依赖呢?其实并没有。因为在计算qn,m=ynymzTnzmqn,m=ynymznTzmq_{n,m}=y_ny_mz_n^Tz_m的过程中,由z向量引入了d^d^\hat d,实际上复杂度已经隐藏在计算过程中了。所以,我们的目标并没有实现。下一节课我们将继续研究探讨如何消除对d^d^\hat d的依赖。

总结

本节课主要介绍了SVM的另一种形式:Dual SVM。我们这样做的出发点是为了移除计算过程对d^d^\hat d的依赖。Dual SVM的推导过程是通过引入拉格朗日因子αα\alpha,将SVM转化为新的非条件形式。然后,利用QP,得到最佳解的拉格朗日因子αα\alpha。再通过KKT条件,计算得到对应的w和b。最终求得fattest hyperplane。下一节课,我们将解决Dual SVM计算过程中对d^d^\hat d的依赖问题。

注明:

文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程

更多AI资源请关注公众号:红色石头的机器学习之路(ID:redstonewill)

台湾大学林轩田机器学习技法课程学习笔记2 -- Dual Support Vector Machine相关推荐

  1. 台湾大学林轩田机器学习技法课程学习笔记4 -- Soft-Margin Support Vector Machine

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel SVM.先将特征转换和计算内积这两个步骤合并起来,简化计算.提高计算速度,再用Dual SVM的求解方法来解决. ...

  2. 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine

    红色石头的个人网站:redstonewill.com 关于台湾大学林轩田老师的<机器学习基石>课程,我们已经总结了16节课的笔记.这里附上基石第一节课的博客地址: 台湾大学林轩田机器学习基 ...

  3. 台湾大学林轩田机器学习技法课程学习笔记3 -- Kernel Support Vector Machine

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了SVM的对偶形式,即dual SVM.Dual SVM也是一个二次规划问题,可以用QP来进行求解.之所以要推导SVM的对偶形式 ...

  4. 台湾大学林轩田机器学习技法课程学习笔记16(完结) -- Finale

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Matrix Factorization.通过电影推荐系统的例子,介绍Matrix Factorization其实是一个提取用 ...

  5. 台湾大学林轩田机器学习技法课程学习笔记15 -- Matrix Factorization

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Radial Basis Function Network.它的原理就是基于距离相似性(distance-based simi ...

  6. 台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了神经网络Neural Network.神经网络是由一层一层的神经元构成,其作用就是帮助提取原始数据中的模式即特征,简称为pat ...

  7. 台湾大学林轩田机器学习技法课程学习笔记11 -- Gradient Boosted Decision Tree

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Random Forest算法模型.Random Forest就是通过bagging的方式将许多不同的decision tre ...

  8. 台湾大学林轩田机器学习技法课程学习笔记9 -- Decision Tree

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Adaptive Boosting.AdaBoost演算法通过调整每笔资料的权重,得到不同的hypotheses,然后将不同的 ...

  9. 台湾大学林轩田机器学习技法课程学习笔记12 -- Neural Network

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Gradient Boosted Decision Tree.GBDT通过使用functional gradient的方法得到 ...

最新文章

  1. PHP 安装 扩展时 抛出 /usr/local/Cellar/php@7.1/7.1.25/pecl 异常解决
  2. OpenCV图像去噪
  3. ContrainedBox:设置尺寸
  4. matlab out of memory产生原因和解决办法
  5. js代码(经典+有用+常用)
  6. 【Rsyslog】 从json 中通过正则 key 获取 value值,rsyslog正则匹配获取key 的 value值
  7. java isempty_Optional.isEmpty()即将加入Java吗?
  8. ASP.NET Core Api网关Ocelot的中文文档
  9. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(五、神经网络)
  10. 点云数据的类型主要分为_点云数据处理方法概述
  11. 毕业设计:基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类
  12. php网站视频播放外链,用视频网站来做外链只需三步
  13. (基础篇)用python实现打印节日贺卡
  14. 千人基因组(1000 Genomes)提取群体(population)或者样本(sample ID)信息
  15. 网易前端框架--NEC
  16. Multi-Gigabit MediaConverter车载以太网-万兆转换器
  17. QA | SWCF2022 笔记:C波段卫星与5G之间的干扰排查及解决方案
  18. python中1到100怎么表示_python如何计算1到100的和(用for循环)
  19. 簡單的腳本語言實現常用的win7/xp設置
  20. 内容与标准为王:下一代互联网与下一代搜索

热门文章

  1. 《Unity 3.x游戏开发实例》——2.10节注意
  2. ***组网不用愁之1-中小企业***网络组建应用实录
  3. Linux 笔记(持续补充)
  4. Zookeeper内部的简单细节(一)
  5. jQuery 2.0.3 源码分析 事件体系结构
  6. 2410 中断过程处理分析
  7. 基于ssm的学生成绩管理系统
  8. NYOJ 214 单调递增子序列(二)
  9. NYOJ 士兵杀敌(四) 树状数组
  10. 推荐系统——开源代码