1. 支持向量机(SVM)
《机器学习》以及pluskid相关SVM博文阅读笔记
1.1. 从线性分类器说起
考虑一个二分类问题,数据点用x表示,这是一个n维向量,而类别用y表示,可以取1或者-1,分别代表两个不同的类(可以取任意两个不同的值,这里取1和-1仅仅是为了后面推导方便)。一个线性分类器就是要在n维的数据空间中找到一个超平面,次划分超平面可通过如下线性方程来描述:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
其中
w
=
(
w
1
;
w
2
;
.
.
.
;
w
d
)
w=(w_1;w_2;...;w_d)
w=(w1;w2;...;wd)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。我们希望的是,通过这个超平面将两类数据分割开来,比如,在超平面一边的数据点所对应的 y 全是 -1 ,而在另一边全是 1 。具体来说,我们令
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b ,显然,如果 f(x)=0 ,那么 x 是位于超平面上的点。我们不妨要求对于所有满足 f(x)<0 的点,其对应的 y 等于 -1 ,而 f(x)>0 则对应 y=1 的数据点。
理想情况下我们希望,将数据点x代入f(x)得到的值都是很大的正数或者很小的负数,这样可以很好的区别两个类别,因为,如果f(x)的值为0附近,它很难区分是正例还是负例。
定义函数间隔:
γ
^
=
y
(
w
T
x
+
b
)
=
y
f
(
x
)
\hat{\gamma} = y(w^Tx+b)=yf(x)
γ^=y(wTx+b)=yf(x)任意一点x,令其垂直投影到超平面上的对应点为
s
0
s_0
s0,由于w是垂直于超平面的向量,则有:
x
=
x
0
+
γ
w
∣
∣
w
∣
∣
x = x_0 + \gamma \frac{w}{||w||}
x=x0+γ∣∣w∣∣w
又由于
x
0
x_0
x0是超平面上的点,满足
f
(
x
0
)
=
0
f(x_0)=0
f(x0)=0,代入超平面方程即可算的:
γ
=
w
T
x
+
b
∣
∣
w
∣
∣
=
f
(
x
)
∣
∣
w
∣
∣
\gamma = \frac{w^Tx+b}{||w||}=\frac{f(x)}{||w||}
γ=∣∣w∣∣wTx+b=∣∣w∣∣f(x)
不过这里的
γ
\gamma
γ带符号可以通过乘上对应的类别y来获得它的绝对值,因此定义几何间隔:
γ
~
=
y
γ
=
γ
^
∣
∣
w
∣
∣
,
γ
~
由
上
面
定
义
的
函
数
边
界
:
γ
~
=
y
f
(
x
)
\tilde{\gamma} = y\gamma = \frac{\hat{\gamma}}{||w||}, \tilde{\gamma}由上面定义的函数边界:\tilde{\gamma} = yf(x)
γ~=yγ=∣∣w∣∣γ^,γ~由上面定义的函数边界:γ~=yf(x)
显然,函数间隔与几何间隔只差一个缩放因子
∣
∣
w
∣
∣
||w||
∣∣w∣∣。对于一个数据进行分类时,当它的间隔越大的时候,分类的置信度越大。对于一个包含n个点的数据集,可以很自然地定义它的间隔为所有n个点的间隔值中最小的那个。于是,为了使得分类的置信度高,我们希望所选择的超平面能够最大化这个间隔。此时,有两个间隔可选,函数间隔和几何间隔。很明显,不太适合用来最大化,因为超平面固定后,可以等比例的缩放w的长度和b的值,这样可以使得
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b的值任意大,亦即函数间隔
γ
^
\hat{\gamma}
γ^可以在超平面确定的情况下任意大。而几何间隔因为除了
∣
∣
w
∣
∣
||w||
∣∣w∣∣这个缩放因子,所以缩放w和b的时候,几何间隔不会改变,它只随着超平面的变动而变动。因此,更适合作为优化目标。 这样以来,最大间隔分类的目标函数定义为:
m
a
x
γ
~
max \tilde{\gamma}
maxγ~
当然,还需要满足一些条件,根据间隔的定义有
y
i
(
w
T
x
i
+
b
)
=
γ
^
i
≥
γ
^
,
i
=
1
,
.
.
.
,
n
y_i(w^Tx_i+b) = \hat{\gamma}_i \ge \hat{\gamma}, i = 1,...,n
yi(wTxi+b)=γ^i≥γ^,i=1,...,n
其中
γ
^
=
γ
~
∣
∣
w
∣
∣
\hat{\gamma} = \tilde{\gamma} ||w||
γ^=γ~∣∣w∣∣,根据上面所述,即使超平面固定之后
γ
^
\hat{\gamma}
γ^的也会随着
∣
∣
w
∣
∣
||w||
∣∣w∣∣的变化而变化。由于我们的目标是确定超平面,因此可以把这个无关的变量固定下来。 固定的方式有两种:
- 1、固定 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣,当找到最优的 γ ~ \tilde{\gamma} γ~时 γ ^ \hat{\gamma} γ^也就随之固定
- 2、固定 γ ^ \hat{\gamma} γ^,此时 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣也可根据最优的 γ ~ \tilde{\gamma} γ~得到。
为了方便推导选择第二种固定方法,令
γ
^
=
1
\hat{\gamma} = 1
γ^=1,则目标函数变为:
m
a
x
1
∣
∣
w
∣
∣
,
s
.
t
.
,
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
.
.
.
,
n
max\frac{1}{||w||}, \\ s.t., y_i(w_Tx_i+b) \ge 1, i=1,...,n
max∣∣w∣∣1,s.t.,yi(wTxi+b)≥1,i=1,...,n
通过求解这个问题,就可以得到一个间隔最大的分类器。
上式等价于最小化下式:
m
i
n
1
2
∣
∣
w
∣
∣
2
s
.
t
.
,
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
.
.
.
,
n
min\frac{1}{2}||w||^2 \\ s.t., y_i(w_Tx_i+b) \ge 1, i=1,...,n
min21∣∣w∣∣2s.t.,yi(wTxi+b)≥1,i=1,...,n
1.2. 支撑向量
如下图:
可以看到两个支撑着中间区域的超平面,这两个支撑平面到超平面的距离相等。
为什么相等?因为,我们要找到一个使间隔最大的超平面。而间隔为所有样本点到超平面的间隔的最小值。若两边的点到超平面的距离不等,则必有一边点的间隔小于另外一边点的间隔,此时可以通过向间隔大的那个支撑平面平移超平面来扩大另外一面的点到超平面的间隔来得到更大的间隔,只有一值达到左右间隔相等的时候求得优化的最优解。
而支撑这些支撑超平面上必定会有一些数据点,由于在n维向量空间里一个点实际上是和以原点为起点,该点为终点的一个向量是等价的,所以这些支撑点便叫做支持向量。
很显然,由于支持向量刚好在边界上,所以它们满足 y ( w T x + b ) = 1 y(w^Tx+b)=1 y(wTx+b)=1,而对于所有不是支持向量的点,则显然有 y ( w T x + b ) > 1 y(w^Tx+b) \gt 1 y(wTx+b)>1。事实上,当最优超平面确定下来之后,这些后方的点可以不用去关注,因此它们在自己边界后的晃动不会影响超平面的确定。这样的特性在实际中有一个最直接的好处就在于存储和计算上的优越性。
那么,对于目标函数:
m
i
n
1
2
∣
∣
w
∣
∣
2
s
.
t
.
,
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
.
.
.
,
n
min\frac{1}{2}||w||^2 \\ s.t., y_i(w_Tx_i+b) \ge 1, i=1,...,n
min21∣∣w∣∣2s.t.,yi(wTxi+b)≥1,i=1,...,n
应该如何求解呢?
很明显,这是一个凸优化问题,更具体的说,这是一个二次优化问题(目标函数是二次的,约束条件是线性的。)。可以直接使用已有的优化包求解。但是它有自己的特殊结构,可以通过拉格朗日对偶变换到对偶变量的优化问题之后,找到一种更加有效的方法来求解。通常情况下这种方法比直接用软件包求解高效的多。
上述目标函数转换成的拉格朗日函数为(拉格朗日乘数法):
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
x
i
+
b
)
−
1
)
L(w,b,\alpha)=\frac{1}{2}||w||^2 - \sum_{i=1}^{n}\alpha_i (y_i(w^Tx_i+b) - 1)
L(w,b,α)=21∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)
然后,令
θ
(
w
)
=
m
a
x
α
i
≥
0
L
(
w
,
b
,
α
)
\theta(w)=max_{\alpha_i \ge 0}L(w,b,\alpha)
θ(w)=maxαi≥0L(w,b,α)
容易验证,当某个约束条件不满足时,例如
y
i
(
w
T
x
i
+
b
)
<
1
y_i(w^Tx_i+b) \lt 1
yi(wTxi+b)<1那么我们显然有
θ
(
w
)
=
∞
\theta(w)=\infty
θ(w)=∞ 只要令
α
i
=
∞
\alpha_i = \infty
αi=∞即可。而当所有约束条件都满足时,有
θ
(
w
)
=
1
2
∣
∣
w
∣
∣
2
\theta(w) = \frac{1}{2}||w||^2
θ(w)=21∣∣w∣∣2,即我们要最小化的量。因此,在要求约束条件得到满足的情况下最小化
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2实际上等价于直接最小化
θ
(
w
)
\theta(w)
θ(w),当然这里的约束条件为
α
i
>
0
,
i
=
1
,
.
.
.
,
n
\alpha_i \gt 0, i=1,...,n
αi>0,i=1,...,n。如果约束条件没有得到满足,
θ
(
w
)
\theta(w)
θ(w)会等于无穷大,自然不会得到我们所要求的最小值。具体写出来,我们现在的目标函数变成了:
m
i
n
w
,
b
θ
(
w
)
=
m
i
n
w
,
b
m
a
x
α
i
≥
0
L
(
w
,
b
,
α
)
=
p
∗
min_{w,b}\theta(w)=min_{w,b}max_{\alpha_i \ge 0}L(w,b,\alpha) = p^{*}
minw,bθ(w)=minw,bmaxαi≥0L(w,b,α)=p∗
这里用
p
∗
p^{*}
p∗表示这个问题的最优值,这个问题和我们最初的问题是等价的。不过,现在把最小和最大的位置交换一下:
m
a
x
α
i
≥
0
m
i
n
w
,
b
L
(
w
,
b
,
α
)
=
d
∗
max_{\alpha_i \ge 0}min_{w,b}L(w,b,\alpha) = d^{*}
maxαi≥0minw,bL(w,b,α)=d∗
当然,交换之后的问题不再等价于原问题,这个新问题的最优值用
d
∗
d^{*}
d∗表示。 并且,有
d
∗
≤
p
∗
d^{*} \le p^{*}
d∗≤p∗ (直观上讲就是最大值中的最小的一个总比最小值中的最大的一个要大)。总之,第二个问题的最优值
d
∗
d^{*}
d∗在这里提供了一个第一个问题最优值
p
∗
p^{*}
p∗的下界,在满足某些条件的情况下,两者相等,这个时候我们可以通过求解第二个问题来间接的求解第一个问题。 具体的说就是要满足KKT条件(后面说),先给结论:这里的问题满足KKT条件,因此我们便转化为求解第二个问题。
首先要让L关于w和b最小化,求导令为0得:
∂
L
∂
w
=
0
  
