本篇文章主要写感知机和SVM。
感知机(PLA)
如上图,假设我们可以用一条直线
w
x
+
b
=
0
wx+b=0
wx+b=0将数据均分为两类。一面为正,一面为负。在转动的过程中,我们的需求是使所有的点都分类正确,即是一个使错误分类点减少点过程。如果以错误分类点个数为目标函数,不容易优化目标函数。我们注意到对于任意的点有
y
(
w
x
+
b
)
>
0
y(wx+b)>0
y(wx+b)>0。我们的目标可转为使
−
(
w
x
+
b
)
-(wx+b)
−(wx+b)减小,直到为0。直线上某个点到超平面的距离为
∣
w
x
+
b
∣
∣
∣
W
∣
∣
\frac{|wx+b|}{||W||}
∣∣W∣∣∣wx+b∣
由于成倍的放大或者缩小并不能改变上式的大小。故我们可以令
∣
∣
W
∣
∣
=
1
||W||=1
∣∣W∣∣=1,点到直线的距离转换为
1
∣
∣
W
∣
∣
\frac{1}{||W||}
∣∣W∣∣1
则损失函数可表示为
L
(
w
,
b
)
=
1
∣
∣
W
∣
∣
∑
y
i
(
w
x
i
+
b
)
=
−
∑
(
w
x
i
+
b
)
L(w,b)=\frac{1}{||W||}\sum y_i(wx_i+b)=-\sum (wx_i+b)
L(w,b)=∣∣W∣∣1∑yi(wxi+b)=−∑(wxi+b)
s
.
t
.
x
i
∈
M
,
M
为
错
误
分
类
集
s.t.x_i \in M,M为错误分类集
s.t.xi∈M,M为错误分类集$
损失函数知道了,那我们如何让机器学习呢?思路是,遍历数据中的每一个点,当其为错误分类点时,我们就使线往错误的方向偏斜一点,一直重复,直到数据完全分类正确为止。那该倾斜多少呢?林轩田和李航分别介绍了两种方法。
- 林轩田:为方便叙述,把b纳入W里,即
W
=
(
W
0
,
W
1
,
.
.
.
.
)
W=(W_0,W_1,....)
W=(W0,W1,....).对于一个点为正类,被误分为负类,则点在直线的下方(因为W为直线法线方向,角度=90+<线,
x
⃗
\vec x
x>),
W
t
x
n
<
0
,
<
x
⃗
,
W
⃗
>
>
90
°
W_tx_n<0,<\vec x ,\vec W> >90°
Wtxn<0,<x,W>>90°。我们需要使线向小于
90
°
90°
90°的方向偏转,通常的做法为
W
⃗
=
y
X
⃗
+
W
⃗
\vec W=y\vec X + \vec W
W=yX+W。
如果一个点为负类,误分为正类, W t x n > 0 , < x ⃗ , W ⃗ > < 90 ° W_tx_n>0,<\vec x ,\vec W> <90° Wtxn>0,<x,W><90°,则使线向大于 90 ° 90° 90°的方向偏转, W ⃗ = y X ⃗ + W ⃗ \vec W=y\vec X + \vec W W=yX+W。
则W的最终更新方式为 W ⃗ = y X ⃗ + W ⃗ \vec W=y\vec X + \vec W W=yX+W - 李航:对于某个误分类点,他离线的距离为
−
(
w
x
i
+
b
)
-(wx_i+b)
−(wxi+b),是W,b的线性函数,连续可导。则
L
(
W
,
b
)
L(W,b)
L(W,b)连续可导。在某一个误分类点,使线向误分类点处的负梯度方向偏斜线时,能使
−
(
w
x
i
+
b
)
-(wx_i+b)
−(wxi+b)变小,即使线向误分类点靠近。则函数的梯度为
∇ W L ( W , b ) = − ∑ y i x i , x i ∈ M \nabla _WL(W,b)=-\sum y_ix_i,x_i\in M ∇WL(W,b)=−∑yixi,xi∈M
∇ b L ( W , b ) = − ∑ y i , x i ∈ M \nabla _bL(W,b)=-\sum y_i,x_i\in M ∇bL(W,b)=−∑yi,xi∈M
故W的更新方式为
W = W + η y i x i W = W + \eta y_ix_i W=W+ηyixi
W = W + η y i W = W + \eta y_i W=W+ηyi
两种方式的思路都是使线向错误分类的点偏斜,逐步纠正错误。不同点是偏斜的方向大小不一样。
上面只说了如何转动线使误分类点减少?但是能不能最终使分类完全正确?能不能使这个迭代过程停下来?
证明PLA能在有限步内将线性可分数据集完全分类正确
证明:因为线性可分,一定存在一条线使数据完全正确分类。取这个时候的单位法向量为
w
f
w_f
wf。对任意点有
y
i
(
w
f
x
i
+
b
)
≥
γ
>
0
,
γ
=
m
i
n
{
y
i
(
w
x
i
+
b
)
}
y_i(w_fx_i+b)\geq \gamma>0,\gamma= min \{y_i(wx_i+b)\}
yi(wfxi+b)≥γ>0,γ=min{yi(wxi+b)}
又每次更新错误的点时,都会W。如果更新要停下来,则
w
k
趋
近
于
w
f
w_k趋近于w_f
wk趋近于wf,两者的內积增大,有
w
f
w
k
=
w
f
(
w
k
−
1
+
η
y
i
x
i
)
≥
w
f
w
k
−
1
+
γ
≥
k
η
γ
  
