一、背景介绍
1963年,贝尔实验室的Vanpik首次提出了支持向量机的理论模型和方法。
20世纪90年代,一些新兴方法如神经网络等研究遭受重大困难,支持向量机一度成为主流的统计学习模型。在早期的模式识别中,支持向量机有着非常广泛的应用。人脸检测、语音识别、图像分类、字符识别、文本分类等领域均有应用。

支持向量机(Support Vector Machine,SVM)从感知机演化而来。感知机作为一种线性分类模型,很难处理非线性问题。为了处理非线性的情况,在感知机模型的基础上有了两个方向,一个是神经网络,大家也看到了,现在深度学习大放异彩,各种网络功能强大。但实际上在神经网络兴起之前,基于感知机的另一种模型——支持向量机,同样可以解决非线性问题。
通过不同的间隔最大化策略,支持向量机模型可分为线性可分支持向量机、近似线性可分支持向量机和线性不可分支持向量机。
但无论是哪种情况,支持向量机都可以形式化为求解一个凸二次规划问题。
给定训练数据(x1,y1),(x2,y2),⋯,(xN,yN),其中xi∈Rn,yi∈Y={+1,−1},i=1,2,⋯,N。
xi为第i个特征向量,也称为实例,yi为xi的类标记。当yi=+1时称xi为正例,当yi=−1时称xi为负例。(xi,yi)称为样本点。
感知机的学习目标是寻找一个分离的线性超平面,能将训练实例分到不同类别。假设线性超平面用方程w∙x+b=0来表示,如下图所示,能够将数据分离的线性超平面可以有无穷多个。支持向量机是要从感知机的无穷多个解中选取一个到两边实例最大间隔的分离超平面。当训练数据线性可分时,支持向量机通过求硬间隔最大化来求最优分隔超平面;当训练数据近似线性可分时,支持向量机通过求软间隔最大化来求最优分隔超平面。

