0 - 写在前面
本系列为学习林轩田老师讲解的SVM的笔记整理,共四篇,此为第一篇:
如有理解错误,还望不吝指教!
1 - 最大间隔超平面
1.1 - 线性分类器回顾
如下图中有两个类别 × × 和 ◯ ◯ ,当数据是线性可分的时候, PLA P L A 算法可以帮助我们找到能够正确划分数据的超平面 hyperplane h y p e r p l a n e ,即如图所示的那条线。
对于一个线性可分的资料,不会只存在一条线可以正确的划分
×
×
和
◯
◯
。如下图中有三条线可以完美的划分两个类别, 但是哪一个是最好的划分呢?
- 对于 PLA P L A 算法来说,最终得到哪一条线是不一定的,取决于算法 scan s c a n 数据的顺序。
- 从
VC bound
V
C
b
o
u
n
d
的角度来说,我们所在意的
Eout
E
o
u
t
会被
Ein
E
i
n
和
Ω(H)
Ω
(
H
)
控制住,其中的
Ein
E
i
n
指的是分类器在看过的资料上的表现,显然上述的三条线的
Ein
E
i
n
都是
0
0
, 是指复杂度, 因为都是线性的分类器,所以都等于
d+1
d
+
1
。
Eout(w)≤Ein0+Ω(H)dvc=d+1 E o u t ( w ) ≤ E i n ⏟ 0 + Ω ( H ) ⏟ d v c = d + 1
但是直观上来看,最右边的线应该会是比较好的 hyperplane h y p e r p l a n e 。为什么最右边的分隔面最好呢?这里先给出一个简单直观的解释,因为最右边的线对于测量误差的容忍度是最好的。例如对于每张图片中左下角的样本点,当未来要判定与该点非常接近的点(有可能它们的 feature f e a t u r e 本来就是一样的,就是同样的一个样本,只不过因为测量的误差的存在,所以 feature f e a t u r e 变得有点不同了)的 label l a b e l 的时候,最右边的 hyperplane h y p e r p l a n e 对这些误差会有最大的容忍度。这也是其最大的不同于左边两条线的地方。
从下面的图可以更加直观的看出,我们想要找一个离每一个样本点都很远的分隔线。这样对测量误差有更大的容忍度,就能更加避免过拟合的情况出现。(tolerate more noise ⟶ ⟶ more robust to overfitting)或者说,我们想找这样的一个超平面,离这个超平面最近的点的到这个超平面的距离也是很大的。
或者从另一角度来看, 我们想要找的是“最胖”的那条线。有“多胖”是根据离该线最近的点距离它有多远来定义的。
1.2 - 最大间隔分类超平面
所以我们可以使用如下的稍微带点数学形式的表达方式来描述我们的需求:
即我们要找一条线 w w ,首先这条线要正确的划分每一个样本。其次这条线要是所有能正确划分样本点的线中最”胖“的 (maxw fatness(w)) ( m a x w f a t n e s s ( w ) ) 。线 w w 的”胖”的衡量方法是:到所有的点中距离最近的点的长度作为该的 fatness f a t n e s s (胖瘦程度)。
一句话:找能正确划分数据的最胖的线。
在大多数的资料中,线的胖瘦 fatness f a t n e s s 被称为是 margin m a r g i n ; correctness c o r r e c t n e s s 其实就是要求 yy^=ynwTxn>0 y y ^ = y n w T x n > 0
所以上述的表达可以进一步数学化为:
GOAL G O A L :找有最大间隔( margin m a r g i n )的分类超平面。
2 - 最大间隔问题
2.1 - 点到超平面的距离
上一小节给出了一个最优化问题,如果能够解决那个问题就可以得到最佳的线在哪里。我们把最终想要找到的那条线称为分隔超平面。该分隔超平面由 w,b w , b 决定, 接下来所有的工作都是在找最佳的 w,b w , b ,从而得到最终的模型: h(x)=sign(wTx+b) h ( x ) = s i g n ( w T x + b ) 。
下面开始来一点一点的变换上面的问题直到我们可以求解。
首先我们关注 distance(xn,w) d i s t a n c e ( x n , w ) 。也就是分隔超平面和样本点之间的距离。怎么算一个点 x x 到平面的距离呢? wTx+b=0 w T x + b = 0 就是我们最终想要的分隔超平面。
考虑在平面上的两个点
x′,x′′
x
′
,
x
″
, 那么有
两式相减:
所以可以得到 w w 是该平面的法向量。()。
那么一个任意点
x
x
到平面的距离即是求
x−x′
x
−
x
′
在
w
w
上投影的长度,其中为平面上的任意一个点。根据公式可以计算如下(投影):
其中, b,w b , w 代表平面。第二步化简用到 wTx′=−b w T x ′ = − b 。这样我们就会求解点到平面的距离了。
需要注意的是,由于是分隔超平面,针对每一个样本
(xn,yn)
(
x
n
,
y
n
)
,都有
yn(wTxn+b)>0
y
n
(
w
T
x
n
+
b
)
>
0
,利用这一点,样本点到分隔超平面的距离计算公式可以变为:
之所以可以这样做是因为我们只考虑那些能够正确分类的线。
即我们最初的目标变为:
还是不会求解,所以需要进一步简化。我们最终想要找的是一个
hyperplane
h
y
p
e
r
p
l
a
n
e
,也就是
wTx+b=0
w
T
x
+
b
=
0
(我们现在在选择它的系数
w
w
和)。情况是这样的:
wTx+b=0
w
T
x
+
b
=
0
和
3wTx+3b=0
3
w
T
x
+
3
b
=
0
是没有什么差别的,只是进行了系数的放缩,其实是一个超平面,在二维就表示同一条直线。既然这些系数的放缩是不会影响结果的, 那么我们可不可以考虑一些比较特别的放缩使得问题变的简单一点呢? 出于这样的考虑,在这里我们使用一个特别的放缩使得:
通过调节 w,b w , b ,这样的放缩总是可以做到的。这样做的目的是为了使得:
原来的问题变为:
分析一下这个问题相较于上一次来说有什么变化:我们不再需要计算
margin
m
a
r
g
i
n
了,
margin
m
a
r
g
i
n
就等于
1||w||
1
|
|
w
|
|
, 但是为了保证
margin=1||w||
m
a
r
g
i
n
=
1
|
|
w
|
|
,我们又多了一个条件, 就是要把
w
w
缩放成恰好满足, 直观上可以理解为得分最少的样本的分数
(wTxn+b)
(
w
T
x
n
+
b
)
与其
label
l
a
b
e
l
的乘积为
1
1
。
进一步可以变为:
因为条件 minn=1,⋯,N yn(wTxn+b)=1 m i n n = 1 , ⋯ , N y n ( w T x n + b ) = 1 包括 every yn(wTxn+b)>0 e v e r y y n ( w T x n + b ) > 0 ,并且比其更为严格, 所以后者可以去掉。
我们进一步得到了看起来描述比较简单的间隔最大化问题的需求:最大化 1||w|| 1 | | w | | ,并且满足最小的 yn y n 乘以分数的值为1。
虽然经过了很多的变换,使用了很多技巧,但是这个问题还是不会解。(接下来的变换的主要思想是,因为在上述最优化的问题的条件中有个
min
m
i
n
的操作,我们希望把这个
min
m
i
n
去掉,把条件放宽,然后在一个比较宽松的条件下求解原来的最优化问题,这样可能简单点,当然我们要保证在这个宽松的条件下求得的解依然满足原来比较严格的条件,不然是不可以这样做的。)
现在的目标是要把条件中的
min
m
i
n
操作去掉。我们将条件
minn=1,⋯,N yn(wTxn+b)=1
m
i
n
n
=
1
,
⋯
,
N
y
n
(
w
T
x
n
+
b
)
=
1
放宽至:
for all n
f
o
r
a
l
l
n
都有
yn(wTxn+b)≥1
y
n
(
w
T
x
n
+
b
)
≥
1
。现在我们担心的问题是:原来的最优化问题的条件要求最小的
yn(wTxn+b)
y
n
(
w
T
x
n
+
b
)
等于
1
1
, 而现在要求所有的大于等于
1
1
。那么在新的条件下求解原来的问题得到的最佳解会不会使得所有的
yn(wTxn+b)
y
n
(
w
T
x
n
+
b
)
都大于
1
1
了,这样我们放宽条件就出了问题,因为求得的解不在满足原来的条件了。
以下将证明,即使放宽了条件,最佳解依然满足原来的条件
反证法:
如果最佳解是 (w,b) ( w , b ) 并且该解使得所有的 yn(wTxn+b) y n ( w T x n + b ) 都是大于1的, 例如 yn(wTxn+b)≥1.126 y n ( w T x n + b ) ≥ 1.126 , 那么我们进行一下缩放可知 (w1.126,b1.126) ( w 1.126 , b 1.126 ) 也是放松后问题的解。但是此时 w1.126 w 1.126 显然比 w w 会有更大的,与假设 (w,b) ( w , b ) 是最佳解矛盾,也就是说不可能有最佳解使得所有的 yn(wTxn+b) y n ( w T x n + b ) 都是大于1的。
新的问题变成:
变为最小化问题:
这就是我们最终想要解决的问题,当我们能找到这个问题中的 w w 和的时候,我们就可以说 wTx+b=0 w T x + b = 0 就是我们要找的最胖的分隔边界。
3 - 支撑向量机
通过上一节的推导我们得到的问题称为标准问题,这个标准问题要最小化 w w 和自己的內积, 需要满足的条件是对于每一个样本和得分 wTxn+b w T x n + b 的乘积要大于等于 1 1 。
首先给出一个可以手工计算的例子来看看这个问题的求解过程。所有的样本点如下图所示:共有 4 4 个样本,个正例, 2 2 个负例。
每一个样本的具体信息如下:
根据最优化问题的要求最佳的
w
w
需要满足以下4个条件:
- (i) and (iii)⟹w1≥+1 ( i ) a n d ( i i i ) ⟹ w 1 ≥ + 1
- (ii) and (iii)⟹w2≤−1 ( i i ) a n d ( i i i ) ⟹ w 2 ≤ − 1
根据以上的两个式子可以得到:
12wTw≥1
1
2
w
T
w
≥
1
, 所以我们的目标函数,最小最小的时候也是
1
1
。我们可以令。这样的话不仅仅满足了条件
(i)∽(iv)
(
i
)
∽
(
i
v
)
,也使得
target function
t
a
r
g
e
t
f
u
n
c
t
i
o
n
取得了最小的值
1
1
。其中的值可以通过计算一个范围得到。这样我们就得到了我们最想要的
hyperplane
h
y
p
e
r
p
l
a
n
e
:
gsvm:x1−x2−b=1
g
s
v
m
:
x
1
−
x
2
−
b
=
1
。从图中可以看出来这条线是比较胖的。这就是我们想要找的支撑向量机。此时
margin=1||w||=12√
m
a
r
g
i
n
=
1
|
|
w
|
|
=
1
2
。
为什么要叫支撑向量机呢?在我们找到了这条最胖的线之后我们发现有一些点离这条线是很近的。 也就是如图用方框框起来的那些点。其实只要这些点就可以确定我们想要的 hyperplane h y p e r p l a n e ,我们把这些点叫做 Support Vector S u p p o r t V e c t o r 。可以理解为这些支撑向量就可以确定我们想要的分割超平面,而不需要其他的点。
3.1 - SVM的一般解法
通过分析可知,我们想要最小化的问题是个 w w 的二次函数,该问题的条件是的线性一次式。我们把这样的问题叫做二次规划(Quadratic programming)所以我们的一个解法是将我们的问题表示为二次规划的标准形式,然后就可以调用二次规划的包进行运算。
3.2 - 标准的二次规划问题
所以我们只要确定其中的系数 Q,p,A,c Q , p , A , c ,这样就可以求解出最佳的分割线。
这样就将我们想要求解的最佳化问题变为二次规划问题。
3.3 - 使用二次规划的方法求解 SVM S V M
线性可分的硬间隔
SVM
S
V
M
算法
Linear Hard-Margin SVM Algorithm
- 表示为规范的 QP Q P 问题,给出其中的参数 Q,p,A,c Q , p , A , c
- w,b⟵QP(Q,p,A,c) w , b ⟵ Q P ( Q , p , A , c )
- return w,b as gsvm r e t u r n w , b a s g s v m
note: n o t e :
- hard h a r d - margin m a r g i n :表明我们坚持要将正例和负例完全的分开,不允许有误分的点。
- linear l i n e a r :表明我们是在使用 x x 来训练,我们得到的是在 X X 空间中的分割超平面。而没有经过任何的特转换。
- 所以如果我们想要一个非线性的,可以使用 z=Φ(x) z = Φ ( x )
到了现在我们已经知道怎么来求解这个 SVM S V M 的问题了,如果你想要做非线性的,那么只要把 x x 变为就好了。
那么,为什么
SVM
S
V
M
这样的模型会有比较好的效果呢?在之前简单的说过,一条胖的线可以抵挡比较多测量误差。
在这里我们把
SVM
S
V
M
和我们之前提到的一个工具
regularization
r
e
g
u
l
a
r
i
z
a
t
i
o
n
做简单的对比。在我们做
learning
l
e
a
r
n
i
n
g
的时候, 我们想要把
Ein
E
i
n
最小化,又担心在最小化
Ein
E
i
n
的时候会出现
overfitting
o
v
e
r
f
i
t
t
i
n
g
的状况,所以我们就加了一个限制
w
w
长度的项:;我们发现在
SVM
S
V
M
中同样也做了这两件事情,不过这两件事的位置对调了:在
SVM
S
V
M
中,我们最小化的不是
Ein
E
i
n
而是
w
w
的长度,加的限制条件变成了要将
Ein
E
i
n
做成
0
0
。所以从这个层面上来看, 本身做到了和
regularization
r
e
g
u
l
a
r
i
z
a
t
i
o
n
相同的事情。
4 - 总结
我们的出发点是想要找一些比较“胖”的分割线来应付测量误差,然后通过一系列的简化得到了SVM的描述如下:
并将目标变为可以使用二次规划进行求解的一个问题。接下来我们会看看在配合上非线性转换之后的SVM应该怎么求解。