#原问题提出
给定一个二分类问题的训练样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
,
y
i
∈
{
−
1
,
+
1
}
D=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),...,(\boldsymbol{x}_m,y_m)\},y_i\in \{-1, +1\}
D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1},我们的目标是找到一条分界线/超平面来将两类区分开,如下图:
在样本空间中,超平面可以通过以下线性方程来描述:
w
T
x
+
b
=
0
\boldsymbol{w}^T\boldsymbol{x}+b=0
wTx+b=0
其中,
w
=
(
w
1
,
w
2
,
.
.
.
,
w
d
)
\boldsymbol{w}=(w_1,w_2,...,w_d)
w=(w1,w2,...,wd)为法向量,决定了超平面的方向;
b
b
b为位移项,决定了超平面与原点的距离。
如果一个超平面能够将训练样本正确分类,则我们希望这个超平面具有的性质是,对于
(
x
i
,
y
i
)
∈
D
(\boldsymbol{x}_i,y_i)\in D
(xi,yi)∈D,有
$$
\boldsymbol{w}^T\boldsymbol{x}+b\left{
\begin{aligned}
0,\ y_i=+1 \
<0,\ y_i=-1
\end{aligned}
\right.
$$
这个式子也是我们在得到超平面之后预测一个新样本的判决条件。
显然,上图中 5 个超平面都满足要求。但是,哪一个是最好的呢?
直观上看,应该去找位于两类训练样本“正中间”的超平面,即上图中最粗的分界线。因为这条线能够在最大程度上容忍两类的数据波动和噪声。
因此,为了能够得到“正中间”位置的超平面,我们将上述条件变得更加严格:
w
T
x
+
b
{
≥
+
1
,
y
i
=
+
1
≤
−
1
,
y
i
=
−
1
(
1
)
\boldsymbol{w}^T\boldsymbol{x}+b\left\{ \begin{aligned} \ge+1,\ y_i=+1 \\ \le-1,\ y_i=-1 \end{aligned} \right. \qquad(1)
wTx+b{≥+1, yi=+1≤−1, yi=−1(1)
显然,条件严格后,靠近样本边缘的一些超平面可能会不符合要求,最后会剩下比较靠中间的几个超平面。
那么,如何选出最“正中间”的那个超平面呢?我们可以给一个具体的量化目标:让超平面与最近的样本的距离最大。
如下图所示,距离超平面最近的这几个样本点可以使得公式 (1) 的等号成立,它们被称为“支持向量”(Support Vector)。
样本空间中任意点
x
\boldsymbol{x}
x到超平面的距离的计算公式为:
r
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
r=\frac{|\boldsymbol{w}^T\boldsymbol{x}+b|}{||\boldsymbol{w}||}
r=∣∣w∣∣∣wTx+b∣
因此,两类的支持向量到超平面的距离之和为
γ
=
2
w
,
\gamma =\frac{2}{\boldsymbol{w}},
γ=w2,
它被称为“间隔”。
如果想找到具有“最大间隔”(maximum margin)的超平面,那么需要最大化
γ
\gamma
γ,也就是需要最小化
∣
∣
w
∣
∣
2
||\boldsymbol{w}||^2
∣∣w∣∣2。因此,最后需要求解的问题为:
max
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
(
2
)
\begin{aligned} \max_{\boldsymbol{w},b}\ &\quad \frac{1}{2}||\boldsymbol{w}||^2 \\ s.t. &\quad y_i(\boldsymbol{w}^T\boldsymbol{x}+b)\ge1,\quad i=1,2,...,m \end{aligned} \qquad (2)
w,bmax s.t.21∣∣w∣∣2yi(wTx+b)≥1,i=1,2,...,m(2)
这就是支持向量机(Support Vector Machine,SVM)的基本型。
对偶问题推导
我们希望求解问题 (2) 来得到“正中间”的分界超平面:
f
(
x
)
=
w
T
x
+
b
f(\boldsymbol x)={\boldsymbol w}^T\boldsymbol x + b
f(x)=wTx+b
其中,
w
\boldsymbol w
w 和
b
b
b 是模型参数,正是问题 (2) 的最优解。问题 (2) 本身是一个凸二次规划问题,可以直接使用现成的优化计算包求解。但我们有更高效的办法,即转为求解其对偶问题,转换过程如下。
根据拉格朗日乘子法,对原问题的每条约束添加拉格朗日乘子
α
≥
0
\alpha \ge0
α≥0,则该问题的拉格朗日函数可写为:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
T
+
∑
i
=
1
m
α
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
(
3
)
L(\boldsymbol w,b,\boldsymbol\alpha)=\frac1 2 ||\boldsymbol w||^T+\sum_{i=1}^{m}\alpha_i[1-y_i(\boldsymbol w^T\boldsymbol x_i+b)]\quad(3)
L(w,b,α)=21∣∣w∣∣T+i=1∑mαi[1−yi(wTxi+b)](3)
其中
α
=
(
α
1
,
α
2
,
.
.
.
,
α
m
)
。
\boldsymbol\alpha=(\alpha_1,\alpha_2,...,\alpha_m)。
α=(α1,α2,...,αm)。
可发现
α
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
≤
0
\alpha_i[1-y_i(\boldsymbol w^T\boldsymbol x_i+b)]\le0
αi[1−yi(wTxi+b)]≤0
所以
L
(
w
,
b
,
α
)
≤
1
2
∣
∣
w
∣
∣
T
L(\boldsymbol w,b,\boldsymbol\alpha)\le \frac1 2 ||\boldsymbol w||^T
L(w,b,α)≤21∣∣w∣∣T,即拉格朗日函数是原问题的一个下界。我们要想找到最接近原问题最优值的一个下界,就需要求出下界的最大值。
根据拉格朗日对偶性,原始问题的对偶问题是最大化最小问题:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max_\alpha \min_{\boldsymbol{w},b}L(\boldsymbol w,b,\boldsymbol\alpha)
αmaxw,bminL(w,b,α)
首先,求
min
w
,
b
L
(
w
,
b
,
α
)
\min_{\boldsymbol{w},b}L(\boldsymbol w,b,\boldsymbol\alpha)
minw,bL(w,b,α) ,消除掉
w
,
b
\boldsymbol w,b
w,b:分别令
w
,
b
\boldsymbol w,b
w,b 的偏导为0,可推出
∂
L
∂
w
=
w
+
∑
i
=
1
m
α
i
(
−
y
i
x
i
)
=
0
⇒
w
=
∑
i
=
1
m
α
i
y
i
x
i
(
4
)
∂
L
∂
w
=
−
∑
i
=
1
m
α
i
y
i
=
0
⇒
∑
i
=
1
m
α
i
y
i
=
0
(
5
)
\begin{aligned} \frac{\partial L}{\partial \boldsymbol w}&=\boldsymbol w + \sum_{i=1}^m \alpha_i(-y_i \boldsymbol x_i)=0 \ \Rightarrow \boldsymbol w=\sum_{i=1}^m \alpha_i y_i \boldsymbol x_i\quad(4)\\ \frac{\partial L}{\partial \boldsymbol w}&= -\sum_{i=1}^m \alpha_i y_i=0 \qquad\quad\ \ \ \Rightarrow \sum_{i=1}^m \alpha_i y_i=0\ \quad(5) \end{aligned}
∂w∂L∂w∂L=w+i=1∑mαi(−yixi)=0 ⇒w=i=1∑mαiyixi(4)=−i=1∑mαiyi=0 ⇒i=1∑mαiyi=0 (5)
将公式(4)(5)带入到拉格朗日函数(3),得到
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
T
+
∑
i
=
1
m
α
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
=
1
2
w
T
w
+
∑
i
=
1
m
α
i
−
∑
i
=
1
m
α
i
y
i
x
i
T
w
−
∑
i
=
1
m
α
i
y
i
b
=
1
2
w
T
w
+
∑
i
=
1
m
α
i
−
w
T
w
−
0
=
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
T
\begin{aligned} L(\boldsymbol w,b,\boldsymbol\alpha) &=\frac1 2 ||\boldsymbol w||^T+\sum_{i=1}^{m}\alpha_i[1-y_i(\boldsymbol w^T\boldsymbol x_i+b)]\\ &=\frac1 2 \boldsymbol w^T\boldsymbol w +\sum_{i=1}^m\alpha_i -\sum_{i=1}^m\alpha_iy_i\boldsymbol x_i^T\boldsymbol w-\sum_{i=1}^m\alpha_iy_ib\\ &= \frac 1 2\boldsymbol w^T \boldsymbol w+\sum_{i=1}^m\alpha_i-\boldsymbol w^T\boldsymbol w-0\\ &=\sum_{i=1}^m\alpha_i-\frac1 2 \sum_{i=1}^m\sum_{j=1}^m \alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j^T \end{aligned}
L(w,b,α)=21∣∣w∣∣T+i=1∑mαi[1−yi(wTxi+b)]=21wTw+i=1∑mαi−i=1∑mαiyixiTw−i=1∑mαiyib=21wTw+i=1∑mαi−wTw−0=i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjT
因此,问题(2)的对偶问题是
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
T
(
6
)
s
.
t
.
∑
i
=
1
T
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} \max_\alpha\quad &\sum_{i=1}^m\alpha_i-\frac1 2 \sum_{i=1}^m\sum_{j=1}^m \alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j^T\quad(6)\\ s.t.\quad&\sum_{i=1}^T\alpha_iy_i=0\\ &\alpha_i\ge0,i=1,2,...,m. \end{aligned}
αmaxs.t.i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjT(6)i=1∑Tαiyi=0αi≥0,i=1,2,...,m.
解出
α
\boldsymbol \alpha
α 后,求出
w
\boldsymbol w
w 和
b
b
b 。
(1) w \boldsymbol w w 可以由公式(4)得到。
(2)
b
b
b 可以根据一个支持向量必定会满足的条件得到:
y
i
(
w
T
x
i
+
b
)
=
1
y_i({\boldsymbol w}^T\boldsymbol x_i + b)=1
yi(wTxi+b)=1,因此如果第
k
k
k 个样本是一个支持向量(即
α
k
>
0
\alpha_k>0
αk>0),可以得到
b
=
y
k
−
w
T
x
k
b=y_k-{\boldsymbol w}^T\boldsymbol x_k
b=yk−wTxk。不过,经常会将所有的支持向量都计算出对应的
b
b
b 来,然后取均值:
b
=
1
n
s
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
I
(
α
i
>
0
)
b=\frac{1}{n_s}\sum_{i=1}^m(y_i-{\boldsymbol w}^T\boldsymbol x_i)I(\alpha_i>0)
b=ns1i=1∑m(yi−wTxi)I(αi>0)
其中,
n
s
n_s
ns为支持向量的个数,即
n
s
=
c
o
u
n
t
(
α
i
>
0
)
n_s=count(\alpha_i>0)
ns=count(αi>0)。
综上,可以得到分界线:
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
1
n
s
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
I
(
α
i
>
0
)
\begin{aligned} f(\boldsymbol x)&=\boldsymbol w^T\boldsymbol x + b\\ &=\sum_{i=1}^m\alpha_iy_i\boldsymbol x_i^T\boldsymbol x+\frac{1}{n_s}\sum_{i=1}^m(y_i-{\boldsymbol w}^T\boldsymbol x_i)I(\alpha_i>0) \end{aligned}
f(x)=wTx+b=i=1∑mαiyixiTx+ns1i=1∑m(yi−wTxi)I(αi>0)
需要注意的是,问题(2)有不等式约束,因此对偶问题需要满足KKT条件:
{
α
i
≥
0
y
i
f
(
x
i
)
−
1
≥
0
α
i
(
y
i
f
(
x
i
)
−
1
)
=
0
\left\{ \begin{aligned} &\alpha_i\ge0 \\ &y_if(\boldsymbol x_i)-1\ge0\\ &\alpha_i(y_if(\boldsymbol x_i)-1)=0 \end{aligned} \right.
⎩⎪⎨⎪⎧αi≥0yif(xi)−1≥0αi(yif(xi)−1)=0
因此,对于训练样本
(
x
i
,
y
i
)
(\boldsymbol x_i,y_i)
(xi,yi),总有
α
i
=
0
\alpha_i=0
αi=0 或
y
i
f
(
x
i
)
=
1
y_if(\boldsymbol x_i)=1
yif(xi)=1。若
α
i
=
0
\alpha_i=0
αi=0,则该样本不会对
f
(
x
)
f(\boldsymbol x)
f(x) 的值有任何影响;若
α
i
>
0
\alpha_i>0
αi>0,则必有
y
i
f
(
x
i
)
=
1
y_if(\boldsymbol x_i)=1
yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。