文章目录
在机器学习中,有一种分类问题,这种分类问题只有两个预测结果,是或否,即:
f : R D → { 0 , 1 } f:\mathbb R^D\rightarrow \{0,1\} f:RD→{0,1}
为了计算方便,我们使用0,1来表示两种分类的结果,这种分类问题被称为 二元分类(Binary Classification)。本章节就是主要介绍用 支持向量机(Support Vector Machine,SVM)来解决这种分类问题。
支持向量机给我们提供了一个用几何的方式的视角看待监督式机器学习。在原先的章节中,我们使用概率模型来理解机器学习问题:用极大似然估计和贝叶斯推断对模型进行优化。支持向量机利用的是另一个角度,这种角度需要大量的代数知识,如内积、投影等。另外,由于用支持向量机解的优化问题没有一个解析解,所以我们需要利用之前学到的各种的优化方法,这可以作为之前学到的知识的一种实践。
在支持向量机的视角下的机器学习问题与概率视角下的机器学习问题略有不同,前者的模型是由数据分布的概率视角得出的。后者是设计一个函数,然后再训练的过程中不断优化,这是基于几何理解的。
接下来我们将从两个视角看待SVM:几何视角和损失函数视角。同时,为了提高模型的泛化能力,线性分类子应该允许一些错误的分类。之后我们还利用拉格朗日乘子得到对偶版本的SVM,这让我们可以利用另一个角度看待SVM。我们还介绍SVM的核方法,以及解非线性核SVM的优化问题。
分离超平面(Separating Hyperplanes)
对于两点的相似程度,我们可以使用内积来表示
⟨
x
i
,
x
j
⟩
\langle x_i,x_j\rangle
⟨xi,xj⟩。而一个分类问题的本质就是将数据集在一个平面上表示,然后将数据所在的空间划分成两个子空间。为了方便起见,我们考虑一个简单的分类问题:
f
:
R
D
→
R
,
x
∈
R
D
x
↦
f
(
x
)
:
=
⟨
w
,
x
⟩
+
b
f:\mathbb R^D\rightarrow \mathbb R, \ x\in \mathbb R^D\\ x\mapsto f(x):=\langle w,x\rangle+b
f:RD→R, x∈RDx↦f(x):=⟨w,x⟩+b
其中的参数为:
w
∈
R
D
,
b
∈
R
w\in\mathbb R^D,b\in \mathbb R
w∈RD,b∈R.我们原先提到,超平面实际上就是仿射子空间,所以我们假设一个超平面在一个二分类问题中将两类数据分离到两个子空间中:
{
x
∈
R
D
:
f
(
x
)
=
0
}
\{x\in\mathbb R^D:f(x)=0\}
{x∈RD:f(x)=0}
在下图中,我们可以知道w是超平面的法向量,b是超平面的截距。
证明:
假设有两个点在超平面上
x
a
,
x
b
x_a,x_b
xa,xb:
f
(
x
a
)
−
f
(
x
b
)
=
⟨
w
,
x
a
⟩
+
b
−
(
⟨
w
,
x
b
⟩
+
b
)
=
⟨
w
,
x
a
−
x
b
⟩
f(x_a)-f(x_b)=\langle w,x_a\rangle+b-(\langle w,x_b\rangle + b)=\langle w, x_a-x_b\rangle
f(xa)−f(xb)=⟨w,xa⟩+b−(⟨w,xb⟩+b)=⟨w,xa−xb⟩
由于超平面的方程为
⟨
w
,
x
⟩
+
b
=
0
\langle w,x\rangle +b=0
⟨w,x⟩+b=0,而选取的两个点在超平面上,所以
f
(
x
a
)
,
f
(
x
b
)
=
0
f(x_a),f(x_b)=0
f(xa),f(xb)=0,所以:
⟨
w
,
x
a
−
x
b
⟩
=
0
\langle w, x_a-x_b\rangle=0
⟨w,xa−xb⟩=0
所以,w与超平面相互垂直。
对于一个二分类问题,数据点在超平面的上方为一类,下方为另一类,所以:
y
n
=
{
1
,
⟨
w
,
x
n
⟩
+
b
≥
0
−
1
⟨
w
,
x
n
⟩
+
b
<
0
y_n=\left\{\begin{aligned} 1,\quad\langle w,x_n\rangle+b\ge0 \\ -1\quad \langle w,x_n\rangle+b <0 \end{aligned}\right.
yn={1,⟨w,xn⟩+b≥0−1⟨w,xn⟩+b<0
上式也可以直接整理到一个式子中:
y
n
(
⟨
w
,
x
n
⟩
+
b
)
≥
0
y_n(\langle w,x_n\rangle+b)\ge 0
yn(⟨w,xn⟩+b)≥0.这就是分类问题的分类器。
原始支持向量机(Primal Support Vector Machine)
对于一个线性可分的数据集,有时候能够将两类数据分开的超平面不止一个,我们需要找到其中的较好的一个超平面,其中的一个想法就是最大化两类数据到超平面的距离,这样能够提高模型的泛化能力。(这样想,如果一个分类器离数据点很近,那么只要这个数据点有一点波动,就可能导致数据点的类别变化)
![](https://i-blog.csdnimg.cn/blog_migrate/76fd5cccf38a6a86091126faac3fe695.png)
间隔的概念(Concept of the Margin)
我们假设有一个样本点
x
a
x_a
xa是这一类数据中离超平面最近的点, 这个样本点在超平面上的正交投影为
x
a
′
x_a'
xa′,如下图所示。我们可以发现
x
a
x_a
xa与
x
a
′
x_a'
xa′之间的距离向量与
w
w
w相互平行,所以这个距离向量可以用
r
w
∥
w
∥
r\frac{w}{\|w\|}
r∥w∥w表示,其中的r为比例参数,然后根据向量加法:
x
a
=
x
a
′
+
r
w
∥
w
∥
x_a = x_a'+r\frac{w}{\|w\|}
xa=xa′+r∥w∥w
对于r,我们还可以认为是
x
a
x_a
xa在
w
w
w上的投影的坐标。
![](https://i-blog.csdnimg.cn/blog_migrate/fcea76915b99f9c38bde57293f55976a.png)
我们需要尽量最大化这个距离向量,所以我们假设这个距离向量的模不应该小于r(即这个数据点到其投影点的距离不应该小于 ∣ r ∣ |r| ∣r∣),所以有:
y n ( ⟨ w , x n ⟩ + b ) ≥ r y_n(\langle w,x_n\rangle+b)\ge r yn(⟨w,xn⟩+b)≥r
由于我们并不关心 w w w的大小,只需要求他的方向,所以可以假设 ∥ w ∥ = 1 \|w\|=1 ∥w∥=1。将上面的条件组合成一个约束优化问题:
max w , b , r r ⏟ m a r g i n s . t . y n ( ⟨ w , x n ⟩ + b ≥ r ) ⏟ d a t a f i t t i n g , ∥ w ∥ = 1 ⏟ n o r m a l i z a t i o n , r > 0 \max_{w,b,r}\underbrace{r}_{margin}\\ s.t. \quad \underbrace{y_n(\langle w, x_n\rangle+b\ge r)}_{data fitting},\ \underbrace{\|w\|=1}_{normalization},r>0 w,b,rmaxmargin rs.t.datafitting yn(⟨w,xn⟩+b≥r), normalization ∥w∥=1,r>0
这也就是说我们想最大化间隔r,同时保证数据在超平面的正确的方向。
![](https://i-blog.csdnimg.cn/blog_migrate/da5715268febf31c0639322f7f9d9c7c.png)
when the margin is large, the “complexity” of the function class is low, and hence learning is possible
间隔的传统推导(Traditional Derivation of the Margin)
我们之前在推导边缘的时候,因为我们不关心
w
w
w的大小,只关心它的方向,所以我们就假设
∥
w
∥
=
1
\|w\|=1
∥w∥=1.在本节中,我们将使用不同的假设推导边缘最大化问题。假设数据集中的一类离超平面最近的点为
x
a
x_a
xa,距离为1,即
⟨
w
,
x
a
⟩
+
b
=
1
\langle w,x_a\rangle +b=1
⟨w,xa⟩+b=1, 所以我们可以重新调整超平面,使得这个点在移动后的超平面上,如图12.5. 有因为这个数据点的投影
x
a
′
x'_a
xa′在超平面上,所以:
⟨
w
,
x
a
′
⟩
+
b
=
0
\langle w,x_a'\rangle +b = 0
⟨w,xa′⟩+b=0
之后将
x
a
=
x
a
′
+
r
w
∥
w
∥
x_a = x_a'+r\frac{w}{\|w\|}
xa=xa′+r∥w∥w带入到上式:
⟨
w
,
x
a
−
r
w
∥
w
∥
⟩
+
b
=
0
\langle w, x_a-r\frac{w}{\|w\|}\rangle+b=0
⟨w,xa−r∥w∥w⟩+b=0
再根据内积的双线性的性质:
⟨
w
,
x
a
⟩
+
b
−
r
⟨
w
,
w
⟩
∥
w
∥
=
0
\langle w,x_a\rangle +b-r\frac{\langle w,w\rangle}{\|w\|}=0
⟨w,xa⟩+b−r∥w∥⟨w,w⟩=0
由于我们之前假设
⟨
w
,
x
a
⟩
+
b
=
1
\langle w,x_a\rangle +b=1
⟨w,xa⟩+b=1,有因为
⟨
w
,
w
⟩
=
∥
w
∥
2
\langle w,w\rangle=\|w\|^2
⟨w,w⟩=∥w∥2,全部带入上式:
r
=
1
∥
w
∥
r = \frac{1}{\|w\|}
r=∥w∥1
由于在计算的时候w也是未知的,所以我们并不能通过上式将r推导出来,但是我们可以将这个变量作为中间变量,所以接下来的章节我们将会使用
1
∥
w
∥
\frac{1}{\|w\|}
∥w∥1代替
r
r
r.当然这个r 也可以看成数量点向超平面的投影误差。 这样我们可以发现,这个假设
r
=
1
r=1
r=1与之前的假设
∥
w
∥
=
1
\|w\|=1
∥w∥=1是一致的。
于是,我们原先的约束问题可以转换成:
max
w
,
b
1
∥
w
∥
s
.
t
.
y
n
(
⟨
w
,
x
n
⟩
+
b
≥
1
)
f
o
r
a
l
l
n
=
1
,
⋯
,
N
\max_{w,b}\frac{1}{\|w\|}\\ s.t. \quad y_n(\langle w,x_n\rangle+b\ge1) \quad for \ all \quad n=1,\cdots,N
w,bmax∥w∥1s.t.yn(⟨w,xn⟩+b≥1)for alln=1,⋯,N
为了计算方便,我们将上式中的求最大值转换成求最小值:
min
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
n
(
⟨
w
,
x
n
⟩
+
b
≥
1
)
f
o
r
a
l
l
n
=
1
,
⋯
,
N
\min_{w,b}\frac12{\|w\|}^2\\ s.t. \quad y_n(\langle w,x_n\rangle+b\ge1) \quad for \ all \quad n=1,\cdots,N
w,bmin21∥w∥2s.t.yn(⟨w,xn⟩+b≥1)for alln=1,⋯,N
上式就是硬边界支持向量机(hard margin SVM)。之所以称为“硬”,是因为这个边界不允许任何数据点违反边界条件。
为什么将间隔设为1(Why We Can Set the Margin to 1)
我们需要证明:
max
w
,
b
,
r
r
⏟
margin
subject to
y
n
(
⟨
w
,
x
n
⟩
+
b
)
⩾
r
⏟
data fitting
,
∥
w
∥
=
1
⏟
normalization
,
r
>
0
\begin{aligned} &\max _{\boldsymbol{w}, b, r} \underbrace{r}_{\text {margin }} \\ &\text { subject to } \quad \underbrace{y_{n}\left(\left\langle\boldsymbol{w}, \boldsymbol{x}_{n}\right\rangle+b\right) \geqslant r}_{\text {data fitting }}, \underbrace{\|\boldsymbol{w}\|=1}_{\text {normalization }}, \quad r>0 \end{aligned}
w,b,rmaxmargin
r subject to data fitting
yn(⟨w,xn⟩+b)⩾r,normalization
∥w∥=1,r>0
与
min
w
,
b
1
2
∥
w
∥
2
⏟
margin
subject to
y
n
(
⟨
w
,
x
n
⟩
+
b
)
⩾
1
⏟
data fitting
.
\min _{\boldsymbol{w}, b} \underbrace{\frac{1}{2}\|\boldsymbol{w}\|^{2}}_{\text {margin }}\\{\text { subject to }} \underbrace{y_{n}\left(\left\langle\boldsymbol{w}, \boldsymbol{x}_{n}\right\rangle+b\right) \geqslant 1}_{\text {data fitting }} .
w,bminmargin
21∥w∥2 subject to data fitting
yn(⟨w,xn⟩+b)⩾1.
是等价的。后者是利用了假设
r
=
1
r=1
r=1.以下证明不严格,主要用于描述证明思路。
假设一个超平面的方程为:
w
x
+
b
=
r
wx+b=r
wx+b=r,将右边归一化之后得:
w
r
x
+
b
r
=
1
\frac{w}{r}x+\frac{b}{r}=1
rwx+rb=1,于是可以令:
w
′
=
w
r
,
b
′
=
b
r
w'=\frac{w}{r},\ b'=\frac{b}{r}
w′=rw, b′=rb于是:
∥
w
′
∥
=
1
r
∥
w
∥
\|w'\|=\frac 1r \|w\|
∥w′∥=r1∥w∥,由于原命题中有一个假设:
∥
w
∥
=
1
\|w\|=1
∥w∥=1,所以可以得到:
∥
w
′
∥
=
1
r
\|w'\|=\frac 1r
∥w′∥=r1.带入原命题中,可以得到与要证明的命题一致的形式:
min
w
′
,
b
1
2
∥
w
′
∥
2
⏟
margin
subject to
y
n
(
⟨
w
′
,
x
n
⟩
+
b
)
⩾
1
⏟
data fitting
.
\min _{\boldsymbol{w'}, b} \underbrace{\frac{1}{2}\|\boldsymbol{w'}\|^{2}}_{\text {margin }}\\{\text { subject to }} \underbrace{y_{n}\left(\left\langle\boldsymbol{w'}, \boldsymbol{x}_{n}\right\rangle+b\right) \geqslant 1}_{\text {data fitting }} .
w′,bminmargin
21∥w′∥2 subject to data fitting
yn(⟨w′,xn⟩+b)⩾1.
或者是说,两个参数同时变化相当于对超平面的平移,但是无论怎么平移,方程都是指向同一个超平面的。(几何间隔与函数间隔)
软间隔支持向量机:几何视角(Soft Margin SVM: Geometric View)
由于测量误差等的因素,很难保证数据点都准确。所以我们希望能够允许部分的数据点被错误分类,这种允许一些错误分类的支持向量机称为软间隔支持向量机。
在几何视角下,我们需要介绍一个关键变量:松弛变量(slack variable)
![](https://i-blog.csdnimg.cn/blog_migrate/0b0d803b32b697c7d1ef6c1ae3d8b2c3.png)
我们为每一组数据 ( x i , y i ) (x_i,y_i) (xi,yi)引入一个松弛变量$ \xi_i$这样允许一组数据在间隔以内,甚至是在超平面的错误的一边。我们将松弛变量加入到硬间隔支持向量机中:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
n
=
1
N
ξ
n
s
.
t
.
y
n
(
⟨
w
,
x
n
⟩
+
b
)
≥
1
−
ξ
n
,
ξ
n
≥
0
\min_{w,b,\xi}\frac 12\|w\|^2+C\sum^N_{n=1}\xi_n\\ s.t.\quad y_n(\langle w,x_n\rangle +b)\ge1-\xi_n,\quad \xi_n\ge0
w,b,ξmin21∥w∥2+Cn=1∑Nξns.t.yn(⟨w,xn⟩+b)≥1−ξn,ξn≥0
其中,
C
C
C被称为正则化系数,
∥
w
∥
2
\|w\|^2
∥w∥2被称为正则项。这个定义与之前的好像略有不同,可以认为是在原先的正则化式子中同时除以了一个正则化系数
λ
\lambda
λ.上面这个式子就是软间隔支持向量机(Soft Margin SVM).
注意到式中的b没有正则化,因为未正则化的b使理论分析复杂化并且降低了计算效率。
The unregularized term b complicates theoretical analysis (Steinwart and Christmann, 2008, chapter 1) and decreases computational efficiency (Fan et al., 2008).(?)
公式理解: 1 − ξ 1-\xi 1−ξ是错误分类的数据点距超平面的距离。
软间隔SVM:损失函数视角(Soft Margin SVM: Loss Function View)
在SVM中,我们假设类就是超平面:
f
(
x
)
=
⟨
w
,
x
⟩
+
b
f(x)=\langle w,x\rangle+b
f(x)=⟨w,x⟩+b
现在我们要找到对应的损失函数,在之前的章节中的线性规划问题中使用的平方损失函数在分类问题中并不适合,所以我们需要找到其他的损失函数。
有一个候选函数就是0-1损失函数(zero-one loss)。当样本被错误分类的时候,函数值为1,否则为0,这个函数标识为
1
(
f
(
x
)
≠
y
n
)
\boldsymbol 1(f(x)\ne y_n)
1(f(x)=yn)。但是使用这个损失函数就需要解决一个组合优化问题,难度很大。
还有一种损失函数为合页损失函数(hinge loss):
ℓ
=
max
{
0
,
1
−
t
}
,
w
h
e
r
e
t
=
y
f
(
x
)
=
y
(
⟨
w
,
x
⟩
+
b
)
\ell = \max\{0,1-t\},\quad where \quad t=yf(x)=y(\langle w,x\rangle+b)
ℓ=max{0,1−t},wheret=yf(x)=y(⟨w,x⟩+b)
也就是当预测结果在正确的方向且
t
≥
1
t\ge1
t≥1时, 函数值为0.其他情况为非零,也可以将上式写成:
ℓ
=
{
0
i
f
y
≥
1
1
−
t
i
f
t
<
1
\ell =\left\{\begin{aligned} &0\quad &if\quad y\ge1 \\ &1-t\quad &if\quad t<1 \end{aligned}\right.
ℓ={01−tify≥1ift<1
对于硬间隔SVM:
ℓ
=
{
0
i
f
t
≥
1
∞
i
f
t
<
1
\ell=\left\{\begin{aligned} &0\quad &if\quad t\ge 1\\ &\infin\quad &if \quad t<1 \end{aligned}\right.
ℓ={0∞ift≥1ift<1
损失函数在图中的表示为:
![](https://i-blog.csdnimg.cn/blog_migrate/7a564953ccb0803c3485822d993fea30.png)
将合页损失函数带到原先的优化问题中:
min
w
,
b
1
2
∥
w
∥
2
⏟
r
e
g
u
l
a
r
i
z
e
r
+
C
∑
n
=
1
N
max
{
0
,
1
−
y
n
(
⟨
w
,
x
n
⟩
+
b
)
}
⏟
e
r
r
o
r
t
e
r
m
\min_{w,b}\underbrace {\frac 12\|w\|^2}_{regularizer}+\underbrace{C\sum^N_{n=1}\max\{0,1-y_n(\langle w,x_n\rangle + b)\}}_{error\ term}
w,bminregularizer
21∥w∥2+error term
Cn=1∑Nmax{0,1−yn(⟨w,xn⟩+b)}
由上可以知道,最大间隔实际上就是正则化。上述的无约束优化问题的解可以直接用梯度下降法求解,与之前的约束优化问题的结果是一致的。这是因为:
min
t
max
{
0
,
1
−
t
}
\min_{t}\max\{0,1-t\}
tminmax{0,1−t}
等价于:
min
ξ
,
t
ξ
s
.
t
.
ξ
≥
0
,
ξ
≥
1
−
t
\min_{\xi,t}\quad\xi\\ s.t. \quad \xi\ge0,\xi\ge1-t
ξ,tminξs.t.ξ≥0,ξ≥1−t
将上式带入无约束优化问题中,经过整理可以得到与软间隔SVM一致的形式。
对偶支持向量机(Dual Support Vector Machine)
原先我们提到的支持向量机的参数数量是由特征的数量决定的。在这部分,我们介绍对偶支持向量机,他的参数数量是由训练集数据的数量决定,这样能够有效处理特征多,数据少的数据集。另外, 对偶支持向量机能够很好地引入核函数。在这里地对偶主要指凸对偶(convex duality)
利用拉格朗日乘子解决凸对偶(Convex Duality via Lagrange Multipliers)
将之前的约束优化问题利用拉格朗日乘子转化成非约束优化问题,其中
α
,
γ
\alpha,\gamma
α,γ是拉格朗日乘子
L
(
w
,
b
,
ξ
,
α
,
γ
)
=
1
2
∥
w
∥
2
+
C
∑
n
=
1
N
ξ
n
−
∑
n
=
1
N
α
n
(
y
n
(
⟨
w
,
x
n
⟩
+
b
)
−
1
+
ξ
n
)
⏟
constraint (12.26b)
−
∑
n
=
1
N
γ
n
ξ
n
⏟
constraint
(
12.26
c
)
\begin{aligned} \mathfrak{L}(\boldsymbol{w}, b, \xi, \alpha, \gamma)=& \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{n=1}^{N} \xi_{n} \\ & \underbrace{-\sum_{n=1}^{N} \alpha_{n}\left(y_{n}\left(\left\langle\boldsymbol{w}, \boldsymbol{x}_{n}\right\rangle+b\right)-1+\xi_{n}\right)}_{\text {constraint (12.26b) }} \underbrace{-\sum_{n=1}^{N} \gamma_{n} \xi_{n}}_{\text {constraint }(12.26 \mathrm{c})} \end{aligned}
L(w,b,ξ,α,γ)=21∥w∥2+Cn=1∑Nξnconstraint (12.26b)
−n=1∑Nαn(yn(⟨w,xn⟩+b)−1+ξn)constraint (12.26c)
−n=1∑Nγnξn
将拉格朗日函数对各个参数进行求导:
∂
L
∂
w
=
w
⊤
−
∑
n
=
1
N
α
n
y
n
x
n
⊤
,
∂
L
∂
b
=
−
∑
n
=
1
N
α
n
y
n
∂
L
∂
ξ
n
=
C
−
α
n
−
γ
n
\begin{aligned} \frac{\partial \mathfrak{L}}{\partial \boldsymbol{w}} &=\boldsymbol{w}^{\top}-\sum_{n=1}^{N} \alpha_{n} y_{n} \boldsymbol{x}_{n}^{\top}, \\ \frac{\partial \mathfrak{L}}{\partial b} &=-\sum_{n=1}^{N} \alpha_{n} y_{n} \\ \frac{\partial \mathfrak{L}}{\partial \xi_{n}} &=C-\alpha_{n}-\gamma_{n} \end{aligned}
∂w∂L∂b∂L∂ξn∂L=w⊤−n=1∑Nαnynxn⊤,=−n=1∑Nαnyn=C−αn−γn
将第一个式子设为0,得到:
w
=
∑
n
=
1
N
α
n
y
n
x
n
w=\sum^N_{n=1}\alpha_ny_nx_n
w=n=1∑Nαnynxn
于是可以知道原始SVM的权重向量就是数据集的线性组合。这印证了我们原先提到的表示定理(representer theorem):最小经验风险的解就在由数据定义的子空间中。
表示会定理也给支持向量机这个名字提供了另一种解释。当 x n x_n xn对应的 α n \alpha_n αn为0的时候,说明这个数据点对解没有贡献,而当它大于0的时候,就被称为支持向量,它支撑起了超平面。
将
w
w
w的式子带入到上面的拉格朗日函数中:
D
(
ξ
,
α
,
γ
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
y
i
y
j
α
i
α
j
⟨
x
i
,
x
j
⟩
−
∑
i
=
1
N
y
i
α
i
⟨
∑
j
=
1
N
y
j
α
j
x
j
,
x
i
⟩
+
C
∑
i
=
1
N
ξ
i
−
b
∑
i
=
1
N
y
i
α
i
+
∑
i
=
1
N
α
i
−
∑
i
=
1
N
α
i
ξ
i
−
∑
i
=
1
N
γ
i
ξ
i
\begin{aligned} \mathfrak{D}(\xi, \alpha, \gamma)=& \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} y_{i} y_{j} \alpha_{i} \alpha_{j}\left\langle\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right\rangle-\sum_{i=1}^{N} y_{i} \alpha_{i}\left\langle\sum_{j=1}^{N} y_{j} \alpha_{j} \boldsymbol{x}_{j}, \boldsymbol{x}_{i}\right\rangle \\ &+C \sum_{i=1}^{N} \xi_{i}-b \sum_{i=1}^{N} y_{i} \alpha_{i}+\sum_{i=1}^{N} \alpha_{i}-\sum_{i=1}^{N} \alpha_{i} \xi_{i}-\sum_{i=1}^{N} \gamma_{i} \xi_{i} \end{aligned}
D(ξ,α,γ)=21i=1∑Nj=1∑Nyiyjαiαj⟨xi,xj⟩−i=1∑Nyiαi⟨j=1∑Nyjαjxj,xi⟩+Ci=1∑Nξi−bi=1∑Nyiαi+i=1∑Nαi−i=1∑Nαiξi−i=1∑Nγiξi
再令
∂
L
∂
b
=
−
∑
n
=
1
N
α
n
y
n
=
0
\frac{\partial \mathfrak{L}}{\partial b}=-\sum_{n=1}^{N} \alpha_{n} y_{n}=0
∂b∂L=−∑n=1Nαnyn=0带入,由于内积是对称函数而且具有双线性,所以上式中的前两项是可以合并的。于是得到:
D
(
ξ
,
α
,
γ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
y
i
y
j
α
i
α
j
⟨
x
i
,
x
j
⟩
+
∑
i
=
1
N
α
i
+
∑
i
=
1
N
(
C
−
α
i
−
γ
i
)
ξ
i
\mathfrak{D}(\xi, \alpha, \gamma)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} y_{i} y_{j} \alpha_{i} \alpha_{j}\left\langle x_{i}, x_{j}\right\rangle+\sum_{i=1}^{N} \alpha_{i}+\sum_{i=1}^{N}\left(C-\alpha_{i}-\gamma_{i}\right) \xi_{i}
D(ξ,α,γ)=−21i=1∑Nj=1∑Nyiyjαiαj⟨xi,xj⟩+i=1∑Nαi+i=1∑N(C−αi−γi)ξi
又再令
∂
L
∂
ξ
n
=
C
−
α
n
−
γ
n
=
0
\frac{\partial \mathfrak{L}}{\partial \xi_{n}} =C-\alpha_{n}-\gamma_{n}=0
∂ξn∂L=C−αn−γn=0,又由于拉格朗日乘子
γ
i
≥
0
\gamma_i\ge0
γi≥0,所以
α
i
≤
C
\alpha_i\le C
αi≤C,于是原先的双系数拉格朗日就转换成单系数拉格朗日:
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
y
i
y
j
α
i
α
j
⟨
x
i
,
x
j
⟩
−
∑
i
=
1
N
α
i
subject to
∑
i
=
1
N
y
i
α
i
=
0
0
⩽
α
i
⩽
C
for all
i
=
1
,
…
,
N
\begin{array}{ll} \min _{\boldsymbol{\alpha}} & \frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} y_{i} y_{j} \alpha_{i} \alpha_{j}\left\langle\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right\rangle-\sum\limits_{i=1}^{N} \alpha_{i} \\ \text { subject to } & \sum\limits_{i=1}^{N} y_{i} \alpha_{i}=0 \\ 0 \leqslant \alpha_{i} \leqslant C & \text { for all } i=1, \ldots, N \end{array}
minα subject to 0⩽αi⩽C21i=1∑Nj=1∑Nyiyjαiαj⟨xi,xj⟩−i=1∑Nαii=1∑Nyiαi=0 for all i=1,…,N
这就是对偶支持向量机(Dual SVM),它对应的约束被称为“框型约束”(box constraints)拉格朗日乘子被限制在一个方形的区域内(
[
0
,
C
]
[0,C]
[0,C]).这种与坐标轴平行的约束,在数值计算的过程中非常高效。
当我们得到
α
\alpha
α之后,可以利用表示定理将最优的
w
w
w求出来。假设这个参数为
w
∗
w^*
w∗
在 L2 正则化问题上:
表示定理是指任意一个 L2 正则化的问题,其最佳 w* 都可以用 βn 与 Zn 线性组合得到。
假设数据点
x
n
x_n
xn在边界上, 所以有
⟨
w
∗
,
x
n
⟩
+
b
=
y
n
\langle w^*, x_n\rangle+b=y_n
⟨w∗,xn⟩+b=yn,所以参数b的解为:
b
∗
=
y
n
−
⟨
w
∗
,
x
n
⟩
b^*=y_n-\langle w^*,x_n\rangle
b∗=yn−⟨w∗,xn⟩
当假设不成立的时候,需要计算所有支持向量的上式右边式子的绝对值,然后找到中位数,这里省略。
对偶支持向量机:凸包视角(Dual SVM: Convex Hull View)
另一种理解支持向量机的方式需要借助一种几何参数。我们将拥有同样标签的数据点限制在我们构造的凸包中,如下图所示。
现在我们对凸包进行一个直观的解释。假设空间中有两个不相等的数据点
x
1
,
x
2
x_1,x_2
x1,x2,现在有两个参数
α
1
,
α
2
\alpha_1, \alpha_2
α1,α2,且
α
1
+
α
2
=
1
\alpha_1+\alpha_2=1
α1+α2=1,所以
α
1
x
!
+
α
2
x
2
\alpha_1x_!+\alpha_2x_2
α1x!+α2x2表示的就是
x
1
,
x
2
x_1,x_2
x1,x2之间的数,现在加上另一个数据点及参数
x
3
,
α
3
x_3,\alpha_3
x3,α3,这时候
∑
i
=
1
3
α
i
=
1
\sum\limits^3_{i=1}\alpha_i=1
i=1∑3αi=1,这时候,三个点的线性组合的数据点在一个二维的区域内。这个区域就称为凸包(convex hull)。
通常,构建一个凸包,可以利用一个非负的权重
α
n
≥
0
\alpha_n\ge0
αn≥0,对应数据
x
n
x_n
xn,于是,凸包可以表示为:
conv
(
X
)
=
{
∑
n
=
1
N
α
n
x
n
}
,
w
i
t
h
∑
n
=
1
N
α
n
=
1
,
α
n
≥
0
\operatorname{conv}(X)=\left\{\sum^N_{n=1}\alpha_nx_n\right\}, \quad with \ \sum^N_{n=1}\alpha_n=1,\alpha_n\ge0
conv(X)={n=1∑Nαnxn},with n=1∑Nαn=1,αn≥0
假设数据是可以分离的,那么这些数据对应的凸包就不会重合,我们找到两类数据中距离另一类最近的数据点
c
,
d
c,d
c,d,如上图所示,定义两个凸包之间的距离为:
w
:
=
c
−
d
w:=c-d
w:=c−d
想要这两个数据点尽可能接近,等价于以下的优化问题:
arg
min
w
∥
w
∥
=
arg
min
w
1
2
∥
w
∥
2
\arg \min_w\|w\|=\arg \min_w\frac 12\|w\|^2
argwmin∥w∥=argwmin21∥w∥2
由于c点在正凸包中,所以c点可以表示为:
c
=
∑
n
:
y
n
=
+
1
α
n
+
x
n
c=\sum_{n:y_n=+1}\alpha^+_nx_n
c=n:yn=+1∑αn+xn
同样的,d点可以表示为:
d
=
∑
n
:
y
n
=
−
1
a
n
−
x
n
d=\sum_{n:y_n=-1}a_n^-x_n
d=n:yn=−1∑an−xn
其中,
n
:
y
n
=
−
1
n:y_n=-1
n:yn=−1标签为-1的坐标索引。将两式带入到优化方程中:
min
α
1
2
∥
∑
n
:
y
n
=
+
1
α
n
+
x
n
−
∑
n
:
y
n
=
+
1
α
n
+
x
n
∥
\min_\alpha\frac12\left\| \sum_{n:y_n=+1}\alpha^+_nx_n-\sum_{n:y_n=+1}\alpha^+_nx_n \right\|
αmin21∥∥∥∥∥n:yn=+1∑αn+xn−n:yn=+1∑αn+xn∥∥∥∥∥
对于参数
α
\alpha
α:
∑
n
:
y
n
=
+
1
α
n
+
x
n
=
1
,
∑
n
:
y
n
=
−
1
a
n
−
x
n
=
1
\sum_{n:y_n=+1}\alpha^+_nx_n=1,\quad \sum_{n:y_n=-1}a_n^-x_n=1
n:yn=+1∑αn+xn=1,n:yn=−1∑an−xn=1
由于:
∑
n
=
1
N
y
n
α
n
=
∑
n
:
y
n
=
+
1
(
+
1
)
α
n
+
+
∑
n
:
y
n
=
−
1
(
−
1
)
α
n
−
=
∑
n
:
y
n
=
+
1
α
n
+
−
∑
n
:
y
n
=
−
1
α
n
−
=
1
−
1
=
0
\begin{aligned} \sum_{n=1}^{N} y_{n} \alpha_{n} &=\sum_{n: y_{n}=+1}(+1) \alpha_{n}^{+}+\sum_{n: y_{n}=-1}(-1) \alpha_{n}^{-} \\ &=\sum_{n: y_{n}=+1} \alpha_{n}^{+}-\sum_{n: y_{n}=-1} \alpha_{n}^{-}=1-1=0 \end{aligned}
n=1∑Nynαn=n:yn=+1∑(+1)αn++n:yn=−1∑(−1)αn−=n:yn=+1∑αn+−n:yn=−1∑αn−=1−1=0
所以,优化问题的约束条件为:
∑
n
=
1
N
y
n
α
n
=
0
\sum_{n=1}^Ny_n\alpha_n=0
n=1∑Nynαn=0
这里得到的约束优化问题与之前的对偶硬间隔支持向量机中的约束优化问题一致。
想要得到软间隔的支持向量机的约束优化问题,我们需要利用缩小包(reduce hull),这对参数的规模进行了限制
核方法(Kernels)
在对偶SVM中,内积只是在样本之间,而在样本与参数之间没有内积的关系,所以可以使用一个特征
ϕ
(
x
)
\phi(x)
ϕ(x)将式中的内积代替。这样问题就具有了模块性,使得我们能够将特征表示方法和分类方法分开考虑。
由于有些数据并非是线性可分的,所以需要
ϕ
(
x
)
\phi(x)
ϕ(x)是非线性函数,但是我们不是去定义一个这样的非线性的函数,然后计算它的内积,而是定义一个相似函数
k
(
x
i
,
x
j
)
k(x_i,x_j)
k(xi,xj),在这里这个相似函数称为核函数(Kernel Function),核函数的定义为:
对于一个非线性特征映射
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅)
k
:
X
×
X
→
R
k:\mathcal X\times\mathcal X\rightarrow\mathbb R
k:X×X→R
存在一个希尔伯特空间(Hilbert space)
H
\mathcal H
H有:
ϕ
:
X
→
H
\phi:\mathcal X\rightarrow \mathcal H
ϕ:X→H.特征映射的定义为:
k
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
H
k(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\rangle_\mathcal H
k(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩H
每一个核函数都对应着唯一一个再生核希尔伯特空间(reproducing kernel Hilbert space)。在这种关系中,
ϕ
(
x
)
=
k
(
⋅
,
x
)
\phi(x)=k(\cdot,x)
ϕ(x)=k(⋅,x)被称为规范特征图(Canonical Feature Map).这种将一个内积转换成核函数的方法称为核方法(Kernel Trick)。这种方法避免了显式的非线性特征映射。
由数据内积或者是将数据带入到核函数
k
(
⋅
,
⋅
)
k(\cdot,\cdot)
k(⋅,⋅)得到的矩阵
K
∈
R
N
×
N
K\in\mathbb R^{N\times N}
K∈RN×N被称为克莱姆矩阵(Cram Matrix),有时候也直接被称为核矩阵(Kernel Matrix),核函数需要时对称且半正定的,这样核矩阵才能是对称和半正定的,对此核矩阵的定义为:
∀
z
∈
R
N
:
z
⊤
K
z
≥
0
\forall z\in \mathbb R^N:z^\top Kz\ge0
∀z∈RN:z⊤Kz≥0
一些比较常用的核函数为:多项式核函数,高斯径向基核函数,有理二次核函数。下图是利用不同的核函数进行分类的结果:
注意函数的假设类仍旧是线性的,图中的非线性边界来源于核函数.
这个“核”有很多定义,在这里的核是来源于再生核希尔伯特空间。我们之前提到过的核空间代表的是零空间。还有一种就是在密度估计中的光滑核函数。
由于特征
ϕ
(
x
)
\phi(x)
ϕ(x)在数学上与核函数
k
(
x
i
,
x
j
)
k(x_i,x_j)
k(xi,xj)等价,所以我们常常选用一些比内积更好计算的核函数。例如,假设我们使用多项式核函数,当数据较多时,这时候即使是多项式的次数比较低,也会导致大量的特征(
x
1
,
x
2
,
x
3
→
x
1
∗
x
2
,
x
1
∗
x
3
⋯
x_1,x_2,x_3 \rightarrow x_1*x_2, x_1*x_3\cdots
x1,x2,x3→x1∗x2,x1∗x3⋯),但是使用核函数只需要对每一个输入进行一次乘法就可以了。
核方法的另一个优势是不需要将输入的数据表示为多元实数。而对于核函数的选择以及核函数的参数需要通过嵌套交叉验证的方式选择。
数值解(Numerical Solution)
在这部分,我们对原先提到的内容进行回顾。
首先我们是从损失函数的角度对支持向量机进行了解释,我们使用的合页损失函数
max
{
0
,
1
−
t
}
\max\{0,1-t\}
max{0,1−t},但是这个损失函数是一个不可微的函数,于是我们采用次梯度(subgradient)的方法,得到损失函数的梯度:
g
(
t
)
=
{
−
1
,
t
<
1
[
−
1
,
0
]
t
=
1
0
t
>
1
g(t)=\left\{\begin{aligned} &-1,\quad&t<1\\ &[-1,0]&t=1\\ &0&t>1 \end{aligned}\right.
g(t)=⎩⎪⎨⎪⎧−1,[−1,0]0t<1t=1t>1
这样我们就可以使用之前学过的一些优化算法进行优化了。
要想将原始支持向量机转换成二次规划的标准形式,我们假设内积为点乘,同时将原先所有的优化变量全部移到等式左边:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
n
=
1
N
ξ
n
s
.
t
.
{
−
y
n
x
n
⊤
w
−
y
n
b
−
ξ
n
≤
−
1
−
ξ
n
≤
0
\min_{w,b,\xi}\frac 12\|w\|^2+C\sum^N_{n=1}\xi_n\\ s.t.\quad \left\{\begin{aligned} &-y_nx_n^\top w-y_nb-\xi_n\le-1 \\ &-\xi_n\le0 \end{aligned}\right.
w,b,ξmin21∥w∥2+Cn=1∑Nξns.t.{−ynxn⊤w−ynb−ξn≤−1−ξn≤0
将上式矩阵化(将变量
w
,
x
n
,
b
w,x_n,b
w,xn,b放到向量中):
min
w
,
b
,
ξ
1
2
[
w
b
ξ
]
⊤
[
I
D
0
D
,
N
+
1
0
N
+
1
,
D
0
N
+
1
,
N
+
1
]
[
w
b
ξ
]
+
[
0
D
+
1
,
1
C
1
N
,
1
]
⊤
[
w
b
ξ
]
subject to
[
−
Y
X
−
y
−
I
N
0
N
,
D
+
1
−
I
N
]
[
w
b
ξ
]
⩽
[
−
1
N
,
1
0
N
,
1
]
\begin{aligned} &\min _{\boldsymbol{w}, b, \boldsymbol{\xi}} \quad \frac{1}{2}\left[\begin{array}{l} \boldsymbol{w} \\ b \\ \boldsymbol{\xi} \end{array}\right]^{\top}\left[\begin{array}{cc} \boldsymbol{I}_{D} & \mathbf{0}_{D, N+1} \\ \mathbf{0}_{N+1, D} & \mathbf{0}_{N+1, N+1} \end{array}\right]\left[\begin{array}{c} \boldsymbol{w} \\ b \\ \boldsymbol{\xi} \end{array}\right]+\left[\begin{array}{ll} \mathbf{0}_{D+1,1} & C \mathbf{1}_{N, 1} \end{array}\right]^{\top}\left[\begin{array}{l} \boldsymbol{w} \\ b \\ \boldsymbol{\xi} \end{array}\right] \\ &\text { subject to }\left[\begin{array}{ccc} -\boldsymbol{Y} \boldsymbol{X} & -\boldsymbol{y} & -\boldsymbol{I}_{N} \\ \mathbf{0}_{N, D+1} & -\boldsymbol{I}_{N} \end{array}\right]\left[\begin{array}{c} \boldsymbol{w} \\ b \\ \boldsymbol{\xi} \end{array}\right] \leqslant\left[\begin{array}{c} -\mathbf{1}_{N, 1} \\ \mathbf{0}_{N, 1} \end{array}\right] \end{aligned}
w,b,ξmin21⎣⎡wbξ⎦⎤⊤[ID0N+1,D0D,N+10N+1,N+1]⎣⎡wbξ⎦⎤+[0D+1,1C1N,1]⊤⎣⎡wbξ⎦⎤ subject to [−YX0N,D+1−y−IN−IN]⎣⎡wbξ⎦⎤⩽[−1N,10N,1]
这其中
0
,
1
,
I
,
Y
,
X
\boldsymbol 0,\boldsymbol1, \boldsymbol I,\boldsymbol Y, \boldsymbol X
0,1,I,Y,X分别代表零矩阵,全一矩阵,单位矩阵,标签组成的对角矩阵,样本矩阵。
而对于对偶支持向量机,想要将其表示为标准形式,我们首先需要表示核函数矩阵
K
K
K,其中的每一个元素为
K
i
j
=
k
(
x
i
,
x
j
)
K_{ij}=k(x_i,x_j)
Kij=k(xi,xj),如果我们有明确的特征表示
x
i
x_i
xi则我们可以定义
K
i
j
⟨
x
i
,
x
j
⟩
K_ {ij}\langle x_i,x_j\rangle
Kij⟨xi,xj⟩,为了方便,我们将有标签组成的对角矩阵表示为
Y
=
d
i
a
g
(
y
)
Y=diag(y)
Y=diag(y),这时,对偶支持向量机可以写为:
min
α
1
2
α
⊤
Y
K
Y
α
1
N
.
1
⊤
α
s
.
t
.
[
y
⊤
−
y
⊤
−
I
N
I
n
]
α
≤
[
0
N
+
2
,
1
C
1
N
,
1
]
\min_\alpha\frac12\alpha^\top YKY\alpha\boldsymbol 1^\top_{N.1}\alpha\\ s.t.\quad \begin{bmatrix} y^\top\\ -y^\top\\-I_N\\I_n \end{bmatrix}\alpha \le\begin{bmatrix}\boldsymbol 0_{N+2,1}\\C\boldsymbol 1_{N,1} \end{bmatrix}
αmin21α⊤YKYα1N.1⊤αs.t.⎣⎢⎢⎡y⊤−y⊤−INIn⎦⎥⎥⎤α≤[0N+2,1C1N,1]
为了将式子表示为标准形式,所以将等式写成了两个不等式:
A
x
=
b
⇔
A
X
≤
b
a
n
d
A
X
≥
b
Ax=b\Leftrightarrow AX\le b\quad and\quad AX\ge b
Ax=b⇔AX≤bandAX≥b
正是由于支持向量机能够清晰描述为优化问题,这使得许多的基于数值优化的技术能够被应用。