zhengzhuaguazi

人工智能之机器学习——第六章 支持向量机

六. 支持向量机

6.1 间隔与支持向量

给定训练样本集D={(x1,y1),(x2,y2),...,(xm,ym)},,分类学习最基本的想法是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开的划分超平面有很多,应该怎么选择呢?

直观上看,应该去找位于两类训练样本“正中间”的划分超平面,因为该划分超平面对训练样本局部扰动的“容忍性”最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比训练样本更接近两个类的分隔界,这将使许多划分超平面出现错误,而“正中间”的划分超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见实例的泛化能力最强。

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

其中ω=(ω12;...;ωd)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量ω和位移b确定,下面将其记为(ω,b)。样本空间中任意点 x 到超平面(ω,b)的距离可写为:

假设超平面(ω,b)能将训练样本正确分类,即对于,若 yi=-1,则有;若yi=+1,则有。令:

(6.3)

如上图所示,距离超平面最近的几个训练样本点使式(6.3)的等号成立,它们被称为“支持向量”,两个异类支持向量到超平面的距离之和为

它被称为“间隔”。

欲找到具有“最大间隔”的划分超平面,也就是要找到能满足式(6.3)中约束的参数 ω 和 b ,使得γ最大,即:

(6.5)

s.t.

显然,为了最大化间隔,仅需最大化||ω||-1,这等价于最小化||ω||2。于是,式(6.5)可重写为:

(6.6)

s.t.

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

6.2 对偶问题

我们希望求解式(6.6)来得到最大间隔划分超平面所对应的模型:

(6.7)

其中 ω 和 b 是模型参数。由于式(6.6)本身是一个凸二次规划问题,能直接用现成的优化计算包求解,但是可以有更高效的办法。

对式(6.6)使用拉格朗日乘子法可得到其“对偶问题”。具体来说,对式(6.6)的每条约束添加拉格朗日乘子 αi ≥0,则该问题的拉格朗日函数可写为:

(6.8)

其中,α=(α12;...;αm)。令 L(ω,b,α) 对 ω 和 b 的偏导为0可得:

(6.9)

(6.10)

将式(6.9)代入(6.8),即可将 L(ω,b,α) 中的 ω 和 b 消去,再考虑式(6.10)的约束,就得到式(6.6)的对偶问题:

(6.11)

s.t.

     αi ≥ 0,     i=1,2,...,m

解出 α 后,求出 ω 和 b 即可得到模型:

(6.12)

从对偶问题(6.11)解出的  αi 是式(6.8)中的拉格朗日乘子,它恰对应着训练样本(xi,yi)。注意到式(6.6)中有不等式约束,因此上述过程需满足 KKT 条件,即要求:

(6.13)

于是,对于任意训练样本(xi,yi),总有 αi =0 或 yi f(xi) =1。若 αi =0,则该样本将不会在式(6.12)的求和中出现,也就不会对 f(x) 有任何影响;若 αi >0,则必有

yi f(xi) =1,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。

求解(6.11),这是一个二次规划问题,可使用通用的二次规划算法来求解。SMO算法是一个著名的高效算法。

6.3 核函数

在前面的讨论中,假设前提都是训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。

令 Ø(x) 表示将 x 映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:

(6.19)

其中 ω 和 b 是模型参数。类似(6.6),有

(6.20)

s.t. 

其对偶问题是

(6.21)

s.t.        

      αi ≥0    ,i=1,2,...,m

求解式(6.21)涉及到计算 Ø(xi)TØ(xj),这是样本 xi 与 xj 映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 Ø(xi)TØ(xj) 通常是困难的。为了避开这个障碍,可以设想这样一个函数:

(6.22)

即xi 与 xj 在特征空间的内积等于它们在原始样本空间中通过函数K(...,...)计算的结果。有了这样的函数,就不必直接去计算高维甚至无穷维特征空间中的内积,于是式(6.21)可重写为:

(6.23)

s.t. 

      αi ≥0    ,i=1,2,...,m

求解后可得到:

(6.24)

这里的函数 K() 就是“核函数”。式(6.24)显示出模型最优解可通过训练样本的核函数展开,这一展式亦称“支持向量展式”。

显然,若已知合适映射Ø()的具体形式,则可写出核函数K()。但在现实任务中我们通常不知道Ø()是什么形式,那么,合适的核函数是否一定不存在呢?什么样的函数能做核函数呢?有下面的定理:

定理6.1 核矩阵 K 总是半正定的

上述定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。下面是常用的几种核函数:

