感知机与SVM
1. 超平面
在介绍感知机与SVM之前,我们有必要补充一下超平面的概念。
超平面是具有下面形式的点的集合:
{
x
∣
a
T
x
=
b
}
(1)
\{x|a^Tx=b\} \tag{1}
{x∣aTx=b}(1)
其中
a
∈
R
n
,
a
≠
0
a\in R^n, a \neq 0
a∈Rn,a=0且
b
∈
R
b\in R
b∈R。
解析意义:超平面是关于
x
x
x的非齐次线性方程组的解空间(是一个仿射集合)。
几何意义:超平面是与给定向量
a
a
a的内积为常数的点的集合;也可以看成法线方向为
a
a
a的超平面,常数
b
∈
R
b\in R
b∈R决定了这个平面相对原点的偏移,每个轴上偏移了
b
a
i
\frac{b}{a_i}
aib。
超平面外任意一点
y
y
y到超平面的距离计算过程:
在超平面上任取一点
x
x
x,则
y
y
y到超平面的距离可表示为:
d
=
∣
a
T
(
y
−
x
)
∣
∣
∣
a
∣
∣
=
∣
a
T
y
−
b
∣
∣
∣
a
∣
∣
(2)
d=\frac{|a^T(y-x)|}{||a||}=\frac{|a^Ty-b|}{||a||} \tag{2}
d=∣∣a∣∣∣aT(y−x)∣=∣∣a∣∣∣aTy−b∣(2)
在感知机与SVM的相关理论推导中,我们一般将超平面写成如下形式:
{
x
∣
w
T
x
+
b
=
0
}
(3)
\{x|w^Tx+b=0\} \tag{3}
{x∣wTx+b=0}(3)
2. 感知机(perception)
感知机 是二类分类问题的线性分类模型。其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机学习旨在求出将训练数据进行线性划分的分离超平面。
假设对所有
y
(
i
)
=
+
1
y^{(i)}=+1
y(i)=+1的点,有
w
T
x
(
i
)
+
b
>
0
w^Tx^{(i)}+b>0
wTx(i)+b>0;对所有
y
(
i
)
=
−
1
y^{(i)}=-1
y(i)=−1的点,有
w
T
x
i
+
b
<
0
w^Tx_i+b<0
wTxi+b<0。则对于给定数据集
T
=
(
x
(
1
)
,
y
(
1
)
)
,
⋯
,
(
x
(
N
)
,
y
(
N
)
)
(4)
T={(x^{(1)},y^{(1)}),\cdots,(x^{(N)},y^{(N)})}\tag{4}
T=(x(1),y(1)),⋯,(x(N),y(N))(4)
线性可分的定义是:
∃
\exists
∃某个超平面
{
x
∣
w
T
x
+
b
=
0
}
\{x|w^Tx+b=0\}
{x∣wTx+b=0}使得
∀
(
x
(
i
)
,
y
(
i
)
)
\forall(x^{(i)},y^{(i)})
∀(x(i),y(i))有
y
(
i
)
(
w
T
x
(
i
)
+
b
)
>
0
y^{(i)}(w^Tx^{(i)}+b)>0
y(i)(wTx(i)+b)>0
也即对误分类的点有:
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
>
0
(5)
-y^{(i)}(w^Tx^{(i)}+b)>0\tag{5}
−y(i)(wTx(i)+b)>0(5)
我们假设感知机的训练数据都是线性可分的。
误分类点到超平面的总距离为:
−
1
∥
w
∥
∑
x
(
i
)
∈
M
y
(
i
)
(
w
T
x
+
b
)
(6)
-\frac{1}{\left \|w \right \|}\sum_{x^{(i)}\in M}y^{(i)}(w^Tx+b) \tag{6}
−∥w∥1x(i)∈M∑y(i)(wTx+b)(6)
M
M
M为误分类点的集合。可以将
(
6
)
(6)
(6)作为优化的损失函数。
我们可以 把
1
∥
w
∥
\frac{1}{\left \|w \right \|}
∥w∥1扔掉而不影响优化结果,因为我们假设数据集是线性可分的,因此最后损失函数必然为零,即无误分类点。去掉后,我们得到的loss function如下:
−
∑
x
(
i
)
∈
M
y
(
i
)
(
w
T
x
(
i
)
+
b
)
(7)
-\sum_{x^{(i)}\in M}y^{(i)}(w^Tx^{(i)}+b) \tag{7}
−x(i)∈M∑y(i)(wTx(i)+b)(7)
(
7
)
(7)
(7)是关于
w
,
b
w,b
w,b的连续可导线性函数,梯度为:
∇
w
L
(
w
,
b
)
=
−
∑
x
(
i
)
∈
M
y
(
i
)
x
(
i
)
(8)
\nabla_wL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)}x^{(i)} \tag{8}
∇wL(w,b)=−x(i)∈M∑y(i)x(i)(8)
∇
b
L
(
w
,
b
)
=
−
∑
x
(
i
)
∈
M
y
(
i
)
(9)
\nabla_bL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)} \tag{9}
∇bL(w,b)=−x(i)∈M∑y(i)(9)
可以利用随机梯度下降法轻松地进行优化:
(1) 选取初值
w
0
,
b
0
w_0,b_0
w0,b0
(2) 在训练集中选取数据
x
(
i
)
,
y
(
i
)
x^{(i)},y^{(i)}
x(i),y(i)
(3)
i
f
if
if
−
y
(
i
)
(
w
T
x
+
b
)
≥
0
-y^{(i)}(w^Tx+b)\geq 0
−y(i)(wTx+b)≥0
w
←
w
+
η
y
(
i
)
x
(
i
)
(10)
w\leftarrow w+\eta y^{(i)}x^{(i)} \tag{10}
w←w+ηy(i)x(i)(10)
b
←
b
+
η
y
(
i
)
(11)
b\leftarrow b+\eta y^{(i)} \tag{11}
b←b+ηy(i)(11)
e
l
s
e
else
else 算法停止
(4) 转至(2),直至训练集中没有误分类点。
3. 支持向量机(SVM)
感知机模型得到的分离超平面不是唯一的,会随着初值不同而不同。而SVM试图寻找一个最佳的超平面来划分数据。所谓“最优的超平面”,就是指“最中间的”的超平面,也即“与数据点间隔最大”的超平面。
定义样本点
(
x
i
,
y
i
)
(x^{i},y^{i})
(xi,yi)与超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的几何间隔为:
γ
(
i
)
=
y
(
i
)
(
w
T
x
(
i
)
+
b
)
∥
w
∥
(12)
\gamma^{(i)}=\frac{y^{(i)}(w^Tx^{(i)}+b)}{\left \|w \right \|} \tag{12}
γ(i)=∥w∥y(i)(wTx(i)+b)(12)
几何间隔其实就是
(
1
)
(1)
(1)中的距离。
定义超平面与整个数据集的几何间隔为:
γ
=
min
i
=
1
,
⋯
,
N
γ
(
i
)
(13)
\gamma=\min \limits_{i=1,\cdots,N}\gamma^{(i)} \tag{13}
γ=i=1,⋯,Nminγ(i)(13)
其物理含义为离超平面最近的点到超平面的几何距离。
定义样本点
(
x
i
,
y
i
)
(x^{i},y^{i})
(xi,yi)与超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的函数间隔为:
γ
^
(
i
)
=
y
(
i
)
(
w
T
x
(
i
)
+
b
)
(14)
{\hat \gamma}^{(i)}={y^{(i)}(w^Tx^{(i)}+b)}\tag{14}
γ^(i)=y(i)(wTx(i)+b)(14)
函数间隔可以相对地表示点
x
x
x与超平面
w
T
x
(
i
)
+
b
)
w^Tx^{(i)}+b)
wTx(i)+b)的远近程度(在超平面确定的情况下)
定义超平面与整个数据集的函数间隔为:
γ
^
=
min
i
=
1
,
⋯
,
N
γ
^
(
i
)
(15)
\hat\gamma=\min \limits_{i=1,\cdots,N}\hat\gamma^{(i)} \tag{15}
γ^=i=1,⋯,Nminγ^(i)(15)
注意,当
w
w
w和
b
b
b同比例变化时,函数间隔也会同比例变化,但是超平面不变,这点性质对后面的推导很重要!!!
根据上面的铺垫,SVM模型可表示为:
max
w
,
b
γ
s
.
t
.
γ
(
i
)
≥
γ
,
i
=
1
,
⋯
,
N
(16)
\begin{aligned} \max\limits_{w,b}\quad & \gamma \\ s.t.\quad & \gamma^{(i)}\geq \gamma,\quad i=1,\cdots,N \\ \tag{16} \end{aligned}
w,bmaxs.t.γγ(i)≥γ,i=1,⋯,N(16)
考虑到几何间隔与函数间隔的比例关系,
(
16
)
(16)
(16)可以写成:
max
w
,
b
γ
^
∥
w
∥
s
.
t
.
γ
^
(
i
)
≥
γ
^
,
i
=
1
,
⋯
,
N
(17)
\begin{aligned} \max\limits_{w,b}\quad & \frac{\hat\gamma}{\left \|w \right \|} \\ s.t.\quad & \hat\gamma^{(i)}\geq \hat\gamma,\quad i=1,\cdots,N \\ \tag{17} \end{aligned}
w,bmaxs.t.∥w∥γ^γ^(i)≥γ^,i=1,⋯,N(17)
而根据前面的分析我们可以知道,我们总可以同比例缩放
(
w
,
b
)
(w,b)
(w,b)使得
γ
^
=
1
\hat\gamma=1
γ^=1,而超平面不变。因此
(
17
)
(17)
(17)可以进一步写成:
max
w
,
b
1
∥
w
∥
s
.
t
.
γ
^
(
i
)
≥
1
,
i
=
1
,
⋯
,
N
(18)
\begin{aligned} \max\limits_{w,b}\quad & \frac{1}{\left \|w \right \|} \\ s.t.\quad & \hat\gamma^{(i)}\geq 1,\quad i=1,\cdots,N \\ \tag{18} \end{aligned}
w,bmaxs.t.∥w∥1γ^(i)≥1,i=1,⋯,N(18)
(
18
)
(18)
(18)可以再进一步写成:
min
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
,
i
=
1
,
⋯
,
N
(19)
\begin{aligned} \min\limits_{w,b}\quad & \frac{1}{2}{\left \|w \right \|}^2 \\ s.t.\quad & {y^{(i)}(w^Tx^{(i)}+b)}\geq 1,\quad i=1,\cdots,N \\ \tag{19} \end{aligned}
w,bmins.t.21∥w∥2y(i)(wTx(i)+b)≥1,i=1,⋯,N(19)
这样SVM就转化为了一个凸二次规划问题,可以用一些软件包方便得求解。但是这种问题的直接求解比较低效,为此可以使用Lagrange乘子法得到其对偶问题,这样不仅能简化计算,还可以为后面引入kernel的概念做铺垫。
3. SVM的Lagrange对偶问题
对
(
19
)
(19)
(19)的每一个不等式约束引进拉格朗日乘子(Lagrange multiplier)
α
i
≥
0
,
i
=
1
,
⋯
,
N
\alpha_i\geq0,i=1,\cdots,N
αi≥0,i=1,⋯,N,定义拉格朗日函数:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
N
α
i
y
(
i
)
(
w
T
x
(
i
)
+
b
)
+
∑
i
=
1
N
α
i
(20)
L(w,b,\alpha)=\frac{1}{2}{\left \|w \right \|}^2-\sum_{i=1}^{N}\alpha_iy^{(i)}(w^Tx^{(i)}+b)+\sum_{i=1}^{N}\alpha_i \tag{20}
L(w,b,α)=21∥w∥2−i=1∑Nαiy(i)(wTx(i)+b)+i=1∑Nαi(20)
(
19
)
(19)
(19)的原问题(primer problem)是如下所示的极小极大问题:
min
α
max
w
,
b
L
(
w
,
b
,
α
)
(21)
\min\limits_{\alpha}\max\limits_{w,b}L(w,b,\alpha) \tag{21}
αminw,bmaxL(w,b,α)(21)
(
19
)
(19)
(19)的对偶问题(dual problem)是如下所示的极大极小问题:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
(22)
\max\limits_{\alpha}\min\limits_{w,b}L(w,b,\alpha) \tag{22}
αmaxw,bminL(w,b,α)(22)
先求
min
w
,
b
L
(
w
,
b
,
α
)
\min\limits_{w,b}L(w,b,\alpha)
w,bminL(w,b,α)。将
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)分别对
w
,
b
w,b
w,b求导并令其等于0:
∇
w
L
(
w
,
b
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
(
i
)
x
(
i
)
=
0
∇
b
L
(
w
,
b
,
α
)
=
−
∑
i
=
1
N
α
i
y
(
i
)
=
0
(23)
\begin{aligned} \nabla_wL(w,b,\alpha)&=w-\sum_{i=1}^N\alpha_iy^{(i)}x^{(i)}=0\\ \nabla_bL(w,b,\alpha)&=-\sum_{i=1}^N\alpha_iy^{(i)}=0\\ \tag{23} \end{aligned}
∇wL(w,b,α)∇bL(w,b,α)=w−i=1∑Nαiy(i)x(i)=0=−i=1∑Nαiy(i)=0(23)
可得:
min
w
,
b
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
x
(
i
)
T
x
(
i
)
+
∑
i
=
1
N
α
i
(24)
\min\limits_{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j{x^{(i)}}^Tx^{(i)}+\sum_{i=1}^{N}\alpha_i \tag{24}
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyjx(i)Tx(i)+i=1∑Nαi(24)
因此
(
22
)
(22)
(22)可转化为:
max
α
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
x
(
i
)
T
x
(
i
)
+
∑
i
=
1
N
α
i
s
.
t
.
α
i
≥
0
,
i
=
1
,
⋯
,
N
∑
i
=
1
N
α
i
y
(
i
)
=
0
(25)
\begin{aligned} \max\limits_{\alpha}\quad & -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j{x^{(i)}}^Tx^{(i)}+\sum_{i=1}^{N}\alpha_i \\ s.t.\quad &\alpha_i\geq0,i=1,\cdots,N\\ & \sum_{i=1}^N\alpha_iy^{(i)}=0\\ \tag{25} \end{aligned}
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjx(i)Tx(i)+i=1∑Nαiαi≥0,i=1,⋯,Ni=1∑Nαiy(i)=0(25)
易证强对偶性成立。(原问题是凸问题且Slater条件成立)
求解出最优的
α
i
∗
\alpha_i^*
αi∗后,就可以根据
(
23
)
(23)
(23)进一步求出
w
∗
w^*
w∗(也可以根据下面的KKT条件得到
w
∗
w^*
w∗的公式)。那怎么求
b
∗
b^*
b∗呢?
根据KKT条件:
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
,
i
=
1
,
⋯
,
N
α
i
≥
0
,
i
=
1
,
⋯
,
N
α
(
y
(
i
)
(
w
T
x
(
i
)
+
b
)
−
1
)
=
0
,
i
=
1
,
⋯
,
N
∇
w
L
(
w
,
b
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
(
i
)
x
(
i
)
=
0
,
i
=
1
,
⋯
,
N
∇
b
L
(
w
,
b
,
α
)
=
−
∑
i
=
1
N
α
i
y
(
i
)
=
0
,
i
=
1
,
⋯
,
N
(25)
\begin{aligned} {y^{(i)}(w^Tx^{(i)}+b)} &\geq 1,\quad i=1,\cdots,N\\ \alpha_i &\geq 0,\quad i=1,\cdots,N\\ \alpha\Big({y^{(i)}(w^Tx^{(i)}+b)-1}\Big) &= 0,\quad i=1,\cdots,N\\ \nabla_wL(w,b,\alpha)=w-\sum_{i=1}^N\alpha_iy^{(i)}x^{(i)}&=0,\quad i=1,\cdots,N\\ \nabla_bL(w,b,\alpha)=-\sum_{i=1}^N\alpha_iy^{(i)}&=0,\quad i=1,\cdots,N\\ \tag{25} \end{aligned}
y(i)(wTx(i)+b)αiα(y(i)(wTx(i)+b)−1)∇wL(w,b,α)=w−i=1∑Nαiy(i)x(i)∇bL(w,b,α)=−i=1∑Nαiy(i)≥1,i=1,⋯,N≥0,i=1,⋯,N=0,i=1,⋯,N=0,i=1,⋯,N=0,i=1,⋯,N(25)
可以进一步求出
b
b
b。
我们可以断定,
∃
α
j
∗
>
0
\exists \alpha_j^*>0
∃αj∗>0(否则可推出
w
=
0
w=0
w=0,违背超平面的定义)。注意到,当
α
j
∗
>
0
\alpha_j^*>0
αj∗>0时,意味着
y
(
i
)
(
w
T
x
(
i
)
+
b
)
−
1
=
0
{y^{(i)}(w^Tx^{(i)}+b)-1}=0
y(i)(wTx(i)+b)−1=0,也即这时候样本点在最大间隔边界上(称为支持向量)。
这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
w
∗
w^*
w∗的表达式为:
w
∗
=
∑
i
∈
S
α
i
y
(
i
)
x
(
i
)
(26)
w^*=\sum_{i\in S}\alpha_iy^{(i)}x^{(i)}\tag{26}
w∗=i∈S∑αiy(i)x(i)(26)
其中
S
S
S表示支持向量的下标集合。
b
∗
b^*
b∗的表达式为:
b
∗
=
y
j
−
∑
i
∈
S
α
i
y
(
i
)
x
(
i
)
x
(
j
)
(27)
b^*=y_j-\sum_{i\in S}\alpha_iy^{(i)}x^{(i)}x^{(j)}\tag{27}
b∗=yj−i∈S∑αiy(i)x(i)x(j)(27)
于是,理论上可以选取任意支持向量求解
b
∗
b^*
b∗。注意到对任意支持向量
(
x
(
s
)
,
y
(
s
)
)
(x^{(s)},y^{(s)})
(x(s),y(s)),都有:
y
(
s
)
(
w
T
x
(
s
)
+
b
)
−
1
=
0
(28)
{y^{(s)}(w^Tx^{(s)}+b)-1}=0\tag{28}
y(s)(wTx(s)+b)−1=0(28)
通过
(
26
)
(26)
(26)即可求出
b
∗
b^*
b∗。实际上可以采用一种更鲁棒的做法:使用所有支持向量求解的结果的平均值:
b
∗
=
1
∥
S
∥
∑
s
∈
S
(
y
(
s
)
−
w
T
x
(
s
)
)
(29)
b^*=\frac{1}{\left \| S\right \|}\sum_{s\in S}({y^{(s)}-w^Tx^{(s)}})\tag{29}
b∗=∥S∥1s∈S∑(y(s)−wTx(s))(29)