最关键的是当训练数据线性不可分的时候。如前所述,感知机无法对这种数据进行分类,因此直接通过求间隔最大化的方法是不可行的。线性不可分支持向量机的做法是,使用核函数和软间隔最大化,将非线性可分问题转化为线性可分问题,从而实现分类。相较于神经网络通过给感知机添加隐藏层来实现非线性,支持向量机通过核函数的方法达到同样的目的。
二、线性可分支持向量机
2.1 函数间隔与几何间隔
先给线性可分支持向量机一个明确的定义。
当训练数据线性可分时,能够通过硬间隔(hard margin)最大化求解对应的凸二次规划问题得到最优分隔超平面w∗∙x+b∗=0,以及相应的分类决策函数f(x)=sign(w∗∙x+b∗),这种情况就称为线性可分支持向量机。
要求间隔最大化,需要先对间隔进行表示。对于支持向量机来说,一个实例点到线性分隔超平面的距离可以表示为分类预测的可靠度,当分类的线性分隔超平面确定时,|w∙x+b|可以表示点x与该超平面的距离,同时我们也可以用w∙x+b的符号与分类标记y符号的一致性来判定分类是否正确。所以,对于给定训练样本和线性分隔超平面w∙x+b=0,线性分隔超平面关于任意样本点(xi,yi)的函数间隔可以表示为:dˆi=yi(w∙xi+b)
为了使间隔不受超平面参数w和b的变化影响,还需要对w加一个规范化约束∥w∥以固定间隔,通过这种方式将函数间隔转化为几何间隔。这时候线性超平面关于任意样本点(xi,yi)的几何间隔可以表示为:di=yi(w∥w∥∙xi+b∥w∥)
2.2 基本推导
基于线性可分支持向量机求得的最大间隔也叫硬间隔最大化。硬间隔最大化可以直观理解为以足够高的可靠度对训练数据进行分类,据此求得的线性超平面不仅能将正负实例点分开,而且对于最难分的实例点也能够以足够高的可靠度将其分类。将硬间隔最大化形式化为一个条件约束最优化问题:
maxw,bˆd∥w∥
s.t.yi(w⋅xi+b)≥ˆd,i=1,2,⋯,N
函数间隔ˆd的取值实际不影响最优化问题的求解。假设这里令ˆd=1,上式的等价最优化问题可表示为:
maxw,b12∥w∥2
s.t.yi(w⋅xi+b)−1≥0,i=1,2,⋯,N
构建拉格朗日函数:
L(w,b,α)=12∥w∥2−∑Ni=1αiyi(w∙xi+b)+∑Ni=1αi
求解上述无约束优化问题即可。
2.3 拉格朗日对偶性
直接求解上式的无约束优化问题效率偏低,一般会通过求解前述优化问题的对偶问题来寻优。假设f(x)、ci(x)和hj(x)是定义在Rn上的连续可微函数,有如下原始问题:
minx∈Rnf(x) s.t. ci(x)≤0,i=1,2,⋯,p hj(x)=0,j=1,2,⋯,q
原始问题写成拉格朗日函数:
L(x,α,β)=f(x)+∑pi=1αici(x)+∑qj=1βjhj(x)
将上式的最大化函数maxα,βL(x,α,β)设为关于x的函数:θP(x)=maxα,βL(x,α,β)
考虑上式的极小化问题,该极小化问题的解即为原始问题的解。
minxθP(x)=minxmaxα,βL(x,α,β)
定义上述极小极大化问题的解也是原始问题的解:p∗=minxθP(x)
定义关于α,β的函数如下:θD(α,β)=minx(x,α,β)
考虑上式的极大化问题:maxα,βθD(α,β)=maxα,βminxL(x,α,β)
将该极大极小化问题转化为约束优化问题,如下:
maxα,βθD(α,β)=maxα,βminxL(x,α,β) s.t. αi≥0,i=1,2,⋯,p
上述约束优化问题即为原始问题的对偶问题。定义对偶问题的最优解为d∗=maxα,βθD(α,β) 。根据拉格朗日对偶性相关推论,假设x∗为原始问题的解,α∗,β∗为对偶问题的解,且d∗=p∗,则它们分别为原始问题和对偶问题的最优解。
2.4 对偶求解
据拉格朗日对偶性的有关推论,原始问题为极小极大化问题,其对偶问题则为极大极小化问题:
minxmaxα,βL(x,α,β)
为求该极大极小化问题的解,可以先尝试求L(w,b,α)对w,b的极小,再对α求极大。
先求最小化问题minw,bL(w,b,α),基于拉格朗日函数L(w,b,α)分别对w,b求偏导并令其等于零:
∂L∂w=w−∑Ni=1αiyixi=0
∂L∂b=∑Ni=1αiyi=0
解得:
w=∑Ni=1αiyixi
∑Ni=1αiyi=0
将求解式代入到拉格朗日函数中:
minw,bL(w,b,α)=12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)−∑Ni=1αiyi((∑Nj=1αjyjxj)∙xi+b)+∑Ni=1αi
=−12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)+∑Ni=1αi
然后对minw,bL(w,b,α)求α的极大,可规范为对偶问题如下:
maxα−12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)+∑Ni=1αi
s.t. ∑Ni=1αiyi=0 αi≥0,i=1,2,⋯,N
将上述极大化问题转化为极小化问题:
minα12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)−∑Ni=1αi
s.t. ∑Ni=1αiyi=0 αi≥0,i=1,2,⋯,N
假设α∗=(α∗1,α∗2,⋯,α∗l)T是对偶问题的解,根据拉格朗日对偶理论相关推论,前述极小化问题满足KKT(Karush-Kuhn-Tucker)条件,有:
∂L∂w=w∗−∑Ni=1α∗iyixi=0
∂L∂b=−∑Ni=1α∗iyi=0
α∗i(yi(w∗∙xi+b∗)−1)=0,i=1,2,⋯,N
yi(w∗∙xi+b∗)−1≥0,i=1,2,⋯,N
α∗i≥0,i=1,2,⋯,N
解得:
w∗=∑Ni=1α∗iyixi
b∗=yj−∑Nj=1α∗iyi(xi∙xj)
相应的线性可分支持向量机的线性分隔超平面可以表达为:
∑Ni=1α∗iyi(x∙xi)+b∗=0
三、近似线性可分支持向量机
近似线性可分就是训练数据集中大部分实例点是线性可分的,只是一些特殊实例点的存在使得这种数据集不适用于直接使用线性可分支持向量机进行处理,但也没有到完全线性不可分的程度。所以近似线性可分支持向量机问题的关键就在于这些少数的特殊点。
相较于线性可分情况下直接的硬间隔最大化策略,近似线性可分需要采取一种称为软间隔最大化的策略来处理该问题。少数特殊点不满足函数间隔大于1的约束条件,近似线性可分支持向量机的解决方案是对每个这样的特殊实例点引入一个松弛变量ξi≥0,使得函数间隔加上松弛变量后大于等于1,约束条件就变为:
yi(w∙xi+b)+ξi≥1
相应的目标函数变为:12∥w∥2+C∑Ni=1ξi
转化为凸二次规划问题:
minw,b,ξ12∥w∥2+C∑Ni=1ξi
s.t. yi(w∙xi+b)≥1−ξi,i=1,2,⋯,Nξi≥0,i=1,2,⋯,N
相应的拉格朗日函数为:
L(w,b,ξ,α,μ)=12∥w∥2+C∑Ni=1ξi−∑Ni=1αi(yi(w∙xi+b)−1+ξi)−∑Ni=1μiξi
原始问题为极小极大化问题,则对偶问题为极大极小化问题。同样先对L(w,b,ξ,α,μ)求w,b,ξ的极小,再对其求α的极大。首先求L(w,b,ξ,α,μ)关于w,b,ξ的偏导:
∂L∂w=w−∑Ni=1αiyixi=0
∂L∂b=−∑Ni=1αiyi=0
∂L∂ξ=C−αi−μi=0
解得:
w=∑Ni=1αiyixi
∑Ni=1αiyi=0
C−αi−μi=0
同样将求解式代入到拉格朗日函数中:
minw,b,ξL(w,b,ξ,α,μ)=−12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)+∑Ni=1αi
然后对minw,b,ξL(w,b,ξ,α,μ)求α的极大,可规范为对偶问题如下:
maxαL(w,b,ξ,α,μ)=−12∑Ni=1∑Nj=1αiαjyiyj(xi∙xj)+∑Ni=1αi
s.t. ∑Ni=1αiyi=0C−αi−μi=0αi≥0μi≥0,i=1,2,⋯,N
假设α∗=(α∗1,α∗2,⋯,α∗N)T是近似线性可分对偶最优化问题的解,根据拉格朗日对偶理论相关推论,上式满足KKT条件,有:]
∂L∂w=w∗−∑Ni=1α∗iyixi=0
∂L∂b=−∑Ni=1α∗iyi=0
∂L∂ξ=C−α∗−μ∗=0
α∗i(yi(w∗∙xi+b∗)−1+ξ∗i)=0
μ∗iξ∗i=0
yi(w∗∙xi+b∗)−1+ξ∗i≥0
ξ∗i≥0
α∗i≥0
μ∗i≥0,i=1,2,⋯,N
可解得:
w∗=∑Ni=1α∗iyixi
b∗=yj−∑Nj=1α∗iyi(xi∙xj)

