1.相关知识
1.1感知机
感知机由 Rosenlatt 在 1957 年提出,它用来模拟神经细胞的动作和行为。单个神经元细胞可以被视为两种状态:激活为”是”,未激活为“否”。
其学习机是如下函数:
f
(
x
)
=
sign
(
w
T
x
)
f(x)=\text{sign}(\mathbf{w}^T\mathbf{x})
f(x)=sign(wTx)
然而,感知机所得到的最终的超平面不一定是唯一的,这往往依赖于其初值和迭代次序的设置,从本质上来讲是因为,感知机仅仅寻求将数据完全正确划分的超平面,而不考虑其他的准则。此外,感知机算法只能处理线性可分的数据,对于线性不可分的问题,算法会反复跌宕无法收敛到准确解。
支持向量机算法的提出,对这两个问题进行了解决。Cortes 与 Vapnik 提出线性支持向量机,通过最大化硬间隔的方式解决最终平面不唯一的问题。而 Boser、Guyon 与 Vapnik通过引入核技巧,提出了非线性的支持向量机,来处理非线性可分数据。
1.2 对偶理论
对于一个约束优化问题
min
x
f
(
x
)
s.t.
g
(
x
)
≤
0
h
(
x
)
=
0
\begin{aligned} \min_{x} \quad &f(x)\\ \text{s.t.}\quad &g(x)\le0\\ &h(x)=0 \end{aligned}
xmins.t.f(x)g(x)≤0h(x)=0
其对应的拉格朗日函数为:
L
(
x
,
α
,
β
)
=
f
(
x
)
+
α
g
(
x
)
+
β
h
(
x
)
,
α
≥
0
\mathcal{L} (x,\alpha,\beta) = f(x) +\alpha g(x) +\beta h(x),\quad \alpha\ge0
L(x,α,β)=f(x)+αg(x)+βh(x),α≥0
容易验证:
max
α
≥
0
,
β
L
(
x
,
α
,
β
)
=
{
f
(
x
)
,
x
∈
D
+
∞
,
x
∉
D
\max_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta)= \left\{\begin{matrix} f(x), \quad x\in D \\ +\infty,\quad x\notin D \end{matrix}\right.
α≥0,βmaxL(x,α,β)={f(x),x∈D+∞,x∈/D其中
D
=
{
x
:
g
(
x
)
≤
0
,
h
(
x
)
=
0
}
D=\left \{x:g(x)\le0, h(x)=0\right\}
D={x:g(x)≤0,h(x)=0}是问题的可行域。
于是原约束优化问题等价于:
min
x
max
α
≥
0
,
β
L
(
x
,
α
,
β
)
\min_{x}\max_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta)
xminα≥0,βmaxL(x,α,β)
对偶问题是指,交换式中极大和极小的位置,即: max x min α ≥ 0 , β L ( x , α , β ) \max_{x}\min_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta) xmaxα≥0,βminL(x,α,β)
弱对偶总成立:
max
x
min
α
≥
0
,
β
L
(
x
,
α
,
β
)
≤
min
x
max
α
≥
0
,
β
L
(
x
,
α
,
β
)
\max_{x}\min_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta) \le \min_{x}\max_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta)
xmaxα≥0,βminL(x,α,β)≤xminα≥0,βmaxL(x,α,β)
强对偶是指上不等式取等号,即:
max
x
min
α
≥
0
,
β
L
(
x
,
α
,
β
)
=
min
x
max
α
≥
0
,
β
L
(
x
,
α
,
β
)
\max_{x}\min_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta) =\min_{x}\max_{\alpha\ge0, \beta}\mathcal{L} (x,\alpha,\beta)
xmaxα≥0,βminL(x,α,β)=xminα≥0,βmaxL(x,α,β)
强对偶的成立需要满足KKT条件:
∇
L
(
x
∗
,
α
∗
,
β
∗
)
=
0
α
∗
≥
0
g
(
x
∗
)
≤
0
h
(
x
∗
)
=
0
α
∗
g
(
x
∗
)
=
0
\begin{aligned} \nabla \mathcal{L}(x^*, \alpha^*,\beta^*)&=0\\ \alpha^*&\ge0\\ g(x^*)&\le 0\\ h(x^*)&=0\\ \alpha^* g(x^*) &=0 \end{aligned}
∇L(x∗,α∗,β∗)α∗g(x∗)h(x∗)α∗g(x∗)=0≥0≤0=0=0
特别地,对于凸优化问题,KKT条件总成立,这也为求解支持向量机提供了理论支撑。
2.线性支持向量机
在感知机中,同样是寻找超平面将数据进行分离,然而这样的超平面往往是不唯一的。
如下图,哪个分类超平面是最好的?
从直觉上来讲,黑色的超平面是最好的。因为蓝色超平面对于左侧的一个正类样本分类容易分错,而红色的超平面对于右侧的一个负分类样本容易分错。
那如何度量分类器的好坏?支持向量机提出了最大间隔的思想(Large Margin)。
2.1最大间隔
空间中的超平面方程可以表示为:
w
T
x
+
b
=
0
\mathbf{w}^T\mathbf{x}+b=0
wTx+b=0
若超平面能够将训练样本
(
x
i
,
y
i
)
(\mathbf{x}_i,y_i)
(xi,yi)分类正确,即:若
y
i
=
+
1
y_i=+1
yi=+1有
w
T
x
+
b
>
0
\mathbf{w}^T\mathbf{x}+b>0
wTx+b>0;若
y
i
=
−
1
y_i=-1
yi=−1有
w
T
x
+
b
<
0
\mathbf{w}^T\mathbf{x}+b<0
wTx+b<0. 令
w
T
x
+
b
≥
1
,
y
i
=
+
1
;
w
T
x
+
b
≤
1
,
y
i
=
−
1.
\mathbf{w}^T\mathbf{x}+b\ge1,\quad y_i=+1;\\ \mathbf{w}^T\mathbf{x}+b\le1,\quad y_i=-1.
wTx+b≥1,yi=+1;wTx+b≤1,yi=−1.
上式总能成立,是由于对一个超平面
(
w
,
b
)
(\mathbf{w},b)
(w,b),将其进行缩放,所对应的超平面不改变。
于是就得到了空间中三个平面,最大间隔定义为两个支撑平面之间的距离,也即:
2
∣
∣
w
∣
∣
\frac{2}{||\mathbf{w}||}
∣∣w∣∣2
支持向量机的思想就是最大化间隔(Large Margin),即
max
w
,
b
2
∣
∣
w
∣
∣
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
\begin{aligned} \max_{\mathbf{w},b} \quad&\frac{2}{||\mathbf{w}||}\\ \text{s.t.}\quad &y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge1 \end{aligned}
w,bmaxs.t.∣∣w∣∣2yi(wTxi+b)≥1
问题等价于
min
w
,
b
1
2
w
T
w
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
\begin{aligned} \min_{\mathbf{w},b} \quad& \frac{1}{2}\mathbf{w}^T\mathbf{w}\\ \text{s.t.}\quad& y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge1 \end{aligned}
w,bmins.t.21wTwyi(wTxi+b)≥1这个问题是标准的二次规划问题,其对应的拉格朗日函数为:
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
\mathcal{L}(\mathbf{w},b,\alpha)=\frac{1}{2}\mathbf{w}^T\mathbf{w}-\sum_{i}\alpha_i[ y_i(\mathbf{w}^T\mathbf{x}_i+b)-1]
L(w,b,α)=21wTw−i∑αi[yi(wTxi+b)−1]由KKT条件可得
∂
L
∂
w
=
0
⇒
w
=
∑
i
α
i
y
i
x
i
∂
L
∂
b
=
0
⇒
∑
i
α
i
y
i
=
0
\begin{aligned} \frac{\partial {\mathcal{L}}}{\partial {\mathbf{w}}}=0 \quad &\Rightarrow \quad\mathbf{w} =\sum_i\alpha_iy_i\mathbf{x}_i\\ \frac{\partial {\mathcal{L}}}{\partial {b}}=0 \quad &\Rightarrow \quad \sum_i\alpha_iy_i=0 \end{aligned}
∂w∂L=0∂b∂L=0⇒w=i∑αiyixi⇒i∑αiyi=0带入到拉格朗日函数中,可以得到对偶问题为:
max
α
∑
i
α
i
−
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
x
i
x
j
s.t.
∑
i
α
i
y
i
=
0
α
i
≥
0
\begin{aligned} \max_{\alpha} \quad &\sum_i\alpha_i-\frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_j \mathbf{x}_i \mathbf{x}_j\\ \text{s.t.} \quad & \sum_i \alpha_iy_i=0\\ &\alpha_i\ge0 \end{aligned}
αmaxs.t.i∑αi−21i∑j∑αiαjyiyjxixji∑αiyi=0αi≥0对偶问题同样是二次规划问题。假设对偶问题最优解为
α
∗
\alpha^*
α∗,则原始问题的最优解
w
∗
、
b
∗
\mathbf{w}^*、b^*
w∗、b∗为:
w
∗
=
∑
i
α
i
∗
y
i
x
i
b
=
y
k
−
w
∗
⋅
x
k
\mathbf{w}^*=\sum_i\alpha_i^*y_i\mathbf{x}_i\\ b = y_k-\mathbf{w}^* \cdot \mathbf{x_k}
w∗=i∑αi∗yixib=yk−w∗⋅xk这里
k
k
k是满足
α
k
∗
>
0
\alpha^*_k>0
αk∗>0的任意一个取值。
根据KKT条件,我们知道 α i ∗ [ y i ( w ∗ ⋅ x i + b ) − 1 ] ≥ 0 \alpha_i^*[y_i(\mathbf{w}^*\cdot \mathbf{x_i}+b)-1]\ge0 αi∗[yi(w∗⋅xi+b)−1]≥0成立。若 α i ∗ > 0 \alpha_i^*>0 αi∗>0,则必有 y i ( w ∗ ⋅ x i + b ) = 1 y_i(\mathbf{w}^*\cdot \mathbf{x_i}+b)=1 yi(w∗⋅xi+b)=1,即 x ∗ \mathbf{x}^* x∗是支撑向量;若 α i ∗ = 0 \alpha_i^*=0 αi∗=0,则 x ∗ \mathbf{x}^* x∗不是支撑向量。
换言之, w ∗ = ∑ i α i ∗ y i x i \mathbf{w}^*=\sum_i\alpha_i^*y_i\mathbf{x}_i w∗=∑iαi∗yixi,意味着最终的分类平面的法向量,可以由有限个支撑向量加权组合表示,支撑向量的数量不超过 m + 1 m+1 m+1个( m m m是数据的维度)。
2.2软间隔和正则化
上文所有的讨论,都是在一个前提下:数据是线性可分的,支持向量机总能够找到一个唯一的超平面将正负样本完全划分开。然而当数据线性不可分时。
一个解决的方法是容忍一些分类错误的样本,为此引入变量
ξ
i
\xi_i
ξi,并且构造如下的优化问题:
min
w
,
b
1
2
w
T
w
+
C
∑
i
n
ξ
i
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
\begin{aligned} \min_{\mathbf{w},b} \quad& \frac{1}{2}\mathbf{w}^T\mathbf{w}+C\sum_i^n\xi_i\\ \text{s.t.}\quad& y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge1-\xi_i\\ &\xi_i\ge0 \end{aligned}
w,bmins.t.21wTw+Ci∑nξiyi(wTxi+b)≥1−ξiξi≥0
同样地,我们能够得到其对偶问题:
max
α
∑
i
α
i
−
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
x
i
x
j
s.t.
∑
i
α
i
y
i
=
0
0
≤
α
i
≤
C
\begin{aligned} \max_{\alpha} \quad &\sum_i\alpha_i-\frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_j \mathbf{x}_i \mathbf{x}_j\\ \text{s.t.} \quad & \sum_i \alpha_iy_i=0\\ &0\le\alpha_i\le C \end{aligned}
αmaxs.t.i∑αi−21i∑j∑αiαjyiyjxixji∑αiyi=00≤αi≤C
可以看到同2.1中的唯一的差别是,对偶变量约束的不同,一个是
0
≤
α
i
≤
C
0\le\alpha_i\le C
0≤αi≤C,一个是
α
≥
0
\alpha \ge0
α≥0.
类似地我们也能够求得原问题的最优解
w
∗
,
b
∗
\mathbf{w^*},b^*
w∗,b∗.
2.3核技巧
在实际的工作中,即使用2.2中的方法容许某些分类错误的样本,也很难找到一个好的平面将数据分开。
自然而然的想法是,通过一个映射 ϕ ( x ) \phi(x) ϕ(x)将非线性的数据从原始空间映射到一个更高维的空间,使得其在高维空间中线性可分。然而直接取寻找这样的映射通常是很困难的,因为特征空间的维数可能很高甚至无穷维。
但是,注意到在2.1和2.2构造对偶问题求解的过程中,数据点
x
\mathbf{x}
x总是以内积
x
T
x
\mathbf{x}^T\mathbf{x}
xTx的形式出现。因此,我们无需构造
ϕ
(
x
)
\phi(\mathbf{x})
ϕ(x),只要设想这样一个二元函数:
K
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
K(\mathbf{x}_i,\mathbf{x}_j) = \left \langle \phi(\mathbf{x}_i),\phi(\mathbf{x}_j) \right \rangle =\phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j)
K(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)
这样的函数就是核函数。
引入核函数后,优化问题可描述成:
max
α
∑
i
α
i
−
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
s.t.
∑
i
α
i
y
i
=
0
0
≤
α
i
≤
C
\begin{aligned} \max_{\alpha} \quad &\sum_i\alpha_i-\frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_j K(\mathbf{x}_i,\mathbf{x}_j)\\ \text{s.t.} \quad & \sum_i \alpha_iy_i=0\\ &0\le\alpha_i\le C \end{aligned}
αmaxs.t.i∑αi−21i∑j∑αiαjyiyjK(xi,xj)i∑αiyi=00≤αi≤C
通过核函数,我们隐式地定义了一个映射,将数据映射到一个高维空间。但是,我们不知道这个特征空间是否合适。因此和函数的选择很大程度上决定了分类器的性能。
下表列出了常用的核函数:
核函数 | 表达式 |
---|---|
线性核 | K ( x i , x j ) = x i T x j K(\mathbf{x}_i, \mathbf{x}_j)=\mathbf{x}_i^T\mathbf{x}_j K(xi,xj)=xiTxj |
多项式核 | K ( x i , x j ) = ( x i T x j ) d K(\mathbf{x}_i, \mathbf{x}_j)=(\mathbf{x}_i^T\mathbf{x}_j)^d K(xi,xj)=(xiTxj)d |
高斯核 | K ( x i , x j ) = exp ( − 1 2 σ 2 ∥ x i − x j ∥ ) K(\mathbf{x}_i, \mathbf{x}_j) =\exp(- \frac{1}{2\sigma^2}\left \| \mathbf{x}_i-\mathbf{x}_j \right \|) K(xi,xj)=exp(−2σ21∥xi−xj∥) |
Sigmoid核 | K ( x i , x j ) = tanh ( β x i T x j + θ ) K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(\beta \mathbf{x}_i^T \mathbf{x}_j+\theta) K(xi,xj)=tanh(βxiTxj+θ) |
3.代码和试验
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |