前言
支持向量机解优化有两种形式,通常采用序列最小化(SMO)算法来解优化,本文总结基于随机梯度下降(SGD)解优化方法。
线性可分SVM
如果数据集是完全线性可分的,可以构造最大硬间隔的线性可分支持向量机,如果只关心
s
i
g
n
(
⋅
)
sign(\cdot)
sign(⋅)不关心正负的程度,要求每个样本的函数间隔
y
i
w
T
x
i
≥
1
y_iw^{T}x_i \geq1
yiwTxi≥1,其优化式为:
min
w
1
2
w
T
w
s
.
t
.
∀
i
,
y
i
w
T
x
i
≥
1
\begin{aligned} &\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w \\ & s.t. \;\forall i, \;y_iw^{T}x_i \geq1 \end{aligned}
wmin21wTws.t.∀i,yiwTxi≥1
线性SVM
如果数据集是大致线性可分的,对每个样本引入一个松弛变量
ξ
i
≥
0
\xi_i \geq 0
ξi≥0,要求每个样本的函数间隔
y
i
W
T
x
i
≥
1
−
ξ
i
y_iW^{T}x_i \geq1-\xi_i
yiWTxi≥1−ξi, 可以构造线性支持向量机,其优化式为:
min
w
1
2
w
T
w
+
C
∑
i
N
ξ
i
s
.
t
.
∀
i
,
y
i
w
T
x
i
≥
1
−
ξ
i
ξ
i
≥
0
\begin{aligned} &\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N}\xi_i \\ s.t.\;& \forall i, \;y_iw^{T}x_i \geq1-\xi_i \\ & \xi_i \geq 0 \end{aligned}
s.t.wmin21wTw+Ci∑Nξi∀i,yiwTxi≥1−ξiξi≥0
hinge-loss
可以把线性SVM的优化目标重写为Hinge-loss的形式:
min
w
1
2
w
T
w
+
C
∑
i
N
m
a
x
(
0
,
1
−
y
i
w
T
x
i
)
\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N} max (0,1-y_iw^{T}x_i )
wmin21wTw+Ci∑Nmax(0,1−yiwTxi)
前半部分为最大化间隔,后半部分为预测的惩罚项Hinge-loss: L H i n g e ( y , x , w ) = m a x ( 0 , 1 − y i w T x i ) L_{Hinge}(y,x,w)=max(0,1-y_iw^{T}x_i ) LHinge(y,x,w)=max(0,1−yiwTxi)
- 样本点被正确分类,且在间隔之外,惩罚为0;
- 样本点没被正确分类,惩罚为 1 − y i w T x i 1-y_iw^{T}x_i 1−yiwTxi;
- 样本点被正确分类,但是在间隔之内,惩罚为
1
−
y
i
w
T
x
i
1-y_iw^{T}x_i
1−yiwTxi
SVM-SGD
f ( x ) f(x) f(x)是凸函数,如果对于任意的定义域中的变量 u , v u,v u,v,及任意的 λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ∈[0,1],有 f ( λ u + ( 1 − λ ) v ) ≤ λ f ( u ) + ( 1 − λ ) f ( v ) f(\lambda u+(1-\lambda)v)\leq \lambda f(u)+(1-\lambda)f(v) f(λu+(1−λ)v)≤λf(u)+(1−λ)f(v),也就是函数取两点连线,两点间的函数图像在连线之下;或者说,每个点的切线都在函数值之下。 x x x是凸函数最小值点的必要条件是, ∇ f ( x ) = 0 \nabla f(x)=0 ∇f(x)=0。
使用随机梯度下降来求解最大间隔SVM,优化的目标函数为
J
(
w
)
=
min
w
1
2
w
T
w
+
C
∑
i
N
m
a
x
(
0
,
1
−
y
i
w
T
x
i
)
J(w)=\mathop{\min}\limits_{w} \frac{1}{2}w^{T}w + C \sum_{i}^{N} max (0,1-y_iw^{T}x_i )
J(w)=wmin21wTw+C∑iNmax(0,1−yiwTxi),目标函数为凸函数,在学习率足够小时,能获得最优解。
但是Hinge-loss是不可微的,可以使用次梯度,对应的是次切线。次切线是在一个点上在函数值之下的任意一条线,次梯度是这条线的斜率。
对于支持向量机而言,
J
(
w
)
J(w)
J(w)的次梯度为
∇
J
(
w
)
=
{
w
i
f
m
a
x
(
0
,
1
−
y
i
w
T
x
i
)
=
0
w
−
C
y
i
x
i
,
o
t
h
e
r
w
i
s
e
\nabla J(w)=\left\{ \begin{aligned} &w \quad if \; max (0,1-y_iw^{T}x_i )=0\\ &w-Cy_ix_i , \quad otherwise \\ \end{aligned} \right.
∇J(w)={wifmax(0,1−yiwTxi)=0w−Cyixi,otherwise
所以,对应的梯度下降算法为:
相应的,使用SGD解kernel SVM如下,预测的时候需要使用显示的映射函数
ψ
(
⋅
)
\psi(\cdot)
ψ(⋅),不像SMO求解完之后不需要显示映射:
参考文献
[1]Vivek Srikumar, Machine Learning CS 5350/6350, Fall 2020. https://svivek.com/teaching/machine-learning/fall2020/lectures/svm.html
[2] Shai Shalev-Shwartz, Introduction to Machine Learning (67577) , Lecture 8. https://www.cs.huji.ac.il/~shais/Lectures2014/lecture8.pdf