①
w_fw_k=w_f(w_{k-1}+\eta y_ix_i)\geq w_fw_{k-1}+\gamma\geq k\eta\gamma \;①
wfwk=wf(wk−1+ηyixi)≥wfwk−1+γ≥kηγ①
对每一次更新
w
w
w都是使用的公式都是
w
k
+
1
=
w
k
+
η
y
i
x
i
w_{k+1} = w_k + \eta y_ix_i
wk+1=wk+ηyixi
则有
∣
∣
w
k
∣
∣
2
=
∣
∣
w
k
−
1
+
η
y
i
x
i
∣
∣
2
≤
∣
∣
w
k
−
1
∣
∣
2
+
2
η
y
i
w
k
−
1
+
∣
∣
η
y
i
x
i
∣
∣
2
||w_{k}||^2 = ||w_{k-1} + \eta y_ix_i||^2 \leq||w_{k-1} ||^2+2\eta y_iw_{k-1} +||\eta y_ix_i||^2
∣∣wk∣∣2=∣∣wk−1+ηyixi∣∣2≤∣∣wk−1∣∣2+2ηyiwk−1+∣∣ηyixi∣∣2
≤
∣
∣
w
k
−
1
∣
∣
2
+
0
+
∣
∣
η
x
i
∣
∣
2
\leq ||w_{k-1} ||^2+0+||\eta x_i||^2
≤∣∣wk−1∣∣2+0+∣∣ηxi∣∣2
≤
k
η
2
∣
∣
x
i
∣
∣
2
≤
k
η
2
R
2
,
R
=
m
a
x
∣
∣
x
i
∣
∣
  
②
\leq k\eta^2||x_i||^2 \leq k\eta^2R^2,R= max||x_i||\;②
≤kη2∣∣xi∣∣2≤kη2R2,R=max∣∣xi∣∣②
联立①②式,可得
k
η
γ
≤
w
f
w
k
<
∣
∣
w
f
∣
∣
  
∣
∣
w
k
∣
∣
≤
k
η
R
k\eta\gamma \leq w_fw_k<||w_f||\;||w_k||\leq \sqrt k\eta R
kηγ≤wfwk<∣∣wf∣∣∣∣wk∣∣≤kηR
⟹
k
≤
R
2
γ
2
\Longrightarrow k\leq \frac {R^2}{\gamma ^2}
⟹k≤γ2R2
说明经过有限次偏转后总是能停止更新,达到完全分类的目的。
感知机的对偶形式
上面提到的成为原始形式。现在来介绍他的对偶形式。
每次更新的公式如下:
W
=
W
+
η
y
i
x
i
W = W + \eta y_ix_i
W=W+ηyixi
W
=
W
+
η
y
i
W = W + \eta y_i
W=W+ηyi
如果把W初始化为0,则
W
=
∑
n
i
η
y
i
x
i
W = \sum n_i\eta y_ix_i
W=∑niηyixi
W
=
∑
n
i
η
y
i
W = \sum n_i\eta y_i
W=∑niηyi
其中
n
i
n_i
ni为对应点更新的次数。这个时候完全转换为了只有样本点有关的表达式。如果一个点更新的次数越多,越不容易分类正确,则它离线越近。
对偶形式也是收敛的,从数学上看,只是更新了公式的形式而已。
上面提到的感知机中分类器都是使用的线,其实只有在二维空间中才能用线,在多维空间中,线对于的是超平面,也是成立的。
但是现实世界中的数据往往是线性不可分的。那我们该怎么做呢?我们可以引入松弛变量 ξ , 当 L ( w , b ) < ξ , \xi,当L(w,b) <\xi, ξ,当L(w,b)<ξ,我们人为停止更新。讲人话就是我们允许出现错误,但是错误点的比例要小,错误点离超平面的距离要尽量近。
梯度下降
机器学习的很多一大任务就是最优化目标函数,使风险函数最小化。对于一个连续可导的函数,我们可以直接求出它的解析解。而对于一个非连续可导的函数,无法求出其解析解,往往通过数值逼近来求其近似解。
在函数的某个点,负梯度方向上升函数值下降最快的方向。故我们的思路是向着负梯度的方向更新数据。这样可以比较快的得到较小的函数值。
根据一阶泰勒展开有
E
i
n
≈
E
i
n
(
w
k
)
+
∇
E
i
n
(
w
t
)
η
,
  