名称 表达式 参数
线性核  
多项式核 d≥1为多项式的次数
高斯核 σ>0为高斯核的带宽(width)
拉普拉斯核 σ>0
Sigmoid核 tanh为双曲正切函数,β>0,θ<0

此外,还可通过函数组合得到,例如:

  • 若 K1 和 K2 为核函数,则对于任意正数 Y1、Y2,其线性组合 Y1K1+Y2K2 也是核函数;
  • 若 K1 和 K2 为核函数,则核函数的直积也是核函数;
  • 若 K1 为核函数,则对于任意函数 g(x),也是核函数。

6.4 软间隔与正则化

在前面的讨论中,一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类别的样本完全划分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分。退一步说,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难确定这个貌似线性可分的结果不是由于过拟合造成的。

缓解该问题的一个办法使允许支持向量机在一些样本上出错。为此,要引入“软间隔”的概念。

具体来说,前面介绍的支持向量机形式是要求所有样本均满足约束(6.3),即所有样本都必须划分正确,这称为“硬间隔”,而软间隔则允许某些样本不满足约束

(6.28)

当然,在最大化间隔的同时,不满足约束的样本应尽可能少。于是,优化目标可写为:

(6.29)

其中 C>0 是一个常数;ς0/1 是“0/1损失函数”

(6.30)

显然,当 C 为无穷大时,式(6.29)迫使所有样本均满足约束(6.28),于是式(6.29)等价于(6.6);当 C 取有限值时,式(6.29)允许一些样本不满足约束。

然而,ς0/1 非凸、非连续,数学性质不太好,使得式(6.29)不易直接求解。于是,人们通常用其他一些函数来代替ς0/1,称为“替代损失”。替代损失函数一般具有较好的数学性质,如它们通常是凸的连续函数且是ς0/1的上界。下图给出了常见的三种替代损失函数:

hinge 损失:(6.31)

指数损失:(6.32)

对率损失:(6.33)

若采用 hinge 损失,则式(6.29)变为

(6.34)

引入“松弛变量” ξi ≥ 0,可将式(6.34)重写为

(6.35)

s.t. yi Txi+b) ≥ 1- ξi

      ξi≥0,i=1,2,...,m

这就是常用的“软间隔支持向量机”。

 显然,式(6.35)中每个样本都有一个对应的松弛变量,用以表征该样本不满足约束(6.28)的程度。但是,与式(6.6)相似,这仍是一个二次规划问题。于是,类似式(6.8),通过拉格朗日乘子法可得到式(6.35)的拉格朗日函数。

(6.36)

其中 αi ≥ 0,μi ≥ 0是拉格朗日乘子。

令L(ω,b,α,ξ,μ)对 ω,b,ξ 的偏导为零可得:

(6.37)

    (6.38)

    (6.39)

将式(6.37)-(6.39)代入式(6.36)即可得到式(6.35)的对偶问题

(6.40)

s.t.

      0 ≤ αi ≤ C,i=1,2,...,m

将式(6.40)与硬间隔下的对偶问题(6.11)对比可看出,两者唯一的差别就在与对偶变量的约束不同:前者是 0 ≤ αi ≤ C,后者是0 ≤ αi 。于是,可采用6.2节中同样的算法求解式(6.40);在引入核函数后能得到与式(6.24)同样的支持向量展式。

类似式(6.13),对软间隔支持向量机,KKT条件要求

(6.41)

于是,对任意训练样本(xi,yi),总有 αi=0 或 yif(xi)=1-ξ。若 αi=0,则该样本不会对 f(x) 有任何影响;若 αi >0,则必有 yif(xi)=1-ξ,即该样本是支持向量:由式(6.39)可知,若 αi <C,则 μi >0,进而有 ξi=0,即该样本恰在最大间隔边界上;若 αi =C,则 μi =0,此时若 ξi ≤1,则该样本落在最大间隔内部,若 ξi >1,则该样本被错误分类。由此可看出,软间隔支持向量机的最终模型仅与支持向量有关,即采用 hinge 损失函数仍保持了稀疏性

此外,也可以对式(6.29)使用其他替代损失函数,如果使用对率损失函数ζlog来替代式(6.29)中的 0/1损失函数,则几乎得到了对率回归模型。实际上,支持向量机与对率回归的优化目标相近,通常情形下它们的性能也相当。对率回归的优势主要在于其输出具有自然的概率意义,即在给出预测标记的同时也给出了概率。而支持向量机的输出不具有概率意义,欲得到概率输出需进行特殊处理;此外,对率回归能直接用于多分类任务,支持向量机为此需进行推广。另一方面,hinge 损失函数对应的支持向量机的解具有稀疏性,而对率损失是光滑的单调递减函数,不能导出类似支持向量的概念,因此对率回归的解依赖于更多的训练样本,其预测开销更大。