四、线性不可分支持向量机
实际应用场景下,线性可分情形占少数,很多时候碰到的数据是非线性的和线性不可分的。如前所述,多层感知机通过添加隐藏层来实现非线性,而支持向量机利用核技巧(kernel trick)来对线性不可分数据进行分类。
非线性问题往往难以直接求解,非线性支持向量机给出的方案是先将其转化为线性可分问题,再进行求解。这种转化方法也叫核技巧。

4.1 核函数
实现核技巧的主要工具就是核函数。假设输入空间为χ,特征空间为H,若存在一个从χ到H的映射ϕ(x),使得对所有的x,z∈χ,函数K(x,z)=ϕ(x)∙ϕ(z),则K(x,z)是核函数,ϕ(x)和ϕ(z)均为映射函数。常用的核函数包括多项式核函数、高斯核函数、字符串核函数等。
多项式核函数:K(x,z)=(x∙z+1)p
对应的分类决策函数为:f(x)=sign(∑Ni=1α∗iyi(xi∙x+1)p+b∗)
高斯核函数:K(x,z)=exp(−∥x−z∥22σ2)
对应的分类决策函数为:f(x)=sign∑Ni=1α∗iyiexp(−∥x−z∥22σ2)+b∗
4.2 优化求解
非线性可分支持向量机的凸优化问题可构造为:
minα12∑Ni=1∑Nj=1αiαjyiyjK(xi∙xj)−∑Ni=1αi
s.t. ∑Ni=1αiyi=0
0≤αi≤C,i=1,2,⋯,N
可求得最优解α∗=(α∗1,α∗2,⋯,α∗N)T,然后选择α∗的一个正分量0<α∗2<C,计算:
b∗=yj−∑Ni=1α∗iyiK(xi∙xj)
最后可构造决策函数为:
f(x)=sign(∑Ni=1α∗iyiK(x∙xj)+b∗)
可以尝试使用序列最小最优化算法(SMO)来求解非线性可分支持向量机问题。
五、总结
- 相较于感知机的无穷多解,支持向量机需要找到分类间隔最大化的分隔超平面,因为支持向量机仅有一个最优解。
- 通过不同的间隔最大化策略,支持向量机模型可分为线性可分支持向量机、近似线性可分支持向量机和线性不可分支持向量机。
- 但无论是哪种情况,支持向量机都可以形式化为求解一个凸二次规划问题。线性可分支持向量机通过硬间隔最大化策略来寻找最优超平面,对应到具体求解上,可以使用拉格朗日对偶性来求解对偶问题的最优解。
- 近似线性可分支持向量机通过软间隔最大化策略来寻找最优超平面,与线性可分不同的是,目标函数需要补充一个惩罚项。
- 线性不可分支持向量机通过核函数来实现非线性,将线性不可分问题转化为线性可分问题后再求解。
- 线性不可分支持向量机可以使用SMO算法进行求解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步