SVM学习笔记第二篇
0 - 回顾
上一篇笔记讲述了一个模型:线性支撑向量机。其目的是要找一个比较“胖”的分割线或者叫分割超平面,因为这些比较“胖”的
hyperplane
h
y
p
e
r
p
l
a
n
e
对于测量误差是比较鲁棒的。并且我们使用二次规划方法来解决这样的问题。
这篇将要讲述的是将这个模型转化为另一种形式,对偶形式,以使得该模型可以更容易的延伸到其他不同的各种各样的应用当中去。
1 - 非线性支撑向量机
上一节讲到我们可以使用二次规划解决线性支撑向量机。当我们想使用非线性的转化,只要将 z=Φ(x) z = Φ ( x ) 作为输入,在 Z Z 空间中构造二次规划问题需要的输入就好了,这样就能通过二次规划的方法找到在空间中最好的 w w 和,然后可以在 Z Z 空间中得到一个线性的分类器,对应到原来的空间中, 就是一个非线性的分类器。
(SVM+feature transform=non ( S V M + f e a t u r e t r a n s f o r m = n o n - linearSVM) l i n e a r S V M ) 即 SVM S V M 加上非线性特征转化可以得到非线性的 SVM S V M 。
为什么要使用非线性的 SVM S V M 呢?
- 通过 SVM S V M 自身的 largin l a r g i n - margin m a r g i n 特性来降低算法的复杂度,
- 通过 feature transform f e a t u r e t r a n s f o r m 来得到更加复杂的弯弯曲曲的曲线以使得 Ein E i n 更小。
非线性的 SVM S V M 形式如下:(只要将 z=Φ(x) z = Φ ( x ) 作为输入即可)
1.1 - 非线性的硬间隔SVM算法(Non-linear Hard-Margin SVM)
- 构造二次规划中需要的参数
(Q,p,A,c)
(
Q
,
p
,
A
,
c
)
Q=[00d~0Td~Id~];p=0d~+1;aTn=yn[1zTn];cn=1(24) (24) Q = [ 0 0 d ~ T 0 d ~ I d ~ ] ; p = 0 d ~ + 1 ; a n T = y n [ 1 z n T ] ; c n = 1 - w,b⟵QP(Q,p,A,c) w , b ⟵ Q P ( Q , p , A , c )
- return b∈R and w∈Rd~ withgsvm(x)=sign(wT Φ(x)+b) r e t u r n b ∈ R a n d w ∈ R d ~ w i t h g s v m ( x ) = s i g n ( w T Φ ( x ) + b )
这里有一个不得不关注的问题:
以上的新的
QP
Q
P
问题是在
Z
Z
空间中进行运算的,空间中的维度是
d~
d
~
, 而在原来的
X
X
空间中的维度是。即,新的
QP
Q
P
问题的变量有
d~+1
d
~
+
1
个, 约束有
N
N
个, 所以当空间的维度很高的时候,这个
QP
Q
P
问题就很难求解。 这也是我们这篇基本的出发点和想要解决的问题。
当我们想要使用非常复杂的特征转化甚至为无限维度的特征转化的时候,
d~
d
~
就会很大或者是无穷大,显然现在是没有办法解决无限多个变数的最佳化问题的,所以我们想要找到一个特殊的机制可以帮助我们完成这个任务,解决特征转化之后在计算上对
Z
Z
空间中的依赖。
1.2 - 我们的目标:不依赖于 d~ d ~ 的SVM
我们的方法是将原始的 SVM S V M 问题转化为一个新的对等的 SVM S V M 问题。原来的问题中,如上所述,总共有 d~+1 d ~ + 1 个变量, N N 个约束;新的问题依然是一个问题,但是其中将有 N N 个变量,个约束。也就是说只和资料量的大小 N N 有关,与特征的个数无关,那么就和转换之后的空间的维度没有任何的关系。我们把这个新的和原来对等的问题称为是原来 SVM S V M 的对偶问题。我们要使用的方法是拉格朗日乘子。
1.3 - 工具: 拉格朗日乘子
简单的回忆一下
regularization
r
e
g
u
l
a
r
i
z
a
t
i
o
n
的内容:
regularization
r
e
g
u
l
a
r
i
z
a
t
i
o
n
原来是要求解一个有条件的最优化问题,即我们想要
Ein
E
i
n
最小,约束是
w
w
的长度不能太长。但是这个有约束的最佳化问题我们不会解, 所以在经过了一番推导之后发现这个约束条件可以塞到最小化的目标函数里面, 这样就变成了求解一个最小化的问题,这个问题是没有约束条件的(如下图)。在这个过程中我们使用到的工具就是
lagrange multiplier
l
a
g
r
a
n
g
e
m
u
l
t
i
p
l
i
e
r
,简单说就是将每一个条件前面乘以一个系数加到目标函数中去。
SVM S V M 是一个带条件的最优化问题,我们通过引入 lagrange multipliers l a g r a n g e m u l t i p l i e r s 得到的问题就是 SVM S V M 的对偶问题,该问题的变量是引入的 Lagrange multipliers L a g r a n g e m u l t i p l i e r s 。因为有 N N 个条件,所有我们需要引入个 lagrange multipliers l a g r a n g e m u l t i p l i e r s αi α i 。
为了推导对偶问题,我们首先想要做的是将原始的 SVM S V M 问题转化为一个无约束的问题。
定义一个函数,我们称之为拉格朗日函数,其中的 α α 为拉格朗日乘子。
之所以要定义这个函数,是为了将 SVM S V M 转化为一个看起来好像无约束的问题,定义了以上的函数之后,考虑如下的这个无约束的最小化问题:
这个式子要做的事情可以理解成是这样的: 对于一组 (w,b) ( w , b ) , 我们来调 α α 的取值,使得 L(w,b,α) L ( w , b , α ) 能取得最大值;对于第二组 (w,b) ( w , b ) , 我们再来调 α α 的取值,使得 L(w,b,α) L ( w , b , α ) 能取得最大值; ⋯ ⋯ ;对于另一组 (w,b) ( w , b ) , 我们再来调 α α 的取值,使得 L(w,b,α) L ( w , b , α ) 能取得最大值 ⋯ ⋯ 。这样每一组 (w,b) ( w , b ) 都能得到相应的一个 L(w,b,α) L ( w , b , α ) 的最大值,最后在这些最大值里面选择最小的。这个最小的值对应的那组 (w,b) ( w , b ) 就是我们 原始问题 想要的解。下面来解释为什么这样做是对的?
如上面说的,针对每一组 (w,b) ( w , b ) 调节 α α 来使得 L(w,b,α) L ( w , b , α ) 最大,
- 如果这一组 (w,b) ( w , b ) 是“不好”的, 即违反了 N N 个条件中的任何一个,不失一般性,我们假设这一组违反了第 k k 个条件,那么即 1−yk(wTzk+b)>0 1 − y k ( w T z k + b ) > 0 。 此时我们想要做的事情是 maxall αn ≥0(12wTw+∑Nn=1αn(1−yn(wTzn+b))) m a x a l l α n ≥ 0 ( 1 2 w T w + ∑ n = 1 N α n ( 1 − y n ( w T z n + b ) ) ) , 那么我们只要令 αk α k 取无穷大就可以使得 L(w,b,α) L ( w , b , α ) 最大(无穷大)。
- 如果这一组 (w,b) ( w , b ) 是“好”的,即它满足 SVM S V M 中所有的约束,那么在 maxall αn ≥0(12wTw+∑Nn=1αn(◯))) m a x a l l α n ≥ 0 ( 1 2 w T w + ∑ n = 1 N α n ( ◯ ) ) ) 的时候,因为 ◯ ◯ 都是负的,我们要最大化这个式子,所以 α α 最好的取值是都取 0 0 。 那么最大化的结果就是
本来我们对 (w,b) ( w , b ) 是没有设置任何的条件的,但是在做里面的最大化的时候不好的 w,b w , b (违反 SVM S V M 约束条件的 w,b w , b )会得到无穷大,好的 w,b w , b (满足 SVM S V M 约束条件的 w,b w , b )会得到 12wTw 1 2 w T w 。所以当我们再做外层的最小化的操作的时候,我们自然而然的就把不好的 (w,b) ( w , b ) 排除了。而要在好的 (w,b) ( w , b ) 中选择使得 12wTw 1 2 w T w 最小的。
这样我们就把原始 SVM S V M 问题转化为了一个无约束的问题。
2 - 拉格朗日对偶SVM
现在我们已经把
SVM
S
V
M
问题转换为一个新的问题了。简单说,新的无约束的问题是先对拉格朗日函数做一个关于
α
α
的最大化问题,在做一个关于
w,b
w
,
b
的最小化问题。
对于一个固定的
α′
α
′
我们可以得到
因为最大的值总是要比任意的一个值大 (max≥any) ( m a x ≥ a n y )
又因为任意的
α′
α
′
上式都是成立的,那么当然其中最大的那个对于上面的式子来说也是成立的。
这样我们就得到了原始问题的一个对偶问题( max minL(w,b,α) m a x m i n L ( w , b , α ) ),如果我们能解决对偶问题,那么我们就得到了原始问题的一个下限。如果不在意数学的推导,其实就是将最小化和最大化的顺序互换了一下。
2.1 - 二次规划问题的强对偶性
上述的这个
≥
≥
的关系在最小化的文献里面被称为
weak duality
w
e
a
k
d
u
a
l
i
t
y
, 意思是这两个问题有关系,但是关系有点弱。如果有一个更强的关系, 即左边的解和右边的解是相等的。那么我们就可以通过求解右边的问题来求解
SVM
S
V
M
,因为现在
SVM
S
V
M
的求解已经转换为求解左边的问题了。为什么要解右边的问题呢?因为右边的问题相比于左边的来说更好解。根据我们上面的分析,我们对
w和b
w
和
b
是没有约束的,而右边的问题是要先解决这个没有约束的问题(无约束的问题总是比较好解的),所以比较简单。
那么什么条件下两个问题的解是相同的呢?对于二次规划问题来说,如果:
- 问题是凸的, SVM S V M 是凸的
- 原来的问题是有解的,也就是能在 Z Z 空间中正确的划分,这一点也能满足
- 条件是线性的
上述的不等式关系可以变为等式关系,或者称为强对偶关系。那么就可以通过求解右边的问题, 即对偶问题, 来求解和SVM问题等价的原始问题。此时存在一组, 对于两边来说都是最佳的解。 经过上面的推导,我们现在就可以通过求解如下的对偶问题来求解原始的
SVM
S
V
M
问题。 先看里面的
min
m
i
n
部分,现在里面的这部分是无约束的最小化问题,要想得到最优解, 即最优的那组
(w,b,α)
(
w
,
b
,
α
)
,那么需要满足的一个条件是: 既然这是最佳解需要满足的很多条件中的一个,那么我们再在原来的问题上多加一个这样的条件对原来的问题的解是毫无影响的。因为这个条件涉及到
α
α
,所以加在最大化的下面,那么上面的式子变为:
∑ynαn=0
∑
y
n
α
n
=
0
所以有
∑ynαnb=0
∑
y
n
α
n
b
=
0
,所以有: 经过这样的处理,式子中的
b
b
消失了. 上面是通过对求导数来进行化简,同样的我们对
wi
w
i
求偏导来继续化简上面的式子:2.2 - 求拉格朗日对偶形式
还是针对里面的那个无约束的最小化问题,最优的
(w,b,α)
(
w
,
b
,
α
)
还应该满足:
依据和上面一样的思想,将这个最优解需要满足的另一个条件添加进去,那么上面的式子变为:
因为式子里面已经没有 w w 了,所以就可以把去掉了。
现在我们就把原来的问题化简为了一个只有变量 α α 的最大化问题。这个 α α 要满足三个条件:
-
- all αn≥0 a l l α n ≥ 0 : α α 自身的限制。
- ∑ynαn=0 ∑ y n α n = 0 :对 b b 最优化得到的条件。
- :对 w w 最优化得到的条件。
这样我们就得到了拉格朗日对偶问题的简化版本
当求出最佳的 α α 之后,最佳的 α α 和最佳的 w,b w , b 会满足一些关系, 这些关系我们称之为KKT condition, 即:如果 (w,b,α) ( w , b , α ) 是原问题和对偶问题的最佳解, 那么它们会满足一些条件如下:
- 满足原始问题的条件: yn(wTzn+b)≥1 y n ( w T z n + b ) ≥ 1
- 满足对偶问题的条件: αn≥0 α n ≥ 0
- ∑ynαn=0 ∑ y n α n = 0 ; w=∑αnynzn w = ∑ α n y n z n
- αn(1−yn(wTzn+b))=0 α n ( 1 − y n ( w T z n + b ) ) = 0 , 两者至少要有一个为0,保证了解的稀疏性。这也正是 SVM S V M 的优势。
以上四个条件是 (w,b,α) ( w , b , α ) 为原问题和对偶问题的最佳解的充分必要条件。
有必要详细说下第4个条件,从这里可以看出只有 1=yn(wTzn+b) 1 = y n ( w T z n + b ) 的样本点的 αn α n 才是非零的,当 1≠yn(wTzn+b) 1 ≠ y n ( w T z n + b ) 的时候,对应的 αn α n 都是0,所以说这样一来 α α 就变得很稀疏。所以当我们求出了对偶问题的最优解之后,将利用这些条件从 α α 中计算我们想要的 w,b w , b 。
3 - SVM的对偶形式的求解
通过上一节的分析得到了 SVM S V M 对偶形式的简化版如下:
maxall αn≥0,∑ynαn=0,w=∑αnynzn−12||∑n=1Nαnynzn||2+∑n=1Nαn m a x a l l α n ≥ 0 , ∑ y n α n = 0 , w = ∑ α n y n z n − 1 2 | | ∑ n = 1 N α n y n z n | | 2 + ∑ n = 1 N α n将以上的形式稍作修改: max m a x 改为 min m i n , 可以得到:
standard hard-margin SVM dual
minαsubject to12∑n=1N∑m=1NαnαmynymzTnzm−∑n=1Nαn∑ynαn=0all αn≥0n=1,2,⋯N.(47)(48)(49)(50) (47) m i n α 1 2 ∑ n = 1 N ∑ m = 1 N α n α m y n y m z n T z m − ∑ n = 1 N α n (48) s u b j e c t t o ∑ y n α n = 0 (49) a l l α n ≥ 0 (50) n = 1 , 2 , ⋯ N .可以看到这个问题完全是一个正如我们之前想要得到的,新的最佳化问题有 N N 个变量, N+1 N + 1 个约束条件(每一个 α α 一个, 所有的一个),这是一个 (convex)QP ( c o n v e x ) Q P 问题。
3.1 - 使用二次规划求解对偶的SVM
使用二次规划的方法来解决对偶 SVM S V M 问题
optimal α= ?minαsubject to12∑n=1N∑m=1NαnαmynymzTnzTm−∑n=1Nαn∑ynαn=0all αn≥0n=1,2,⋯N.(10)(11)(12)(13)(14) (10) o p t i m a l α = ? (11) m i n α 1 2 ∑ n = 1 N ∑ m = 1 N α n α m y n y m z n T z m T − ∑ n = 1 N α n (12) s u b j e c t t o ∑ y n α n = 0 (13) a l l α n ≥ 0 (14) n = 1 , 2 , ⋯ N .同样的调用二次规划的包来进行计算,我们唯一需要做的就是喂给包相应的参数,二次项系数: Q Q ;一次项系数:;条件中的系数: A A ;条件中的常数:。
标准的二次规划问题如下:
optimal α⟵minαsubject toQP(Q,p,A,c)12αTQα+pTαaTiα≥cin=1,2,⋯N. o p t i m a l α ⟵ Q P ( Q , p , A , c ) m i n α 1 2 α T Q α + p T α s u b j e c t t o a i T α ≥ c i n = 1 , 2 , ⋯ N .参数的计算方法:
- qn,m=ynymzTnzTm q n , m = y n y m z n T z m T
- p=−1N p = − 1 N : N N 维的向量,元素都是
- a≥=y,a≤=−y a ≥ = y , a ≤ = − y :等于可以拆成 ≥ ≥ 和 ≤ ≤
- c≥=0,c≤=0 c ≥ = 0 , c ≤ = 0
- aTn=n a n T = n - th unit direction t h u n i t d i r e c t i o n ?
- cn=0 c n = 0
需要注意的是:
Q Q 很大, 并且中的大部分的数值不是 0 0 ,这是因为, 不可能存在大量垂直的向量 zn,zm z n , z m , 所以我们可以说 Q Q 是的, 这就需要很大的存储量和计算量。当资料量很大的时候,这就是一个很严重的问题。原始的 SVM S V M 问题中的 Q Q 矩阵中有大量的元。3.2 - 求解最佳的 w,b w , b
当通过上面的求解终于求得 α α 之后, 如何使用我们已经求解到的 α α 来获得我们想要的 w,b w , b 呢?
根据KKT可得 w w 的计算方法为:
这样最佳的 w w 就求解出来了;至于, 如果 (w,b,α) ( w , b , α ) 是原问题和对偶问题的最佳解, 那么满足 αn(1−yn(wTzn+b))=0 α n ( 1 − y n ( w T z n + b ) ) = 0 , 即两者至少要有一个为 0 0 。
所以我们选择一个所以:
w=∑αnynxn,b=yn−wTzn w = ∑ α n y n x n , b = y n − w T z n这里有一个很有趣的特性:当 αn≥0 α n ≥ 0 那么我们可得: 1=yn(wTzn+b) 1 = y n ( w T z n + b ) , 这说明了什么呢?该 αn α n 对应的点 (xn,yn) ( x n , y n ) 在边界上, 也就是说这些点就是支撑向量 support vector s u p p o r t v e c t o r 。
4 - 对偶SVM的理解
4.1 - 支撑向量
通过上一小节我们看到当我们求解完对偶之后, 也就是求出 α α 之后,和我们一开始提到的支撑向量就建立了联系:在前面我们说在边界上的点为支撑向量,上一小节我们得到 αn>0 α n > 0 对应的点在边界上。
我们把对偶问题的解中 αn>0 α n > 0 的点 (xn,yn) ( x n , y n ) 称为支撑向量SV。需要注意的是并不一定所有的位于边界上的点都是支撑向量。(位于边界上的点可以称为Support Vector Candidates)。正如我们从感性上的认识那样,分割超平面应该要只和离它最近的那些点有关,分割超平面是由 w,b w , b 确定的,我们从数学上的计算也验证了这一点,即 w,b w , b 的计算只需要依靠非 0 0 的即可, 也就是说这个平面只需要 SV S V 来决定。
w=∑n=1Nαnynxn=∑SVαnynxn w = ∑ n = 1 N α n y n x n = ∑ S V α n y n x n
b=yn−wTzn b = y n − w T z n对偶的 SVM S V M 问题可以看成是一个机制, 我们努力去找到 SV S V , 用 SV S V 来算出边界在哪里, 其他的点都是不重要的。
4.2 - SVM和PLA的对比
SVM S V M
wSVM=∑n=1Nαn(ynxn) w S V M = ∑ n = 1 N α n ( y n x n )当我们已经通过对偶问题求出 αn α n 之后,仅仅通过对 yn,xn(zn) y n , x n ( z n ) 做如上式的线性组合就可以得到我们想要的分割超平面。
PLA P L A
wPLA=∑n=1Nβn(ynzn) w P L A = ∑ n = 1 N β n ( y n z n )其中N为犯错的次数, (zn,yn) ( z n , y n ) 为犯错的点。
综上我们可以说:
SVM S V M 和 PLA P L A 最终的 w w 可以被我们的资料的线性组合表示出来。我们称这样的 w w 为,不过 SVM S V M 很特别, 因为他只是需要 SV S V 来表示。 PLA P L A 是用犯错的点来表现出来。所以每种这是 SVM S V M 和 PLA P L A 的关注的点不一样, SVM S V M 关注的是离分隔超平面最近的点, PLA P L A 关注的是犯错的点。4.3 - 两种形式的硬间隔支撑向量机
- 原始问题:Primal Hard-Margin SVM
minw,bs.t.12wTwyn(wTznΦ(x)+b)≥1(57)(58) (57) m i n w , b 1 2 w T w (58) s . t . y n ( w T z n ⏟ Φ ( x ) + b ) ≥ 1
d~ d ~ +1个变量, N N 个约束。当+1比较小的时候,适合用这种形式求解。
- 对偶问题:Dual Hard-Margin SVM
minαsubject to12∑n=1N∑m=1NαnαmynymzTnzTm−∑n=1Nαn∑ynαn=0all αn≥0n=1,2,⋯N.(59)(60)(61)(62) (59) m i n α 1 2 ∑ n = 1 N ∑ m = 1 N α n α m y n y m z n T z m T − ∑ n = 1 N α n (60) s u b j e c t t o ∑ y n α n = 0 (61) a l l α n ≥ 0 (62) n = 1 , 2 , ⋯ N .
不管是上面的哪一种解法, 最终我们都能得到 SVM S V M 的分类器
gsvm=sign(wTx+b) g s v m = s i g n ( w T x + b )N N 个变量,个约束条件,当资料量不是很大的时候,适合使用这个形式来求解。
4.4 - 讨论
我们之前的目标是要使得我们的 SVM S V M 不依赖于 d~ d ~ 。在转化为 SVM S V M 的对偶形式之后,我们是否达到了这个目标呢?表面上看了是的,因为变量的个数是 N N ,但是其实的问题仍然存在在计算 Q Q 的过程中,,这里要计算长度为 d~ d ~ 的两个向量 z z 的内积。所以这里并没有真正的避开这个很大的, 只有我们做到了真的不用在计算 Z Z 空间中的两个长度为的向量的內积的时候,我们可以说我们是避开了 d~ d ~ ,完成了我们最初想要做的事情。
怎么避开这个长度为 d~ d ~ 的向量的內积计算, 而又能达到计算的目的是我们下一阶段要讨论的问题。所以在这一篇的一开始我们说了,对偶的 SVM S V M 是另一种形式的 SVM S V M ,是为了更好的将 SVM S V M 应用到不同的场合中。接下来我们会看到的时候,正是由于这个对偶的形式,使得我们可以使用一个非常高级的东西– kernel k e r n e l 。
5 - 总结
我们想要使用复杂的特征转换加上 SVM S V M 来解决非线性的问题,而使用复杂的特征转化之后,出现了非常大的维度 d~ d ~ 。我们引入对偶问题就是为了解决在使用 non n o n - linear SVM l i n e a r S V M 的时候对于 d~ d ~ 的依赖问题。 我们使用 lagrange l a g r a n g e 函数,引入 lagrange l a g r a n g e 乘子经过推到得出了原来问题的对偶问题,通过求解对偶问题的解,得到了支撑向量。从而得到了 hyperplane h y p e r p l a n e 。但是在这种形式下,仍然有一个步骤的计算和 d~ d ~ 有关(在计算 Q Q 矩阵的元素的时候)。之后我们会分析如何移除对于的依赖。