还可以把式(6.29)中的 0/1损失函数换成别的损失函数以得到其他学习模型,这些模型的性质与所用的替代函数直接相关,但它们具有一个共性:优化目标中的第一项用来描述划分超平面的“间隔”大小;另一项用来表述训练集上的误差,可写为更一般的形式:

(6.42)

其中 Ω(f) 称为“结构风险”,用于描述模型 f 的某些特征;第二项称为“经验风险”,用于描述模型与训练数据的契合程度;C 用于对二者进行折中。从经验风险最小化的角度来看,Ω(f) 表述了我们希望获得具有何种性质的模型(例如希望获得复杂度较小的模型),这为引入领域知识和用户意图提供了途径;

另一方面,该信息有助于削减假设空间,从而降低了最小化训练误差的过拟合风险。从这个角度来说,式(6.42)称为“正则化”问题,Ω(f) 称为正则化项,C 则称为正则化常数。

正则化可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程取向于希望目标。从贝叶斯估计的角度来看,正则化项可认为是提供了模型的先验概率。

Lp范数是常用的正则化项,其中L2范数 ||ω||2 倾向于 ω 的分量取值尽量均衡,即非零分量个数尽量稠密,而L0范数 ||ω||0 和L1范数 ||ω||1 则倾向于 ω 的分量尽量稀疏,即非零分量个数尽量少。

详情参见11.4“嵌入式选择与L1正则化”

6.5 支持向量回归

现在考虑回归问题。给定训练样本D={(x1,y1),(x2,y2),...,(xm,ym)},,希望学到一个形如式(6.7)的回归模型,使得 f(x) 与 y 尽可能接近,ω 和 b 是待确定的模型参数。

对样本(x,y),传统回归模型通常直接基于模型输出 f(x) 与真实输出 y 之间的差别来计算损失,当且仅当 f(x) 与 y 完全相同时,损失才为零。与此不同,支持向量回归(SVR)假设能容忍 f(x) 与 y 之间最多有 的偏差,即仅当 f(x) 与 y 之间的差别绝对值大于 时才计算损失。如下图所示,这相当于以 f(x) 为中心,构建了一个宽度为 2 的间隔带,若训练样本落入此间隔带,则认为是被预测正确的。

于是,SVR问题可形式化为

(6.43)

其中 C 为正则化常数, 是下图所示的-不敏感损失函数

(6.44)

引入松弛变量 ,可将式(6.43)重写为

(6.45)

s.t.

    

    

类似式(6.36),通过引入拉格朗日乘子,由拉格朗日乘子法可得到式(6.45)的拉格朗日函数

(6.46)

将式(6.7)代入,再令 的偏导为零可得:

(6.47)

(6.48)

         (6.49)

         (6.50)

将式(6.47)-(6.50)代入式(6.46),即可得到 SVR 的对偶问题:

(6.51)

s.t.

     

上述过程中需满足 KKT 条件,即要求

(6.52)

可以看出,当且仅当 时 αi 能取非零值,当且仅当 能取非零值。换言之,仅当样本(xi,yi)不落入-间隔带中,相应的 α 才能取非零值。此外,约束不能同时成立,因此 α 中至少有一个为零。

将式(6.47)代入(6.7),则 SVR 的解形如

(6.53)

能使式(6.53)中的(i)≠0的样本即为 SVR 的支持向量,它们必落在-间隔带外。显然,SVR 的支持向量仅是训练样本的一部分,即其解仍具有稀疏性。

由 KKT 条件(6.52)可看出,对每个样本(xi,yi)都有。于是,在得到 α后,若0< α<C,则必有ξi=0,

进而有:

(6.54)

因此在求解(6.51)得到 α后,理论上来说,可任意选取满足 0< α<C 的样本通过式(6.54)求得 b 。实践中常采用一种更鲁棒的办法:选取多个(或所有)满足条件 0< α<C 的样本求解 b 后取平均值。

若考虑特征映射形式(6.19),则相应的,式(6.47)将形如:

(6.55)

将式(6.55)代入(6.19),则 SVR 可表示为:

其中为核函数。

6.6 核方法

人们发展出一系列基于核函数的学习方法,统称为“核方法”。最常见的,是通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器。

分类:

技术点:

相关文章: