间隔与支持向量
在分类问题中,可能存在多个划分超平面将不同类别的样本分开,如图6.1所示。直观上看,应该去找位于两类训练样本“正中间”的划分超平面。
划分超平面可通过如下线性方程来描述:
其中,
ω
\pmb{ω}
ωωω为法向量,
b
b
b为位移项。显然,划分超平面可被这两个参数确定,我们将其记为
(
ω
,
b
)
(\pmb{ω}, b)
(ωωω,b). 样本空间中任意点
x
x
x到超平面
(
ω
,
b
)
(\pmb{ω}, b)
(ωωω,b)的距离可写为
这是因为点到平面的距离公式为
扩展到高维空间后可得r的表达式。
假设超平面
(
ω
,
b
)
(\pmb{ω}, b)
(ωωω,b)能将训练样本正确分类,则总存在缩放变换使下式成立:
如图6.2所示,距离超平面最近的这几个训练样本点使上式的等号成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为
它被称为“间隔”(margin)。
最大化间隔的优化问题可写为
写成最小化形式为
这就是支持向量机(Support Vector Machine, SVM)的基本型。
对偶问题
我们希望求解上式来得到最大间隔划分超平面所对应的模型
这是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计算包求解,但我们可以有更高效的办法。
对上式使用拉格朗日乘子法可得到其“对偶问题”(dual problem),该问题的拉格朗日函数为
令
L
L
L对
ω
\pmb{ω}
ωωω和
b
b
b的偏导为零可得
代入拉格朗日函数,可得到对偶问题
解出
α
\pmb{α}
ααα后,求出
ω
\pmb{ω}
ωωω与
b
b
b即可得到模型
注意到基本型中有不等式约束,因此上述过程需满足KKT条件,即要求
于是,对任意第
i
i
i个训练样本,总有
α
i
=
0
α_i=0
αi=0或
y
i
f
(
x
i
)
=
1
y_if(\mathbf{x}_i)=1
yif(xi)=1.
若 α i = 0 α_i=0 αi=0,则该样本将不会在模型中出现,也就不会对 f ( x ) f(\mathbf{x}) f(x)有任何影响;
若 α i > 0 α_i\gt0 αi>0,则必有 y i f ( x i ) = 1 y_if(\mathbf{x}_i)=1 yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
上述对偶问题是一个二次规划问题,可使用通用的二次规划算法来求解,但其规模正比于训练样本数,这会在实际任务中造成很大的开销。此处我们介绍一个高效算法——SMO(Sequential Minimal Optimization)。
SMO的基本思路是先固定 α i α_i αi之外的所有参数,然后求 α i α_i αi上的极值。由于存在约束 ∑ α i y i = 0 \sumα_iy_i=0 ∑αiyi=0,若固定 α i α_i αi之外的其他变量,则 α i α_i αi可由其他变量导出。于是,SMO每次选择两个变量 α i α_i αi和 α j α_j αj,并固定其他参数。这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:
- 选取一对需更新的变量 α i α_i αi和 α j α_j αj;
- 固定 α i α_i αi和 α j α_j αj以外的参数,求解对偶问题获得更新后的 α i α_i αi和 α j α_j αj。
选取的 α i α_i αi和 α j α_j αj中只需有一个不满足KKT条件,目标函数就会在迭代后增大。直观来看,KKT条件违背的程度越大,则变量更新后可能导致的目标函数值增幅越大。于是,SMO先选取违背KKT条件程度最大的变量。对第二个变量的选择,SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。一种直观的解释是,这样的两个变量有很大的差别,对它们进行更新会带给目标函数值更大的变化。
具体来说,仅考虑
α
i
α_i
αi和
α
j
α_j
αj时,对偶问题的约束可重写为
其中
消去变量
α
j
α_j
αj后,则得到一个关于
α
i
α_i
αi的单变量二次规划问题,仅有的约束是
α
i
≥
0
α_i\ge0
αi≥0,这样的二次规划问题的闭式解可高效计算出来。
对于偏移项
b
b
b,我们注意到对任意
s
s
s都有
其中
S
=
{
i
∣
α
i
>
0
,
i
=
1
,
2
,
.
.
.
,
m
}
S=\{i|α_i\gt0,i=1,2,...,m\}
S={i∣αi>0,i=1,2,...,m}为所有支持向量的下标集。理论上,可选取任意支持向量求解上式获得
b
b
b,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值
核函数
核函数用于解决非线性可分问题,例如图6.3中的“异或”问题。函数
ϕ
\phi
ϕ将低维空间映射到高维空间,使样本可分。
令
ϕ
(
x
)
\phi(\mathbf{x})
ϕ(x)表示将
x
\mathbf{x}
x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
类似地,优化问题可写为
其对偶问题是
令
于是对偶问题可重写为
求解后即可得到
这里的函数
κ
\kappa
κ就是“核函数”(kernel function).上述式子亦称为“支持向量展式”(support vector expansion).
已经证明,
只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。
表6.1列出了几种常用的核函数。
软间隔与正则化
在现实任务中,往往很难确定合适的核函数使得训练样本在特征空间中线性可分。缓解该问题的一个办法是允许出错。为此,要引入“软间隔”(soft margin)的概念,如图6.4所示。
前面介绍的支持向量机形式要求所有样本划分正确,这称为“硬间隔”(hard margin),而软间隔允许某些样本不满足约束。于是,优化目标可写为
其中
C
>
0
C\gt0
C>0是一个常数,
l
0
/
1
l_{0/1}
l0/1是“0/1损失函数”
然而,
l
0
/
1
l_{0/1}
l0/1非凸、非连续,数学性质不太好。于是,人们常用替代损失函数,它们一般具有较好的数学性质。图6.5给出了三种常用的替代损失函数(
l
l
o
g
(
z
)
l_{log}(z)
llog(z)的图像有点问题,它与纵轴的交点应该在0到1之间):
优化目标的一般形式可写为
加法的左右两项分别称为“结构风险”(structural risk)和“经验风险”(empirical risk);C用于对二者进行折中。上式称为“正则化”(regularization)问题,
Ω
(
f
)
Ω(f)
Ω(f)称为正则化项,
C
C
C则称为正则化常数。
支持向量回归
待续
核方法
待续
参考文献
周志华. (2016). 机器学习. 清华大学出版社,北京