目录
1.支持向量
1.1 线性可分
首先我们来了解下什么是线性可分。
在二维空间桑,两类点被一条直线完全分开叫线性可分。
1.2 最大间隔超平面
从二维扩展到多维空间中,将
D
0
D_0
D0和
D
1
D_1
D1完全正确地划分开得
w
x
+
b
=
0
wx+b=0
wx+b=0就成为了一个超平面。
为了使这个超平面更具有鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开得超平面,也称之为最大间隔超平面。
- 两类样本分别分割在该超平面得两侧
- 两侧距离超平面最近的样本点到超平面的距离被最大化了
1.3 支持向量
样本中距离超平面最近的一些点,这些点就叫做支持向量。
1.4 SVM最优化问题
SVM想要找到各类样本点到超平面的距离最远,就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:
w
T
x
+
b
=
0
w^{T} x+b=0
wTx+b=0二维空间点
(
x
,
y
)
(x,y)
(x,y)到直线
A
x
+
B
y
+
C
=
0
Ax+By+C=0
Ax+By+C=0的距离公式是:
∣
A
x
+
B
y
+
C
∣
A
2
+
B
2
\frac{|A x+B y+C|}{\sqrt{A^{2}+B^{2}}}
A2+B2∣Ax+By+C∣扩展到n维空间后,点
x
=
(
x
1
,
x
2
,
x
3
.
.
.
x
n
)
x=(x_1,x_2,x_3...x_n)
x=(x1,x2,x3...xn)到直线
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的距离为:
∣
w
T
x
+
b
∣
∥
w
∥
\frac{\left|w^{T} x+b\right|}{\|w\|}
∥w∥∣∣wTx+b∣∣其中
∥
w
∥
=
w
1
2
+
…
w
n
2
\|w\|=\sqrt{w_{1}^{2}+\ldots w_{n}^{2}}
∥w∥=w12+…wn2。
如图所示,根据支持向量的定义我们知道,支持向量到超平面的距离为d,其他点到超平面的距离大于d。
于是我们有这样的一个公式:
{
w
T
x
+
b
∥
w
∥
≥
d
y
=
1
w
T
x
+
b
∥
w
∥
≤
−
d
y
=
−
1
\left\{\begin{array}{l}\frac{w^{T} x+b}{\|w\|} \geq d \quad y=1 \\ \frac{w^{T} x+b}{\|w\|} \leq-d \quad y=-1\end{array}\right.
{∥w∥wTx+b≥dy=1∥w∥wTx+b≤−dy=−1稍作转化可以得到:
{
w
T
x
+
b
∥
w
∥
d
≥
1
y
=
1
w
T
x
+
b
∥
w
∥
d
≤
−
1
y
=
−
1
\left\{\begin{array}{l}\frac{w^{T} x+b}{\|w\| d} \geq 1 \quad y=1 \\ \frac{w^{T} x+b}{\|w\| d} \leq-1 \quad y=-1\end{array}\right.
{∥w∥dwTx+b≥1y=1∥w∥dwTx+b≤−1y=−1
∥
w
∥
d
\|w\| d
∥w∥d是正数,我们暂且令他为1(之所以令他等于1,是为了方便推到和优化,且这样做对目标函数的优化没有影响),故:
{
w
T
x
+
b
≥
1
y
=
1
w
T
x
+
b
≤
−
1
y
=
−
1
\left\{\begin{array}{l}w^{T} x+b \geq 1 \quad y=1 \\ w^{T} x+b \leq-1 \quad y=-1\end{array}\right.
{wTx+b≥1y=1wTx+b≤−1y=−1将两个方程合并,我们可以简写为:
y
(
w
T
x
+
b
)
≥
1
y\left(w^{T} x+b\right) \geq 1
y(wTx+b)≥1至此我们就可以得到最大间隔超平面的上下两个超平面:
每个支持向量到超平面的距离可以写为:
d
=
∣
w
T
x
+
b
∣
∥
w
∥
d=\frac{\left|w^{T} x+b\right|}{\|w\|}
d=∥w∥∣∣wTx+b∣∣由上述
y
(
w
T
x
+
b
)
>
1
>
0
y\left(w^{T} x+b\right)>1>0
y(wTx+b)>1>0可以得到
y
(
w
T
x
+
b
)
=
∣
w
T
x
+
b
∣
y\left(w^{T} x+b\right)=\left|w^{T} x+b\right|
y(wTx+b)=∣∣wTx+b∣∣,所以我们得到:
d
=
y
(
w
T
x
+
b
)
∥
w
∥
d=\frac{y\left(w^{T} x+b\right)}{\|w\|}
d=∥w∥y(wTx+b)最大化这个距离:
max
2
∗
y
(
w
T
x
+
b
)
∥
w
∥
\max 2 * \frac{y\left(w^{T} x+b\right)}{\|w\|}
max2∗∥w∥y(wTx+b)这里乘上2倍也是为了后面推到,对目标函数没有影响。刚刚我们得到支持向量
y
(
w
T
x
+
b
)
=
1
y\left(w^{T} x+b\right)=1
y(wTx+b)=1,所以我们得到:
max
2
∥
w
∥
\max \frac{2}{\|w\|}
max∥w∥2再做一个转换:
min
1
2
∥
w
∥
\min \frac{1}{2}\|w\|
min21∥w∥为了方便计算(去除
∥
w
∣
∣
\| w||
∥w∣∣ 的根号),我们有:
min
1
2
∥
w
∥
2
\min \frac{1}{2}\|w\|^{2}
min21∥w∥2所以得到的最优化问题是:
min
1
2
∥
w
∥
2
\min \frac{1}{2}\|w\|^{2}
min21∥w∥2 s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
\quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1
yi(wTxi+b)≥1
2. 对偶问题
2.1 拉格朗日乘数法
2.1.1 等式约束优化问题
数学上的拉格朗日陈述发是等式约束优化问题:
min
f
(
x
1
,
x
2
,
…
,
x
n
)
\min f\left(x_{1}, x_{2}, \ldots, x_{n}\right)
minf(x1,x2,…,xn)
s.
t
.
h
k
(
x
1
,
x
2
,
…
,
x
n
)
=
0
k
=
1
,
2
,
…
,
l
\begin{array}{ll}\text { s. } t . & h_{k}\left(x_{1}, x_{2}, \ldots, x_{n}\right)=0 & k=1,2, \ldots, l\end{array}
s. t.hk(x1,x2,…,xn)=0k=1,2,…,l我们令
L
(
x
,
λ
)
=
f
(
x
)
+
∑
k
=
1
l
λ
k
h
k
(
x
)
L(x, \lambda)=f(x)+\sum_{k=1}^{l} \lambda_{k} h_{k}(x)
L(x,λ)=f(x)+∑k=1lλkhk(x),函数
L
(
x
,
y
)
L(x,y)
L(x,y)称为Lagrange函数,参数
λ
\lambda
λ称为Lagrange乘子没有非负要求。
利用必要条件找到可能的极值点:
{
∂
L
∂
x
i
=
0
i
=
1
,
2
,
…
,
n
∂
L
∂
λ
k
=
0
k
=
1
,
2
,
…
,
l
\begin{cases}\frac{\partial L}{\partial x_{i}}=0 & i=1,2, \ldots, n \\ \frac{\partial L}{\partial \lambda_{k}}=0 & k=1,2, \ldots, l\end{cases}
{∂xi∂L=0∂λk∂L=0i=1,2,…,nk=1,2,…,l具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件。
等式约束下的 Lagrange 乘数法引入了
l
l
l个 Lagrange 乘子,我们将
x
i
x_i
xi 与
λ
k
\lambda_k
λk 一视同仁,把
λ
k
\lambda_k
λk 也看作优化变量,共有
(
n
+
l
)
(n+l)
(n+l) 个优化变量。
2.1.2 不等式约束优化问题
而我们现在面对的是不等式优化问题,针对这种情况其主要思想是将不等式约束条件转变为等式约束条件,引入松弛变量,将松弛变量也是为优化变量。
以下面例子为例:
min
f
(
w
)
=
min
1
2
∥
w
∥
2
s
.
t
.
g
i
(
w
)
=
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
\begin{aligned} & \min f(w)=\min \frac{1}{2}\|w\|^{2} \\ s . t . & g_{i}(w)=1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0 \end{aligned}
s.t.minf(w)=min21∥w∥2gi(w)=1−yi(wTxi+b)≤0引入松弛变量
a
i
2
a^2_i
ai2得到
h
i
(
w
,
a
i
)
=
g
i
(
w
)
+
a
i
2
=
0
h_{i}\left(w, a_{i}\right)=g_{i}(w)+a_{i}^{2}=0
hi(w,ai)=gi(w)+ai2=0。这里加平方主要为了不再引入新的约束条件,如果只引入
a
i
a_i
ai那我们必须保证
a
i
≥
0
a_{i} \geq 0
ai≥0才能保证
h
i
(
w
,
a
i
)
=
0
h_{i}\left(w, a_{i}\right)=0
hi(w,ai)=0,这不符合我们的意愿。
由此我们将不等式约束转化为等式约束,并得到Langrange函数:
L
(
w
,
λ
,
a
)
=
f
(
w
)
+
∑
i
=
1
n
λ
i
h
i
(
w
)
=
f
(
w
)
+
∑
i
=
1
n
λ
i
[
g
i
(
w
)
+
a
i
2
]
λ
i
≥
0
\begin{aligned} L(w, \lambda, a) &=f(w)+\sum_{i=1}^{n} \lambda_{i} h_{i}(w) \\ &=f(w)+\sum_{i=1}^{n} \lambda_{i}\left[g_{i}(w)+a_{i}^{2}\right] \quad \lambda_{i} \geq 0 \end{aligned}
L(w,λ,a)=f(w)+i=1∑nλihi(w)=f(w)+i=1∑nλi[gi(w)+ai2]λi≥0由等式约束优化问题极值的必要条件对其求解,联立方程:
{
∂
L
∂
w
i
=
∂
f
∂
w
i
+
∑
i
=
1
n
λ
i
∂
g
i
∂
w
i
=
0
∂
L
∂
a
i
=
2
λ
i
a
i
=
0
∂
L
∂
λ
i
=
g
i
(
w
)
+
a
i
2
=
0
λ
i
≥
0
\left\{\begin{aligned} \frac{\partial L}{\partial w_{i}} &=\frac{\partial f}{\partial w_{i}}+\sum_{i=1}^{n} \lambda_{i} \frac{\partial g_{i}}{\partial w_{i}}=0 \\ \frac{\partial L}{\partial a_{i}} &=2 \lambda_{i} a_{i}=0 \\ \frac{\partial L}{\partial \lambda_{i}} &=g_{i}(w)+a_{i}^{2}=0 \\ \lambda_{i} & \geq 0 \end{aligned}\right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧∂wi∂L∂ai∂L∂λi∂Lλi=∂wi∂f+i=1∑nλi∂wi∂gi=0=2λiai=0=gi(w)+ai2=0≥0(为什么取
λ
i
≥
0
,
\lambda_{i} \geq 0 ,
λi≥0, 可以通过几何性质来解释,有兴趣的同学可以查下 KKT 的证明)。
正对
λ
i
a
i
=
0
\lambda_ia_i = 0
λiai=0我们有两种情况:
情形1:
λ
i
=
0
,
a
i
≠
0
\lambda_{i}=0, a_{i} \neq 0
λi=0,ai=0
由于
λ
i
=
0
\lambda_i=0
λi=0,因此约束条件
g
i
(
w
)
g_i(w)
gi(w)不起作用,且
g
i
(
w
)
<
0
g_i(w)<0
gi(w)<0
情形2:
λ
i
=
0
,
a
i
≠
0
\lambda_{i}=0, a_{i} \neq 0
λi=0,ai=0
此时
g
i
(
w
)
=
0
g_{i}(w)=0
gi(w)=0 且
λ
i
>
0
\lambda_{i}>0
λi>0,可以理解为约束条件
g
i
(
w
)
g_{i}(w)
gi(w) 起作用了,且
g
i
(
w
)
=
0
g_{i}(w)=0
gi(w)=0
综合可得:
λ
i
g
i
(
w
)
=
0
\lambda_{i} g_{i}(w)=0
λigi(w)=0,且约束条件起作用时
λ
i
>
0
,
g
i
(
w
)
=
0
\lambda_{i}>0, g_{i}(w)=0
λi>0,gi(w)=0;约束不起作用时
λ
i
=
0
,
g
i
(
w
)
<
0
\lambda_{i}=0, g_{i}(w)<0
λi=0,gi(w)<0
由此方程组转换为:
{
∂
L
∂
w
i
=
∂
f
∂
w
i
+
∑
j
=
1
n
λ
j
∂
g
j
∂
w
i
=
0
λ
i
g
i
(
w
)
=
0
g
i
(
w
)
≤
0
λ
i
≥
0
\left\{\begin{aligned} \frac{\partial L}{\partial w_{i}} &=\frac{\partial f}{\partial w_{i}}+\sum_{j=1}^{n} \lambda_{j} \frac{\partial g_{j}}{\partial w_{i}}=0 \\ \lambda_{i} g_{i}(w) &=0 \\ g_{i}(w) & \leq 0 \\ \lambda_{i} & \geq 0 \end{aligned}\right.
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧∂wi∂Lλigi(w)gi(w)λi=∂wi∂f+j=1∑nλj∂wi∂gj=0=0≤0≥0以上便是不等式约束优化优化问题的 KKT(Karush-Kuhn-Tucker) 条件,
λ
i
\lambda_i
λi称为 KKT 乘子。
由上可知,支持向量
g
i
(
w
)
=
0
g_{i}(w)=0
gi(w)=0,所以
λ
i
>
0
\lambda_{i}>0
λi>0即可。而其他向量
g
i
(
w
)
<
0
,
λ
i
=
0
g_{i}(w)<0, \lambda_{i}=0
gi(w)<0,λi=0。
我们原本的问题是要求:
min
1
2
∥
w
∥
2
\min \frac{1}{2}\|w\|^{2}
min21∥w∥2,即求
min
L
(
w
,
λ
,
a
)
\min L(w, \lambda, a)
minL(w,λ,a)
L
(
w
,
λ
,
a
)
=
f
(
w
)
+
∑
i
=
1
n
λ
i
[
g
i
(
w
)
+
a
i
2
]
=
f
(
w
)
+
∑
i
=
1
n
λ
i
g
i
(
w
)
+
∑
i
=
1
n
λ
i
a
i
2
\begin{aligned} L(w, \lambda, a) &=f(w)+\sum_{i=1}^{n} \lambda_{i}\left[g_{i}(w)+a_{i}^{2}\right] \\ &=f(w)+\sum_{i=1}^{n} \lambda_{i} g_{i}(w)+\sum_{i=1}^{n} \lambda_{i} a_{i}^{2} \end{aligned}
L(w,λ,a)=f(w)+i=1∑nλi[gi(w)+ai2]=f(w)+i=1∑nλigi(w)+i=1∑nλiai2
由于
∑
i
=
1
n
λ
i
a
i
2
≥
0
\sum_{i=1}^{n} \lambda_{i} a_{i}^{2} \geq 0
∑i=1nλiai2≥0,故我们将问题转化为:
min
L
(
w
,
λ
)
\min L(w, \lambda)
minL(w,λ):
L
(
w
,
λ
)
=
f
(
w
)
+
∑
i
=
1
n
λ
i
g
i
(
w
)
L(w, \lambda)=f(w)+\sum_{i=1}^{n} \lambda_{i} g_{i}(w)
L(w,λ)=f(w)+i=1∑nλigi(w)假设找到了最佳参数是目标函数取值得了最小值p.即
1
2
∥
w
∥
2
=
p
\frac{1}{2}\|w\|^{2}=p
21∥w∥2=p。而根据
λ
i
≥
0
\lambda_{i} \geq 0
λi≥0
,可知
∑
i
=
1
n
λ
i
g
i
(
w
)
≤
0
\sum_{i=1}^{n} \lambda_{i} g_{i}(w) \leq 0
∑i=1nλigi(w)≤0,因此
L
(
w
,
λ
)
≤
p
L(w, \lambda) \leq p
L(w,λ)≤p,为了找到最优的参数
λ
\lambda
λ,使得
L
(
w
,
λ
)
L(w,\lambda)
L(w,λ)接近p,故问题转化为
max
λ
L
(
w
,
λ
)
\max _{\lambda} L(w, \lambda)
maxλL(w,λ)。故我们的最优化问题转化为:
min
w
max
λ
L
(
w
,
λ
)
s
.
t
.
λ
i
≥
0
\begin{gathered} \min _{w} \max _{\lambda} L(w, \lambda) \\ s . t . \quad \lambda_{i} \geq 0 \end{gathered}
wminλmaxL(w,λ)s.t.λi≥0出了上面的理解方式,我们还可以有另一种理解方式:由于
λ
i
≥
0
\lambda_{i} \geq 0
λi≥0,
max
λ
L
(
w
,
λ
)
=
{
∞
g
i
(
w
)
≥
0
1
2
∥
w
∥
2
g
i
(
w
)
≤
0
\max _{\lambda} L(w, \lambda)=\left\{\begin{aligned} \infty & g_{i}(w) \geq 0 \\ \frac{1}{2}\|w\|^{2} & g_{i}(w) \leq 0 \end{aligned}\right.
λmaxL(w,λ)=⎩⎨⎧∞21∥w∥2gi(w)≥0gi(w)≤0所以
min
(
∞
,
1
2
∥
w
∥
2
)
=
1
2
∥
w
∥
2
\min \left(\infty, \frac{1}{2}\|w\|^{2}\right)=\frac{1}{2}\|w\|^{2}
min(∞,21∥w∥2)=21∥w∥2,所以转化后的式子和原来的式子也是一样的。
2.2 强对偶性
对偶问题其实就是将: min w max λ L ( w , λ ) s . t . λ i ≥ 0 \begin{gathered} \min _{w} \max _{\lambda} L(w, \lambda) \\ s . t . \quad \lambda_{i} \geq 0 \end{gathered} wminλmaxL(w,λ)s.t.λi≥0变成了: max λ min w L ( w , λ ) s . t . λ i ≥ 0 \begin{gathered} \max _{\lambda} \min _{w} L(w, \lambda) \\ s . t . \quad \lambda_{i} \geq 0 \end{gathered} λmaxwminL(w,λ)s.t.λi≥0假设有个函数 f f f我们有: min max f ≥ max min f \min \max f \geq \max \min f minmaxf≥maxminf也就是说,最大的里面挑出的最小的也要比最小的里面跳出的最大的要大。这关系实际上就是若对偶关系,而强队偶关系是当等号成立时,即: min max f = max min f \min \max f=\max \min f minmaxf=maxminf如果 f f f时凸优化问题,强队偶性成立。而我们之前求得KKT条件是强队偶性的充要条件。
3. SVM优化
已知SVM优化的问题是:
min
w
1
2
∥
w
∥
2
s.t.
g
i
(
w
,
b
)
=
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
,
i
=
1
,
2
,
…
,
n
\begin{gathered} \min _{w} \frac{1}{2}\|w\|^{2} \\ \text { s.t. } \quad g_{i}(w, b)=1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0, \quad i=1,2, \ldots, n \end{gathered}
wmin21∥w∥2 s.t. gi(w,b)=1−yi(wTxi+b)≤0,i=1,2,…,n那么求解线性科分的SVM的步骤为:
第一:
构造拉格朗日函数:
min
w
,
b
max
λ
L
(
w
,
b
,
λ
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
n
λ
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
s
.
t
.
λ
i
≥
0
\begin{aligned} \min _{w, b} \max _{\lambda} L(w, b, \lambda)=& \frac{1}{2}\|w\|^{2}+\sum_{i=1}^{n} \lambda_{i}\left[1-y_{i}\left(w^{T} x_{i}+b\right)\right] \\ & s . t . \quad \lambda_{i} \geq 0 \end{aligned}
w,bminλmaxL(w,b,λ)=21∥w∥2+i=1∑nλi[1−yi(wTxi+b)]s.t.λi≥0第二:利用强对偶性转化:
max
λ
min
w
,
b
L
(
w
,
b
,
λ
)
\max _{\lambda} \min _{w, b} L(w, b, \lambda)
λmaxw,bminL(w,b,λ)现在对参数w和b求偏导数:
∂
L
∂
w
=
w
−
∑
i
=
1
n
λ
i
x
i
y
i
=
0
∂
L
∂
b
=
∑
i
=
1
n
λ
i
y
i
=
0
\begin{aligned} &\frac{\partial L}{\partial w}=w-\sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=0 \\ &\frac{\partial L}{\partial b}=\sum_{i=1}^{n} \lambda_{i} y_{i}=0 \end{aligned}
∂w∂L=w−i=1∑nλixiyi=0∂b∂L=i=1∑nλiyi=0得到:
∑
i
=
1
n
λ
i
x
i
y
i
=
w
∑
i
=
1
n
λ
i
y
i
=
0
\begin{aligned} &\sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=w \\ &\sum_{i=1}^{n} \lambda_{i} y_{i}=0 \end{aligned}
i=1∑nλixiyi=wi=1∑nλiyi=0我们将这个结果带到函数中可得:
L
(
w
,
b
,
λ
)
=
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
n
λ
i
−
∑
i
=
1
n
λ
i
y
i
(
∑
j
=
1
n
λ
j
y
j
(
x
i
⋅
x
j
)
+
b
)
=
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
n
λ
i
−
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
n
λ
i
y
i
b
=
∑
j
=
1
n
λ
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
\begin{aligned} L(w, b, \lambda) &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \lambda_{i} y_{i}\left(\sum_{j=1}^{n} \lambda_{j} y_{j}\left(x_{i} \cdot x_{j}\right)+b\right) \\ &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{n} \lambda_{i} y_{i} b \\ &=\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right) \end{aligned}
L(w,b,λ)=21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)+i=1∑nλi−i=1∑nλiyi(j=1∑nλjyj(xi⋅xj)+b)=21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)+i=1∑nλi−i=1∑nj=1∑nλiλjyiyj(xi⋅xj)−i=1∑nλiyib=j=1∑nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)也就是说:
min
w
,
b
L
(
w
,
b
,
λ
)
=
∑
j
=
1
n
λ
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
\min _{w, b} L(w, b, \lambda)=\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)
w,bminL(w,b,λ)=j=1∑nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)第三:由步骤2得:
max
λ
[
∑
j
=
1
n
λ
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
]
s.t.
∑
i
=
1
n
λ
i
y
i
=
0
λ
i
≥
0
\begin{gathered} \max _{\lambda}\left[\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\right] \\ \text { s.t. } \quad \sum_{i=1}^{n} \lambda_{i} y_{i}=0 \quad \lambda_{i} \geq 0 \end{gathered}
λmax[j=1∑nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)] s.t. i=1∑nλiyi=0λi≥0我们可以看出来这是一个二次规划问题,问题规模正比于训练样本数,我们常用 SMO(Sequential Minimal Optimization) 算法求解。
SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。我们来看一下 SMO 算法在 SVM 中的应用。
我们刚说了 SMO 算法每次只优化一个参数,但我们的优化目标有约束条件:
∑
i
=
1
n
,
λ
i
y
i
=
0
\sum_{i=1}^{n} ,\lambda_{i} y_{i}=0
∑i=1n,λiyi=0没法一次只变动一个参数。所以我们选择了一次选择两个参数。具体步骤为:
1。 选择两个需要更新得参数
λ
i
\lambda_i
λi和
λ
j
\lambda_j
λj,固定其他参数,于是我们有一下约束:
λ
i
y
i
+
λ
j
y
j
=
c
λ
i
≥
0
,
λ
j
≥
0
\lambda_{i} y_{i}+\lambda_{j} y_{j}=c \quad \lambda_{i} \geq 0, \lambda_{j} \geq 0
λiyi+λjyj=cλi≥0,λj≥0其中
c
=
−
∑
k
≠
i
,
j
λ
k
y
k
c=-\sum_{k \neq i, j} \lambda_{k} y_{k}
c=−∑k=i,jλkyk,由此可得出
λ
j
=
c
−
λ
i
y
i
y
j
\lambda_{j}=\frac{c-\lambda_{i} y_{i}}{y_{j}}
λj=yjc−λiyi,也就是我们可以用
λ
i
\lambda_i
λi的表达式代替
λ
j
\lambda_j
λj。这样就相当于把目标函数问题转化为了仅有一个约束条件的最优问题,仅有的约束是
λ
i
≥
0
\lambda_{i} \geq 0
λi≥0。
2.对于仅有一个约束条件的最优问题,我们完全可以在
λ
i
\lambda_i
λi上对优化目标求偏导,令偏导数为零,从而求出变量值
λ
i
new
\lambda_{i_{\text {new }}}
λinew ,然后根据
λ
i
new
\lambda_{i_{\text {new }}}
λinew 求出
λ
j
new
\lambda_{j_{\text {new }}}
λjnew 。
3. 多次迭代直至收敛。
通过SMO求得最优解
λ
∗
\lambda^{*}
λ∗。
第四:
我们求偏导数时得到:
w
=
∑
i
=
1
m
λ
i
y
i
x
i
w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i}
w=i=1∑mλiyixi由上式可求得w。
我们知道所有
λ
i
>
0
\lambda_i>0
λi>0对应的点都是支持向量,我们可以随便找个支持向量,然后带入:
y
s
(
w
x
s
+
b
)
=
1
y_{s}\left(w x_{s}+b\right)=1
ys(wxs+b)=1,求出b即可,两边同乘以
y
s
y_s
ys,得到
y
s
2
(
w
x
s
+
b
)
=
y
s
y_{s}^{2}\left(w x_{s}+b\right)=y_{s}
ys2(wxs+b)=ys。因为
y
s
2
=
1
y_{s}^{2}=1
ys2=1, 所以:
b
=
y
s
−
w
x
s
b=y_{s}-w x_{s}
b=ys−wxs。为了更具鲁棒性,我们可以球的支持向量的均值:
b
=
1
∣
S
∣
∑
s
∈
S
(
y
s
−
w
x
s
)
b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-w x_{s}\right)
b=∣S∣1s∈S∑(ys−wxs)
第五:w和b都求出来了,我们就能构造出最大分割超平面:
w
T
x
+
b
=
0
w^{T} x+b=0
wTx+b=0
分类决策函数:
f
(
x
)
=
sign
(
w
T
x
+
b
)
f(x)=\operatorname{sign}\left(w^{T} x+b\right)
f(x)=sign(wTx+b)
其中
sign
(
⋅
)
\operatorname{sign}(\cdot)
sign(⋅) 为阶跃函数:
sign
(
x
)
=
{
−
1
x
<
0
0
x
=
0
1
x
>
0
\operatorname{sign}(x)=\left\{\begin{array}{rl} -1 & x<0 \\ 0 & x=0 \\ 1 & x>0 \end{array}\right.
sign(x)=⎩⎨⎧−101x<0x=0x>0将新样本点导入到决策函数即可得到样本分类。
4. 软间隔
4.1 解决问题
在实际应用中,完全线性可分的样本是很少的,如果遇到了不能够完全线性可分的样本,我们应该怎么办?比如下面这个:
于是我们就有了软间隔,相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面,比如:
我们循序部分样本点不满足约束条件:
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0
1−yi(wTxi+b)≤0为了度量这个间隔软到何种程度,我们为每一个样本引入一个松弛变量
ξ
i
\xi_{i}
ξi,令
ξ
i
≥
0
\xi_{i} \geq 0
ξi≥0,且
1
−
y
i
(
w
T
x
i
+
b
)
−
ξ
i
≤
0
1-y_{i}\left(w^{T} x_{i}+b\right)-\xi_{i} \leq 0
1−yi(wTxi+b)−ξi≤0。对应如下图所示:
4.2 优化目标及求解
增加软间隔后我们的优化目标变成了:
min
w
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ξ
i
s.t.
g
i
(
w
,
b
)
=
1
−
y
i
(
w
T
x
i
+
b
)
−
ξ
i
≤
0
,
ξ
i
≥
0
,
i
=
1
,
2
,
…
,
n
\begin{gathered} \min _{w} \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{m} \xi_{i} \\ \text { s.t. } \quad g_{i}(w, b)=1-y_{i}\left(w^{T} x_{i}+b\right)-\xi_{i} \leq 0, \quad \xi_{i} \geq 0, \quad i=1,2, \ldots, n \end{gathered}
wmin21∥w∥2+Ci=1∑mξi s.t. gi(w,b)=1−yi(wTxi+b)−ξi≤0,ξi≥0,i=1,2,…,n其中 C 是一个大于 0 的常数,可以理解为错误样本的惩罚程度,若 C 为无穷大,
ξ
i
\xi_{i}
ξi 必然无穷小,如此一来线性 SVM 就又变成了线性可分 SVM;当 C 为有限值的时候,才会允许部分样本不遵循约束条件。
接下来我们将针对新的优化目标求解最优化问题:
步骤1:
构造拉格朗日函数:
min
w
,
b
,
ξ
max
λ
,
μ
L
(
w
,
b
,
ξ
,
λ
,
μ
)
=
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ξ
i
+
∑
i
=
1
n
λ
i
[
1
−
ξ
i
−
y
i
(
w
T
x
i
+
b
)
]
−
∑
i
=
1
n
μ
i
ξ
i
s.t.
λ
i
≥
0
μ
i
≥
0
\begin{aligned} \min _{w, b, \xi} \max _{\lambda, \mu} L(w, b, \xi, \lambda, \mu)=\frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{m} \xi_{i}+\sum_{i=1}^{n} \lambda_{i}\left[1-\xi_{i}-y_{i}\left(w^{T} x_{i}+b\right)\right]-\sum_{i=1}^{n} \mu_{i} \xi_{i} \\ & \text { s.t. } \quad \lambda_{i} \geq 0 \quad \mu_{i} \geq 0 \end{aligned}
w,b,ξminλ,μmaxL(w,b,ξ,λ,μ)=21∥w∥2+Ci=1∑mξi+i=1∑nλi[1−ξi−yi(wTxi+b)]−i=1∑nμiξi s.t. λi≥0μi≥0其中
λ
i
\lambda_i
λi和
μ
i
\mu_{i}
μi是拉格朗日乘子,w,b和
ξ
i
\xi_{i}
ξi是主问题参数。
根据强对偶性,将对偶问题转化为:
max
λ
,
μ
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
λ
,
μ
)
\max _{\lambda, \mu} \min _{w, b, \xi} L(w, b, \xi, \lambda, \mu)
λ,μmaxw,b,ξminL(w,b,ξ,λ,μ)
步骤2:
分别对主问题参数w、b和
ξ
i
\xi_{i}
ξi求偏导数,并令偏导数为0,得到如下关系:
w
=
∑
i
=
1
m
λ
i
y
i
x
i
0
=
∑
i
=
1
m
λ
i
y
i
C
=
λ
i
+
μ
i
\begin{gathered} w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i} \\ 0=\sum_{i=1}^{m} \lambda_{i} y_{i} \\ C=\lambda_{i}+\mu_{i} \end{gathered}
w=i=1∑mλiyixi0=i=1∑mλiyiC=λi+μi将这些关系带入拉格朗日函数中,得到:
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
λ
,
μ
)
=
∑
j
=
1
n
λ
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
\min _{w, b, \xi} L(w, b, \xi, \lambda, \mu)=\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)
w,b,ξminL(w,b,ξ,λ,μ)=j=1∑nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)
最小化结果只是
λ
\lambda
λ而没有
μ
\mu
μ,所以现在只需要最大化
λ
\lambda
λ就好:
max
λ
[
∑
j
=
1
n
λ
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
x
i
⋅
x
j
)
]
\max _{\lambda}\left[\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\right]
λmax[j=1∑nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)]
s.t.
∑
i
=
1
n
λ
i
y
i
=
0
,
λ
i
≥
0
,
C
−
λ
i
−
μ
i
=
0
\text { s.t. } \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0
s.t. i=1∑nλiyi=0,λi≥0,C−λi−μi=0我们可以看到这个和硬间隔的一样,只是多了个约束条件。
然后我们利用 SMO 算法求解得到拉格朗日乘子
λ
∗
\lambda^{*}
λ∗。
步骤3:
w
=
∑
i
=
1
m
λ
i
y
i
x
i
b
=
1
∣
S
∣
∑
s
∈
S
(
y
s
−
w
x
s
)
\begin{gathered} w=\sum_{i=1}^{m} \lambda_{i} y_{i} x_{i} \\ b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-w x_{s}\right) \end{gathered}
w=i=1∑mλiyixib=∣S∣1s∈S∑(ys−wxs)然后我们通过上面两个式子求出 w 和 b,最终求得超平面
w
T
x
+
b
=
0
w^{T} x+b=0
wTx+b=0 ,
这边要注意一个问题,在间隔内的那部分样本点是不是支持向量?
我们可以由求参数 w 的那个式子可看出,只要
λ
i
>
0
\lambda_i>0
λi>0的点都能够影响我们的超平面,因此都是支持向量。
5. 核函数
5.1 线性不可分
我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。
但我们可能会碰到的一种情况是样本点不是线性可分的,比如:
这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:
对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性 SVM。
我们用 x 表示原来的样本点,用
ϕ
(
x
)
\phi(x)
ϕ(x)表示 x 映射到特征新的特征空间后到新向量。那么分割超平面可以表示为:
f
(
x
)
=
w
ϕ
(
x
)
+
b
f(x)=w \phi(x)+b
f(x)=wϕ(x)+b 。
对于非线性 SVM 的对偶问题就变成了:
min
λ
[
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
(
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
)
−
∑
j
=
1
n
λ
i
]
s.t.
∑
i
=
1
n
λ
i
y
i
=
0
,
λ
i
≥
0
,
C
−
λ
i
−
μ
i
=
0
\begin{aligned} &\min _{\lambda}\left[\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right)-\sum_{j=1}^{n} \lambda_{i}\right] \\ &\text { s.t. } \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 \end{aligned}
λmin[21i=1∑nj=1∑nλiλjyiyj(ϕ(xi)⋅ϕ(xj))−j=1∑nλi] s.t. i=1∑nλiyi=0,λi≥0,C−λi−μi=0可以看到与线性 SVM 唯一的不同就是:之前的
(
x
i
⋅
x
j
)
\left(x_{i} \cdot x_{j}\right)
(xi⋅xj) 变成了
(
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
)
\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right)
(ϕ(xi)⋅ϕ(xj)) 。
5.2 核函数的作用
我们不禁有个疑问:只是做个内积运算,为什么要有核函数的呢?
这是因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了。
但如果我们有这样的一核函数
k
(
x
,
y
)
=
(
ϕ
(
x
)
,
ϕ
(
y
)
)
k(x, y)=(\phi(x), \phi(y))
k(x,y)=(ϕ(x),ϕ(y)) ,
x
i
x_{i}
xi与
x
j
x_{j}
xj 在特征空间的内积等于它们在原始样本空间中通过函数
k
(
x
,
y
)
k(x, y)
k(x,y) 计算的结果,我们就不需要计算高维甚至无穷维空间的内积了。
举个例子:假设我们有一个多项式核函数:
k
(
x
,
y
)
=
(
x
⋅
y
+
1
)
2
k(x, y)=(x \cdot y+1)^{2}
k(x,y)=(x⋅y+1)2带进样本点的后:
k
(
x
,
y
)
=
(
∑
i
=
1
n
(
x
i
⋅
y
i
)
+
1
)
2
k(x, y)=\left(\sum_{i=1}^{n}\left(x_{i} \cdot y_{i}\right)+1\right)^{2}
k(x,y)=(i=1∑n(xi⋅yi)+1)2而它的展开项是:
∑
i
=
1
n
x
i
2
y
i
2
+
∑
i
=
2
n
∑
j
=
1
i
−
1
(
2
x
i
x
j
)
(
2
y
i
y
j
)
+
∑
i
=
1
n
(
2
x
i
)
(
2
y
i
)
+
1
\sum_{i=1}^{n} x_{i}^{2} y_{i}^{2}+\sum_{i=2}^{n} \sum_{j=1}^{i-1}\left(\sqrt{2} x_{i} x_{j}\right)\left(\sqrt{2} y_{i} y_{j}\right)+\sum_{i=1} n\left(\sqrt{2} x_{i}\right)\left(\sqrt{2} y_{i}\right)+1
i=1∑nxi2yi2+i=2∑nj=1∑i−1(2xixj)(2yiyj)+i=1∑n(2xi)(2yi)+1如果没有核函数,我们则需要把向量映射成:
x
′
=
(
x
1
2
,
…
,
x
n
2
,
…
2
x
1
,
…
,
2
x
n
,
1
)
x^{\prime}=\left(x_{1}^{2}, \ldots, x_{n}^{2}, \ldots \sqrt{2} x_{1}, \ldots, \sqrt{2} x_{n}, 1\right)
x′=(x12,…,xn2,…2x1,…,2xn,1)
然后在进行内积计算,才能与多项式核函数达到相同的效果。
可见核函数的引入一方面减少了我们计算量,另一方面也减少了我们存储数据的内存使用量。
5.3 常见核函数
我们常用的核函数有
线性核函数
k
(
x
i
,
x
j
)
=
x
i
T
x
j
k\left(x_{i}, x_{j}\right)=x_{i}^{T} x_{j}
k(xi,xj)=xiTxj多项式核函数
k
(
x
i
,
x
j
)
=
(
x
i
T
x
j
)
d
k\left(x_{i}, x_{j}\right)=\left(x_{i}^{T} x_{j}\right)^{d}
k(xi,xj)=(xiTxj)d高斯核函数
k
(
x
i
,
x
j
)
=
exp
(
−
∥
x
i
−
x
j
∥
2
δ
2
)
k\left(x_{i}, x_{j}\right)=\exp \left(-\frac{\left\|x_{i}-x_{j}\right\|}{2 \delta^{2}}\right)
k(xi,xj)=exp(−2δ2∥xi−xj∥)这三个常用的核函数中只有高斯核函数是需要调参的。
6. 优缺点
6.1 优点
- 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
- 能找出对任务至关重要的关键样本(即:支持向量);
- 采用核技巧之后,可以处理非线性分类/回归任务;
- 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
6.2 缺点
- 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O ( N 2 ) O\left(N^{2}\right) O(N2),其中 N 为训练样本的数量;
- 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( N 2 ) O\left(N^{2}\right) O(N2) ;
- 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。
因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。