根据前文SVM算法(四)接近线性可分的SVM求解,通过软边界的设定以及拉格朗日函数对偶问题的求解,同时引入核函数,最终的分隔面求解问题变成了如下拉格朗日乘子
α
\alpha
α的二次规划问题:
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
.
0
≤
α
≤
C
∑
i
=
1
n
α
i
y
i
=
0
\begin{aligned}&\min_\alpha \frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum\limits_{i=1}^n\alpha_i\\&s.t.\quad 0\le\alpha\le C\\&\qquad \sum_{i=1}^n\alpha_iy_i=0 \end{aligned}
αmin21i=1∑nj=1∑nαiαjyiyjK(xi,xj)−i=1∑nαis.t.0≤α≤Ci=1∑nαiyi=0求解二次规划问题有多种方法,本文介绍常用的SMO算法(序列最小化优化,Sequential Minimal Optimization),其优点主要体现在:每次对一组
α
i
,
α
j
\alpha_i,\alpha_j
αi,αj进行迭代优化,可以减小计算量。
一、一组 α i , α j \alpha_i,\alpha_j αi,αj的二次优化问题
对偶问题中存在
n
n
n个未知量
α
\alpha
α(即拉格朗日乘子,数量等同于数据量),目标解应能够满足KKT条件,当然满足KKT条件的一组
α
\alpha
α即为目标解。根据SVM算法(四)接近线性可分的SVM求解中对各类点与分隔面的关系论述,存在如下三种情况,分别对应于错分点(需通过软件软间隔修正)、支持向量和远离分割面点(划分正确):
α
i
=
C
⇔
y
i
(
w
x
i
+
b
)
≤
1
0
<
α
i
<
C
⇔
y
i
(
w
x
i
+
b
)
=
1
α
i
=
0
⇔
y
i
(
w
x
i
+
b
)
≥
1
\begin{aligned}&\alpha_i=C \Leftrightarrow y_i(wx_i+b)\le1\\& 0<\alpha_i<C \Leftrightarrow y_i(wx_i+b)=1\\&\alpha_i=0 \Leftrightarrow y_i(wx_i+b)\ge1\end{aligned}
αi=C⇔yi(wxi+b)≤10<αi<C⇔yi(wxi+b)=1αi=0⇔yi(wxi+b)≥1我们难以一次性求出满足适合于上述条件的一组
α
\alpha
α,根据问题分解的思想,我们假设每次只变动两个变量
α
i
,
α
j
\alpha_i,\alpha_j
αi,αj,固定住其它变量,通过这种迭代,可以使目标函数不断变小,从而求得满足KKT条件的全部
α
\alpha
α,使得目标函数的最小值。
根据这种思想,不妨只探讨变量为
α
1
\alpha_1
α1和
α
2
\alpha_2
α2情形,此时最小化问题可改写为:
min
α
1
,
α
2
1
2
α
1
2
K
11
+
1
2
α
2
2
K
22
+
α
1
y
1
∑
i
=
3
n
α
i
y
i
K
1
i
+
α
2
y
2
∑
i
=
3
n
α
i
y
i
K
2
i
−
α
1
−
α
2
s
.
t
.
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
n
α
i
y
i
=
ζ
0
≤
α
1
≤
C
,
0
≤
α
2
≤
C
\begin{aligned}&\min_{\alpha_1,\alpha_2}\frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1y_1\sum_{i=3}^n\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{i=3}^n\alpha_iy_iK_{2i}-\alpha_1-\alpha_2\\&s.t.\quad\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^n\alpha_iy_i=\zeta\\&\qquad0\le\alpha_1\le C,0\le\alpha_2\le C\end{aligned}
α1,α2min21α12K11+21α22K22+α1y1i=3∑nαiyiK1i+α2y2i=3∑nαiyiK2i−α1−α2s.t.α1y1+α2y2=−i=3∑nαiyi=ζ0≤α1≤C,0≤α2≤C其中
K
i
j
K_{ij}
Kij表示
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj)暂不考虑可行域,将
α
1
=
y
1
(
ζ
−
α
2
y
2
)
\alpha_1=y_1(\zeta-\alpha_2y_2)
α1=y1(ζ−α2y2)代入目标函数,可得:
W
=
1
2
K
11
(
ζ
−
α
2
y
2
)
2
+
1
2
K
22
α
2
2
+
(
ζ
−
α
2
y
2
)
α
2
y
2
K
12
−
y
1
(
ζ
−
α
2
y
2
)
−
α
2
+
∑
i
=
3
n
(
ζ
−
α
2
y
2
)
α
i
y
i
K
1
i
+
∑
i
=
3
n
α
2
y
2
α
i
y
i
K
2
i
W=\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{22}\alpha_2^2+(\zeta-\alpha_2y_2)\alpha_2y_2K_{12}-y_1(\zeta-\alpha_2y_2)-\alpha_2+\sum_{i=3}^n(\zeta-\alpha_2y_2)\alpha_iy_iK_{1i}+\sum_{i=3}^n\alpha_2y_2\alpha_iy_iK_{2i}
W=21K11(ζ−α2y2)2+21K22α22+(ζ−α2y2)α2y2K12−y1(ζ−α2y2)−α2+i=3∑n(ζ−α2y2)αiyiK1i+i=3∑nα2y2αiyiK2i为方便推导,不妨令:
g
(
x
j
)
=
∑
i
=
1
n
α
i
y
i
K
i
j
+
b
v
(
x
j
)
=
∑
i
=
3
n
α
i
y
i
K
i
j
=
g
(
x
j
)
−
α
1
y
1
K
1
j
−
α
2
y
2
K
2
j
−
b
\begin{aligned}&g(x_j)=\sum_{i=1}^n\alpha_iy_iK_{ij}+b\\&v(x_j)=\sum_{i=3}^n\alpha_iy_iK_{ij}=g(x_j)-\alpha_1y_1K_{1j}-\alpha_2y_2K_{2j}-b\end{aligned}
g(xj)=i=1∑nαiyiKij+bv(xj)=i=3∑nαiyiKij=g(xj)−α1y1K1j−α2y2K2j−b注意到
g
(
x
i
)
g(x_i)
g(xi)即为根据参数
α
,
b
\alpha,b
α,b得到的
x
i
x_i
xi的预测值(未加符号函数,可理解成函数距离),因此目标函数可进一步写成:
W
=
1
2
K
11
(
ζ
−
α
2
y
2
)
2
+
1
2
K
22
α
2
2
+
(
ζ
−
α
2
y
2
)
α
2
y
2
K
12
−
y
1
(
ζ
−
α
2
y
2
)
−
α
2
+
(
ζ
−
α
2
y
2
)
v
1
+
α
2
y
2
v
2
W=\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{22}\alpha_2^2+(\zeta-\alpha_2y_2)\alpha_2y_2K_{12}-y_1(\zeta-\alpha_2y_2)-\alpha_2+(\zeta-\alpha_2y_2)v_1+\alpha_2y_2v_2
W=21K11(ζ−α2y2)2+21K22α22+(ζ−α2y2)α2y2K12−y1(ζ−α2y2)−α2+(ζ−α2y2)v1+α2y2v2
这是关于
α
2
\alpha_2
α2单变量的二次函数,通过令其导数为0求得最值:
∂
W
∂
α
2
=
α
2
(
K
11
+
K
22
−
2
K
12
)
−
ζ
y
2
K
11
+
ζ
y
2
K
12
+
y
1
y
2
−
1
−
y
2
v
1
+
y
2
v
2
=
0
\frac{\partial W}{\partial \alpha_2}=\alpha_2(K_{11}+K_{22}-2K_{12})-\zeta y_2K_{11}+\zeta y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2=0
∂α2∂W=α2(K11+K22−2K12)−ζy2K11+ζy2K12+y1y2−1−y2v1+y2v2=0将
v
1
,
v
2
v_1,v_2
v1,v2分别用
g
(
x
1
)
,
g
(
x
2
)
g(x_1),g(x_2)
g(x1),g(x2)表示,以及
y
2
2
=
1
y_2^2=1
y22=1可得
(
K
11
+
K
22
−
2
K
12
)
α
2
=
y
2
(
ζ
K
11
−
ζ
K
12
−
y
1
+
y
2
+
v
1
−
v
2
)
=
y
2
[
ζ
K
11
−
ζ
K
12
−
y
1
+
y
2
+
(
g
(
x
1
)
−
α
1
y
1
K
11
−
α
2
y
2
K
12
−
b
)
−
(
g
(
x
2
)
−
α
1
y
1
K
12
−
α
2
y
2
K
22
−
b
)
]
\begin{aligned}(K_{11}+K_{22}-2K_{12})\alpha_2&=y_2(\zeta K_{11}-\zeta K_{12}-y_1+y_2+v_1-v_2)\\&=y_2[\zeta K_{11}-\zeta K_{12}-y_1+y_2+(g(x_1)-\alpha_1y_1K_{11}-\alpha_2y_2K_{12}-b)-(g(x_2)-\alpha_1y_1K_{12}-\alpha_2y_2K_{22}-b)]\end{aligned}
(K11+K22−2K12)α2=y2(ζK11−ζK12−y1+y2+v1−v2)=y2[ζK11−ζK12−y1+y2+(g(x1)−α1y1K11−α2y2K12−b)−(g(x2)−α1y1K12−α2y2K22−b)]注意到,在上式等号左端项的
α
2
\alpha_2
α2为更新后的目标参数(用
α
2
n
e
w
\alpha_2^{new}
α2new表示),而等号右端项中由
ζ
,
v
\zeta, v
ζ,v得到的
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2均为预先固定,即更新前的参数值(用
α
2
o
l
d
\alpha_2^{old}
α2old表示)。
同时,令
E
i
E_i
Ei表示预测函数距离与真实
y
i
y_i
yi的差,即:
E
i
=
g
(
x
i
)
−
y
i
E_i=g(x_i)-y_i
Ei=g(xi)−yi因此,导数为0的式子可简化为:
(
K
11
+
K
22
−
2
K
12
)
α
2
n
e
w
=
(
K
11
+
K
22
−
2
K
12
)
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
(K_{11}+K_{22}-2K_{12})\alpha_2^{new}=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2)
(K11+K22−2K12)α2new=(K11+K22−2K12)α2old+y2(E1−E2)这即为
α
2
\alpha_2
α2的迭代公式,根据约束条件
α
1
y
1
+
α
2
y
2
=
ζ
\alpha_1y_1+\alpha_2y_2=\zeta
α1y1+α2y2=ζ,可同步更新对应的
α
1
\alpha_1
α1。
二、带约束最小问题的求解
在上面的推导过程中,还存在两点漏洞需要解决:
(1)如何保证经过这样迭代的目标
W
W
W变小?
(2)
α
2
\alpha_2
α2在求解中忽略了可行域的影响。
对于问题(1),注意到
W
W
W关于
α
2
\alpha_2
α2的二次项系数为
K
11
+
K
22
−
2
K
12
K_{11}+K_{22}-2K_{12}
K11+K22−2K12,假设对应核函数
K
K
K的隐式特征空间变换函数为
ϕ
\phi
ϕ,则该系数可写成:
ϕ
(
x
1
)
ϕ
(
x
1
)
+
ϕ
(
x
2
)
ϕ
(
x
2
)
−
2
ϕ
(
x
1
)
ϕ
(
x
2
)
=
∣
∣
ϕ
(
x
1
)
−
ϕ
(
x
2
)
∣
∣
2
≥
0
\phi(x_1)\phi(x_1)+\phi(x_2)\phi(x_2)-2\phi(x_1)\phi(x_2)=||\phi(x_1)-\phi(x_2)||^2\ge0
ϕ(x1)ϕ(x1)+ϕ(x2)ϕ(x2)−2ϕ(x1)ϕ(x2)=∣∣ϕ(x1)−ϕ(x2)∣∣2≥0非特殊情况下,
ϕ
(
x
1
)
≠
ϕ
(
x
2
)
\phi(x_1)\ne \phi(x_2)
ϕ(x1)=ϕ(x2),这意味着目标函数
W
W
W为开口向上的二次函数,存在最小值。通过令梯度为0可以保证目标函数变小。
令
η
=
K
11
+
K
22
−
2
K
12
\eta=K_{11}+K_{22}-2K_{12}
η=K11+K22−2K12,则
α
2
\alpha_2
α2的迭代公式可改写为:
α
2
n
e
w
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
α2new=α2old+ηy2(E1−E2)
对于问题(2),因为
α
1
y
1
+
α
2
y
2
=
ζ
\alpha_1y_1+\alpha_2y_2=\zeta
α1y1+α2y2=ζ,且
0
≤
α
≤
C
0\le\alpha\le C
0≤α≤C,显然
α
2
\alpha_2
α2并不能任意取值。因为
y
1
,
y
2
∈
{
+
1
,
−
1
}
y_1,y_2\in\{+1,-1\}
y1,y2∈{+1,−1},所里存在两种情况:
y
1
=
y
2
y_1=y_2
y1=y2和
y
1
≠
y
2
y_1\ne y_2
y1=y2。
又考虑到等式的对称性,不妨令这两种情况分别对应于:
α
1
−
α
2
=
ζ
α
1
+
α
2
=
ζ
\begin{aligned}\alpha_1-\alpha_2=\zeta\\\alpha_1+\alpha_2=\zeta\end{aligned}
α1−α2=ζα1+α2=ζ分别用二维平面表示约束条件:
对于
α
1
−
α
2
=
ζ
\alpha_1-\alpha_2=\zeta
α1−α2=ζ:
如果
ζ
>
0
\zeta>0
ζ>0,即
α
1
>
α
2
\alpha_1>\alpha_2
α1>α2,新的
α
2
\alpha_2
α2约束边界为
[
0
,
C
−
ζ
]
[0, C-\zeta]
[0,C−ζ];
如果
ζ
<
0
\zeta<0
ζ<0,即
α
1
<
α
2
\alpha_1<\alpha_2
α1<α2,新的
α
2
\alpha_2
α2约束边界为
[
−
ζ
,
C
]
[-\zeta, C]
[−ζ,C]
将两者合并,边界为
[
max
(
0
,
−
ζ
)
,
min
(
C
,
C
−
ζ
)
]
[\max(0, -\zeta), \min(C,C-\zeta)]
[max(0,−ζ),min(C,C−ζ)],用原始的
α
1
o
l
d
,
α
2
o
l
d
\alpha_1^{old},\alpha_2^{old}
α1old,α2old表示,即为:
L
=
max
(
0
,
α
2
o
l
d
−
α
1
o
l
d
)
H
=
min
(
C
,
C
+
α
2
o
l
d
−
α
1
o
l
d
)
\begin{aligned}&L=\max(0,\alpha_2^{old}-\alpha_1^{old})\\&H=\min(C,C+\alpha_2^{old}-\alpha_1^{old})\end{aligned}
L=max(0,α2old−α1old)H=min(C,C+α2old−α1old)
对于
α
1
+
α
2
=
ζ
\alpha_1+\alpha_2=\zeta
α1+α2=ζ:
如果
ζ
<
C
\zeta<C
ζ<C,新的
α
2
\alpha_2
α2约束边界为
[
0
,
ζ
]
[0, \zeta]
[0,ζ];
如果
ζ
>
C
\zeta>C
ζ>C,新的
α
2
\alpha_2
α2约束边界为
[
ζ
−
C
,
C
]
[\zeta-C, C]
[ζ−C,C];
将两者合并,边界为
[
max
(
0
,
ζ
−
C
)
,
min
(
C
,
ζ
)
]
[\max(0, \zeta-C), \min(C,\zeta)]
[max(0,ζ−C),min(C,ζ)],
用原始的
α
1
o
l
d
,
α
2
o
l
d
\alpha_1^{old},\alpha_2^{old}
α1old,α2old表示,即为:
L
=
max
(
0
,
α
2
o
l
d
+
α
1
o
l
d
−
C
)
H
=
min
(
C
,
α
2
o
l
d
+
α
1
o
l
d
)
\begin{aligned}&L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C)\\&H=\min(C,\alpha_2^{old}+\alpha_1^{old})\end{aligned}
L=max(0,α2old+α1old−C)H=min(C,α2old+α1old)
因此,在求得无约束的最优解
α
2
n
e
w
,
u
n
c
\alpha_2^{new,unc}
α2new,unc,后需要根据约束边界进行裁剪。经裁剪后的最优解是:
α
2
n
e
w
=
{
H
,
α
2
n
e
w
,
u
n
c
>
H
α
2
n
e
w
,
u
n
c
,
L
≤
α
2
n
e
w
,
u
n
c
≤
H
L
,
α
2
n
e
w
,
u
n
c
<
L
\alpha_2^{new}=\begin{cases}H,\alpha_2^{new,unc}>H\\\alpha_2^{new,unc},L\le \alpha_2^{new,unc} \le H\\ L,\alpha_2^{new,unc}<L\end{cases}
α2new=⎩⎪⎨⎪⎧H,α2new,unc>Hα2new,unc,L≤α2new,unc≤HL,α2new,unc<L
三、SMO算法流程
基于上述的推导,完整的SMO算法流程如下:
1)选取一组初值
α
i
(
0
)
\alpha_i^{(0)}
αi(0)(一般取0),上标
k
k
k表示迭代轮数,对于初值即
k
=
0
k=0
k=0
2)选择一组需要更新的
α
1
(
k
)
,
α
2
(
k
)
\alpha_1^{(k)},\alpha_2^{(k)}
α1(k),α2(k)。那如何选择呢?其包含外循环寻找
α
1
(
k
)
\alpha_1^{(k)}
α1(k)和内循环寻找
α
2
(
k
)
\alpha_2^{(k)}
α2(k)两个阶段。
外循环搜索
α
1
(
k
)
\alpha_1^{(k)}
α1(k)。注意到最优解
α
∗
\alpha^*
α∗满足KKT条件,无需更新。那意味着需要迭代的
α
i
\alpha_i
αi必然违背KKT条件。因此我们可以按照支持向量点(对应
0
<
α
i
<
C
0<\alpha_i <C
0<αi<C)——>所有其余点的顺序选出违背KKT条件最严重的一组点作为
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1),对应的拉格朗日乘子即为
α
1
(
k
)
\alpha_1^{(k)}
α1(k)。
内循环搜索
α
2
(
k
)
\alpha_2^{(k)}
α2(k)。注意到
α
2
n
e
w
=
α
2
o
l
d
+
y
2
(
E
1
−
E
2
)
η
\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
α2new=α2old+ηy2(E1−E2),为使得迭代加速,希望
α
2
\alpha_2
α2变换程度大。换言之,希望
y
2
(
E
1
−
E
2
)
η
\frac{y_2(E_1-E_2)}{\eta}
ηy2(E1−E2)的绝对值大。一种简单的做法是,选择与
E
1
E_1
E1符号相反、且绝对值最大的
E
2
E_2
E2对应的点作为
(
x
2
,
y
2
)
(x_2,y_2)
(x2,y2),对应的拉格朗日乘子即为
α
2
(
k
)
\alpha_2^{(k)}
α2(k)。
3)按照上文的解析方法,得到更新的后的
α
1
(
k
+
1
)
,
α
2
(
k
+
1
)
\alpha_1^{(k+1)},\alpha_2^{(k+1)}
α1(k+1),α2(k+1)
4)如果所有的
α
i
(
k
+
1
)
\alpha_i^{(k+1)}
αi(k+1)均满足约束条件和KKT条件,即满足:
∑
i
=
1
n
α
i
(
k
+
1
)
y
i
=
0
0
≤
α
i
(
k
+
1
)
≤
C
y
i
∗
g
(
x
i
)
=
{
≥
1
,
i
f
α
i
=
0
=
1
,
i
f
0
<
α
i
<
C
≤
1
,
i
f
α
i
=
C
\begin{aligned}&\sum_{i=1}^n\alpha_i^{(k+1)}y_i=0\\&0\le\alpha_i^{(k+1)}\le C\\&y_i*g(x_i)=\begin{cases}\ge1,if \quad \alpha_i=0\\=1, if \quad 0<\alpha_i<C\\\le1,if \quad \alpha_i=C\end{cases}\end{aligned}
i=1∑nαi(k+1)yi=00≤αi(k+1)≤Cyi∗g(xi)=⎩⎪⎨⎪⎧≥1,ifαi=0=1,if0<αi<C≤1,ifαi=C其中
g
(
x
i
)
g(x_i)
g(xi)为根据当前
α
(
k
)
\alpha^{(k)}
α(k)得到的预测的函数间距,即
g
(
x
i
)
=
∑
j
=
1
n
α
j
(
k
+
1
)
y
j
K
(
x
j
,
x
i
)
+
b
g(x_i)=\sum_{j=1}^n\alpha_j^{{(k+1)}}y_jK(x_j,x_i)+b
g(xi)=j=1∑nαj(k+1)yjK(xj,xi)+b则取得目标最优的一组
α
∗
\alpha^*
α∗
否则,转向步骤2)进行下一轮
α
(
k
+
1
)
\alpha^{(k+1)}
α(k+1)的筛选和迭代。
四、小结
SMO算法是求解SVM对偶问题(二次规划问题)的一种快速迭代算法。其将原始
n
n
n个拉格朗日乘子的最优化求解分解为一组
α
1
,
α
2
\alpha_1,\alpha_2
α1,α2的子问题进行逐个解决,最终求得满足约束条件和KKT条件的最优解。
这种将问题分解为子问题,进行局部解决和迭代的思想值得深刻理解和掌握。