Perceptron, Support Vector Machine and Dual Optimization Problem (3)

Support Vector Machines


Perceptron and Linear Separability


假设存在一个 linear decision boundary,它可以完美地对 training dataset 进行分割。 那么,经由上述 Perceptron Algorithm 计算,它将返回哪一条 linear separator?


image


当 linear separator(即一个给定的超平面)的 margin γ 越大,则该模型的归纳与概括的性能越强。从几何的角度(二维)的角度来理解非常直观,我们需要这么一条 linear separator,即,它既能对 training dataset 进行完美的分割,同时,我们希望距它最近的数据点距它的距离最大化(如上图中间的那根直线)。否则,如果存在一个数据点距该 linear separator 的距离不是那么远,从直觉来说,围绕在该数据点附近且与它 label 相同的一个新数据点随意体现出的一个随机波动,将使得这个新数据点越过 linear separator,导致分类错误。


因此,现在的问题是,如何将 margin 纳入考量以求得这条最佳的 linear boundary?支持向量机将很好地解决这个问题。




Motivation(Why SVM?)


以下是 SVM 体现出的眼见的优势:


  • SVM 返回一个 linear classifier,并且由于其算法使 margin solution 最大化,故这个 linear classifier 是一个稳定的解。


  • 对 SVM 稍加改变,则能提供一种解决当数据集 non-separable 情况的方法。


  • SVM 同样给出了进行非线性分类的隐性方法(implicit method,即上述的 kernel transformation)。




SVM Formula


假设存在一些 margin γΓ 使得 training dataset S=X×Y 线性可分(但注意 linear separator 不一定穿过空间的原点)。


那么,decision boundary:


g(x)=wxb=0


Linear classifier:


f(x)=sign(g(x))=sign(wxb)


思路


我们先分别求两个平行的超平面,使得它们对所有的 training data point 进行正确的分类,再使这两个超平面之间的距离最大化。


这也是所谓 “支持向量机(Support Vector Machine)” 名称的由来,我们最终选定的支持向量 w 就像千斤顶一样将上述两个平行的超平面 “支撑” 开来,并且支撑开的距离也将是尽可能的最大,如下图所示。


image


Derivation


如上图,两个超平面的 decision boundary 可以写作:


{wxb=1wxb=1


则两个超平面之间的距离为:


2||w||




  • 对于初学者的直观理解,推导可以通过二维平面上点到直线的距离进行类比,已知点 (x0,y0) 到直线 Ax+By+C=0 的计算公式为:


    |Ax0+By0+C|A2+B2


    因此,设 wxb=1 上任意一点的坐标为 x0,故满足:


    wx0b1=0


    那么两平行超平面之间的距离为该点到另一超平面 wxb=1 的距离,即:


    |wx0b+1|||w||2=|(wx0b1)+2|||w||2=2||w||




因此,对于 iN+,当:


{wxib1if yi=1wxib1 if yi=1


则 training data 全部被正确地分类。




  • 理解

    参考上图,此处 wxib1wxib1 的几何意义是,将对于 label 为 11 的 data point 分别排除在超平面 wxb=1wxb=1 的两边外侧,从而留下两个超平面之间的空档。




我们合并上面两式为一个式子,则 training data 全部被正确地分类等价于:


iN+: yi(wxib)1


现在我们得到了两个超平面的距离表达式 2||w||,同时需要满足 constraints yi(wxib)1 for iN+,我们希望在约束条件下使 2||w|| 最大,那么 SVM 转变为运筹问题的求解,i.e.,


maximize: 2||w||subject to: yi(wxib)1,iN+




SVM Standard (Primal) Form


注意到,||w||0 恒成立,且若 ||w||=0 时,支持向量(即权重向量)w 为零向量,使得 linear separator 无意义。故最大化 2||w|| 等价于 最小化 12||w||。类似于线性回归中使用 Mean Square Error 而非 Mean Absolute Error 作为 loss function 的原因,||w|| 在原点处不可微,因此我们选择 minimize 12||w||2,而非原形式 12||w||,这当然是等价的。


故 SVM Standard (Primal) Form 如下:


minimize: 12||w||2subject to: yi(wxib)1,iN+




SVM When Training Dataset is Non-separable


当 training dataset 无法被全部正确地分类时(即,不存在一个 margin γΓ 使得 training dataset S=X×Y 线性可分),可以引入 slack variables 求解问题。


SVM Standard (Primal) Form with Slack


SVM Standard (Primal) Form with Slack 如下所示:


minimize: 12||w||2+Ci=1nξisubject to: {yi(wxib)1ξi,iN+ξi0,iN+


问题:如何求解最优的 w, b, ξ


由于涉及边界问题,我们不能在目标函数中直接对 w, b, ξ 求偏导。我们有以下两种解决办法:


  1. Projection Methods

    从一个满足 constraints 的解 x0 开始,求能使得 objective function 略微减小的 x1。如果所求到的 x1 违反了 constraints,那么 project back to the constraints 进行迭代。这种方法偏向于利用算法求解,从原理上类似于梯度下降算法以及前文介绍的 Perceptron Algorithm。


  2. Penalty Methods

    使用惩罚函数将 constraints 并入 objective function,对于违反 constraints 的解 x 予以惩罚。




The Lagrange (Penalty) Method:拉格朗日(惩罚)方法


考虑增广函数:


L(x,λ)=f(x)+i=1nλigi(x)


其中,L(x,λ) 为拉格朗日函数,λi 为拉格朗日变量(或对偶变量,dual variables)。


对于此类函数,我们所需要的目标的 canonical form 为:


minimize: f(x)subject to: gi(x)0,iN+


由于 gi(x)0 for iN+,则对于任意的 feasible x 以及任意的 λi0,都有:


L(x,λ)f(x)


因此:


maxλi0L(x,λ)f(x)


注意到上式中的 maxλi0L(x,λ),这代表我们在 λ 所在的空间 [0, )n 中搜索使拉格朗日函数最大的 λ,即搜索各个对应的 λi[0, )


尤其注意上式 是针对 feasible x 成立。因为 maxλi0L(x,λ) 会导致:


  • x infeasible 时,意味着 x 不全满足所有约束条件 gi(x)0 for iN+,这意味着:


    i: gi(x)>0


    那么:


    maxλi0L(x,λ)=maxλi0(f(x)+i=1nλigi(x))=f(x)+maxλi0i=1nλigi(x)=


    这是因为: 只要对应的 λi,则 λigi(x)(因为 gi(x)>0),从而 i=1nλigi(x),故 L(x,λ)=f(x)+i=1nλigi(x)


    所以此时不满足 maxλi0L(x,λ)f(x)


  • x feasible 时,即对于 iN+,约束条件 gi(x)0 都成立,那么:


    iN+: gi(x)i=1nλigi(x)0


    因此 maxλi0i=1nλigi(x)=0,即令所有 λi 都为 0,故:


    maxλi0L(x,λ)=maxλi0(f(x)+i=1nλigi(x))=f(x)+maxλi0(i=1nλigi(x))=f(x)




根据上述结论,给定任意 feasible x 以及任意 λi0,有:


L(x,λ)f(x)


且:


maxλi0L(x,λ)={f(x)if x feasibleif x infeasible


因此,原先的 constrained optimization problem 的 optimal solution 为:


p=minxmaxλi0L(x,λ)




  • 如何理解 minxmaxλi0L(x,λ)


    L(x,λ) 是向量 xλ 的函数,从向量角度可以抽象为一个二元函数。因此,计算逻辑是,对于每一个给定的 x0,可以得到仅关于 λ 的函数 L(x0,λ),然后求出使对应的 L(x0,λ) 最大的各 λ(x0)(i.e.,各 λi)。因此内层 maxλi0L(x,λ) 返回一个对于任意给定的 x0,使得 L(x0,λ) 最大的 λ 的集合。那么,maxλi0L(x,λ) 是一个仅关于 x 的函数,再在外层求使得这个函数最小的 x,即 minx(maxλi0L(x,λ)),其结果可以写为:


    minxmaxλi0L(x,λ)=L(x,λ(x))




  • 解释(为什么它是 optimal solution?):


    因为,对于任意的 x(无论是否 feasible),maxλi0L(x,λ) 计算出的结果可能为 f(x)(当 x 为 feasible),也可能为 (当 x 为 infeasible)。但没关系,在最外层的 minx 可以对 x 进行筛选,使最终选出的 x 不可能为 infeasible,否则相当于 minx 计算出的结果为 ,这是只要存在 feasible region 就不可能发生的事情。

posted @   车天健  阅读(356)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示