s
.
t
.
η
=
某
个
(
x
⃗
−
x
⃗
k
)
E_{in} \approx E_{in}(w_k) + \nabla E_{in}(w_t) \eta,\; s.t.\eta=某个(\vec x-\vec x_k)
Ein≈Ein(wk)+∇Ein(wt)η,s.t.η=某个(x−xk)
如果每一次我们都选择一个较小的步长,向负梯度方向更新,则新的损失函数和旧的损失函数相近,不会离得太远。这样我们就可以摸着石头过河,一步一步尝试向前更新。因为函数的极值点处,梯度为0.故当梯度绝对值小于阈值时,我们停止更新。
可以把函数极小化的过程比作球从山上往下滚。在一座山上,球要想快速的往下滚动,他的方向需要为斜坡向下,这样摩擦力最小。经过一段时间后,球总能停留在某个低洼之地。这个位置一定是是一个极点,却不一定是整座山附近最低的点,甚至离最低的点也较远。
如上图,如果每次更新的幅度太小,则需要更新很多次;如果幅度太大,可能永远也得不到解。所以我们需要选择一个合适的大小的步长。
我们通常采用变步长,最开始的时候一般都离最低点较远,我们采取大步长,随着时间的进行,步长慢慢变小。例如设置步长
η
=
1
t
\eta= \frac 1{\sqrt t}
η=t1
SVM
对于PLA,我们获得的线往往并不惟一。如下图:
三条线都是可行解。但是点到直线的最近距离是依次增加的。测量误差是不可避免的,如点离线较近,更容易分错。通常线离数据点越远,越不容易分错,对未知数据也有更好的泛化能力。故我们希望找到这么一条线,不仅正确分类数据,且各个数据点都尽量离超平面较远。
函数间隔:数据集到分割超平面的函数间隔为
γ
^
=
m
i
n
  
y
i
(
w
x
i
+
b
)
\hat \gamma =min \;y_i(wx_i+b)
γ^=minyi(wxi+b)。
则目标函数变为
m
a
x
  
γ
^
∣
∣
W
∣
∣
,
  
s
.
t
.
y
i
(
w
x
i
+
b
)
>
γ
^
max\;\frac {\hat \gamma}{||W||},\; s.t.y_i(wx_i+b)>\hat \gamma
max∣∣W∣∣γ^,s.t.yi(wxi+b)>γ^
几何间隔:数据集到超平面的几何间隔定义为
γ
=
m
i
n
  
y
i
(
w
x
i
+
b
)
∣
∣
w
∣
∣
\gamma =min \;\frac{y_i(wx_i+b)}{||w||}
γ=min∣∣w∣∣yi(wxi+b)。当
∣
∣
w
∣
∣
=
1
||w||=1
∣∣w∣∣=1时,几何间隔和函数间隔一致。另外成倍缩放w,b并不会改变几何间隔的大小,这是一个很好的性质。故取
γ
^
=
1
\hat \gamma=1
γ^=1,数据集到超平面的距离变为
1
∣
∣
W
∣
∣
\frac {1}{||W||}
∣∣W∣∣1,则目标函数变为
m
a
x
  
1
∣
∣
W
∣
∣
,
  
s
.
t
.
y
i
(
w
x
i
+
b
)
−
1
>
0
max\;\frac {1}{||W||},\; s.t.y_i(wx_i+b)-1>0
max∣∣W∣∣1,s.t.yi(wxi+b)−1>0。
通常我们都是求最小化,故我们需要做点转换:对目标函数求倒数,从求最大变为最小;范数||W||为平方根,求梯度较麻烦,对其平方;为了求梯度方便,对目标函数乘
1
2
\frac 12
21。这一系列的操作并不改变解,故目标函数转换为
m
i
n
  
1
2
W
W
T
,
  
