一、背景介绍
1963年,贝尔实验室的Vanpik首次提出了支持向量机的理论模型和方法。
20世纪90年代,一些新兴方法如神经网络等研究遭受重大困难,支持向量机一度成为主流的统计学习模型。在早期的模式识别中,支持向量机有着非常广泛的应用。人脸检测、语音识别、图像分类、字符识别、文本分类等领域均有应用。
支持向量机(Support Vector Machine,SVM)从感知机演化而来。感知机作为一种线性分类模型,很难处理非线性问题。为了处理非线性的情况,在感知机模型的基础上有了两个方向,一个是神经网络,大家也看到了,现在深度学习大放异彩,各种网络功能强大。但实际上在神经网络兴起之前,基于感知机的另一种模型——支持向量机,同样可以解决非线性问题。
通过不同的间隔最大化策略,支持向量机模型可分为线性可分支持向量机、近似线性可分支持向量机和线性不可分支持向量机。
但无论是哪种情况,支持向量机都可以形式化为求解一个凸二次规划问题。
给定训练数据\({(x_1,y_1),(x_2,y_2),⋯,(x_N,y_N)}\),其中\(x_i∈R^n,y_i∈Y=\{+1,−1\},i=1, 2,⋯,N\)。
\(x_i\)为第i个特征向量,也称为实例,\(y_i\)为\(x_i\)的类标记。当\(y_i=+1\)时称\(x_i\)为正例,当\(y_i=-1\)时称\(x_i\)为负例。\((x_i,y_i)\)称为样本点。
感知机的学习目标是寻找一个分离的线性超平面,能将训练实例分到不同类别。假设线性超平面用方程\(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\),线性分隔超平面关于任意样本点\((x_i,y_i)\)的函数间隔可以表示为:\(d ̂_i=y_i(w∙x_i+b)\)
为了使间隔不受超平面参数w和b的变化影响,还需要对\(w\)加一个规范化约束\(‖w‖\)以固定间隔,通过这种方式将函数间隔转化为几何间隔。这时候线性超平面关于任意样本点\((x_i,y_i)\)的几何间隔可以表示为:\(d_i=y_i(\frac{w}{‖w‖}∙x_i+\frac{b}{‖w‖})\)
2.2 基本推导
基于线性可分支持向量机求得的最大间隔也叫硬间隔最大化。硬间隔最大化可以直观理解为以足够高的可靠度对训练数据进行分类,据此求得的线性超平面不仅能将正负实例点分开,而且对于最难分的实例点也能够以足够高的可靠度将其分类。将硬间隔最大化形式化为一个条件约束最优化问题:
\(\max _{w, b} \frac{\widehat{d}}{\|w\|}\)
s.t.$\quad y_{i}\left(w \cdot x_{i}+b\right) \geq \widehat{d}, i=1,2, \cdots, N $
函数间隔\(\widehat{d}\)的取值实际不影响最优化问题的求解。假设这里令\(\widehat{d} =1\),上式的等价最优化问题可表示为:
\(\max _{w, b} \frac{1}{2} \|w\|^2\)
s.t.$\quad y_{i}\left(w \cdot x_{i}+b\right) -1\geq 0, i=1,2, \cdots, N $
构建拉格朗日函数:
\(L(w,b,α)=\frac{1}{2}‖w‖^2−∑_{i=1}^N α_i y_i(w∙x_i+b)+∑_{i=1}^N α_i\)
求解上述无约束优化问题即可。
2.3 拉格朗日对偶性
直接求解上式的无约束优化问题效率偏低,一般会通过求解前述优化问题的对偶问题来寻优。假设\(f(x)、c_i(x)\)和\(ℎ_j(x)\)是定义在\(R^n\)上的连续可微函数,有如下原始问题:
\(min_{x∈R^n} f(x)\) s.t. \(c_i(x)≤0, i=1, 2,⋯,p\) \(ℎ_j(x)=0, j=1, 2,⋯,q\)
原始问题写成拉格朗日函数:
\(L(x,α,β)=f(x)+∑_{i=1}^p α_i c_i(x)+∑_{j=1}^qβ_jℎ_j(x)\)
将上式的最大化函数\(max_{α,β}L(x,α,β)\)设为关于x的函数:\(θ_P(x)=max_{α,β}L(x,α,β)\)
考虑上式的极小化问题,该极小化问题的解即为原始问题的解。
\(min_x θ_P(x)=min_x max_{α,β}L(x,α,β)\)
定义上述极小极大化问题的解也是原始问题的解:\(p^∗=min_x θ_P(x)\)
定义关于α,β的函数如下:\(θ_D(α,β)=min_x(x,α,β)\)
考虑上式的极大化问题:\(max_{α,β} θ_D(α,β)=max_{α,β}min_x L(x,α,β)\)
将该极大极小化问题转化为约束优化问题,如下:
\(max_{α,β} θ_D(α,β)=max_{α,β}min_x L(x,α,β)\) s.t. \(α_i≥0, i=1, 2,⋯,p\)
上述约束优化问题即为原始问题的对偶问题。定义对偶问题的最优解为\(d^∗=max_{α,β}θ_D(α,β)\) 。根据拉格朗日对偶性相关推论,假设\(x^∗\)为原始问题的解,\(α^∗, β^∗\)为对偶问题的解,且\(d^∗=p^∗\),则它们分别为原始问题和对偶问题的最优解。
2.4 对偶求解
据拉格朗日对偶性的有关推论,原始问题为极小极大化问题,其对偶问题则为极大极小化问题:
\(min_x max_{α,β}L(x,α,β)\)
为求该极大极小化问题的解,可以先尝试求\(L(w,b,α)\)对\(w,b\)的极小,再对\(α\)求极大。
先求最小化问题\(min_w,bL(w,b,α)\),基于拉格朗日函数\(L(w,b,α)\)分别对\(w,b\)求偏导并令其等于零:
$\frac{∂L}{∂w} =w−∑_{i=1}^N α_i y_ix_i=0 $
$ \frac{∂L}{∂b} = ∑_{i=1}^N α_i y_i=0$
解得:
\(w=∑_{i=1}^N α_i y_ix_i\)
\(∑_{i=1}^N α_i y_i=0\)
将求解式代入到拉格朗日函数中:
$min_{w,b}L(w,b,α)=\frac{1}{2}∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)−∑_{i=1}^N α_i y_i((∑_{j=1}^N α_j y_j x_j)∙x_i+b)+∑_{i=1}^N α_i $
\(=−\frac{1}{2}∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)+∑_{i=1}^N α_i\)
然后对\(min_{w,b}L(w,b,α)\)求\(α\)的极大,可规范为对偶问题如下:
\(max _α−\frac{1}{2}∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)+∑_{i=1}^N α_i\)
s.t. $∑_{i=1}^N α_i y_i=0 $ $ α_i≥0, i=1, 2,⋯,N$
将上述极大化问题转化为极小化问题:
\(min_α \frac{1}{2} ∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)−∑_{i=1}^N α_i\)
s.t. $∑_{i=1}^N α_i y_i=0 $ $ α_i≥0, i=1, 2,⋯,N$
假设\(α^∗=(α_1^∗,α_2^∗,⋯,α_l^∗)^T\)是对偶问题的解,根据拉格朗日对偶理论相关推论,前述极小化问题满足KKT(Karush-Kuhn-Tucker)条件,有:
$ \frac{∂L}{∂w} =w^∗ - ∑_{i=1}^N α_i^∗y_ix_i=0 $
\(\frac{∂L}{∂b}=−∑_{i=1}^N α_i^∗y_i=0\)
\(α_i^∗(y_i(w^∗∙x_i+b^∗)−1)=0, i=1, 2,⋯,N\)
\(y_i(w^∗∙x_i+b^∗)−1≥0, i=1, 2,⋯,N\)
\(α_i^∗≥0, i=1, 2,⋯,N\)
解得:
\(w^∗=∑_{i=1}^Nα_i^∗y_ix_i\)
\(b^∗=y_j−∑_{j=1}^N α_i^∗y_i(x_i∙x_j)\)
相应的线性可分支持向量机的线性分隔超平面可以表达为:
\(∑_{i=1}^N α_i^∗y_i(x∙x_i)+b^∗=0\)
三、近似线性可分支持向量机
近似线性可分就是训练数据集中大部分实例点是线性可分的,只是一些特殊实例点的存在使得这种数据集不适用于直接使用线性可分支持向量机进行处理,但也没有到完全线性不可分的程度。所以近似线性可分支持向量机问题的关键就在于这些少数的特殊点。
相较于线性可分情况下直接的硬间隔最大化策略,近似线性可分需要采取一种称为软间隔最大化的策略来处理该问题。少数特殊点不满足函数间隔大于1的约束条件,近似线性可分支持向量机的解决方案是对每个这样的特殊实例点引入一个松弛变量\(ξ_i≥0\),使得函数间隔加上松弛变量后大于等于1,约束条件就变为:
\(y_i(w∙x_i+b)+ξ_i≥1\)
相应的目标函数变为:\(\frac{1}{2}‖w‖^2+C∑_{i=1}^Nξ_i\)
转化为凸二次规划问题:
\(min_{w,b,ξ} \frac{1}{2}‖w‖^2+C∑_{i=1}^N ξ_i\)
s.t. $ y_i(w∙x_i+b)≥1−ξ_i, i=1, 2,⋯,N \quad \quad ξ_i≥0, i=1, 2,⋯,N$
相应的拉格朗日函数为:
\(L(w,b,ξ,α,μ)=\frac{1}{2}‖w‖^2+C∑_{i=1}^N ξ_i−∑_{i=1}^N α_i(y_i(w∙x_i+b)−1+ξ_i)−∑_{i=1}^N μ_iξ_i\)
原始问题为极小极大化问题,则对偶问题为极大极小化问题。同样先对\(L(w,b,ξ,α,μ)\)求\(w,b,ξ\)的极小,再对其求\(α\)的极大。首先求\(L(w,b,ξ,α,μ)\)关于\(w,b,ξ\)的偏导:
\(\frac{∂L}{∂w} = w−∑_{i=1}^Nα_i y_ix_i=0\)
\(\frac{∂L}{∂b} =−∑_{i=1}^N α_i y_i=0\)
\(\frac{∂L}{∂ξ} =C−α_i−μ_i=0\)
解得:
\(w=∑_{i=1}^N α_i y_i x_i\)
\(∑_{i=1}^N α_i y_i=0\)
$ C−α_i−μ_i=0$
同样将求解式代入到拉格朗日函数中:
\(min_{w,b,ξ} L(w,b,ξ,α,μ)=−\frac{1}{2} ∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)+∑_{i=1}^N α_i\)
然后对\(min_{w,b,ξ} L(w,b,ξ,α,μ)\)求α的极大,可规范为对偶问题如下:
\(max_α L(w,b,ξ,α,μ)=−\frac{1}{2} ∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j(x_i∙x_j)+∑_{i=1}^N α_i\)
s.t. $ ∑_{i=1}^N α_i y_i=0 \quad C−α_i−μ_i=0 \quad α_i≥0 \quad μ_i≥0,i=1,2,⋯,N$
假设\(α^∗=(α_1^∗,α_2^∗,⋯,α_N^∗)^T\)是近似线性可分对偶最优化问题的解,根据拉格朗日对偶理论相关推论,上式满足KKT条件,有:]
\(\frac{∂L}{∂w}=w^∗−∑_{i=1}^N α_i^∗y_ix_i=0\)
\(\frac{∂L}{∂b} =−∑_{i=1}^N α_i^∗y_i=0\)
\(\frac{∂L}{∂ξ}=C−α^∗−μ^∗=0\)
\(α_i^∗(y_i(w^∗∙x_i+b^∗)−1+ξ_i^∗)=0\)
\(μ_i^∗ξ_i^∗=0\)
\(y_i(w^∗∙x_i+b^∗)−1+ξ_i^∗≥0\)
\(ξ_i^∗≥0\)
\(α_i^∗≥0\)
\(μ_i^∗≥0,i=1, 2,⋯,N\)
可解得:
\(w^∗=∑_{i=1}^N α_i^∗y_ix_i\)
\(b^∗=y_j−∑_{j=1}^N α_i^∗y_i(x_i∙x_j)\)
四、线性不可分支持向量机
实际应用场景下,线性可分情形占少数,很多时候碰到的数据是非线性的和线性不可分的。如前所述,多层感知机通过添加隐藏层来实现非线性,而支持向量机利用核技巧(kernel trick)来对线性不可分数据进行分类。
非线性问题往往难以直接求解,非线性支持向量机给出的方案是先将其转化为线性可分问题,再进行求解。这种转化方法也叫核技巧。
4.1 核函数
实现核技巧的主要工具就是核函数。假设输入空间为\(χ\),特征空间为\(ℋ\),若存在一个从\(χ\)到\(ℋ\)的映射\(ϕ(x)\),使得对所有的\(x,z∈χ\),函数\(K(x,z)=ϕ(x)∙ϕ(z)\),则\(K(x,z)\)是核函数,\(ϕ(x)\)和\(ϕ(z)\)均为映射函数。常用的核函数包括多项式核函数、高斯核函数、字符串核函数等。
多项式核函数:\(K(x,z)=(x∙z+1)^p\)
对应的分类决策函数为:\(f(x)=sign(∑_{i=1}^N α_i ^∗y_i(x_i∙x+1)^p+b^∗)\)
高斯核函数:\(K(x,z)=exp(−\frac{‖x−z‖^2}{2σ^2})\)
对应的分类决策函数为:\(f(x)=sign{∑_{i=1}^N α_i^∗y_i exp(−\frac{‖x−z‖^2}{2σ^2}) + b^∗}\)
4.2 优化求解
非线性可分支持向量机的凸优化问题可构造为:
$min_α \frac{1}{2} ∑_{i=1}^N ∑_{j=1}^N α_i α_j y_i y_j K(x_i∙x_j)−∑_{i=1}^N α_i $
s.t. $ ∑_{i=1}^Nα_iy_i=0$
\(0 ≤α_i≤C, i=1, 2,⋯,N\)
可求得最优解\(α^∗=(α_1^∗,α_2^∗,⋯,α_N^∗)^T\),然后选择\(α^∗\)的一个正分量\(0<α_2^∗<C\),计算:
\(b^∗=y_j−∑_{i=1}^N α_i^∗y_i K(x_i∙x_j)\)
最后可构造决策函数为:
\(f(x)=sign(∑_{i=1}^N α_i^∗y_i K(x∙x_j)+b^∗)\)
可以尝试使用序列最小最优化算法(SMO)来求解非线性可分支持向量机问题。
五、总结
- 相较于感知机的无穷多解,支持向量机需要找到分类间隔最大化的分隔超平面,因为支持向量机仅有一个最优解。
- 通过不同的间隔最大化策略,支持向量机模型可分为线性可分支持向量机、近似线性可分支持向量机和线性不可分支持向量机。
- 但无论是哪种情况,支持向量机都可以形式化为求解一个凸二次规划问题。线性可分支持向量机通过硬间隔最大化策略来寻找最优超平面,对应到具体求解上,可以使用拉格朗日对偶性来求解对偶问题的最优解。
- 近似线性可分支持向量机通过软间隔最大化策略来寻找最优超平面,与线性可分不同的是,目标函数需要补充一个惩罚项。
- 线性不可分支持向量机通过核函数来实现非线性,将线性不可分问题转化为线性可分问题后再求解。
- 线性不可分支持向量机可以使用SMO算法进行求解。