⟹
  
w
=
∑
i
=
1
n
α
i
y
i
x
i
∂
L
∂
b
=
0
  
⟹
  
∑
i
=
1
n
α
i
y
i
=
0
\frac{\partial L}{\partial w}=0 \implies w = \sum_{i=1}^{n}\alpha_i y_i x_i \\ \frac{\partial L}{\partial b}=0 \implies \sum_{i=1}^{n}\alpha_i y_i = 0
∂w∂L=0⟹w=i=1∑nαiyixi∂b∂L=0⟹i=1∑nαiyi=0
带回到L的表达式中:
L
(
w
,
b
,
α
)
=
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
b
∑
i
=
1
n
α
i
y
i
+
∑
i
=
1
n
α
i
=
∑
i
=
1
n
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
L(w,b,\alpha)=\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx^T_ix_j-\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j-b\sum_{i=1}^{n}\alpha_iy_i+\sum_{i=1}^{n}\alpha_i \\ =\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx^T_ix_j
L(w,b,α)=21i,j=1∑nαiαjyiyjxiTxj−i,j=1∑nαiαjyiyjxiTxj−bi=1∑nαiyi+i=1∑nαi=i=1∑nαi−21i,j=1∑nαiαjyiyjxiTxj
此时,我们得到对偶变量
α
\alpha
α的优化问题:
m
a
x
α
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
s
.
t
.
,
α
i
≥
0
,
i
=
1
,
.
.
.
,
n
∑
i
=
1
n
α
i
y
i
=
0
max_{\alpha}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx^T_ix_j \\ s.t., \alpha_i \ge 0,i=1,...,n \\ \sum_{i=1}^{n}\alpha_iy_i=0
maxααi−21i,j=1∑nαiαjyiyjxiTxjs.t.,αi≥0,i=1,...,ni=1∑nαiyi=0
得到结论。对于要求的超平面,对于一个数据点x进行分类,实际上是通过把x代入到
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b算出结果然后根据其正负号来进行类别的划分。而前面的推导中,我们得到了w的值:
w
=
∑
i
=
1
n
α
i
y
i
x
i
w = \sum_{i=1}^{n}\alpha_i y_i x_i
w=∑i=1nαiyixi,因此:
f
(
x
)
=
(
∑
i
=
1
n
α
i
y
i
x
i
)
T
x
+
b
=
∑
i
=
1
n
α
i
y
i
⟨
x
i
,
x
⟩
+
b
f(x)=(\sum_{i=1}^{n}\alpha_i y_i x_i)^Tx+b \\ =\sum_{i=1}^{n}\alpha_iy_i \langle x_i, x \rangle + b
f(x)=(i=1∑nαiyixi)Tx+b=i=1∑nαiyi⟨xi,x⟩+b
这里,对于新点x的预测,只需要计算它与训练数据点的内积即可。此为,之后使用Kernel进行非线性推广的基本前提。 事实上,所有非支持向量所对应的系数 α \alpha α都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。
为什么非支持向量对应的 α \alpha α等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。这个结论也可由刚才的推导中得出,回忆一下我们刚才通过 Lagrange multiplier 得到的目标函数:
m a x α i ≥ 0 L ( w , b , α ) = m a x α i ≥ 0 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( w T x i + b ) − 1 ) max_{\alpha_i \ge 0}L(w,b,\alpha)=max_{\alpha_i \ge 0}\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1) maxαi≥0L(w,b,α)=maxαi≥021∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)
如果 x i x_i xi是支持向量的话,上式中的 ( y i ( w T x i + b ) − 1 ) (y_i(w^Tx_i+b)-1) (yi(wTxi+b)−1)等于0,而对于非支持向量来说,函数间隔会大于1,因此 ( y i ( w T x i + b ) − 1 ) (y_i(w^Tx_i+b)-1) (yi(wTxi+b)−1)是大于0的,而 α i \alpha_i αi又是非负的,为了满足最大话, α i \alpha_i αi必须等于0。
1.3. 核函数
如果样本不可分,则原始样本空间可能并不存在一个能正确划分两类样本的超平面。对于这样的问题,我们可以通过一个映射
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅)将原始数据映射到一个高维空间,使数据变得可分,这个时候就可以使用原来的推导进行计算。之前推导的分类函数是:
f
(
x
)
=
∑
i
=
1
n
α
i
y
i
⟨
x
i
,
x
⟩
+
b
f(x) = \sum_{i=1}^{n}\alpha_iy_i \langle x_i,x \rangle + b
f(x)=i=1∑nαiyi⟨xi,x⟩+b
但是现在在映射后的空间做为:
f
(
x
)
=
∑
i
=
1
n
α
i
y
i
⟨
ϕ
(
x
i
)
,
ϕ
(
x
)
⟩
+
b
f(x) = \sum_{i=1}^{n}\alpha_iy_i \langle \phi(x_i),\phi(x) \rangle + b
f(x)=i=1∑nαiyi⟨ϕ(xi),ϕ(x)⟩+b
其中的
α
\alpha
α也是通过求解如下对偶问题得到:
m
a
x
α
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
s
.
t
.
,
α
i
≥
0
,
i
=
1
,
.
.
.
,
n
∑
i
=
1
n
α
i
y
i
=
0
max_{\alpha}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_j \langle\phi( x_i), \phi(x_j) \rangle \\ s.t., \alpha_i \ge 0,i=1,...,n \\ \sum_{i=1}^{n}\alpha_iy_i=0
maxααi−21i,j=1∑nαiαjyiyj⟨ϕ(xi),ϕ(xj)⟩s.t.,αi≥0,i=1,...,ni=1∑nαiyi=0
这种方式会带来一个问题。特征空间的维度很高,直接计算
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
\langle\phi( x_i), \phi(x_j) \rangle
⟨ϕ(xi),ϕ(xj)⟩通常很困难,为了避开这个障碍,可以设想这样的一个函数:
k
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
k(x_i,x_j)=\langle\phi( x_i), \phi(x_j) \rangle=\phi( x_i)^T\phi(x_j)
k(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)
即这两个x在特征空间的内积等于它们在原始样本空间中通过函数
k
(
⋅
,
⋅
)
k(\cdot , \cdot)
k(⋅,⋅)计算的结果。有了这样的函数就不必直接去计算高维空间中的内积。此时,我们的分类函数为:
∑
i
=
1
n
α
i
y
i
k
(
x
i
,
x
)
+
b
\sum_{i=1}^{n}\alpha_iy_i \color{#F0F}{k(x_i,x)} \color{#000}{+b}
i=1∑nαiyik(xi,x)+b
其中
α
\alpha
α由如下对偶问题计算而得:
m
a
x
α
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
k
(
x
i
,
x
j
)
s
.
t
.
,
α
i
≥
0
,
i
=
1
,
.
.
.
,
n
∑
i
=
1
n
α
i
y
i
=
0
max_{\alpha}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_j \color{#F0F}{k(x_i,x_j)} \\ \color{#000}{s.t., \alpha_i \ge 0,i=1,...,n} \\ \color{#000}{\sum_{i=1}^{n}\alpha_iy_i=0}
maxααi−21i,j=1∑nαiαjyiyjk(xi,xj)s.t.,αi≥0,i=1,...,ni=1∑nαiyi=0
显然,若已知映射
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅)的具体形式,则可写出核函数
k
(
⋅
,
⋅
)
k(\cdot,\cdot)
k(⋅,⋅),但现实任务中我们通常不知道映射是什么形式。那么合适的核函数是否一定存在呢?什么样的函数可以做核函数呢?有下面的定理:
只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。
几种常见的核函数:
此外,还可以通过核函数间的相互组合得到:
- 1、核函数的线性组合
- 2、核函数的直积
- 3、若 k 1 k_1 k1为核函数,对于任意函数g(x)
- k ( x , z ) = g ( x ) k 1 ( x , z ) g ( z ) k(x,z)=g(x)k_1(x,z)g(z) k(x,z)=g(x)k1(x,z)g(z)
- 也是核函数
1.4. 软间隔
在最开始讨论支持向量机的时候,我们就假定,数据是线性可分的,亦即我们可以找到一个可行的超平面将数据完全分开。后来为了处理非线性数据,使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性的的情况也能处理。虽然通过映射 ϕ(⋅) 将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。例如可能并不是因为数据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier ,在我们原来的 SVM 模型里,outlier 的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector 里又存在 outlier 的话,其影响就很大了。例如下图:
用黑圈圈起来的那个蓝点是一个 outlier ,它偏离了自己原本所应该在的那个半空间,如果直接忽略掉它的话,原来的分隔超平面还是挺好的,但是由于这个 outlier 的出现,导致分隔超平面不得不被挤歪了,变成途中黑色虚线所示,同时 margin 也相应变小了。当然,更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。
因此,相对于要将全部样本完全划分正确的“硬间隔”,“软间隔”SVM允许数据点在一定程度上偏离一下超平面。具体来说,原来的约束条件:
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
.
.
,
n
y_i(w^Tx_i+b) \ge 1,i=1,..,n
yi(wTxi+b)≥1,i=1,..,n
现在变成
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
.
.
.
,
n
y_i(w^Tx_i+b) \ge 1-\color{#F0F}{\xi_i}\color{#000}{, i =1,...,n}
yi(wTxi+b)≥1−ξi,i=1,...,n
其中
ξ
i
≥
0
\xi_i \ge 0
ξi≥0为松弛变量,对应数据点
x
i
x_i
xi允许偏离的量。当然,如果使
ξ
i
\xi_i
ξi任意大的话,那任意的超平面都符合条件。所以我们在原来的目标函数后面加上一项,使得这些
ξ
i
\xi_i
ξi的总和也要最小:
m
i
n
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
min\frac{1}{2}||w||^2\color{#F0F}{+C\sum_{i=1}^{n}\xi_i}
min21∣∣w∣∣2+Ci=1∑nξi
其中C是一个参数,用于控制目标函数中两项(“寻找间隔最大的超平面"和"保证数据点偏差量最小”)之前的权重。注意,其中
ξ
\xi
ξ是需要优化的变量之一,而C是一个事先确定好的常量。完整地写出来为:
m
i
n
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
s
.
t
.
,
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
.
.
.
,
n
ξ
i
≥
0
,
i
=
1
,
.
.
.
,
n
min\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\xi_i \\ s.t.,y_i(w^Tx_i+b) \ge 1-\xi_i,i=1,...,n \\ \xi_i \ge 0,i=1,...,n
min21∣∣w∣∣2+Ci=1∑nξis.t.,yi(wTxi+b)≥1−ξi,i=1,...,nξi≥0,i=1,...,n
用之前的方法将限制加入到目标函数中,得到如下问题:
L
(
w
,
b
,
ξ
,
α
,
r
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
x
i
+
b
)
−
1
+
ξ
i
)
−
∑
i
=
1
n
r
i
ξ
i
L(w,b,\xi,\alpha,r)=\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\xi_i-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1+\xi_i)-\sum_{i=1}^{n}r_i\xi_i
L(w,b,ξ,α,r)=21∣∣w∣∣2+Ci=1∑nξi−i=1∑nαi(yi(wTxi+b)−1+ξi)−i=1∑nriξi
分析方法和前面一样,转换为另一个问题之后,我们先让L针对w、b和
ξ
\xi
ξ最小化:
∂
L
∂
w
=
0
  
⟹
  
w
=
∑
i
=
1
n
α
i
y
i
x
i
∂
L
∂
b
=
0
  
⟹
  
∑
i
=
1
n
α
i
y
i
=
0
∂
L
∂
ξ
i
=
0
  
⟹
  
C
−
α
i
−
r
i
=
0
,
i
=
1
,
.
.
.
,
n
\frac{\partial L}{\partial w} = 0 \implies w=\sum_{i=1}^{n}\alpha_iy_ix_i \\ \frac{\partial L}{\partial b} = 0 \implies \sum_{i=1}^{n}\alpha_iy_i=0 \\ \frac{\partial L}{\partial \xi_i} = 0 \implies C-\alpha_i - r_i=0,i=1,...,n
∂w∂L=0⟹w=i=1∑nαiyixi∂b∂L=0⟹i=1∑nαiyi=0∂ξi∂L=0⟹C−αi−ri=0,i=1,...,n
将w带回L并化简,得到和原来一样的目标函数:
m
a
x
α
∑
i
=
1
n
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
⟨
x
i
,
x
j
⟩
max_{\alpha}\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_j \langle x_i,x_j \rangle
maxαi=1∑nαi−21i,j=1∑nαiαjyiyj⟨xi,xj⟩
不过,有序得到了
C
−
α
i
−
r
i
=
0
C-\alpha_i - r_i=0
C−αi−ri=0,又有
r
i
≥
0
r_i \ge 0
ri≥0,因此有
α
i
≤
C
\alpha_i \le C
αi≤C,因此有
α
i
≤
C
\alpha_i \le C
αi≤C,所以整个对偶问题现在写作:
m
a
x
α
∑
i
=
1
n
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
⟨
x
i
,
x
j
⟩
s
.
t
.
,
0
≤
α
i
≥
C
,
i
=
1
,
.
.
.
n
∑
i
=
1
n
α
i
y
i
=
0
max_{\alpha}\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_j \langle x_i,x_j \rangle \\ s.t.,0 \le \alpha_i \ge C,i=1,...n \\ \sum_{i=1}^{n}\alpha_iy_i=0
maxαi=1∑nαi−21i,j=1∑nαiαjyiyj⟨xi,xj⟩s.t.,0≤αi≥C,i=1,...ni=1∑nαiyi=0
可以看出和“硬间隔”的区别在于对偶变量的约束不同:
- 硬间隔约束为:
0 ≤ α i 0 \le \alpha_i 0≤αi - 软间隔约束为:
0 ≤ α i ≤ C 0 \le \alpha_i \le C 0≤αi≤C
软间隔SVM的KKT条件要求:
1.5. 数值优化(SMO)
对于之前的对偶问题:
m
a
x
α
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
k
(
x
i
,
x
j
)
s
.
t
.
,
α
i
≥
0
,
i
=
1
,
.
.
.
,
n
∑
i
=
1
n
α
i
y
i
=
0
max_{\alpha}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_j k(x_i,x_j) \\ \color{#000}{s.t., \alpha_i \ge 0,i=1,...,n} \\ \color{#000}{\sum_{i=1}^{n}\alpha_iy_i=0}
maxααi−21i,j=1∑nαiαjyiyjk(xi,xj)s.t.,αi≥0,i=1,...,ni=1∑nαiyi=0
对于变量 α \alpha α来说,这是一个二次函数。通常对于优化问题,可以使用梯度下降法来求解:梯度是函数值增幅最大的方向,因此只要沿着负梯度方向走,就能使得函数值减小的越大,从而期望迅速达到最小值。当然普通的梯度下降并不能保证达到最小值,因为很可能陷入一个局部极小值。不过对于二次规划问题极值只有一个。
还有另外一种叫做coordinate Descend的变种,它每次只选择一个维度,而降其它维度看成是常量。 从而原始的问题在这一步变成一个一元函数,然后对这个一元函数求最小值,如此反复轮换不同的维度进行迭代。Coordinate Descend 的主要用处在于那些原本很复杂,但是如果只限制在一维的情况下则变得很简单甚至可以直接求极值的情况。
然而这里还有一个问题就是约束条件的存在,其实如果没有约束条件的话,本身就是一个多元的 quadratic 问题,也是很好求解的。但是有了约束条件,结果让 Coordinate Descend 变得很尴尬了:比如我们假设 α 1 \alpha_1 α1 是变量,而 α 2 , . . . , α n \alpha_2,...,\alpha_n α2,...,αn 是固定值的话,那么其实没有什么好优化的了,直接根据第二个约束条件 ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha_iy_i=0 ∑i=1nαiyi=0, α 1 \alpha_1 α1 的值立即就可以定下来——事实上,迭代每个坐标维度,最后发现优化根本进行不下去,因为迭代了一轮之后会发现根本没有任何进展,一切都停留在初始值。
所以,SMO一次选取了两个坐标维度来进行优化。例如(不失一般性),我们假设现在选取
α
1
\alpha_1
α1 和
α
2
\alpha_2
α2 为变量,其余为常量,则根据约束条件我们有:
∑
i
=
1
n
α
i
y
i
=
0
  
⟹
  
α
2
=
1
y
2
(
∑
i
=
3
n
α
i
y
i
−
α
1
y
1
)
≜
y
2
(
K
−
α
1
y
1
)
\sum_{i=1}^{n}\alpha_iy_i=0 \implies\alpha_2=\frac{1}{y_2}(\sum_{i=3}^{n}\alpha_iy_i-\alpha_1y_1) \triangleq y_2(K-\alpha_1y_1)
i=1∑nαiyi=0⟹α2=y21(i=3∑nαiyi−α1y1)≜y2(K−α1y1)
其中用K记录固定值的和,由于
y
∈
{
−
1
,
+
1
}
y \in \{-1,+1\}
y∈{−1,+1},所以
y
2
y_2
y2和
1
y
2
\frac{1}{y_2}
y21完全一样。将这个式子带入原来的目标函数中,可以消去 α2 ,从而变成一个一元二次函数,可以直接很简单的求解。
注意一点的就是这里的约束条件,一个就是 α 1 \alpha_1 α1 本身需要满足 0 ≤ α 1 ≤ C 0 \le \alpha_1 \le C 0≤α1≤C ,然后由于 α 2 \alpha_2 α2 也要满足同样的约束,即:
0 ≤ y 2 ( K − α 1 y 1 ) ≤ C 0 \le y_2(K-\alpha_1y_1) \le C 0≤y2(K−α1y1)≤C
也可以得到 α 1 \alpha_1 α1 的一个可行区间,同 [0,C] 交集即可得到最终的可行区间。这个问题可以从图中得到一个直观的感觉。原本关于 α 1 \alpha_1 α1 和 α 2 \alpha_2 α2 的区间限制构成途中绿色的的方块,而另一个约束条件 α 1 y 1 + α 2 y 2 = K \alpha_1y_1 + \alpha_2y_2 = K α1y1+α2y2=K 实际上表示一条直线,两个集合的交集即是途中红颜色的线段,投影到 α 1 \alpha_1 α1 轴上所对应的区间即是 α 1 \alpha_1 α1 的取值范围,在这个区间内求二次函数的最大值即可完成 SMO 的一步迭代。
同 Coordinate Descent 一样,SMO 也会选取不同的两个 coordinate 维度进行优化,可以看出由于每一个迭代步骤实际上是一个可以直接求解的一元二次函数极值问题,所以求解非常高效。此外,SMO 也并不是依次或者随机地选取两个坐标维度,而是有一些启发式的策略来选取最优的两个坐标维度:SMO使选取的两变量所对应的样本之间的间隔最大。一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化。
1.6. 关于对偶
简单来说,对于任意一个带约束的优化,都可以写成如下形式:
m
i
n
f
0
(
x
)
s
.
t
.
,
f
i
(
x
)
≤
0
,
i
=
1
,
.
.
,
m
h
i
(
x
)
=
0
,
i
=
1
,
.
.
,
p
minf_0(x) \\ s.t.,f_i(x) \le 0,i=1,..,m \\ h_i(x)=0,i=1,..,p
minf0(x)s.t.,fi(x)≤0,i=1,..,mhi(x)=0,i=1,..,p
假如
f
i
(
x
)
f_i(x)
fi(x)全是凸函数,并且
h
i
(
x
)
h_i(x)
hi(x)全是仿射函数(即:形如
A
x
+
b
Ax+b
Ax+b的形式),那么这个问题就叫做凸优化问题。 凸优化极值唯一。这里,我们没有假设需要处理的优化问题是一个凸优化问题。
虽然约束条件能够帮助我们减小搜索空间,但是如果约束条件本身比较复杂的话,也不太好求解,因此我们希望把带约束的优化问题转化为无约束的优化问题。为此,定义拉格朗日函数如下:
L
(
x
,
λ
,
v
)
=
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
i
=
1
p
v
i
h
i
(
x
)
L(x,\lambda,v)=f_0(x)+\sum_{i=1}^{m}\lambda_if_i(x)+\sum_{i=1}^{p}v_ih_i(x)
L(x,λ,v)=f0(x)+i=1∑mλifi(x)+i=1∑pvihi(x)
它通过一些系数把约束条件和目标函数结合在一起。令拉格朗日函数针对
λ
和
v
\lambda和v
λ和v最大化:
z
(
x
)
=
m
a
x
λ
≥
0
,
v
L
(
x
,
λ
,
v
)
z(x)=max_{\lambda \ge 0,v}L(x,\lambda,v)
z(x)=maxλ≥0,vL(x,λ,v)
这里
λ
≥
0
\lambda \ge 0
λ≥0理解为向量
λ
\lambda
λ的每一个元素都非负即可。这个函数z(x)对于满足原始问题的约束条件的那些x来说,其值等于
f
0
(
x
)
f_0(x)
f0(x)。因为满足约束条件时,
h
i
(
x
)
=
0
h_i(x)=0
hi(x)=0,而
f
i
(
x
)
≤
0
f_i(x) \le 0
fi(x)≤0,并且要求
λ
≥
0
\lambda \ge 0
λ≥0,因此
λ
i
f
i
(
x
)
≤
0
\lambda_if_i(x) \le 0
λifi(x)≤0。所以最大值只能取0的时候得到,这时候原来的函数只剩下
f
0
(
x
)
f_0(x)
f0(x)。因此对于满足约束条件的x来说,
f
0
(
x
)
=
z
(
x
)
f_0(x)=z(x)
f0(x)=z(x)。这样以来,原始的带约束的优化问题其实等价于如下的无约束优化问题:
m
i
n
x
z
(
x
)
min_xz(x)
minxz(x)
因为如果原始问题有最优值,那么肯定是在满足约束条件的某个
x
∗
x^{*}
x∗ 取得,而对于所有满足约束条件的 x ,z(x) 和
f
0
(
x
)
f_0(x)
f0(x) 都是相等的。至于那些不满足约束条件的 x ,原始问题是无法取到的,否则极值问题无解。很容易验证对于这些不满足约束条件的 x 有
z
(
x
)
=
∞
z(x)= \infty
z(x)=∞,这也和原始问题是一致的,因为求最小值得到无穷大可以和“无解”看作是相容的。
到这里,我们成功把带约束问题转化为了无约束问题,不过这其实只是一个形式上的重写,并没有什么本质上的改变。我们只是把原来的问题通过拉格朗日函数写作了如下形式:
m
i
n
x
m
a
x
λ
≥
0
,
v
L
(
x
,
λ
,
v
)
min_xmax_{\lambda \ge 0,v}L(x,\lambda,v)
minxmaxλ≥0,vL(x,λ,v)
这个问题(或者说原始的带约束的形式)称作原始问题。相对应的还有一个对偶问题,其形式非常类似,只是把 min 和 max 交换了一下:
m
a
x
λ
≥
0
,
v
m
i
n
x
L
(
x
,
λ
,
v
)
max_{\lambda \ge 0,v}min_xL(x,\lambda,v)
maxλ≥0,vminxL(x,λ,v)
交换之后的 dual problem 和原来的 primal problem 并不相等。和刚才的 z(x) 类似,我们也用一个记号来表示内层的这个函数,记:
g
(
λ
,
v
)
=
m
i
n
x
L
(
x
,
λ
,
v
)
g(\lambda,v)=min_xL(x,\lambda,v)
g(λ,v)=minxL(x,λ,v)
成
g
(
λ
,
v
)
g(\lambda,v)
g(λ,v)为拉格朗日对偶函数。g是原始问题的一个下界。 如果原始问题的最小值记为
p
∗
p^{*}
p∗,那么对于所有的
λ
≥
0
和
v
\lambda \ge 0 和v
λ≥0和v,我们有:
g
(
λ
,
v
)
≤
p
∗
g(\lambda,v) \le p^{*}
g(λ,v)≤p∗
因为对于极值点
x
∗
x^{*}
x∗,注意到
λ
≥
0
\lambda \ge 0
λ≥0,我们总是有:
∑
i
=
1
m
λ
i
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
h
i
(
x
∗
)
≤
0
\sum_{i=1}^{m}\lambda_if_i(x^{*})+\sum_{i=1}^{p}v_ih_i(x^{*}) \le 0
i=1∑mλifi(x∗)+i=1∑pvihi(x∗)≤0
因此
L
(
x
∗
,
λ
,
v
)
=
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
i
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
h
i
(
x
∗
)
≤
f
0
(
x
)
L(x^{*},\lambda,v)=f_0(x^{*})+\sum_{i=1}^{m}\lambda_if_i(x^{*})+\sum_{i=1}^{p}v_ih_i(x^{*}) \le f_0(x)
L(x∗,λ,v)=f0(x∗)+i=1∑mλifi(x∗)+i=1∑pvihi(x∗)≤f0(x)
于是
g
(
λ
,
v
)
=
m
i
n
x
L
(
x
,
λ
,
v
)
≤
L
(
x
∗
,
λ
,
v
)
≤
f
0
(
x
∗
)
=
p
∗
g(\lambda,v)=min_xL(x,\lambda,v) \le L(x^{*},\lambda,v) \le f_0(x^{*})=p^{*}
g(λ,v)=minxL(x,λ,v)≤L(x∗,λ,v)≤f0(x∗)=p∗
这样一来就满足了g的下界性质,于是:
m
a
x
λ
≥
0
,
v
g
(
λ
,
v
)
max_{\lambda \ge 0,v}g(\lambda,v)
maxλ≥0,vg(λ,v)
实际上就是最大的下界。得到下界之后,自然希望得tmp到最好的下界,也就是最大的那一个(因为它离要逼近的值最近)。记对偶问题的最优解为
d
∗
d^{*}
d∗的话,根据上面的推导,可以得到如下性质:
d
∗
≤
p
∗
d^{*} \le p^{*}
d∗≤p∗
这个性质叫作弱对偶,对于所有的优化问题都成立。 其中
p
∗
−
d
∗
p^{*}-d^{*}
p∗−d∗被称作对偶间距。无论原始问题是什么形式,它的对偶问题总是一个凸优化问题----如果极值存在,则唯一。 这样一来对于难以求解的原始问题,可以通过求出它的对偶问题,通过优化对偶问题来得到原始问题的下界估计。
既然有弱对偶,那么就应该有强对偶,所谓强对偶就是:
d
∗
=
p
∗
d^{*}=p^*
d∗=p∗
强对偶成立的情况下,我们可以通过求解对偶问题来优化原始问题,在 SVM 中我们就是这样做的。当然并不是所有的问题都能满足强对偶,在讲 SVM 的时候我们直接假定了强对偶的成立,这里我们就来提一下强对偶成立的条件。
简单介绍slater条件和KKT条件。
slater条件是指存在严格满足约束条件的点x,这里“严格”是指 f i ( x ) ≤ 0 f_i(x) \le 0 fi(x)≤0中的小于等于号要严格取到“小于号”。
我们有:如果原始问题是凸的,并且满足slater条件,那么强对偶成立。这只是强对偶成立的一种情况,而不是所有情况。 例如,对于某些非凸的问题,强对偶也成立。这里我们不妨回顾一下 SVM 的原始问题,那是一个 凸优化问题,而 Slater 条件实际上在这里就等价于是存在这样的一个超平面将数据分隔开来,亦即是“数据是可分的”。
下面来看看强对偶成立时的一些性质。假设
x
∗
x^*
x∗和
(
λ
∗
,
v
∗
)
(\lambda^*,v^*)
(λ∗,v∗)分别是原始问题和对偶问题的极值点,相应的极值为
p
∗
,
d
∗
p*, d^*
p∗,d∗,首先
p
∗
=
d
∗
p^*=d^*
p∗=d∗,此时我们可以得到:
f
0
(
x
∗
)
=
g
(
λ
∗
,
v
∗
)
=
m
i
n
x
(
f
0
(
x
)
+
∑
i
=
1
m
λ
i
∗
f
i
(
x
)
+
∑
i
=
1
p
v
i
∗
h
i
(
x
)
)
≤
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
i
∗
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
h
i
(
x
∗
)
≤
f
0
(
x
∗
)
f_0(x^*)=g(\lambda^*,v^*) \\ =min_x(f_0(x)+\sum_{i=1}^{m}\lambda_i^*f_i(x)+\sum_{i=1}^{p}v_i^*h_i(x)) \\ \le f_0(x^*)+\sum_{i=1}^{m}\lambda_i^*f_i(x^*)+\sum_{i=1}^{p}v_i^*h_i(x^*) \\ \le f_0(x^*)
f0(x∗)=g(λ∗,v∗)=minx(f0(x)+i=1∑mλi∗fi(x)+i=1∑pvi∗hi(x))≤f0(x∗)+i=1∑mλi∗fi(x∗)+i=1∑pvi∗hi(x∗)≤f0(x∗)
由于两头是相等的,所以上式中的不等号全部都可以换成等号。由第一个不等号的等号成立,可以
x
∗
x^*
x∗是
L
(
x
,
λ
∗
,
v
∗
)
L(x,\lambda^*,v^*)
L(x,λ∗,v∗)的一个极值点,因此可以知道
L
(
x
,
λ
∗
,
v
∗
)
L(x,\lambda^*,v^*)
L(x,λ∗,v∗)在
x
∗
x^*
x∗处的梯度为0,亦即:
∇
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
∗
∇
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
∇
h
i
(
x
∗
)
=
0
\nabla f_0(x^*)+\sum_{i=1}^{m}\lambda^* \nabla f_i(x^*)+\sum_{i=1}^{p}v_i^*\nabla h_i(x^*) = 0
∇f0(x∗)+i=1∑mλ∗∇fi(x∗)+i=1∑pvi∗∇hi(x∗)=0
此外,由第二个不等式及
λ
i
f
i
(
x
∗
)
\lambda_if_i(x^*)
λifi(x∗)非正,因此有:
λ
i
f
i
(
x
∗
)
=
0
,
i
=
1
,
.
.
.
,
m
\lambda_if_i(x^*) = 0,i=1,...,m
λifi(x∗)=0,i=1,...,m
这个条件叫做互补松弛性。 将所有条件写到一起就得到KKT条件:
f
i
(
x
∗
)
≤
0
,
i
=
1
,
.
.
.
,
m
h
i
(
x
∗
)
=
0
,
i
=
1
,
.
.
.
,
p
λ
i
∗
≥
0
,
i
=
1
,
.
.
.
,
m
λ
i
∗
f
i
(
x
∗
)
=
0
,
i
=
1
,
.
.
.
,
m
∇
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
∗
∇
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
∇
h
i
(
x
∗
)
=
0
f_i(x^*) \le 0 , i=1,...,m \\ h_i(x^*) = 0, i=1,...,p \\ \lambda_i^* \ge 0,i=1,...,m \\ \lambda_i^*f_i(x^*)=0,i=1,...,m \\ \nabla f_0(x^*)+\sum_{i=1}^{m}\lambda^* \nabla f_i(x^*)+\sum_{i=1}^{p}v_i^*\nabla h_i(x^*) = 0
fi(x∗)≤0,i=1,...,mhi(x∗)=0,i=1,...,pλi∗≥0,i=1,...,mλi∗fi(x∗)=0,i=1,...,m∇f0(x∗)+i=1∑mλ∗∇fi(x∗)+i=1∑pvi∗∇hi(x∗)=0
任何满足强对偶(不一定由slater条件得到,也不一定要求是凸优化问题)的问题都满足KKT条件。即KKT是强对偶的一个必要条件。当原始问题是凸优化问题的时候,KKT条件升级为充要条件。 换句话说,如果原始问题是一个凸优化问题,且存在
x
~
\tilde{x}
x~和
(
λ
~
,
v
~
)
(\tilde{\lambda},\tilde{v})
(λ~,v~)满足 KKT 条件,那么它们分别是原始问题和对偶问题的极值点并且强对偶成立成立。 其证明也比较简单,首先原始问题是凸优化问题的话,
g
(
λ
,
v
)
=
m
i
n
x
L
(
x
,
λ
,
v
)
g(\lambda,v)=min_xL(x,\lambda,v)
g(λ,v)=minxL(x,λ,v)的求解对每一组固定的
(
λ
,
v
)
(\lambda,v)
(λ,v)来说也是一个凸优化问题,由 KKT 条件的最后一个式子,知道
x
~
\tilde{x}
x~是
m
i
n
x
x
,
λ
~
,
v
~
min_x{x,\tilde{\lambda},\tilde{v}}
minxx,λ~,v~的极值点(如果不是凸优化问题,则不一定能推出来),亦即:
g
(
λ
~
,
v
~
)
=
m
i
n
x
L
(
x
,
λ
~
,
v
~
)
=
L
(
x
~
,
λ
~
,
v
~
)
=
f
0
(
x
~
)
+
∑
i
=
1
m
λ
~
i
∗
f
i
(
x
~
)
+
∑
i
=
1
p
v
~
i
∗
h
i
(
x
~
)
=
f
0
(
x
~
)
g(\tilde{\lambda},\tilde{v})=min_xL(x,\tilde{\lambda},\tilde{v}) \\ =L(\tilde{x},\tilde{\lambda},\tilde{v}) \\ =f_0(\tilde{x})+\sum_{i=1}^{m}\tilde{\lambda}_i^*f_i(\tilde{x})+\sum_{i=1}^{p}\tilde{v}_i^*h_i(\tilde{x}) \\ =f_0(\tilde{x})
g(λ~,v~)=minxL(x,λ~,v~)=L(x~,λ~,v~)=f0(x~)+i=1∑mλ~i∗fi(x~)+i=1∑pv~i∗hi(x~)=f0(x~)
最后一个式子是根据 KKT 条件的第二和第四个条件得到。由于g是
f
0
f_0
f0的下界,这样一来,就证明了对偶间距为零,也就是说强对偶成立。
1.7. 以优化损失函数的角度看软间隔SVM
对于线性支持向量机学习来说,其模型为分离超平面
w
∗
x
+
b
∗
=
0
w^*x+b^*=0
w∗x+b∗=0以及决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
∗
)
f(x)=sign(w^*x+b^*)
f(x)=sign(w∗x+b∗),其学习策略为软间隔最大化,学习算法为凸二次规划。
另一种解释为,最小化以下目标函数:
∑
i
=
1
N
[
1
−
y
i
(
w
x
i
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
\sum_{i=1}^{N}[1-y_i(wx_i+b)]_++\lambda||w||^2
i=1∑N[1−yi(wxi+b)]++λ∣∣w∣∣2
目标函数第一项是经验损失或经验风险,函数
L
(
y
(
w
x
+
b
)
)
=
[
1
−
y
(
w
x
+
b
)
]
+
L(y(wx+b))=[1-y(wx+b)]_+
L(y(wx+b))=[1−y(wx+b)]+
称为hinge损失。下标“+”表示中括号内大于0时取正,小于0时取0。
也就是说,当样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)被正确分类且函数间隔
y
i
(
w
x
i
+
b
)
y_i(wx_i+b)
yi(wxi+b)大于1时,损失为0,否则损失为
1
−
y
i
(
w
x
i
+
b
)
1-y_i(wx_i+b)
1−yi(wxi+b)。对于二分类问题,一般用0,1损失度量,但是0,1损失非凸,非连续,数学性质不好,因此时候hinge损失替代。此外还有指数损失、对率损失,他们都是0,1损失的上界函数。
SVM使用hinge损失的原因:
- 1、可以实现软间隔分类(损失函数都可以做到)
- 2、可以忽略掉普通样本,从而在使用少量样本的情况下确定超平面