s
.
t
.
y
i
(
w
x
i
+
b
)
−
1
>
0
min\;\frac 12WW^T,\; s.t.y_i(wx_i+b)-1>0
min21WWT,s.t.yi(wxi+b)−1>0
这是一个凸二次规划问题。那该如何解它呢?如果有解,通常只需引入拉格朗日乘子就可以了。但是它是否有解呢?是否有多个解呢?
证明线性可分数据集上的SVM超平面有且只有一个
存在性:
由于数据线性可分,故存在可行解。由于最优化函数有下界,故一定存在最优解。
又数据集分正负两类,故
w
=
0
不
是
最
优
解
。
故
存
在
∣
∣
w
∣
∣
=
̸
0
w = 0不是最优解。故存在||w|| =\not 0
w=0不是最优解。故存在∣∣w∣∣≠0的超平面。
唯一性:
若存在
(
w
1
,
b
1
)
,
(
w
2
,
b
2
)
(w_1,b_1),(w_2,b_2)
(w1,b1),(w2,b2)都是最优解,则
L
o
s
s
的
值
一
样
,
∣
∣
w
1
∣
∣
=
∣
∣
w
1
∣
∣
=
c
Loss的值一样,||w_1||=||w_1||=c
Loss的值一样,∣∣w1∣∣=∣∣w1∣∣=c
记
w
=
w
1
+
w
2
2
,
b
=
b
1
+
b
2
2
w=\frac{w_1+w_2}2,b=\frac{b_1+b_2}2
w=2w1+w2,b=2b1+b2,则w,b是可行解(因$y_i(wx_i+b)-1\geq0)。可得
c
≤
∣
∣
w
∣
∣
≤
1
2
∣
∣
w
1
∣
∣
+
1
2
∣
∣
w
2
∣
∣
=
c
c\leq||w||\leq\frac12||w_1||+\frac12||w_2||=c
c≤∣∣w∣∣≤21∣∣w1∣∣+21∣∣w2∣∣=c
(最左边是因为假设为可行解,故大于等于c,中间是范数三角不等式的性质)
⟹
∣
∣
w
∣
∣
=
1
2
∣
∣
w
1
∣
∣
+
1
2
∣
∣
w
2
∣
∣
\Longrightarrow ||w||=\frac12||w_1||+\frac12||w_2||
⟹∣∣w∣∣=21∣∣w1∣∣+21∣∣w2∣∣
⟹
w
1
=
w
2
\Longrightarrow w_1= w_2
⟹w1=w2
(由
∣
∣
w
∣
∣
=
1
2
∣
∣
w
1
∣
∣
+
1
2
∣
∣
w
2
∣
∣
=
c
,
w
1
、
w
2
等
范
数
,
可
知
w
1
=
±
w
2
||w||=\frac12||w_1||+\frac12||w_2||=c,w_1、w_2等范数,可知w_1=\pm w_2
∣∣w∣∣=21∣∣w1∣∣+21∣∣w2∣∣=c,w1、w2等范数,可知w1=±w2,若反向,则w=0,矛盾)
再证
b
1
=
b
2
b_1=b_2
b1=b2:
现在两个最优解变为
(
w
,
b
1
)
,
(
w
,
b
2
)
(w,b_1),(w,b_2)
(w,b1),(w,b2)。
设
x
1
′
、
x
2
′
∈
{
x
i
∣
y
i
=
1
}
分
别
对
应
(
w
,
b
1
)
,
(
w
,
b
2
)
使
条
件
不
等
号
成
立
x_1'、x_2'\in \{x_i|y_i=1\} 分别对应(w,b_1),(w,b_2)使条件不等号成立
x1′、x2′∈{xi∣yi=1}分别对应(w,b1),(w,b2)使条件不等号成立
设
x
1
′
′
、
x
2
′
′
∈
{
x
i
∣
y
i
=
−
1
}
分
别
对
应
(
w
,
b
1
)
,
(
w
,
b
2
)
使
条
件
不
等
号
成
立
x_1''、x_2''\in \{x_i|y_i=-1\} 分别对应(w,b_1),(w,b_2)使条件不等号成立
x1′′、x2′′∈{xi∣yi=−1}分别对应(w,b1),(w,b2)使条件不等号成立
则有:
b
1
=
1
2
(
w
x
1
′
+
w
x
1
′
′
)
b_1=\frac 12(wx_1'+wx_1'')
b1=21(wx1′+wx1′′)
b
1
=
1
2
(
w
x
2
′
+
w
x
2
′
′
)
b_1=\frac 12(wx_2'+wx_2'')
b1=21(wx2′+wx2′′)
b
1
−
b
2
=
1
2
[
w
(
x
1
′
−
x
2
′
)
+
w
(
x
1
′
′
−
x
2
′
′
)
]
b_1-b_2=\frac 12[w(x_1'-x_2')+w(x_1''-x_2'')]
b1−b2=21[w(x1′−x2′)+w(x1′′−x2′′)]
又
w
x
1
′
+
b
2
≥
1
=
w
x
2
′
+
b
2
wx_1'+b_2\geq1=wx_2'+b_2
wx1′+b2≥1=wx2′+b2
w
x
2
′
+
b
1
≥
1
=
w
x
1
′
+
b
1
wx_2'+b_1\geq1=wx_1'+b_1
wx2′+b1≥1=wx1′+b1
⟹
w
(
x
1
′
−
x
2
′
)
=
0
\Longrightarrow w(x_1'-x_2')=0
⟹w(x1′−x2′)=0
同理可得
w
(
x
1
′
′
−
x
2
′
′
)
=
0
w(x_1''-x_2'')=0
w(x1′′−x2′′)=0
⟹
b
1
=
b
2
\Longrightarrow b_1=b_2
⟹b1=b2
拉格朗日乘子和引出KKT条件
上面介绍了解是存在的且唯一,上面也提到了一般可以用拉格朗日乘子来辅助解。具体怎样做呢?
原始问题
min
x
∈
R
n
  
f
(
x
)
\min_{x\in R^n} \;f(x)
x∈Rnminf(x)
s
.
t
.
  
c
i
(
x
)
≤
0
,
i
=
1
,
2
,
.
.
,
k
s.t.\;c_i(x)\leq 0, i=1,2,..,k
s.t.ci(x)≤0,i=1,2,..,k
h
j
(
x
)
≤
0
,
j
=
1
,
2
,
.
.
,
l
h_j(x)\leq 0, j=1,2,..,l
hj(x)≤0,j=1,2,..,l
引入拉格朗日乘子
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
α
i
c
i
(
x
)
+
∑
j
β
j
h
j
(
x
)
,
  
α
i
≥
0
,
β
j
≥
0
L(x,\alpha,\beta)=f(x)+\sum_i\alpha_ic_i(x)+\sum_j\beta_jh_j(x),\;\alpha_i\geq0,\beta_j\geq0
L(x,α,β)=f(x)+i∑αici(x)+j∑βjhj(x),αi≥0,βj≥0
记
θ
P
=
max
L
(
x
,
α
,
β
)
\theta_P=\max L(x,\alpha,\beta)
θP=maxL(x,α,β),当x满足约束条件时,
θ
P
=
f
(
x
)
\theta_P=f(x)
θP=f(x)
(因为
c
i
(
x
)
,
h
j
(
x
)
均
小
于
0
,
θ
P
的
上
界
就
是
f
(
x
)
c_i(x),h_j(x)均小于0,\theta_P的上界就是f(x)
ci(x),hj(x)均小于0,θP的上界就是f(x))
这时原始问题等价于
min
x
f
(
x
)
=
min
x
max
α
,
β
;
α
≥
0
L
(
x
,
α
,
β
)
\min_x f(x)=\min_x \max_{\alpha,\beta;\alpha\geq0} L(x,\alpha,\beta)
xminf(x)=xminα,β;α≥0maxL(x,α,β)
这个时候就把条件引入了目标函数中,有利于求解。
对偶问题:
和感知机一样,还有一个对偶形式。
定义
θ
D
(
α
,
β
)
=
min
x
L
(
x
,
α
,
β
)
\theta_D(\alpha,\beta)=\min_x L(x,\alpha,\beta)
θD(α,β)=xminL(x,α,β)
极大化问题
max
α
,
β
;
α
≥
0
θ
D
(
α
,
β
)
=
max
α
,
β
;
α
≥
0
min
x
L
(
x
,
α
,
β
)
\max_{\alpha,\beta;\alpha\geq0} \theta_D(\alpha,\beta)=\max_{\alpha,\beta;\alpha\geq0}\min_x L(x,\alpha,\beta)
α,β;α≥0maxθD(α,β)=α,β;α≥0maxxminL(x,α,β)
称之为原始问题的最优化问题。
KKT条件——原始问题等价于对偶问题的条件
假
设
f
(
x
)
和
c
i
(
x
)
是
凸
函
数
,
h
j
(
x
)
是
仿
射
函
数
,
且
c
i
(
x
)
假设f(x)和c_i(x)是凸函数,h_j(x)是仿射函数,且c_i(x)
假设f(x)和ci(x)是凸函数,hj(x)是仿射函数,且ci(x)严格满足约束条件,则两个问题等价的充要条件是他们的解满足:
∇
x
L
(
x
,
α
,
β
)
=
0
\nabla_x L(x,\alpha,\beta)=0
∇xL(x,α,β)=0
∇
α
L
(
x
,
α
,
β
)
=
0
\nabla_\alpha L(x,\alpha,\beta)=0
∇αL(x,α,β)=0
∇
β
L
(
x
,
α
,
β
)
=
0
\nabla_\beta L(x,\alpha,\beta)=0
∇βL(x,α,β)=0
α
i
c
i
(
x
)
=
0
,
  
K
K
T
的
对
偶
互
补
条
件
\alpha_ic_i(x)=0,\;KKT的对偶互补条件
αici(x)=0,KKT的对偶互补条件
c
i
(
x
)
≤
0
c_i(x)\leq0
ci(x)≤0
α
i
≤
0
\alpha_i\leq0
αi≤0
h
j
(
x
)
=
0
h_j(x)=0
hj(x)=0
SVM的对偶形式
引入拉个朗日乘子,有
L
(
x
,
α
,
β
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
0
N
−
1
α
i
y
i
(
w
x
i
+
b
)
+
∑
i
=
0
N
−
1
α
i
  
①
L(x,\alpha,\beta)=\frac12||w||^2-\sum_{i=0}^{N-1}\alpha_iy_i(wx_i+b)+\sum_{i=0}^{N-1}\alpha_i\;①
L(x,α,β)=21∣∣w∣∣2−i=0∑N−1αiyi(wxi+b)+i=0∑N−1αi①
求该问题的极大极小问题,有
∇
w
=
w
−
∑
i
=
0
N
−
1
α
i
y
i
x
i
=
0
\nabla_w=w-\sum_{i=0}^{N-1}\alpha_iy_ix_i=0
∇w=w−i=0∑N−1αiyixi=0
∇
b
=
−
∑
i
=
0
N
−
1
α
i
y
i
=
0
\nabla_b=-\sum_{i=0}^{N-1}\alpha_iy_i=0
∇b=−i=0∑N−1αiyi=0
有
w
=
∑
i
=
0
N
−
1
α
i
y
i
x
i
w=\sum_{i=0}^{N-1}\alpha_iy_ix_i
w=i=0∑N−1αiyixi
∑
i
=
0
N
−
1
α
i
y
i
=
0
\sum_{i=0}^{N-1}\alpha_iy_i=0
i=0∑N−1αiyi=0
带入①式可得
min
w
,
b
L
(
x
,
α
,
β
)
=
−
1
2
∑
i
∑
j
α
i
α
j
β
i
β
j
(
x
i
⋅
x
j
)
+
∑
i
α
i
,
  
②
\min_{w,b}L(x,\alpha,\beta)=-\frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(x_i\cdot x_j)+\sum_i\alpha_i,\;②
w,bminL(x,α,β)=−21i∑j∑αiαjβiβj(xi⋅xj)+i∑αi,②
即可得到对偶形式的最优化问题
max
x
1
2
∑
i
∑
j
α
i
α
j
β
i
β
j
(
x
i
⋅
x
j
)
−
∑
i
α
i
\max_x \frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(x_i\cdot x_j)-\sum_i\alpha_i
xmax21i∑j∑αiαjβiβj(xi⋅xj)−i∑αi
s
.
t
.
  
∑
i
α
i
y
i
=
0
s.t. \;\sum_i\alpha_iy_i=0
s.t.i∑αiyi=0
α
i
≥
0
\alpha_i\geq0
αi≥0
如果原始问题的最优解存在,则根据kkt条件有
w
=
∑
i
=
0
N
−
1
α
i
y
i
x
i
w=\sum_{i=0}^{N-1}\alpha_iy_ix_i
w=i=0∑N−1αiyixi
又
∃
α
j
>
0
(
否
则
w
=
0
,
矛
盾
)
,
α
j
(
y
j
(
w
x
j
+
b
)
−
1
)
=
0
,
y
j
2
=
1
\exist \alpha_j>0(否则w=0,矛盾),\alpha_j(y_j(wx_j+b)-1)=0,y_j^2=1
∃αj>0(否则w=0,矛盾),αj(yj(wxj+b)−1)=0,yj2=1,把w带入有
b
=
y
i
−
∑
α
i
y
i
(
x
i
⋅
x
j
)
b=y_i-\sum\alpha_iy_i(x_i\cdot\ x_j)
b=yi−∑αiyi(xi⋅ xj)
为何叫支撑向量机?
根据KKT对偶互补条件
α
i
c
i
(
x
)
=
0
\alpha_ic_i(x)=0
αici(x)=0可知。
- 当 α i = 0 时 , 对 于 的 样 本 点 与 目 标 函 数 无 关 当\alpha_i=0时,对于的样本点与目标函数无关 当αi=0时,对于的样本点与目标函数无关
- 当 α i > 0 时 , c i ( x ) = 0 。 即 y i ( w x i + b ) − 1 = 0 当\alpha_i>0时,c_i(x)=0。即y_i(wx_i+b)-1=0 当αi>0时,ci(x)=0。即yi(wxi+b)−1=0。目标函数只有满足这些条件的样本点有关。这些点称为支撑向量。
- 支撑向量都在间隔边界上。
处理线性不可分时的情形
上面提到的SVM或者感知机都能很完美的分类线性可分的数据集,然而现实世界中的数据集往往是线性不可分的。对于线性不可分的数据集,我们通常引入一个松弛变量
ξ
\xi
ξ,使数据集的约束条件成立。即
y
i
(
w
x
i
+
b
)
−
1
+
ξ
i
≥
0
y_i(wx_i+b)-1+\xi_i\geq0
yi(wxi+b)−1+ξi≥0
背后的意义就是,我们允许数据中存在outlier,允许分类出错,不追求完美,只要能达到我们想要的精度即可。
则目标函数为
min
1
2
w
w
T
+
C
∑
ξ
i
,
  
C
>
0
\min\frac12ww^T+C\sum\xi_i,\;C>0
min21wwT+C∑ξi,C>0
C是惩罚参数,代表对误分类的容忍程度。目标函数表达了两个含义:①前半部分使间隔尽量大,即泛化误差
E
o
u
t
E_{out}
Eout尽量小;②后半部分使误分类个数尽量少,即误差
E
i
n
E_{in}
Ein尽量小。C用来调节二者之间的平衡。
原始形式
上述方式得到的间隔称为软间隔。通过上述思路,我们可以像训练线性可分时一样训练线性不可分的数据集。即得线性不可分时的SVM原始形式:
min
w
,
b
,
ξ
  
1
2
w
w
T
+
C
∑
ξ
i
\min_{w,b,\xi}\;\frac12ww^T+C\sum\xi_i
w,b,ξmin21wwT+C∑ξi
s
.
t
.
  
y
i
(
w
x
i
+
b
)
−
1
+
ξ
i
≥
0
s.t.\;y_i(wx_i+b)-1+\xi_i\geq0
s.t.yi(wxi+b)−1+ξi≥0
ξ
i
≥
0
\xi_i\geq0
ξi≥0
非线性的SVM原始形式仍然是一个凸二次规划问题,故解是存在的。可以像线性可分时一样证明w是唯一的,但是不能证明b唯一的.(其实b的解是一个区间)
对偶形式
对偶形式如下:
min
α
  
1
2
∑
i
∑
j
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
α
i
\min_\alpha\;\frac12\sum_i\sum_j\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_i\alpha_i
αmin21i∑j∑αiαjyiyj(xi⋅xj)−i∑αi
s
.
t
.
∑
i
α
i
y
i
=
0
s.t.\sum_i\alpha_iy_i=0
s.t.i∑αiyi=0
0
≤
α
i
≤
C
0\leq\alpha_i\leq C
0≤αi≤C
推导过程和线性可分时一致:
引入拉格朗日乘子
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
w
w
T
+
C
∑
i
ξ
i
−
∑
i
α
i
(
y
i
(
w
x
i
+
b
)
−
1
+
ξ
i
)
−
∑
i
μ
i
ξ
i
L(w,b,\xi,\alpha,\mu)=\frac12ww^T+C\sum_i\xi_i-\sum_i\alpha_i(y_i(wx_i+b)-1+\xi_i)-\sum_i\mu_i\xi_i
L(w,b,ξ,α,μ)=21wwT+Ci∑ξi−i∑αi(yi(wxi+b)−1+ξi)−i∑μiξi
s
.
t
.
  
ξ
i
≥
0
,
μ
i
≥
0
s.t.\;\xi_i\geq0,\mu_i\geq0
s.t.ξi≥0,μi≥0
对偶问题是一个极大极小问题。则先求极小后极大。对
w
,
b
,
ξ
i
w,b,\xi_i
w,b,ξi求偏导数有
∇
w
=
w
−
∑
i
y
i
x
i
=
0
\nabla_w=w-\sum_iy_ix_i=0
∇w=w−i∑yixi=0
∇
b
=
−
∑
i
α
i
y
i
=
0
\nabla_b=-\sum_i\alpha_iy_i=0
∇b=−i∑αiyi=0
∇
ξ
i
=
C
−
α
i
−
μ
i
=
0
\nabla_{\xi_i}=C-\alpha_i-\mu_i=0
∇ξi=C−αi−μi=0
有
w
=
∑
i
y
i
x
i
w=\sum_iy_ix_i
w=i∑yixi
∑
i
α
i
y
i
=
0
\sum_i\alpha_iy_i=0
i∑αiyi=0
C
−
α
i
−
μ
i
=
0
C-\alpha_i-\mu_i=0
C−αi−μi=0
反带入并对
α
\alpha
α,求极大再消去
μ
i
\mu_i
μi,即可得对偶形式。
KKT条件在线性不可分时仍然适用。可求得解 w = ∑ i α i y i x i w=\sum_i\alpha_iy_ix_i w=i∑αiyixi b = y j − ∑ i y i α i ( x i ⋅ x j ) b=y_j-\sum_iy_i\alpha_i(x_i\cdot x_j) b=yj−i∑yiαi(xi⋅xj)
软间隔的支撑向量?
数据线性不可分时,把
α
i
>
0
\alpha_i>0
αi>0的点称为支撑向量。此时他们与线性可分时稍有不同。
- 若 α < C , 则 ξ = 0 , 支 撑 向 量 S V 恰 好 落 在 间 隔 边 界 线 上 若\alpha<C,则\xi=0,支撑向量SV恰好落在间隔边界线上 若α<C,则ξ=0,支撑向量SV恰好落在间隔边界线上
- 若 α = C , 0 < ξ i < 1 若\alpha=C,0<\xi_i<1 若α=C,0<ξi<1,则分类正确,sv落在分离超平面和间隔边界之间
- 若 α = C , ξ i = 1 若\alpha=C,\xi_i=1 若α=C,ξi=1,则sv在分离超平面上
- 若 α = C , ξ i > 1 若\alpha=C,\xi_i>1 若α=C,ξi>1,则sv在分离超平面误分类的一侧
当数据线性可分时,支撑向量都在间隔边界上。这个毕竟容易理解。
当数据线性不可分时
非线性时的处理技巧——kernel
上面提到的算法只能解决线性的,然而现实世界中经常遇到非线性的数据集。
如果存在真模型,则一定存在一个真决策函数f(x),根据泰勒展开,则f(x)顶多可以展开为无限维的。则展开式是一个
x
n
x^n
xn的线性组合。也即我们通过对原来的空间做转换后,可以在一个更高维的空间里使线性方法来处理非线性问题。
需要解决几个问题
- 转换后,数据量增加,存储和计算成本都增加
- 空间转换的映射函数有无要求
- 空间维度增加后vc dimension增加,容易过拟合
kernel可以降低计算成本
假设我们已经做了特征变换
z
n
=
ϕ
(
x
n
)
z_n=\phi(x_n)
zn=ϕ(xn),由②式可知目标函数为
min
w
,
b
L
(
z
,
α
,
β
)
=
−
1
2
∑
i
∑
j
α
i
α
j
β
i
β
j
(
z
i
⋅
z
j
)
+
∑
i
α
i
,
  
③
\min_{w,b}L(z,\alpha,\beta)=-\frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(z_i\cdot z_j)+\sum_i\alpha_i,\;③
w,bminL(z,α,β)=−21i∑j∑αiαjβiβj(zi⋅zj)+i∑αi,③
可知计算量主要在于
z
i
⋅
z
j
z_i\cdot z_j
zi⋅zj。它可以分为两步:①做特征转;②做內积。
假设特征转换后的维度为
d
^
\widehat d
d
,原始特征维度为
d
d
d。则特征转换导致空间维度增大,增加了计算成本。但在某些情况下将这两步结合,能大大减少运算量。
以二阶多项式的內积为例。二阶多项式如下:
转换后作內积有:
时间复杂度从
两
步
分
开
做
时
的
O
(
d
2
)
变
为
了
O
(
d
)
两步分开做时的O(d^2)变为了O(d)
两步分开做时的O(d2)变为了O(d),大大降低了运算量。另外与
d
^
\widehat d
d
没有任何关系,进一步降低了运算量。
我们把合并特征转换和內积运算称为Kernel Function。林轩田老师把这种技巧称为“偷吃步”。记为
K
(
x
,
y
)
=
ϕ
(
x
)
⋅
ϕ
(
y
)
K(x,y)=\phi(x)\cdot\phi(y)
K(x,y)=ϕ(x)⋅ϕ(y)
kernel函数的要求
如果我们能找到Kernel Function,将会大大的降低运算量。那Kernel Function需要满足什么条件呢?
Mercer 定理:
一个函数是核函数的充要条件是:
- K的gram矩阵是是半正定的
- K是对称函数
选择合适的kernel
通常一个kernel是比较难构造的,我们往往使用现有的kernel
①多项式kernel:
K
Q
(
x
,
y
)
=
(
ξ
+
γ
x
⋅
y
)
Q
K_Q(x,y)=(\xi+\gamma x \cdot y)^Q
KQ(x,y)=(ξ+γx⋅y)Q
通常用于特征多、样本多的情形。
线性核:当Q=1时,就是线性可分的情况。特点:
- 计算简单、快速,易于理解(特别是2、3维空间可以直接从视觉来帮助理解)
- 对于线性不可分时束手无策
多项式核特点:
- 阶数可以自由选择,通常更贴近真实分布。
- Q很大时,K的数值范围波动很大,且参数个数相较多,不容易选择。
②高斯核(高斯径向基函数):
K
Q
(
x
,
y
)
=
e
−
γ
∣
x
−
y
∣
K_Q(x,y)=e^{-\gamma |x-y|}
KQ(x,y)=e−γ∣x−y∣
是把有限空间映射到无穷维空间。适用于特征少,样本多的情形。(这种情形也可以做特征工程来使用①)
特点:
- 边界更加复杂多样,更容易使使 E i n E_{in} Ein更小,K的数值波动小,只有一个参数,容易选择
- 把有限空间映射到无穷维空间,未计算出w,计算速度相对线性低。且更容易过拟合。
③字符串核,李航的书里提到,暂时无接触。