本文为《机器学习》(周志华)、《统计学习方法》 的读书笔记
- 参考 南瓜书
线性可分支持向量机与硬间隔最大化
linear support vector machine in linearly separable case and hard margin maximization
线性可分支持向量机
划分超平面
- 给定线性可分训练样本集
D
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D = \{(\boldsymbol x_1,y_1),..., (\boldsymbol x_m, y_m)\}
D={(x1,y1),...,(xm,ym)},
y
i
=
{
−
1
,
+
1
}
y_i=\{-1,+1\}
yi={−1,+1}. 分类学习最基本的想法就是基于训练集
D
D
D 在样本空间中找到一个划分超平面, 将不同类别的样本分开. 但能将训练样本分开的划分超平面可能有很多,我们应该努力去找到哪一个昵?
超平面的维度为样本空间维度减 1,e.g. 二维平面的超平面即为直线
- 间隔最大化: 直观上看, 应该去找位于两类训练样本 “正中间” 的划分超平面,因为该划分超平面对训练样本局部扰动的"容忍"性最好,对未见示例的泛化能力最强
线性可分支持向量机
- 设通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
- 相应的分类决策函数
函数间隔和几何间隔
距离
- 在样本空间中,划分超平面可通过如下线性方程来描述:
其中 w = ( w 1 ; w 2 ; . . . ; w d ) \boldsymbol w= (w_1;w_2; ... ;w_d) w=(w1;w2;...;wd) 为法向量,决定了超平面的方向; b b b 为位移项决定了超平面与原点之间的距离. 下面我们将超平面记为 ( w , b ) (\boldsymbol w,b) (w,b)
- 样本空间中任意点
x
\boldsymbol x
x 到超平面
(
w
,
b
)
(\boldsymbol w,b)
(w,b) 的距离可写为
- 证明:设
x
\boldsymbol x
x 在超平面上的投影为
x
′
\boldsymbol x'
x′,则
d
=
x
−
x
′
\boldsymbol d=\boldsymbol x-\boldsymbol x'
d=x−x′ 平行于
w
\boldsymbol w
w,因此
∣ d ⋅ w ∣ = ∣ ∣ d ∣ ∣ ⋅ ∣ ∣ w ∣ ∣ = r ⋅ ∣ ∣ w ∣ ∣ ( 1 ) |\boldsymbol d\cdot \boldsymbol w|=||\boldsymbol d||\cdot||\boldsymbol w||=r\cdot||\boldsymbol w||\ \ \ \ \ \ (1) ∣d⋅w∣=∣∣d∣∣⋅∣∣w∣∣=r⋅∣∣w∣∣ (1)又因为
d ⋅ w = x ⋅ w − x ′ ⋅ w = w T x − w T x ′ = w T x − ( − b ) = w T x + b ( 2 ) \boldsymbol d\cdot\boldsymbol w=\boldsymbol x\cdot\boldsymbol w-\boldsymbol x'\cdot\boldsymbol w=\boldsymbol w^T\boldsymbol x-\boldsymbol w^T\boldsymbol x' \\=\boldsymbol w^T\boldsymbol x-(-b)=\boldsymbol w^T\boldsymbol x+b\ \ (2) d⋅w=x⋅w−x′⋅w=wTx−wTx′=wTx−(−b)=wTx+b (2)两式联立可得
r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|\boldsymbol w^T\boldsymbol x+b|}{||\boldsymbol w||} r=∣∣w∣∣∣wTx+b∣
- 证明:设
x
\boldsymbol x
x 在超平面上的投影为
x
′
\boldsymbol x'
x′,则
d
=
x
−
x
′
\boldsymbol d=\boldsymbol x-\boldsymbol x'
d=x−x′ 平行于
w
\boldsymbol w
w,因此
函数间隔 (functional margin)
- 一般来说, 一个点距离分离超平面的远近可以表示分类预测的确信程度. 在超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0 确定的情况下, ∣ w T x + b ∣ |w^Tx+b| ∣wTx+b∣ 能够相对地表示点 x x x 距离超平面的远近。而 w T x + b w^Tx+b wTx+b 的符号与类标记 y y y 的符号是否一致能够表示分类是否正确。所以可如下定义函数间隔 y ^ \hat y y^ 来表示分类的正确性及确信度 (越大越好):
几何间隔 (geometric margin)
- 函数间隔可以表示分类预测的正确性及确信度。但是选择分离超平面时,只有函数间隔还不够。因为只要成比例地改变 w w w 和 b b b,例如将它们改为 2 w 2w 2w 和 2 b 2b 2b,超平面并没有改变,但函数间隔却成为原来的 2 倍。因此,可以利用几何距离来定义几何间隔:
若施加约束 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1,则几何间隔等于函数间隔
间隔最大化
- 支持向量机学习的基本想法是求解能够正确划分训练数据集井且几何间隔最大的分离超平面 (该超平面是唯一的)
注:感知机与线性可分支持向量机很相似,但感知机是将损失函数定义为函数间隔然后使用随机梯度下降法进行优化,并不要求找到间隔最大的分离超平面
最大间隔分离超平面
线性可分支持向量机学习的最优化问题
- 求解最大间隔分离超平面可表示为下面的约束最优化问题:
- 考虑几何间隔和函数间隔的关系式,可将这个问题改写为
显然对于上面的条件约束问题,函数间隔 γ ^ \hat\gamma γ^ 的取值对解并无影响 (将 w w w 和 b b b 按比例改变对不等式约束和目标函数的优化都没有影响),因此可以取 γ ^ = 1 \hat\gamma=1 γ^=1,注意到最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 和最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2 是等价的,于是就得到下面的线性可分支持向量机学习的最优化问题:
这是一个凸二次规划 (convex quadratic programming) 问题
凸优化问题:
凸二次规划问题:
最大间隔分离超平面的存在唯一性
证明
- (1) 存在性: 由于训练数据集线性可分,所以算法 7.1 中最优化问题的约束条件一定存在可行解。又由于目标函数有下界,所以最优化问题必有解,记作
(
w
∗
,
b
∗
)
(w^*,b^*)
(w∗,b∗)
- 由于训练数据集中既有正类点又有负类点,所以 ( w , b ) = ( 0 , b ) (w,b)=(0,b) (w,b)=(0,b) 不是最优化的可行解,因而最优解 ( w ∗ , b ∗ ) (w^*,b^*) (w∗,b∗) 必满足 w ∗ ≠ 0 w^*\neq0 w∗=0
- (2) 唯一性:
- (i)
w
∗
w^*
w∗ 的唯一性: 假设存在两个最优解
(
w
1
∗
,
b
1
∗
)
(w_1^*,b_1^*)
(w1∗,b1∗) 和
(
w
2
∗
,
b
2
∗
)
(w_2^*,b_2^*)
(w2∗,b2∗)。显然
∣
∣
w
1
∗
∣
∣
=
∣
∣
w
2
∗
∣
∣
=
c
||w_1^*||=||w_2^*||=c
∣∣w1∗∣∣=∣∣w2∗∣∣=c,其中
c
c
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
)
(w,b)
(w,b) 是 (7. 14) 的可行解,从而有
c ≤ ∣ ∣ w ∣ ∣ ≤ 1 2 ∣ ∣ w 1 ∗ ∣ ∣ + 1 2 ∣ ∣ w 2 ∗ ∣ ∣ = c c\leq ||w||\leq\frac{1}{2}||w_1^*||+\frac{1}{2}||w_2^*||=c c≤∣∣w∣∣≤21∣∣w1∗∣∣+21∣∣w2∗∣∣=c因此 ∣ ∣ w ∣ ∣ = 1 2 ∣ ∣ w 1 ∗ ∣ ∣ + 1 2 ∣ ∣ w 2 ∗ ∣ ∣ ||w||=\frac{1}{2}||w_1^*||+\frac{1}{2}||w_2^*|| ∣∣w∣∣=21∣∣w1∗∣∣+21∣∣w2∗∣∣,从而有 w 1 ∗ ⋅ w 2 ∗ = 0 w_1^*\cdot w_2^*=0 w1∗⋅w2∗=0。又因为 ∣ ∣ w 1 ∗ ∣ ∣ = ∣ ∣ w 2 ∗ ∣ ∣ ||w_1^*||=||w_2^*|| ∣∣w1∗∣∣=∣∣w2∗∣∣,可以设 w 1 ∗ = λ w 2 ∗ w_1^*=\lambda w_2^* w1∗=λw2∗, ∣ λ ∣ = 1 |\lambda|= 1 ∣λ∣=1。若 λ = − 1 λ= -1 λ=−1,则 w = 0 w = 0 w=0, ( w , b ) (w,b) (w,b) 不是可行解,矛盾。因此必有 λ = 1 λ=1 λ=1,即
w 1 ∗ = w 2 ∗ w_1^*=w_2^* w1∗=w2∗由此可以把两个最优解写成 ( w ∗ , b 1 ∗ ) (w^*, b_1^*) (w∗,b1∗) 和 ( w ∗ , b 2 ∗ ) (w^*, b_2^*) (w∗,b2∗) - (ii)
b
∗
b^*
b∗ 的唯一性: 设
x
1
′
x_1'
x1′ 和
x
2
′
x_2'
x2′ 是集合
{
x
i
∣
y
i
=
+
1
}
\{x_i|y_i = + 1 \}
{xi∣yi=+1} 中分别对应于
(
w
∗
,
b
1
∗
)
(w^*,b_1^*)
(w∗,b1∗) 和
(
w
∗
,
b
2
∗
)
(w^*,b_2^*)
(w∗,b2∗) 使得
y
i
(
w
⋅
x
i
+
b
)
=
1
y_i(w\cdot x_i+b)=1
yi(w⋅xi+b)=1 的点,
x
1
′
′
x_1''
x1′′ 和
x
2
′
′
x_2''
x2′′ 是集合
{
x
i
∣
y
i
=
−
1
}
\{x_i|y_i = - 1 \}
{xi∣yi=−1} 中分别对应于
(
w
∗
,
b
1
∗
)
(w^*,b_1^*)
(w∗,b1∗) 和
(
w
∗
,
b
2
∗
)
(w^*,b_2^*)
(w∗,b2∗) 使得
y
i
(
w
⋅
x
i
+
b
)
=
1
y_i(w\cdot x_i+b)=1
yi(w⋅xi+b)=1 的点
- 则
b
1
∗
=
1
−
w
∗
⋅
x
1
′
=
−
1
−
w
∗
⋅
x
1
′
′
=
−
1
2
(
w
∗
⋅
x
1
′
+
w
∗
⋅
x
1
′
′
)
b_1^*=1-w^*\cdot x_1'=-1-w^*\cdot x_1''=-\frac{1}{2}(w^*\cdot x_1'+w^*\cdot x_1'')
b1∗=1−w∗⋅x1′=−1−w∗⋅x1′′=−21(w∗⋅x1′+w∗⋅x1′′),
b
2
∗
=
1
−
w
∗
⋅
x
2
′
=
−
1
−
w
∗
⋅
x
2
′
′
=
−
1
2
(
w
∗
⋅
x
2
′
+
w
∗
⋅
x
2
′
′
)
b_2^*=1-w^*\cdot x_2'=-1-w^*\cdot x_2''=-\frac{1}{2}(w^*\cdot x_2'+w^*\cdot x_2'')
b2∗=1−w∗⋅x2′=−1−w∗⋅x2′′=−21(w∗⋅x2′+w∗⋅x2′′),因此有
b 1 ∗ − b 2 ∗ = − 1 2 [ w ∗ ⋅ ( x 1 ′ − x 2 ′ ) + w ∗ ⋅ ( x 1 ′ ′ − x 2 ′ ′ ) ] b_1^*-b_2^*=-\frac{1}{2}[w^*\cdot (x_1'-x_2')+w^*\cdot (x_1''-x_2'')] b1∗−b2∗=−21[w∗⋅(x1′−x2′)+w∗⋅(x1′′−x2′′)] - 因为
w ∗ ⋅ x 2 ′ + b 1 ∗ ≥ 1 = w ∗ ⋅ x 1 ′ + b 1 ∗ w^*\cdot x_2'+b_1^*\geq1=w^*\cdot x_1'+b_1^* w∗⋅x2′+b1∗≥1=w∗⋅x1′+b1∗有 w ∗ ⋅ ( x 1 ′ − x 2 ′ ) ≤ 0 ( 1 ) w^*\cdot(x_1'-x_2')\leq0\quad\quad(1) w∗⋅(x1′−x2′)≤0(1)因为
w ∗ ⋅ x 1 ′ + b 2 ∗ ≥ 1 = w ∗ ⋅ x 2 ′ + b 2 ∗ w^*\cdot x_1'+b_2^*\geq1=w^*\cdot x_2'+b_2^* w∗⋅x1′+b2∗≥1=w∗⋅x2′+b2∗有 w ∗ ⋅ ( x 1 ′ − x 2 ′ ) ≥ 0 ( 2 ) w^*\cdot(x_1'-x_2')\geq0\quad\quad(2) w∗⋅(x1′−x2′)≥0(2)结合 ( 1 ) ( 2 ) (1)(2) (1)(2) 两式可知
w ∗ ⋅ ( x 1 ′ − x 2 ′ ) = 0 w^*\cdot(x_1'-x_2')=0 w∗⋅(x1′−x2′)=0同理可得
w ∗ ⋅ ( x 1 ′ ′ − x 2 ′ ′ ) = 0 w^*\cdot(x_1''-x_2'')=0 w∗⋅(x1′′−x2′′)=0 - 因此
b 1 ∗ − b 2 ∗ = − 1 2 [ w ∗ ⋅ ( x 1 ′ − x 2 ′ ) + w ∗ ⋅ ( x 1 ′ ′ − x 2 ′ ′ ) ] = 0 b_1^*-b_2^*=-\frac{1}{2}[w^*\cdot (x_1'-x_2')+w^*\cdot (x_1''-x_2'')]=0 b1∗−b2∗=−21[w∗⋅(x1′−x2′)+w∗⋅(x1′′−x2′′)]=0
- 则
b
1
∗
=
1
−
w
∗
⋅
x
1
′
=
−
1
−
w
∗
⋅
x
1
′
′
=
−
1
2
(
w
∗
⋅
x
1
′
+
w
∗
⋅
x
1
′
′
)
b_1^*=1-w^*\cdot x_1'=-1-w^*\cdot x_1''=-\frac{1}{2}(w^*\cdot x_1'+w^*\cdot x_1'')
b1∗=1−w∗⋅x1′=−1−w∗⋅x1′′=−21(w∗⋅x1′+w∗⋅x1′′),
b
2
∗
=
1
−
w
∗
⋅
x
2
′
=
−
1
−
w
∗
⋅
x
2
′
′
=
−
1
2
(
w
∗
⋅
x
2
′
+
w
∗
⋅
x
2
′
′
)
b_2^*=1-w^*\cdot x_2'=-1-w^*\cdot x_2''=-\frac{1}{2}(w^*\cdot x_2'+w^*\cdot x_2'')
b2∗=1−w∗⋅x2′=−1−w∗⋅x2′′=−21(w∗⋅x2′+w∗⋅x2′′),因此有
- (i)
w
∗
w^*
w∗ 的唯一性: 假设存在两个最优解
(
w
1
∗
,
b
1
∗
)
(w_1^*,b_1^*)
(w1∗,b1∗) 和
(
w
2
∗
,
b
2
∗
)
(w_2^*,b_2^*)
(w2∗,b2∗)。显然
∣
∣
w
1
∗
∣
∣
=
∣
∣
w
2
∗
∣
∣
=
c
||w_1^*||=||w_2^*||=c
∣∣w1∗∣∣=∣∣w2∗∣∣=c,其中
c
c
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
)
(w,b)
(w,b) 是 (7. 14) 的可行解,从而有
支持向量 (support vector) 和间隔边界
- 支持向量: 在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),即
- 对
y
i
=
+
1
y_i = +1
yi=+1 的正例点,支持向量在超平面
H
1
H_1
H1 上
- 对
y
i
=
−
1
y_i = -1
yi=−1 的正例点,支持向量在超平面
H
2
H_2
H2 上
- 对
y
i
=
+
1
y_i = +1
yi=+1 的正例点,支持向量在超平面
H
1
H_1
H1 上
-
H
1
H_1
H1 和
H
2
H_2
H2 被称为间隔边界
γ
=
2
∣
∣
w
∣
∣
\gamma=\frac{2}{||w||}
γ=∣∣w∣∣2;注意到
H
1
H_1
H1 和
H
2
H_2
H2 平行,井且没有实例点落在它们中间
支持向量机
- 现在我们再看上面的条件约束问题,最优化的目标函数其实也可以看作是在最大化间隔边界 γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=∣∣w∣∣2。因此在决定分离超平面时只有支持向量起作用,而其他实例点井不起作用 (这点在下一节中将会进行严格证明)。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的"重要的"训练样本确定
学习的对偶算法 (dual problem)
拉格朗日对偶问题
- 对于上面的凸二次规划问题,我们可以转而求解对偶问题得到原始问题的最优解。相比于原始问题,对偶问题往往更容易求解,同时还可以自然引入核函数,进而推广到非线性分类问题
拉格朗日对偶问题
- 对式 (7.14) 的每条约束添加拉格朗日乘子
α
i
≥
0
\alpha_i\geq 0
αi≥0,则该问题的拉格朗日函数可写为
其中 α = ( α 1 ; . . . ; α N ) T \boldsymbol α=(α_1;...;α_N)^T α=(α1;...;αN)T 为拉格朗日乘子向量
- 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
由于这里拉格朗日函数为凸函数,我们可以先将拉格朗日函数分别对 w , b w,b w,b 求导并令导数为 0 求解最小化问题,来获得对偶函数的表达形式
由于原始问题满足 Convex + 强 Slater 条件,求解对偶问题的最优解等价于求解原始问题的最优解
求 min w , b L ( w , b , α ) \min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)
- 将拉格朗日函数
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α) 分别对
w
,
b
w,b
w,b 求偏导数并令其等于 0
得
- 将式 (7.19) 代入拉格朗日函数,并利用式 (7.20),即得
即
对偶问题
- 求
min
w
,
b
L
(
w
,
b
,
α
)
\min_{w,b}L(w,b,α)
minw,bL(w,b,α) 对
α
α
α 的极大,即是对偶问题
- 将式 (7.21) 的目标函数由求极大转换成求极小,就得到下面与之等价的对偶最优化问题:
由对偶问题的最优解 α ∗ \alpha^* α∗ 求得原始问题的最优解 w ∗ , b ∗ w^*,b^* w∗,b∗
- 由此定理可知,分类决策函数可以写成
这就是说,分类决策函数只依赖于输入 x x x 和训练样本输入的内积
证明
- 原问题为凸优化时,KKT 条件为最优解的充要条件,因此由 KKT 条件可知:
由此得
其中至少有一个 α j > 0 α_j > 0 αj>0 (用反证法,假设 α ∗ = 0 \alpha^*=0 α∗=0, 由式 (7.27) 可知 w ∗ = 0 w^*= 0 w∗=0,而 w ∗ = 0 w^*=0 w∗=0 不是原始最优化问题 (7.13)~(7.14) 的解,产生矛盾),对此 j j j 有
将式 (7.25) 代入上式,即得
支持向量的意义
- 注意到,
w
∗
w^*
w∗ 和
b
∗
b^*
b∗ 只依赖于训练数据中对应于
α
i
∗
>
0
α_i^* > 0
αi∗>0 的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),而其他样本点对
w
∗
w^*
w∗ 和
b
∗
b^*
b∗ 没有影响。我们将训练数据中对应于
α
i
∗
>
0
α_i^*> 0
αi∗>0 的实例点
x
i
∈
R
n
x_i\in \R^n
xi∈Rn 称为支持向量
- 训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关
- 由 KKT 条件可知,
α i ∗ ( y i ( w ∗ ⋅ x i + b ∗ ) − 1 ) = 0 \alpha_i^*(y_i(w^*\cdot x_i+b^*)-1)=0 αi∗(yi(w∗⋅xi+b∗)−1)=0因此对应于 α i ∗ > 0 α_i^*> 0 αi∗>0 的实例点 x i x_i xi,有
y i ( w ∗ ⋅ x i + b ∗ ) = 1 y_i(w^*\cdot x_i+b^*)=1 yi(w∗⋅xi+b∗)=1这说明 x i x_i xi 一定在间隔边界上,与之前给出的定义一致
线性可分支持向量机学习算法
例
- 正例点是 x 1 = ( 3 , 3 ) T , x 2 = ( 4 , 3 ) T x_1 = (3, 3)^T ,x_2 =(4, 3)^T x1=(3,3)T,x2=(4,3)T,负例点是 x 3 = ( 1 , 1 ) T x_3= (1,1)^T x3=(1,1)T,试用算法 7.2 求线性可分支持向量机
解
线性可分支持向量机的不足
- 对于线性可分问题,上述线性可分支持向量机的学习 (硬间隔最大化) 算法是完美的。但是, 训练数据集线性可分是理想的情形。在现实问题中,训练数据集往往是线性不可分的,即在样本中出现噪声或特异点。此时,有更一般的学习算法
线性支持向量机与软间隔最大化
linear support vector machine and soft margin maximization
线性支持向量机
- 线性可分支持向量机与硬间隔最大化并不适用于线性不可分训练数据,因为这时上述方法中的不等式约束并不能都成立。为了使它适用于线性不可分训练数据,需要将硬间隔最大化修改为软间隔最大化:
- 对每个样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 引进一个松弛变量 (slack variables) ξ i ≥ 0 \xi_i\geq 0 ξi≥0,使函数间隔加上松弛变量大于等于 1。同时,对每个松弛变量 ξ i \xi_i ξi 支付一个代价 C ξ i C\xi_i Cξi,这里, C > 0 C>0 C>0 称为惩罚参数
- 此时,线性不可分的线性支持向量机的学习问题变成如下凸二次规划 (convex quadratic programming) 问题 (原始问题) :
原始问题是一个凸二次规划问题,因而关于 ( w , b , ξ ) (w,b,\xi) (w,b,ξ) 的解是存在的。可以证明 w w w 的解是唯一的,但 b b b 的解可能不唯一,而是存在于一个区间 (Ref: 邓乃扬,田英杰. 《数据挖掘中的新方法 – 支持向量机》)
式 (7.32) 包含两层含义: 使 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ 尽量小即间隔尽量大,同时使误分类点的个数尽量小, C C C 是调和二者的系数
学习的对偶算法
对偶问题
- 可以通过求解对偶问题而得到原始问题的解,进而确定分离超平面和决策函数
可以看出,软间隔下的对偶问题与硬间隔下的对偶问题唯一的差别就在于对偶变量的约束不同: 软间隔是 0 ≤ α i ≤ C 0\leq \alpha_i\leq C 0≤αi≤C,硬间隔是 0 ≤ α i 0\leq \alpha_i 0≤αi
证明
- 原始最优化问题的拉格朗日函数是
其中, α i ≥ 0 α_i\geq 0 αi≥0, μ i ≥ 0 μ_i\geq 0 μi≥0
- 对偶问题是拉格朗日函数的极大极小问题。首先求
L
(
w
,
b
,
ξ
,
α
,
μ
)
L(w,b,\xi,\alpha,\mu)
L(w,b,ξ,α,μ) 对
w
w
w,
b
b
b,
ξ
\xi
ξ 的极小,由
得
将上面三式代入拉格朗日函数可得
再对 min w , b , ξ L ( w , b , ξ , α , μ ) \min_{w,b,\xi}L(w,b,\xi,\alpha,\mu) minw,b,ξL(w,b,ξ,α,μ) 求 α α α 的极大,即得对偶问题:
- 再利用等式约束
C
−
α
i
−
μ
i
=
0
C-\alpha_i-\mu_i=0
C−αi−μi=0 消去
μ
i
\mu_i
μi,并对目标函数求极大转换为求极小,就得到了对偶问题:
由对偶问题的最优解 α ∗ \alpha^* α∗ 求得原始问题的最优解 w ∗ , b ∗ w^*,b^* w∗,b∗
证明
- 原问题为凸优化时,KKT 条件为最优解的充要条件,因此由 KKT 条件可知:
由此得
若存在 0 < α j ∗ < C 0<α_j^*<C 0<αj∗<C,则对此 j j j 有
y j ( w ∗ ⋅ x j + b ∗ ) − 1 + ξ j ∗ = 0 y_j(w^*\cdot x_j+b^*)-1+\xi_j^*=0 yj(w∗⋅xj+b∗)−1+ξj∗=0又因为 μ j ∗ = C − α j ∗ > 0 \mu_j^*=C-\alpha_j^*>0 μj∗=C−αj∗>0,由 μ j ∗ ξ j ∗ = 0 \mu_j^*\xi_j^*=0 μj∗ξj∗=0 可知, ξ j ∗ = 0 \xi_j^*=0 ξj∗=0,因此
y j ( w ∗ ⋅ x j + b ∗ ) = 1 y_j(w^*\cdot x_j+b^*)=1 yj(w∗⋅xj+b∗)=1将式 (7.50) 代入上式,即得
推出的结论与线性可分支持向量机相同
线性支持向量机学习算法
步骤 (2) 中,对任一适合条件 0 < α j ∗ < C 0<α_j^*<C 0<αj∗<C 的 α ∗ α^* α∗,按式 (7.51) 都可求出 b ∗ b^* b∗,从理论上,原始问题 (7.32)~(7.34) 对 b b b 的解可能不唯一,然而在实际应用中,往往只会出现算法叙述的情况
支持向量
- 在线性不可分的情况下,将对偶问题 (7.37)~(7.39) 的解
α
∗
=
(
α
1
∗
,
.
.
.
,
α
N
∗
)
T
\alpha^*= (α_1^*,..., α_N^*)^T
α∗=(α1∗,...,αN∗)T 中对应于
α
i
∗
>
0
α_i^* > 0
αi∗>0 的样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 的实例
x
i
x_i
xi 称为支持向量 (软间隔的支持向量)
图中,分离超平面由实线表示,间隔边界由虚线表示。图中还标出了实例 x i x_i xi 到间隔边界的距离 ξ i ∣ ∣ w ∣ ∣ \frac{\xi_i}{||w||} ∣∣w∣∣ξi ( α j > 0 α_j >0 αj>0 时, y j ( w ⋅ x j + b ) = 1 − ξ j y_j(w\cdot x_j+b)=1-\xi_j yj(w⋅xj+b)=1−ξj,因此到对应的间隔边界 w ⋅ x + b = y w\cdot x+b=y w⋅x+b=y 的距离为 ∣ w ⋅ x j + b − y j ∣ ∣ ∣ w ∣ ∣ = ξ i ∣ ∣ w ∣ ∣ \frac{|w\cdot x_j+b-y_j|}{||w||}=\frac{\xi_i}{||w||} ∣∣w∣∣∣w⋅xj+b−yj∣=∣∣w∣∣ξi)
- 对于软间隔的支持向量
x
i
x_i
xi,有
y
i
(
w
⋅
x
i
+
b
)
=
1
−
ξ
i
y_i(w\cdot x_i+b)=1-\xi_i
yi(w⋅xi+b)=1−ξi,因此支持向量或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧
- 若 0 < α i ∗ < C 0<α_i^* < C 0<αi∗<C,则 ξ i ∗ = 0 \xi_i^* = 0 ξi∗=0,支持向量恰好落在间隔边界上
- 若 α i ∗ = C α_i^* = C αi∗=C, 0 < ξ i ∗ < 1 0 <\xi_i^*< 1 0<ξi∗<1,则分类正确, x i x_i xi 在间隔边界与分离超平面之间
- 若 α i ∗ = C α_i^* = C αi∗=C, ξ i ∗ = 1 \xi_i^*= 1 ξi∗=1,则 x i x_i xi 在分离超平面上
- 若 α i ∗ = C α_i^* = C αi∗=C, ξ i ∗ > 1 \xi_i^*> 1 ξi∗>1,则 x i x_i xi 位于分离超平面误分一侧
替代损失 (surrogate loss)
0-1 损失函数 (zero-one loss function)
- 现在让我们换一个角度来考虑二分类问题,可将求解二分类问题写为如下的无约束优化目标:
min w , b ∑ i = 1 N ℓ 0 / 1 [ y i ( w ⋅ x i + b ) ] + λ ∥ w ∥ 2 \min _{w, b} \sum_{i=1}^{N}\ell_{0/1}\left[y_{i}\left(w \cdot x_{i}+b\right)\right]+\lambda\|w\|^{2} w,bmini=1∑Nℓ0/1[yi(w⋅xi+b)]+λ∥w∥2其中目标函数的第 1 项是经验损失或经验风险,第 2 项是系数为 λ \lambda λ 的 w w w 的 L 2 L_2 L2 范数,是正则化项, ℓ 0 / 1 \ell_{0/1} ℓ0/1 是 “0/1 损失函数”
ℓ 0 / 1 ( z ) = { 1 , if z ≤ 0 0 , otherwise \ell_{0 / 1}(z)= \begin{cases}1, & \text { if } z\leq0 \\ 0, & \text { otherwise }\end{cases} ℓ0/1(z)={1,0, if z≤0 otherwise - 然而, ℓ 0 / 1 \ell_{0/1} ℓ0/1 非凸、非连续,数学性质不太好,使得上式不易直接求解. 于是,人们通常用其他一些函数来代替 l 0 / 1 l_{0/1} l0/1, 称为 “替代损失”. 替代损失函数一般具有较好的数学性质,如它们通常是凸的连续函数且是 ℓ 0 / 1 \ell_{0/ 1} ℓ0/1 的上界. 下面给出了三种常用的替代损失函数:
合页损失函数 (hinge loss function)
- 当替代损失为 hinge loss 时,优化目标为
min w , b ∑ i = 1 N ℓ hinge [ y i ( w ⋅ x i + b ) ] + λ ∥ w ∥ 2 \min _{w, b} \sum_{i=1}^{N}\ell_{\text{hinge}}\left[y_{i}\left(w \cdot x_{i}+b\right)\right]+\lambda\|w\|^{2} w,bmini=1∑Nℓhinge[yi(w⋅xi+b)]+λ∥w∥2可以证明,上述无约束优化问题等价于线性支持向量机的原始优化问题 (hinge 损失有一块"平坦"的零区域,这使得支持向量机的解具有稀疏性)
下标 + + + 表示以下取正值的函数
这就是说,当样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 被正确分类且函数间隔 (确信度) y i ( w ⋅ x i + b ) y_i(w\cdot x_i+b) yi(w⋅xi+b) 大于 1 时,损失是 0,否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w\cdot x_i + b) 1−yi(w⋅xi+b)
证明
- 下面将最优化问题 (7.63) 写成问题 (7.60)~(7.62)。令
则 ξ i ≥ 0 \xi_i\geq 0 ξi≥0,式 (7.62) 成立
- 当 1 − y i ( w ⋅ x i + b ) > 0 1-y_i(w\cdot x_i +b) > 0 1−yi(w⋅xi+b)>0 时, 有 y i ( w ⋅ x i + b ) = 1 − ξ i y_i(w\cdot x_i +b)=1 -\xi_i yi(w⋅xi+b)=1−ξi; 当 1 − y i ( w ⋅ x i + b ) < 0 1-y_i(w\cdot x_i +b) < 0 1−yi(w⋅xi+b)<0 时,有 y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i(w\cdot x_i +b)\geq1 -\xi_i yi(w⋅xi+b)≥1−ξi。故式 (7.61) 成立
- 于是
w
,
b
,
ξ
i
w,b,\xi_i
w,b,ξi 满足约束条件 (7.61)~(7.62)。所以最优化问题 (7.63) 可写成
若取 λ = 1 2 C λ =\frac{1}{2C} λ=2C1,则
与式 (7.60) 等价
- 反之,也可将最优化问题 (7.60)~(7.62) 表示成问题 (7.63)
SVM v.s. 感知机
上图中虚线显示的是感知机的损失函数 [ − y i ( w ⋅ x i + b ) ] + [-y_i(w\cdot x_i +b)]_+ [−yi(w⋅xi+b)]+,与它相比,合页损失函数不仅要分类正确,而且确信度足够高时损失才是 0。也就是说,合页损失函数对学习有更高的要求
对率损失函数 (logistic loss function)
- 当替代损失为 logistic loss 时,优化目标为
min w , b ∑ i = 1 N ℓ log [ y i ( w ⋅ x i + b ) ] + λ ∥ w ∥ 2 = min w , b ∑ i = 1 N log [ 1 + exp ( − y i ( w ⋅ x i + b ) ) ] + λ ∥ w ∥ 2 \begin{aligned}&\min _{w, b} \sum_{i=1}^{N}\ell_{\text{log}}\left[y_{i}\left(w \cdot x_{i}+b\right)\right]+\lambda\|w\|^{2} \\=&\min _{w, b} \sum_{i=1}^{N}\log\left[1+\exp(-y_{i}\left(w \cdot x_{i}+b\right))\right]+\lambda\|w\|^{2}\end{aligned} =w,bmini=1∑Nℓlog[yi(w⋅xi+b)]+λ∥w∥2w,bmini=1∑Nlog[1+exp(−yi(w⋅xi+b))]+λ∥w∥2可以证明,当 λ = 0 \lambda=0 λ=0 时,上述无约束优化问题等价于对率回归模型 - 实际上,支持向量机与对率回归的优化目标相近,通常情形下它们的性能也相当. 对率回归的优势主要在于其输出具有自然的概率意义,即在给出预测标记的同时也给出了概率,而支持向量机的输出不具有概率意义,欲得到概率输出需进行特殊处理;此外,对率回归能直接用于多分类任务,支持向量机为此则需进行推广
证明
- 设
β
=
(
w
T
,
b
)
T
,
x
^
=
(
x
T
,
1
)
T
\beta=(w^T,b)^T,\hat x=(x^T,1)^T
β=(wT,b)T,x^=(xT,1)T,因此
w
⋅
x
+
b
=
β
T
x
^
w \cdot x+b=\beta^T\hat x
w⋅x+b=βTx^。则对于上述优化目标,每个样本点带来的损失为
log ( 1 + e − y i β T x ^ i ) = { log ( 1 + e − β T x ^ i ) x i 为 正 例 log ( 1 + e β T x ^ i ) x i 为 负 例 \log(1+e^{-y_{i}\beta^T\hat x_i})=\begin{cases}\log(1+e^{-\beta^T\hat x_i})\quad \quad x_i 为正例\\\log(1+e^{\beta^T\hat x_i})\quad \quad\ \ x_i 为负例\end{cases} log(1+e−yiβTx^i)={log(1+e−βTx^i)xi为正例log(1+eβTx^i) xi为负例 - 而 logistic 回归的损失函数为 (下式中的
t
i
=
{
1
x
i
为
正
例
0
x
i
为
负
例
t_i=\begin{cases}1\quad x_i为正例\\0\quad x_i为负例\end{cases}
ti={1xi为正例0xi为负例)
ℓ ( β ) = ∑ i = 1 N ( − t i β T x ^ i + log ( 1 + e β T x ^ i ) ) \ell(\beta)=\sum_{i=1}^{N}(-t_{i} \beta^{\mathrm{T}} \hat{x}_{i}+\log (1+e^{{\beta}^{\mathrm{T}} \hat{x}_{i}})) ℓ(β)=i=1∑N(−tiβTx^i+log(1+eβTx^i))其中每个样本点带来的损失为
− t i β T x ^ i + log ( 1 + e β T x ^ i ) = { − β T x ^ i + log ( 1 + e β T x ^ i ) = log ( 1 + e − β T x ^ i ) x i 为 正 例 log ( 1 + e β T x ^ i ) x i 为 负 例 -t_{i} \beta^{\mathrm{T}} \hat{x}_{i}+\log (1+e^{{\beta}^{\mathrm{T}} \hat{x}_{i}})=\begin{cases}-\beta^{\mathrm{T}} \hat{x}_{i}+\log (1+e^{{\beta}^{\mathrm{T}} \hat{x}_{i}})=\log(1+e^{-\beta^T\hat x_i})\quad \quad x_i 为正例\\\log (1+e^{{\beta}^{\mathrm{T}} \hat{x}_{i}})\quad \quad\ \ \ x_i 为负例\end{cases} −tiβTx^i+log(1+eβTx^i)={−βTx^i+log(1+eβTx^i)=log(1+e−βTx^i)xi为正例log(1+eβTx^i) xi为负例与优化目标中的损失函数相同
其他的替代损失函数
min w , b ∑ i = 1 N ℓ [ y i ( w ⋅ x i + b ) − 1 ] + λ ∥ w ∥ 2 \min _{w, b} \sum_{i=1}^{N}\ell\left[y_{i}\left(w \cdot x_{i}+b\right)-1\right]+\lambda\|w\|^{2} w,bmini=1∑Nℓ[yi(w⋅xi+b)−1]+λ∥w∥2
- 当采用其他不同的损失函数或正则项时,又能推得什么模型呢? (说不定可以将许多模型神奇地联系在一起)
非线性支持向量机与核函数
non-linear support vector machine and kernel function
核技巧 (kernel trick)
核技巧不仅应用于支持向量机,而且应用于其他统计学习问题
非线性分类问题
核技巧:将非线性分类问题转换为线性分类问题
- 在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对这样的问题,可用一个非线性变换,将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,从而将非线性分类问题转换为线性分类问题. 幸运的是,如果原始空间是有限维, 即属性数有限,那么一定存在一个高维特征空间使样本可分
核技巧与支持向量机
- 核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间 (欧氏空间 R n \R^n Rn 或离散集合) 对应于一个特征空间 (希尔伯特空间 H \mathcal H H),使得在输入空间 R n \R^n Rn 中的超曲面模型 (非线性模型) 对应于特征空间 H \mathcal H H 中的超平面模型 (支持向量机)。这样,分类问题的学习任务通过在特征空间中求解线性支持向量机就可以完成
核函数的定义
- 令
ϕ
(
x
)
\phi(x)
ϕ(x) 表示将
x
x
x 映射后的特征向量,于是, 在特征空间中划分超平面所对应的模型可表示为
f ( x ) = w ⋅ ϕ ( x ) + b f(x)=w\cdot \phi(x)+b f(x)=w⋅ϕ(x)+b - 类似之前的推导,可以得到线性支持向量机的原问题:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i s.t. y i ( w ⋅ ϕ ( x i ) + b ) ⩾ 1 − ξ i , i = 1 , 2 , ⋯ , N ξ i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{aligned} \min _{w, b, \xi}\quad & \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i} \\ \text { s.t. }\quad & y_{i}\left(w \cdot \phi(x_{i})+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\ & \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N \end{aligned} w,b,ξmin s.t. 21∥w∥2+Ci=1∑Nξiyi(w⋅ϕ(xi)+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N其对偶问题是
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯ , N \begin{aligned} \min _{\alpha}\quad & \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\phi(x_{i}) \cdot \phi(x_{j})\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. }\quad & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \end{aligned} αmin s.t. 21i=1∑Nj=1∑Nαiαjyiyj(ϕ(xi)⋅ϕ(xj))−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N - 求解上面的对偶问题涉及到计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj), 这是样本 x i x_i xi 与 x j x_j xj 映射到特征空间之后的内积. 由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj) 通常是困难的. 为了避开这个障碍,可以引入核函数:
可以看到,对于给定的核 K ( x , z ) K(x,z) K(x,z),特征空间 H \mathcal H H 和映射函数 ϕ \phi ϕ 的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射
核技巧在支持向量机中的应用
- 有了核函数,对偶问题可重写为
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯ , N \begin{aligned} \min _{\alpha}\quad & \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}K(x_{i},x_{j})-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. }\quad & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \end{aligned} αmin s.t. 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N求解后即可得到
f ( x ) = w ∗ ⋅ ϕ ( x ) + b ∗ = ∑ i = 1 N α i ∗ y i K ( x i , x ) + b ∗ \begin{aligned} f(x)&=w^*\cdot \phi(x)+b^* \\&=\sum_{i=1}^N\alpha_i^*y_iK(x_i,x)+b^* \end{aligned} f(x)=w∗⋅ϕ(x)+b∗=i=1∑Nαi∗yiK(xi,x)+b∗其中需要选择 α ∗ \alpha^* α∗ 的一个分量 α j ∗ \alpha_j^* αj∗ 满足 0 < α j ∗ < C 0<\alpha_j^*<C 0<αj∗<C,计算 b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) b^*=y_j-\sum_{i=1}^N\alpha_i^*y_iK(x_i,x_j) b∗=yj−i=1∑Nαi∗yiK(xi,xj)
- 上面的计算过程等价于经过映射函数 ϕ \phi ϕ 将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 x i ⋅ x j x_i\cdot x_j xi⋅xj 变换为特征空间中的内积 ϕ ( x i ) ⋅ ϕ ( x j ) \phi(x_i)\cdot\phi(x_j) ϕ(xi)⋅ϕ(xj),在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型
- 学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称为核技巧。在实际应用中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证
正定核 (positive definite kernel function)
- 显然,若己知合适映射 ϕ ( x ) \phi(x) ϕ(x) 的具体形式,则可写出核函数. 但在现实任务中我们通常不知道 ϕ ( x ) \phi(x) ϕ(x) 是什么形式,那么,合适的核函数是否一定存在呢? 什么样的函数能做核函数呢?
正定核的充要条件
- 由正定核的充要条件可以给出正定核的等价定义:
- 这一定义在构造核函数时很有用。但对于一个具体函数 K ( x , z ) K(x,z) K(x,z) 来说,检验它是否为正定核函数并不容易,因为要求对任意有限输入集 { x 1 , … , x m } \{x_1,… , x_m \} {x1,…,xm} 验证 K K K 对应的 Gram 矩阵是否为半正定的。在实际问题中往往应用已有的核函数
- 另外,由 Mercer 定理可以得到 Mercer 核 (Mercer kernel),正定核比 Mercer 核更具一般性。通常所说的核函数就是正定核函数
下面就对正定核的充要条件予以证明
必要性
- 由于
K
(
x
,
z
)
K(x,z)
K(x,z) 是
X
×
X
\mathcal X\times\mathcal X
X×X 上的正定核,所以存在从
X
\mathcal X
X 到希尔伯特空间
H
\mathcal H
H 的映射
ϕ
\phi
ϕ,使得
于是,对任意 x 1 , . . . , x m x_1,...,x_m x1,...,xm , 构造 K ( x , z ) K(x,z) K(x,z) 关于 x 1 , . . . , x m x_1,...,x_m x1,...,xm 的 Gram 矩阵 K K K
- 对任意
c
=
[
c
1
,
.
.
.
,
c
m
]
∈
R
m
c=[c_1,...,c_m]\in \R^m
c=[c1,...,cm]∈Rm, 有
c T K c = ∑ i , j = 1 m c i c j K ( x i , x j ) = ∑ i , j = 1 m c i c j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) = ( ∑ i c i ϕ ( x i ) ) ⋅ ( ∑ j c j ϕ ( x j ) ) = ∥ ∑ i c i ϕ ( x i ) ∥ 2 ⩾ 0 \begin{aligned}c^TKc&=\sum_{i, j=1}^{m} c_{i} c_{j} K\left(x_{i}, x_{j}\right) \\&=\sum_{i, j=1}^{m} c_{i} c_{j}\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right) \\ &=\left(\sum_{i} c_{i} \phi\left(x_{i}\right)\right) \cdot\left(\sum_{j} c_{j} \phi\left(x_{j}\right)\right) \\ &=\left\|\sum_{i} c_{i} \phi\left(x_{i}\right)\right\|^{2} \geqslant 0 \end{aligned} cTKc=i,j=1∑mcicjK(xi,xj)=i,j=1∑mcicj(ϕ(xi)⋅ϕ(xj))=(i∑ciϕ(xi))⋅(j∑cjϕ(xj))=∥∥∥∥∥i∑ciϕ(xi)∥∥∥∥∥2⩾0表明 K ( x , z ) K(x,z) K(x,z) 关于 x 1 , . . . , x m x_1,...,x_m x1,...,xm 的 Gram 矩阵是半正定的
充分性
- 已知对称函数
K
(
x
,
z
)
K(x,z)
K(x,z) 对任意
x
1
,
.
.
.
,
x
m
∈
X
x_1,...,x_m\in\mathcal X
x1,...,xm∈X,
K
(
x
,
z
)
K(x,z)
K(x,z) 关于
x
1
,
.
.
.
,
x
m
x_1,...,x_m
x1,...,xm 的 Gram 矩阵是半正定的。下面证明
K
(
x
,
z
)
K(x,z)
K(x,z) 为正定核函数,也就是证明可以依据函数
K
(
x
,
z
)
K(x,z)
K(x,z),构成一个希尔伯特空间 (Hilbert space),其步骤是:
- 首先定义映射 ϕ \phi ϕ 并构成向量空间 S \mathcal S S; 然后在 S \mathcal S S 上定义内积构成内积空间; 最后将 S \mathcal S S 完备化构成希尔伯特空间
定义映射,构成向量空间 S \mathcal S S
- 先定义映射
- 根据这一映射,对任意
x
i
∈
X
x_i\in\mathcal X
xi∈X,
α
i
∈
R
α_i\in\R
αi∈R,
i
=
1
,
.
.
.
,
m
i = 1,..., m
i=1,...,m, 定义线性组合
考虑由线性组合为元素的集合 S \mathcal S S。可以证明, S \mathcal S S 构成了一个向量空间
在 S \mathcal S S 上定义内积,使其成为内积空间
- 在
S
\mathcal S
S 上定义一个运算
∗
*
∗ 使
S
\mathcal S
S 成为内积空间: 对任意
f
,
g
∈
S
f, g\in\mathcal S
f,g∈S,
有
下面证明运算 ∗ * ∗ 是空间 S \mathcal S S 的内积。为此要证:
- 其中,(1)~(3) 易证
- 由 Gram 矩阵的半正定性可知
f ∗ f = ∑ i m ∑ j m α i α j K ( x i , x j ) = α T K α ≥ 0 f*f=\sum_i^m\sum_j^m\alpha_i\alpha_jK(x_i,x_j)=\alpha^TK\alpha\geq0 f∗f=i∑mj∑mαiαjK(xi,xj)=αTKα≥0因此 (4) 之式 (7.77) 得证 - 再证 (4) 之式 (7.78)
- 必要性:
f
∗
f
=
0
⇒
f
=
0
f*f=0\Rightarrow f=0
f∗f=0⇒f=0
- 为证必要性,首先证明不等式:
设 f , g ∈ S f,g \in\mathcal S f,g∈S, λ ∈ R λ\in \R λ∈R,则 f + λ g ∈ S f+ λg\in\mathcal S f+λg∈S,于是,
其左端是 λ λ λ 的二次三项式,非负,其判别式小于等于 0,即
- 按运算
∗
*
∗ 的定义式,对任意的
x
∈
X
x\in\mathcal X
x∈X,有
于是,
又因为
因此
此式表明,当 f ∗ f = 0 f * f = 0 f∗f=0 时,对任意的 x x x 都有 ∣ f ( x ) ∣ = 0 |f(x)| = 0 ∣f(x)∣=0
- 为证必要性,首先证明不等式:
- 充分性:
f
=
0
⇒
f
∗
f
=
0
f=0\Rightarrow f*f=0
f=0⇒f∗f=0
- f = 0 ⇒ f ( x ) = 0 ⇒ ∑ i = 1 m α i K ( x , x i ) = 0 ⇒ f ∗ f = ∑ i m ∑ j m α i α j K ( x i , x j ) = 0 f=0\Rightarrow f(x)=0\Rightarrow \sum_{i=1}^m\alpha_i K(x,x_i)=0\Rightarrow f*f=\sum_i^m\sum_j^m\alpha_i\alpha_jK(x_i,x_j)=0 f=0⇒f(x)=0⇒∑i=1mαiK(x,xi)=0⇒f∗f=∑im∑jmαiαjK(xi,xj)=0
- 必要性:
f
∗
f
=
0
⇒
f
=
0
f*f=0\Rightarrow f=0
f∗f=0⇒f=0
- 既然
∗
*
∗ 为
S
\mathcal S
S 的内积运算,那么仍然用
⋅
\cdot
⋅ 表示,即若
则
将内积空间 S \mathcal S S 完备化为希尔伯特空间
- 现在将内积空间
S
\mathcal S
S 完备化。由
S
\mathcal S
S 上定义的内积可以得到范数
因此, S \mathcal S S 是一个赋范向量空间。根据泛函分析理论,对于不完备的赋范向量空间 S \mathcal S S,一定可以使之完备化, 得到完备的赋范向量空间 H \mathcal H H。一个内积空间, 当作为一个赋范向量空间是完备的时候, 就是希尔伯特空间。这样,就得到了希尔伯特空间 H \mathcal H H
- 这一希尔伯特空间
H
\mathcal H
H 称为再生核希尔伯特空间 (reproducing kernel Hilbert space, RKHS) 。这是由于核
K
K
K 具有再生性,即满足
及
称为再生核
- 由上式可知,
表明 K ( x , z ) K(x,z) K(x,z) 是 X × X \mathcal X\times\mathcal X X×X 上的核函数
- 由上式可知,
常用的核函数
欧氏空间上的核函数
没错,核函数是一个需要人工调整的超参! 选定时有一些基本的经验,例如对文本数据通常采用线性核,情况不明时可先尝试高斯核
- 多项式核:属于全局核函数,允许相距很远的数据点对核函数的值有影响;参数 d d d 越大,映射的维度越高,计算量就会越大,易出现 “过拟合” 现象
- 高斯核:是一种局部性强的核函数,其参数决定了函数作用范围,随着参数 σ σ σ 的增大而减弱。该核函数应用最广,无论大样本还是小样本都有比较好的性能,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数
字符串核函数 (string kernel function)
- 核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上。字符串核是定义在字符串集合上的核函数。字符串核函数在文本分类、信息检索、生物信息学等方面都有应用
Notation
- 考虑一个有限字符表 Σ \Sigma Σ。字符串 s s s 是从 Σ \Sigma Σ 中取出的有限个字符的序列,包括空字符串。字符串 s s s 的长度用 ∣ s ∣ |s| ∣s∣ 表示,它的元素记作 s ( 1 ) s ( 2 ) . . . s ( ∣ s ∣ ) s(1)s(2)...s(|s|) s(1)s(2)...s(∣s∣)。两个字符串 s s s 和 t t t 的连接记作 s t st st。所有长度为 n n n 的字符串的集合记作 Σ n \Sigma^n Σn,所有字符串的集合记作 Σ ∗ = ∪ n = 0 ∞ Σ n \Sigma^* =\cup_{n=0}^\infty \Sigma^n Σ∗=∪n=0∞Σn
- 考虑字符串 s s s 的子串 u u u。给定一个指标序列 i = ( i 1 , . . . , i ∣ u ∣ ) i= (i_1,...,i_{|u|}) i=(i1,...,i∣u∣), 1 ≤ i 1 < i 2 < . . . < i ∣ u ∣ ≤ ∣ s ∣ 1\leq i_1<i_2 < ...<i_{|u|}\leq|s| 1≤i1<i2<...<i∣u∣≤∣s∣, s s s 的子串定义为 u = s ( i ) = s ( i 1 ) s ( i 2 ) . . . s ( i ∣ u ∣ ) u = s(i) = s(i_1)s(i_2)...s(i_{|u|}) u=s(i)=s(i1)s(i2)...s(i∣u∣),其长度记作 l ( i ) = i ∣ u ∣ − i 1 + 1 l(i)=i_{|u|}-i_1 +1 l(i)=i∣u∣−i1+1。如果 i i i 是连续的,则 l ( i ) = ∣ u ∣ l(i) =|u| l(i)=∣u∣;否则, l ( i ) > ∣ u ∣ l(i)>|u| l(i)>∣u∣
映射
- 假设
S
\mathcal S
S 是长度大于或等于
n
n
n 的字符串的集合,
s
s
s 是
S
\mathcal S
S 的元素。现在建立字符串集合
S
\mathcal S
S 到特征空间
H
n
=
R
Σ
n
\mathcal H_n = \R^{\Sigma^n}
Hn=RΣn 的映射
ϕ
n
(
s
)
\phi_n(s)
ϕn(s)。
R
Σ
n
\R^{\Sigma^n}
RΣn 表示定义在
Σ
n
\Sigma^n
Σn 上的实数空间,其每一维对应一个字符串
u
∈
Σ
n
u\in \Sigma^n
u∈Σn,映射
ϕ
n
(
s
)
\phi_n(s)
ϕn(s) 将字符串
s
s
s 对应于空间
R
Σ
n
\R^{\Sigma^n}
RΣn 的一个向量,其在
u
u
u 维上的取值为
这里, 0 < λ ≤ 1 0<λ\leq 1 0<λ≤1 是一个衰减参数, l ( i ) l(i) l(i) 表示字符串 t t t 的长度,求和在 s s s 中所有与 u u u 相同的子串上进行
- 例如,假设 Σ \Sigma Σ 为英文字符集, η η η 为 3, S \mathcal S S 为长度大于或等于 3 的字符串的集合。考虑将字符集 S \mathcal S S 映射到特征空间 H 3 \mathcal H_3 H3。 H 3 \mathcal H_3 H3 的一维对应于字符串 a s d asd asd。这时,字符串 “Nasdaq” 与 “lass das” 在这一维上的值分别是 [ ϕ 3 ( N a s d a q ) ] a s d = λ 3 [\phi_3(Nasdaq)]_{asd}=\lambda^3 [ϕ3(Nasdaq)]asd=λ3 和 [ ϕ 3 ( l a s s d a s ) ] a s d = 2 λ 5 [\phi_3(lass\ das)]_{asd}=2λ^5 [ϕ3(lass das)]asd=2λ5
内积
- 两个字符串
s
s
s 和
t
t
t 上的字符串核函数是基于映射
ϕ
n
\phi_n
ϕn 的特征空间中的内积:
字符串核函数 k n ( s , t ) k_n (s, t) kn(s,t) 给出了字符串 s s s 和 t t t 中长度等于 n n n 的所有子串组成的特征向量的余弦相似度。直观上,两个字符串相同的子串越多,它们就越相似,字符串核函数的值就越大。字符串核函数可以由动态规划快速地计算
核函数的组合
- 若
κ
1
κ_1
κ1 和
κ
2
κ_2
κ2 为核函数,则:
- 对任意正数
γ
1
γ_1
γ1、
γ
2
\gamma_2
γ2,其线性组合也是核函数
- 核函数的直积也是核函数
- 对于任意函数
g
(
x
)
g(\boldsymbol x)
g(x), 下式也为核函数
- 对任意正数
γ
1
γ_1
γ1、
γ
2
\gamma_2
γ2,其线性组合也是核函数
非线性支持向量机学习算法
序列最小最优化算法 SMO
Sequential Minimal Optimization
- 我们现在还未解决的问题就是解如下凸二次规划的对偶问题,可使用通用的二次规划算法来求解; 然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销. 为了避开这个障碍,人们通过利用问题本身的特性,提出了很多高效算法, SMO 是其中一个著名的代表:
在这个问题中,变量是拉格朗日乘子, 一个变量 α i α_i αi 对应于一个样本点 ( x i , y i ) (x_i,y_i) (xi,yi); 变量的总数等于训练样本容量 N N N
Basic Idea
- 对于上述凸二次规划问题,KKT 条件是该最优化问题的充要条件,也就是说,如果某个解
α
\alpha
α 满足 KKT 条件,那么
α
\alpha
α 必为该问题的最优解 (下面即为 KKT 条件)
- 因此,我们可以先找到一个违反 KKT 条件最严重的变量 α i \alpha_i αi (如果不存在违反 KKT 条件的变量,则说明当前解 α \alpha α 为最优解) 和另一个变量 α j \alpha_j αj 并固定其他变量 (此时 α j \alpha_j αj 可由约束条件 ∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_iy_i=0 ∑i=1Nαiyi=0 确定),针对 α i , α j \alpha_i,\alpha_j αi,αj 这两个变量构建一个只有两个变量的二次规划子问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。如此, SMO 算法将原问题不断分解为子问题并对子问题求解,直到所有变量满足 KKT 条件为止,进而达到求解原问题的目的
- 这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的
求解两个变量二次规划的解析方法
- 假设选择的两个变量是
α
1
,
α
2
α_1,\alpha_2
α1,α2,其他变量
α
i
(
i
=
3
,
4
,
.
.
.
,
N
)
\alpha_i(i= 3,4,..., N)
αi(i=3,4,...,N) 是固定的。于是 SMO 的最优化问题 (7.98)~(7.100) 的子问题可以写成:
双变量最优化 ⇒ \Rightarrow ⇒ 单变量最优化
- 由于只有两个变量
(
α
1
,
α
2
)
(α_1,\alpha_2)
(α1,α2),约束可以用二维空间中的图形表示:
因此要求的是目标函数在一条平行于对角线的线段上的最优值。这使得两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量 α 2 \alpha_2 α2 的的最优化问题
- 假设问题初始可行解为
α
1
o
l
d
,
α
2
o
l
d
α_1^{old},\alpha_2^{old}
α1old,α2old,最优解为
α
1
n
e
w
,
α
2
n
e
w
α_1^{new},\alpha_2^{new}
α1new,α2new,则考虑约束条件 (7.102) 和 (7.103),得到单变量优化问题的约束条件:
其中, L L L 与 H H H 是 α 2 n e w α_2^{new} α2new 所在的对角线段端点的界。由图 7.8 可知,
- 如果
y
1
≠
y
2
y_1\neq y_2
y1=y2,则
max ( 0 , − k ) ≤ α 2 ≤ min ( C , C − k ) \max(0,-k)\leq\alpha_2\leq\min(C,C-k) max(0,−k)≤α2≤min(C,C−k)又因为 k = α 1 o l d − α 2 o l d k=\alpha_1^{old}-\alpha_2^{old} k=α1old−α2old,得到
- 如果
y
1
=
y
2
y_1=y_2
y1=y2,则
max ( 0 , k − C ) ≤ α 2 ≤ min ( C , k ) \max(0,k-C)\leq\alpha_2\leq\min(C,k) max(0,k−C)≤α2≤min(C,k)又因为 k = α 1 o l d + α 2 o l d k=\alpha_1^{old}+\alpha_2^{old} k=α1old+α2old,得到
- 如果
y
1
≠
y
2
y_1\neq y_2
y1=y2,则
解无约束的单变量最优化问题
- 我们先忽略约束条件 L ≤ α 2 n e w ≤ H L\leq \alpha_2^{new}\leq H L≤α2new≤H,转而求解无约束的最优化问题以得到其最优解 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc (unconditioned optimal solution)
- 为此,我们先引入下面的记号:
- 设当前模型为
g
g
g:
- 设
E
i
E_i
Ei 为函数
g
(
x
)
g(x)
g(x) 对输入
x
i
x_i
xi 的预测值与真实输出
y
i
y_i
yi 之差:
- 为了便于书写,继续引入记号
v
i
v_i
vi:
- 设当前模型为
g
g
g:
- 此时目标函数可写成
由 α 1 y 1 + α 2 y 2 = ς \alpha_1y_1+\alpha_2y_2=\varsigma α1y1+α2y2=ς 可知, α 1 = ( ς − y 2 α 2 ) y 1 \alpha_{1}=(\varsigma-y_{2} \alpha_{2}) y_{1} α1=(ς−y2α2)y1,将其代入上式可得只有 α 2 α_2 α2 变量的目标函数:
- 对
α
2
\alpha_2
α2 求导数
因此二阶偏导为 ∂ 2 W ∂ α 2 2 = K 11 + K 22 − 2 K 12 \frac{\partial^2 W}{\partial \alpha_2^2}=K_{11}+K_{22}-2K_{12} ∂α22∂2W=K11+K22−2K12。由于 K K K 为正定核, [ K 11 K 12 K 21 K 22 ] \begin{bmatrix}K_{11}&K_{12}\\K_{21}&K_{22}\end{bmatrix} [K11K21K12K22] 必为半正定矩阵,因此 x T [ K 11 K 12 K 21 K 22 ] x = K 11 x 1 2 + 2 K 12 x 1 x 2 + K 22 x 2 2 ≥ 0 x^T\begin{bmatrix}K_{11}&K_{12}\\K_{21}&K_{22}\end{bmatrix}x=K_{11}x_1^2+2K_{12}x_1x_2+K_{22}x_2^2\geq0 xT[K11K21K12K22]x=K11x12+2K12x1x2+K22x22≥0,令 x = [ − 1 1 ] T x=[-1\ \ 1]^T x=[−1 1]T,则有 K 11 + K 22 − 2 K 12 ≥ 0 K_{11}+K_{22}-2K_{12}\geq0 K11+K22−2K12≥0,因此 ∂ 2 W ∂ α 2 2 ≥ 0 \frac{\partial^2 W}{\partial \alpha_2^2}\geq0 ∂α22∂2W≥0, W W W 为 α 2 \alpha_2 α2 的凸函数。因此令一阶偏导为 0,得到
将 ς = α 1 o l d y 1 + α 2 o l d y 2 \varsigma=α_1^{old}y_1+α_2^{old}y_2 ς=α1oldy1+α2oldy2 代入,得到
将 η = K 11 + K 22 − 2 K 12 η= K_{11} + K_{22} -2K_{12} η=K11+K22−2K12 代入,于是得到
考虑约束条件
- 注意到目标函数是关于
α
2
\alpha_2
α2 的凸函数,因此可以直接按照下式对
α
2
n
e
w
,
u
n
c
\alpha_2^{new,unc}
α2new,unc 进行剪辑得到
α
2
\alpha_2
α2:
更新 α 1 \alpha_1 α1
- 有了
α
2
n
e
w
\alpha_2^{new}
α2new,我们可以直接根据约束条件
α
1
y
1
+
α
2
y
2
=
ς
\alpha_1y_1+\alpha_2y_2=\varsigma
α1y1+α2y2=ς 得到
α
1
n
e
w
\alpha_1^{new}
α1new:
∵ α 1 n e w y 1 + α 2 n e w y 2 = α 1 o l d y 1 + α 2 o l d y 2 ∴ α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w ) \because \alpha_1^{new}y_1+\alpha_2^{new}y_2=\alpha_1^{old}y_1+\alpha_2^{old}y_2\\ \therefore \alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new}) ∵α1newy1+α2newy2=α1oldy1+α2oldy2∴α1new=α1old+y1y2(α2old−α2new)
总结
选择变量的启发式方法
第 1 个变量的选择
- SMO 称选择第 1 个变量的过程为外层循环。外层循环在训练样本中选取违反 KKT 条件最严重的样本点 (优化的
α
α
α 违背 KKT 条件越大,此次优化效果越明显),并将其对应的变量作为第 1 个变量。具体地,检验训练样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 是否满足 KKT 条件,即
α i = 0 ⇒ y i g ( x i ) ⩾ 1 0 < α i < C ⇒ y i g ( x i ) = 1 α i = C ⇒ y i g ( x i ) ⩽ 1 \begin{array}{r} \alpha_{i}=0 \Rightarrow y_{i} g\left(x_{i}\right) \geqslant 1 \\ 0<\alpha_{i}<C \Rightarrow y_{i} g\left(x_{i}\right)=1 \\ \alpha_{i}=C \Rightarrow y_{i} g\left(x_{i}\right) \leqslant 1 \end{array} αi=0⇒yig(xi)⩾10<αi<C⇒yig(xi)=1αi=C⇒yig(xi)⩽1 - 该检验是在 ε ε ε 范围内进行的。在检验过程中,外层循环首先遍历所有满足条件 0 < α i < C 0<α_i < C 0<αi<C 的样本点,即在间隔边界上的支持向量点,检验它们是否满足 KKT 条件。如果这些样本点都满足 KKT 条件,那么遍历整个训练集,检验它们是否满足 KKT 条件
KKT 条件:
第 2 个变量的选择
- SMO 称选择第 2 个变量的过程为内层循环。假设在外层循环中己经找到第 1 个变量 α 1 α_1 α1,现在要在内层循环中找第 2 个变量 α 2 α_2 α2。第 2 个变量选择的标准是希望能使 α 2 \alpha_2 α2 有足够大的变化 (使目标函数值减小最快的变量)
- 由于
为了加快计算速度, 一种简单的做法是选择 α 2 α_2 α2 使其对应的 ∣ E 1 − E 2 ∣ |E_1 - E_2| ∣E1−E2∣ 最大。因为 α 1 α_1 α1 已定, E 1 E_1 E1 也确定了。如果 E 1 E_1 E1 是正的,那么选择最小的 E i E_i Ei 作为 E 2 E_2 E2;如果 E 1 E_1 E1 是负的,那么选择最大的 E i E_i Ei 作为 E 2 E_2 E2。为了节省计算时间,将所有 E i E_i Ei 值保存在一个列表中
- 在特殊情况下,如果内层循环通过以上方法选择的的不能使目标函数有足够的下降,那么采用以下启发式规则继续选择
α
2
α_2
α2:
- 启发式 1:遍历在间隔边界上的支持向量点,依次将其对应的变量作为 α 2 \alpha_2 α2 试用,直到目标函数有足够的下降。若找不到合适的 α 2 \alpha_2 α2,那么遍历训练数据集;若仍找不到合适的 α 2 \alpha_2 α2, 则放弃第 1 个 α 1 \alpha_1 α1,再通过外层循环寻求另外的 α 1 \alpha_1 α1
- 启发式 2: 使选取的两变量所对应样本之间的间隔最大. 一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化
计算阈值 b b b 和差值 E i E_i Ei
计算阈值 b b b
- 在每次完成两个变量的优化后,都要重新计算阈值
b
b
b。当
0
<
α
1
n
e
w
<
C
0<α_1^{new}<C
0<α1new<C 时,由 KKT 条件可知,
α
1
\alpha_1
α1 对应的样本点在间隔边界上,因此,
于是,
又因为
将上式代入 b 1 n e w b_1^{new} b1new 的表达式可得
- 同理,如果
0
<
α
2
n
e
w
<
C
0<α_2^{new}<C
0<α2new<C,那么,
- 如果 α 1 n e w , α 2 n e w α_1^{new},α_2^{new} α1new,α2new 同时满足条件 0 < α i n e w < C 0<α_i^{new} < C 0<αinew<C, i = 1 , 2 i = 1, 2 i=1,2,那么 b 1 n e w = b 2 n e w b_1^{new}= b_2^{new} b1new=b2new。如果 α 1 n e w , α 2 n e w α_1^{new},α_2^{new} α1new,α2new 是 0 或者 C C C,那么 b 1 n e w b_1^{new} b1new 和 b 2 n e w b_2^{new} b2new 以及它们之间的数都是符合 KKT 条件的阈值,这时选择它们的中点作为 b n e w b^{new} bnew
计算差值 E i E_i Ei
- 在每次完成两个变量的优化之后,还必须更新对应的
E
i
E_i
Ei 值, 并将它们保存在列表中。
E
i
E_i
Ei 值的更新要用到
b
n
e
w
b^{new}
bnew 值,以及所有支持向量对应的
α
j
\alpha_j
αj:
其中, S S S 是所有支持向量 x j x_j xj 的集合
SMO 算法
支持向量回归
核方法
- to be continued…