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?
当 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 线性可分(但注意 linear separator 不一定穿过空间的原点)。
那么,decision boundary:
Linear classifier:
思路
我们先分别求两个平行的超平面,使得它们对所有的 training data point 进行正确的分类,再使这两个超平面之间的距离最大化。
这也是所谓 “支持向量机(Support Vector Machine)” 名称的由来,我们最终选定的支持向量 就像千斤顶一样将上述两个平行的超平面 “支撑” 开来,并且支撑开的距离也将是尽可能的最大,如下图所示。
Derivation
如上图,两个超平面的 decision boundary 可以写作:
则两个超平面之间的距离为:
-
对于初学者的直观理解,推导可以通过二维平面上点到直线的距离进行类比,已知点 到直线 的计算公式为:
因此,设 上任意一点的坐标为 ,故满足:
那么两平行超平面之间的距离为该点到另一超平面 的距离,即:
因此,对于 ,当:
则 training data 全部被正确地分类。
-
理解
参考上图,此处 和 的几何意义是,将对于 label 为 和 的 data point 分别排除在超平面 和 的两边外侧,从而留下两个超平面之间的空档。
我们合并上面两式为一个式子,则 training data 全部被正确地分类等价于:
现在我们得到了两个超平面的距离表达式 ,同时需要满足 constraints for ,我们希望在约束条件下使 最大,那么 SVM 转变为运筹问题的求解,i.e.,
SVM Standard (Primal) Form
注意到, 恒成立,且若 时,支持向量(即权重向量) 为零向量,使得 linear separator 无意义。故最大化 等价于 最小化 。类似于线性回归中使用 Mean Square Error 而非 Mean Absolute Error 作为 loss function 的原因, 在原点处不可微,因此我们选择 minimize ,而非原形式 ,这当然是等价的。
故 SVM Standard (Primal) Form 如下:
SVM When Training Dataset is Non-separable
当 training dataset 无法被全部正确地分类时(即,不存在一个 margin 使得 training dataset 线性可分),可以引入 slack variables 求解问题。
SVM Standard (Primal) Form with Slack
SVM Standard (Primal) Form with Slack 如下所示:
问题:如何求解最优的 ?
由于涉及边界问题,我们不能在目标函数中直接对 求偏导。我们有以下两种解决办法:
-
Projection Methods
从一个满足 constraints 的解 开始,求能使得 objective function 略微减小的 。如果所求到的 违反了 constraints,那么 project back to the constraints 进行迭代。这种方法偏向于利用算法求解,从原理上类似于梯度下降算法以及前文介绍的 Perceptron Algorithm。
-
Penalty Methods
使用惩罚函数将 constraints 并入 objective function,对于违反 constraints 的解 予以惩罚。
The Lagrange (Penalty) Method:拉格朗日(惩罚)方法
考虑增广函数:
其中, 为拉格朗日函数, 为拉格朗日变量(或对偶变量,dual variables)。
对于此类函数,我们所需要的目标的 canonical form 为:
由于 for ,则对于任意的 feasible 以及任意的 ,都有:
因此:
注意到上式中的 ,这代表我们在 所在的空间 中搜索使拉格朗日函数最大的 ,即搜索各个对应的 。
尤其注意上式 是针对 feasible 成立。因为 会导致:
-
当 infeasible 时,意味着 不全满足所有约束条件 for ,这意味着:
那么:
这是因为: 只要对应的 ,则 (因为 ),从而 ,故 。
所以此时不满足 。
-
当 feasible 时,即对于 ,约束条件 都成立,那么:
因此 ,即令所有 都为 ,故:
根据上述结论,给定任意 feasible 以及任意 ,有:
且:
因此,原先的 constrained optimization problem 的 optimal solution 为:
-
如何理解 ?
是向量 和 的函数,从向量角度可以抽象为一个二元函数。因此,计算逻辑是,对于每一个给定的 ,可以得到仅关于 的函数 ,然后求出使对应的 最大的各 (i.e.,各 )。因此内层 返回一个对于任意给定的 ,使得 最大的 的集合。那么, 是一个仅关于 的函数,再在外层求使得这个函数最小的 ,即 ,其结果可以写为:
-
解释(为什么它是 optimal solution?):
因为,对于任意的 (无论是否 feasible), 计算出的结果可能为 (当 为 feasible),也可能为 (当 为 infeasible)。但没关系,在最外层的 可以对 进行筛选,使最终选出的 不可能为 infeasible,否则相当于 计算出的结果为 ,这是只要存在 feasible region 就不可能发生的事情。
本文来自博客园,作者:车天健,转载请注明原文链接:https://www.cnblogs.com/chetianjian/p/17279116.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?