前言
本篇博客是看大佬白板推导课程记录下来的笔记,有些过程可能写的不太详细,如果单看博客看不懂可以去看大佬的推导过程,视频讲的特别详细,视频链接在这里https://www.bilibili.com/video/BV1aE411o7qd?p=30&spm_id_from=pageDriver&vd_source=cc6b648f0be4739dc1f71ddcadf3f9f6
支持向量机
SVM有三宝:间隔,对偶,核技巧
支持向量机(SVM)算法在分类问题中有着重要地位,其主要思想是最大化两类之间的间隔。按照数据集的特点:
- 线性可分问题,如之前的感知机算法处理的问题
- 线性可分,只有一点点错误点,如感知机算法发展出来的 Pocket 算法处理的问题
- 非线性问题,完全不可分,如在感知机问题发展出来的多层感知机和深度学习
这三种情况对于 SVM 分别有下面三种处理手段:
- hard-margin SVM
- soft-margin SVM
- kernel Method
SVM 的求解中,大量用到了 Lagrange 乘子法,首先对这种方法进行介绍。
约束优化问题
一般地,约束优化问题(原问题)可以写成:
min
x
∈
R
p
f
(
x
)
s
.
t
.
m
i
(
x
)
≤
0
,
i
=
1
,
2
,
⋯
,
M
n
j
(
x
)
=
0
,
j
=
1
,
2
,
⋯
,
N
\begin{align} &\min_{x\in\mathbb{R^p}}f(x)\\ &s.t.\ m_i(x)\le0,i=1,2,\cdots,M\\ &\ \ \ \ \ \ \ \ n_j(x)=0,j=1,2,\cdots,N \end{align}
x∈Rpminf(x)s.t. mi(x)≤0,i=1,2,⋯,M nj(x)=0,j=1,2,⋯,N
定义 Lagrange 函数:
L
(
x
,
λ
,
η
)
=
f
(
x
)
+
∑
i
=
1
M
λ
i
m
i
(
x
)
+
∑
i
=
1
N
η
i
n
i
(
x
)
L(x,\lambda,\eta)=f(x)+\sum\limits_{i=1}^M\lambda_im_i(x)+\sum\limits_{i=1}^N\eta_in_i(x)
L(x,λ,η)=f(x)+i=1∑Mλimi(x)+i=1∑Nηini(x)
那么原问题可以等价于无约束形式:
min
x
∈
R
p
max
λ
,
η
L
(
x
,
λ
,
η
)
s
.
t
.
λ
i
≥
0
\min_{x\in\mathbb{R}^p}\max_{\lambda,\eta}L(x,\lambda,\eta)\ s.t.\ \lambda_i\ge0
x∈Rpminλ,ηmaxL(x,λ,η) s.t. λi≥0
这是由于,当满足原问题的不等式约束的时候,
λ
i
=
0
\lambda_i=0
λi=0 才能取得最大值,直接等价于原问题,如果不满足原问题的不等式约束,那么最大值就为 正无穷,由于需要取最小值,于是不会取到这个情况。
这个问题的对偶形式:
max
λ
,
η
min
x
∈
R
p
L
(
x
,
λ
,
η
)
s
.
t
.
λ
i
≥
0
\max_{\lambda,\eta}\min_{x\in\mathbb{R}^p}L(x,\lambda,\eta)\ s.t.\ \lambda_i\ge0
λ,ηmaxx∈RpminL(x,λ,η) s.t. λi≥0
对偶问题是关于
λ
,
η
\lambda , \eta
λ,η 的最大化问题。
由于:
max
λ
i
,
η
j
min
x
L
(
x
,
λ
i
,
η
j
)
≤
min
x
max
λ
i
,
η
j
L
(
x
,
λ
i
,
η
j
)
\max_{\lambda_i,\eta_j}\min_{x}L(x,\lambda_i,\eta_j)\le\min_{x}\max_{\lambda_i,\eta_j}L(x,\lambda_i,\eta_j)
λi,ηjmaxxminL(x,λi,ηj)≤xminλi,ηjmaxL(x,λi,ηj)
证明:显然有 min x L ≤ L ≤ max λ , η L \min\limits_{x}L\le L\le\max\limits_{\lambda,\eta}L xminL≤L≤λ,ηmaxL,于是显然有 max λ , η min x L ≤ L \max\limits_{\lambda,\eta}\min\limits_{x}L\le L λ,ηmaxxminL≤L,且 min x max λ , η L ≥ L \min\limits_{x}\max\limits_{\lambda,\eta}L\ge L xminλ,ηmaxL≥L。
对偶问题的解小于原问题,有两种情况:
- 强对偶:可以取等于号
- 弱对偶:不可以取等于号
其实这一点也可以通过一张图来说明:
对于一个凸优化问题,有如下定理:
如果凸优化问题满足某些条件如 Slater 条件,那么它和其对偶问题满足强对偶关系。记问题的定义域为: D = d o m f ( x ) ∩ d o m m i ( x ) ∩ d o m n j ( x ) \mathcal{D}=domf(x)\cap dom m_i(x)\cap domn_j(x) D=domf(x)∩dommi(x)∩domnj(x)。于是 Slater 条件为:
∃ x ^ ∈ R e l i n t D s . t . ∀ i = 1 , 2 , ⋯ , M , m i ( x ) < 0 \exist\hat{x}\in Relint\mathcal{D}\ s.t.\ \forall i=1,2,\cdots,M,m_i(x)\lt0 ∃x^∈RelintD s.t. ∀i=1,2,⋯,M,mi(x)<0
其中 Relint 表示相对内部(不包含边界的内部)。
- 对于大多数凸优化问题,Slater 条件成立。
- 松弛 Slater 条件,如果 M 个不等式约束中,有 K 个函数为仿射函数,那么只要其余的函数满足 Slater 条件即可。
上面介绍了原问题和对偶问题的对偶关系,但是实际还需要对参数进行求解,求解方法使用 KKT 条件进行:
KKT 条件和强对偶关系是等价关系。KKT 条件对最优解的条件为:
可行域:
m i ( x ∗ ) ≤ 0 n j ( x ∗ ) = 0 λ ∗ ≥ 0 \begin{align} m_i(x^*)\le0\\ n_j(x^*)=0\\ \lambda^*\ge0 \end{align} mi(x∗)≤0nj(x∗)=0λ∗≥0互补松弛 λ ∗ m i ( x ∗ ) = 0 , ∀ m i \lambda^*m_i(x^*)=0,\forall m_i λ∗mi(x∗)=0,∀mi,对偶问题的最佳值为 d ∗ d^* d∗,原问题为 p ∗ p^* p∗
d ∗ = max λ , η g ( λ , η ) = g ( λ ∗ , η ∗ ) = min x L ( x , λ ∗ , η ∗ ) ≤ L ( x ∗ , λ ∗ , η ∗ ) = f ( x ∗ ) + ∑ i = 1 M λ ∗ m i ( x ∗ ) ≤ f ( x ∗ ) = p ∗ \begin{align} d^*&=\max_{\lambda,\eta}g(\lambda,\eta)=g(\lambda^*,\eta^*)\nonumber\\ &=\min_{x}L(x,\lambda^*,\eta^*)\nonumber\\ &\le L(x^*,\lambda^*,\eta^*)\nonumber\\ &=f(x^*)+\sum\limits_{i=1}^M\lambda^*m_i(x^*)\nonumber\\ &\le f(x^*)=p^* \end{align} d∗=λ,ηmaxg(λ,η)=g(λ∗,η∗)=xminL(x,λ∗,η∗)≤L(x∗,λ∗,η∗)=f(x∗)+i=1∑Mλ∗mi(x∗)≤f(x∗)=p∗
为了满足相等,两个不等式必须成立,于是,对于第一个不等于号,需要有梯度为0条件,对于第二个不等于号需要满足互补松弛条件。梯度为0: ∂ L ( x , λ ∗ , η ∗ ) ∂ x ∣ x = x ∗ = 0 \frac{\partial L(x,\lambda^*,\eta^*)}{\partial x}|_{x=x^*}=0 ∂x∂L(x,λ∗,η∗)∣x=x∗=0
Hard-margin SVM
支持向量机也是一种硬分类模型,在之前的感知机模型中,我们在线性模型的基础上叠加了符号函数,在几何直观上,可以看到,如果两类分的很开的话,那么其实会存在无穷多条线可以将两类分开。在 SVM 中,我们引入最大化间隔这个概念,间隔指的是数据和直线的距离的最小值,因此最大化这个值反映了我们的模型倾向。
分割的超平面可以写为:
w
T
x
+
b
w^Tx+b
wTx+b,那么最大化间隔就可以写为(约束为分类任务的要求):
{
max
m
arg
i
n
(
w
,
b
)
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
,
i
=
1
,
2...
N
\left\{ \begin{align} &\max m\arg in(w,b)\\ &s.t.y_i(w^Tx_i+b)>0,i=1,2...N\\ \end{align} \right.
{maxmargin(w,b)s.t.yi(wTxi+b)>0,i=1,2...N
其中margin是我们定义的求样本点到超平面最小距离的函数,接下来我们要考虑怎么求最小距离了,定义一个distance函数求样本点到超平面的距离,那么:
m
arg
i
n
(
w
,
b
)
=
min
d
i
s
tan
c
e
(
w
,
b
,
x
i
)
=
min
1
∣
∣
w
∣
∣
∣
w
T
x
i
+
b
∣
\begin{align} & m\arg in(w,b)=\min dis\tan ce(w,b,{{x}_{i}})=\min \frac{1}{||w||}|{{w}^{T}}{{x}_{i}}+b| \\ \end{align}
margin(w,b)=mindistance(w,b,xi)=min∣∣w∣∣1∣wTxi+b∣
整理合并就能得到目标函数:
m
a
x
w
,
b
[
min
i
∣
w
T
x
i
+
b
∣
∣
∣
w
∣
∣
]
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
⟹
m
a
x
w
,
b
[
min
i
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
]
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
\mathop{max}_{w,b}[\min_i\frac{|w^Tx_i+b|}{||w||}]\ s.t.\ y_i(w^Tx_i+b)>0\\ \Longrightarrow\mathop{max}_{w,b}[\min_i\frac{y_i(w^Tx_i+b)}{||w||}]\ s.t.\ y_i(w^Tx_i+b)>0
maxw,b[imin∣∣w∣∣∣wTxi+b∣] s.t. yi(wTxi+b)>0⟹maxw,b[imin∣∣w∣∣yi(wTxi+b)] s.t. yi(wTxi+b)>0
对于这个约束
y
i
(
w
T
x
i
+
b
)
>
0
y_i(w^Tx_i+b)>0
yi(wTxi+b)>0,不妨固定
min
y
i
(
w
T
x
i
+
b
)
=
1
>
0
\min y_i(w^Tx_i+b)=1>0
minyi(wTxi+b)=1>0,这是由于分开两类的超平面的系数经过比例放缩不会改变这个平面,这也相当于给超平面的系数作出了约束。化简后的式子可以表示为:
max
1
∣
∣
w
∣
∣
=
m
i
n
w
,
b
1
2
w
T
w
s
.
t
.
min
i
y
i
(
w
T
x
i
+
b
)
=
1
⇒
m
i
n
w
,
b
1
2
w
T
w
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
N
\max \frac{1}{||w||}=\mathop{min}_{w,b}\frac{1}{2}w^Tw\ s.t.\ \min_iy_i(w^Tx_i+b)=1\\ \Rightarrow\mathop{min}_{w,b}\frac{1}{2}w^Tw\ s.t.\ y_i(w^Tx_i+b)\ge1,i=1,2,\cdots,N
max∣∣w∣∣1=minw,b21wTw s.t. iminyi(wTxi+b)=1⇒minw,b21wTw s.t. yi(wTxi+b)≥1,i=1,2,⋯,N
这就是一个包含
N
N
N 个约束的凸优化问题,有很多求解这种问题的软件。
但是,如果样本数量或维度非常高,直接求解困难甚至不可解,于是需要对这个问题进一步处理。
引入 Lagrange 函数:
L
(
w
,
b
,
λ
)
=
1
2
w
T
w
+
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\lambda)=\frac{1}{2}w^Tw+\sum\limits_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))
L(w,b,λ)=21wTw+i=1∑Nλi(1−yi(wTxi+b))
我们的原问题就等价于:
m
i
n
w
,
b
max
λ
L
(
w
,
b
,
λ
i
)
s
.
t
.
λ
i
≥
0
\mathop{min}_{w,b}\max_{\lambda}L(w,b,\lambda_i)\ s.t.\ \lambda_i\ge0
minw,bλmaxL(w,b,λi) s.t. λi≥0
我们再根据强对偶性交换最小和最大值的符号:
max
λ
i
min
w
,
b
L
(
w
,
b
,
λ
i
)
s
.
t
.
λ
i
≥
0
\max_{\lambda_i}\min_{w,b}L(w,b,\lambda_i)\ s.t.\ \lambda_i\ge0
λimaxw,bminL(w,b,λi) s.t. λi≥0
先求
m
i
n
w
,
b
L
(
w
,
b
,
λ
i
)
min_{w,b}L(w,b,\lambda_i)
minw,bL(w,b,λi),具体怎么求参考无约束最优化问题,也就是直接求导:
-
对 b b b求导: ∂ ∂ b L = 0 ⇒ ∑ i = 1 N λ i y i = 0 \frac{\partial}{\partial b}L=0\Rightarrow\sum\limits_{i=1}^N\lambda_iy_i=0 ∂b∂L=0⇒i=1∑Nλiyi=0
-
对 w w w求导:首先将 b b b 代入:
L ( w , b , λ i ) = 1 2 w T w + ∑ i = 1 N λ i ( 1 − y i w T x i − y i b ) = 1 2 w T w + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i w T x i L(w,b,\lambda_i)=\frac{1}{2}w^Tw+\sum\limits_{i=1}^N\lambda_i(1-y_iw^Tx_i-y_ib)=\frac{1}{2}w^Tw+\sum\limits_{i=1}^N\lambda_i-\sum\limits_{i=1}^N\lambda_iy_iw^Tx_i L(w,b,λi)=21wTw+i=1∑Nλi(1−yiwTxi−yib)=21wTw+i=1∑Nλi−i=1∑NλiyiwTxi
所以:
∂ ∂ w L = 0 ⇒ w = ∑ i = 1 N λ i y i x i \frac{\partial}{\partial w}L=0\Rightarrow w=\sum\limits_{i=1}^N\lambda_iy_ix_i ∂w∂L=0⇒w=i=1∑Nλiyixi -
将上面两个参数代入:
L ( w , b , λ i ) = − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i L(w,b,\lambda_i)=-\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\lambda_i\lambda_jy_iy_jx_i^Tx_j+\sum\limits_{i=1}^N\lambda_i L(w,b,λi)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi
最后,目标函数就变为对偶问题:
max
λ
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
,
s
.
t
.
λ
i
≥
0
⇒
min
λ
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
N
λ
i
,
s
.
t
.
λ
i
≥
0
\max_{\lambda}-\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\lambda_i\lambda_jy_iy_jx_i^Tx_j+\sum\limits_{i=1}^N\lambda_i,\ s.t.\ \lambda_i\ge0\Rightarrow\min_{\lambda}\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\lambda_i\lambda_jy_iy_jx_i^Tx_j-\sum\limits_{i=1}^N\lambda_i,\ s.t.\ \lambda_i\ge0
λmax−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi, s.t. λi≥0⇒λmin21i=1∑Nj=1∑NλiλjyiyjxiTxj−i=1∑Nλi, s.t. λi≥0
从 KKT 条件得到超平面的参数:
原问题和对偶问题满足强对偶关系的充要条件为其满足 KKT 条件:
∂ L ∂ w = 0 , ∂ L ∂ b = 0 λ k ( 1 − y k ( w T x k + b ) ) = 0 λ i ≥ 0 1 − y i ( w T x i + b ) ≤ 0 \begin{align} &\frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0 \\&\lambda_k(1-y_k(w^Tx_k+b))=0\\ &\lambda_i\ge0\\ &1-y_i(w^Tx_i+b)\le0 \end{align} ∂w∂L=0,∂b∂L=0λk(1−yk(wTxk+b))=0λi≥01−yi(wTxi+b)≤0
根据这个条件就得到了对应的最佳参数:
w
^
=
∑
i
=
1
N
λ
i
y
i
x
i
b
^
=
y
k
−
w
T
x
k
=
y
k
−
∑
i
=
1
N
λ
i
y
i
x
i
T
x
k
,
∃
k
,
1
−
y
k
(
w
T
x
k
+
b
)
=
0
\hat{w}=\sum\limits_{i=1}^N\lambda_iy_ix_i\\ \hat{b}=y_k-w^Tx_k=y_k-\sum\limits_{i=1}^N\lambda_iy_ix_i^Tx_k,\exist k,1-y_k(w^Tx_k+b)=0
w^=i=1∑Nλiyixib^=yk−wTxk=yk−i=1∑NλiyixiTxk,∃k,1−yk(wTxk+b)=0
于是这个超平面的参数
w
w
w 就是数据点的线性组合,最终的参数值就是部分满足
y
i
(
w
T
x
i
+
b
)
=
1
y_i(w^Tx_i+b)=1
yi(wTxi+b)=1向量的线性组合(互补松弛条件给出),这些向量也叫支撑向量。