文章目录
参考地址: https://zhuanlan.zhihu.com/p/77750026
1.支持向量
1.1 线性可分
在二维空间上,两类点被一条直线完全分开叫做线性可分。
严格的数学定义是:
D
0
D_0
D0和
D
1
D_1
D1是
n
n
n维欧氏空间中的两个点集。如果存在
n
n
n维向量
w
w
w和实数
b
b
b,使得所有属于
D
0
D_0
D0的点
x
i
x_i
xi都有
w
x
i
+
b
>
0
wx_i+b>0
wxi+b>0,而对于所有属于
D
1
D_1
D1的点
x
j
x_j
xj则有
w
x
j
+
b
<
0
wx_j+b<0
wxj+b<0,则我们称
D
0
D_0
D0和
D
1
D_1
D1线性可分。
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 n n维空间后,点 x = ( x 1 , x 2 . . . x n ) x=(x_1,x_2...x_n) x=(x1,x2...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
d,其他点到超平面的距离大于
d
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}{ll} \frac{w^{T} x+b}{\|w\| d} \geq 1 \quad y & =1 \\ \frac{w^{T} x+b}{\|w\| d} \leq-1 & y=-1 \end{array}\right. {∥w∥dwTx+b≥1y∥w∥dwTx+b≤−1=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}{ll} w^{T} x+b \geq 1 & y=1 \\ w^{T} x+b \leq-1 & y=-1 \end{array}\right. {wTx+b≥1wTx+b≤−1y=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 s.t. y i ( w T x i + b ) ≥ 1 \min \frac{1}{2}\|w\|^{2} \text { s.t. } \quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1 min21∥w∥2 s.t. yi(wTxi+b)≥1
2. 对偶问题
2.1 拉格朗日乘数法
2.2.1 等式约束优化问题
本科高等数学学的拉格朗日乘数法是等式约束优化问题:
min f ( x 1 , x 2 , … , x n ) s.t. h k ( x 1 , x 2 , … , x n ) = 0 k = 1 , 2 , … , l \begin{array}{cc} \min f\left(x_{1}, x_{2}, \ldots, x_{n}\right) \\ \text { s.t. } & h_{k}\left(x_{1}, x_{2}, \ldots, x_{n}\right)=0 \quad k=1,2, \ldots, l \end{array} minf(x1,x2,…,xn) 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 , λ ) L(x, \lambda) L(x,λ)称为Lagrange函数,参数 λ \lambda λ称为Lagrange乘子。利用必要条件找到可能的极值点:
{ ∂ L ∂ x i = 0 i = 1 , 2 , … , n ∂ L ∂ λ k = 0 k = 1 , 2 , … , l \left\{\begin{array}{ll} \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{array}\right. {∂xi∂L=0∂λk∂L=0i=1,2,…,nk=1,2,…,l
具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件。等式约束下的Lagrange乘数法引入了 l l l个Lagrange乘子,我们将 x i x_i xi与 λ i \lambda_i λi一视同仁,把 λ k \lambda_k λk 也看作优化变量,共有 ( n + l ) (n+l) (n+l)个优化变量。
2.1.2 不等式约束优化问题
而我们现在面对的是不等式优化问题,针对这种情况其主要思想是将不等式约束条件转变为等式约束条件,引入松弛变量,将松弛变量也是为优化变量。
以我们的例子为例:
minf ( w ) = min 1 2 ∥ w ∥ 2 s.t. g i ( w ) = 1 − y i ( w T x i + b ) ≤ 0 \begin{array}{ll} & \operatorname{minf}(w)=\min \frac{1}{2}\|w\|^{2} \\ \text { s.t. } & g_{i}(w)=1-y_{i}\left(w^{T} x_{i}+b\right) \leq 0 \end{array} s.t. minf(w)=min21∥w∥2gi(w)=1−yi(wTxi+b)≤0
我们引入松弛变量 a i 2 a_i^2 ai2得到 h i ( w , a i ) = g i ( w ) + a i 2 = 0 h_i(w,a_i)=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 ) h_i(w,a_i) hi(w,ai),这不符合我们的意愿。由此我们将不等式约束转化为了等式约束,并得到 Lagrange 函数:
L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i h i ( w ) = f ( w ) + ∑ j = 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_{j=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)+j=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{array}{l}\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{array}\right. ⎩ ⎨ ⎧∂wi∂L=∂wi∂f+∑i=1nλi∂wi∂gi=0∂ai∂L=2λiai=0,∂λi∂L=gi(w)+ai2=0λi≥0
针对
λ
i
a
i
\lambda_ia_i
λiai我们有两种情况:
情形一:
λ
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
情形一:
λ
i
≠
0
,
a
i
=
0
\lambda_i \neq 0,a_{i} = 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_ig_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
直观来讲就是,支持向量
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)
min 1 2 ∣ w ∣ 2 ,即求 min L ( w , λ , a ) < c e n t e r > L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i [ g i ( w ) + a i 2 ] = f ( w ) + ∑ j = 1 n λ i g i ( w ) + ∑ i = 1 n λ i a i 2 \min \frac{1}{2}|w|^{2},即求\min L(w, \lambda, a) <center>\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_{j=1}^{n} \lambda_{i} g_{i}(w)+\sum_{i=1}^{n} \lambda_{i} a_{i}^{2} \end{aligned} min21∣w∣2,即求minL(w,λ,a)<center>L(w,λ,a)=f(w)+i=1∑nλi[gi(w)+ai2] =f(w)+j=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 \min _{w} \max {\lambda} L(w, \lambda)\\ s.t. \quad \lambda{i} \geq 0 wminmaxλL(w,λ)s.t.λi≥0
出了上面的理解方式,我们还可以有另一种理解方式: 由于
λ
i
≥
0
\lambda_i\geq0
λi≥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 \min _{w} \max {\lambda} L(w, \lambda) \\s.t. \quad \lambda{i} \geq 0 wminmaxλL(w,λ)s.t.λi≥0
变成了:
max λ min w L ( w , λ ) s . t . λ i ≥ 0 \max _{\lambda} \min {w} L(w, \lambda) \\s.t. \quad \lambda{i} \geq 0 λmaxminwL(w,λ)s.t.λi≥0
假设有个函数 f f f我们有:
m i n m a x f ≥ m a x m i n f min\ max\ f \geq max\ min\ f min max f≥max min f
也就是说,最大的里面挑出来的最小的也要比最小的里面挑出来的最大的要大。这关系实际上就是弱对偶关系,而强对偶关系是当等号成立时,即:
m i n m a x f = m a x m i n f min\ max\ f=max\ min\ f min max f=max min f
如果 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 \min {w} \frac{1}{2}|w|^{2} \\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 minw21∣w∣2s.t.gi(w,b)=1−yi(wTxi+b)≤0,i=1,2,…,n
那么求解线性可分的 SVM 的步骤为:
步骤 1:
构造拉格朗日函数:
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} minw,bmaxλL(w,b,λ)=s.t.λi≥021∣w∣2+∑i=1nλi[1−yi(wTxi+b)]
步骤 2:
利用强对偶性转化:
max λ min w , b L ( w , b , λ ) \max _{\lambda} \min _{w, b} L(w, b, \lambda) λmaxw,bminL(w,b,λ)
现对参数 w w w和 b b b求偏导数:
∂ L ∂ w = w − ∑ i = 1 n λ i x i y i = 0 ∂ L ∂ b = ∑ i = 1 n λ i y i = 0 \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 ∂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 \sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=w \sum_{i=1}^{n} \lambda_{i} y_{i}=0 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) min∗w,bL(w,b,λ)=∑∗j=1nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)
步骤 3:
由步骤 2 得:
max ∗ λ [ ∑ ∗ j = 1 n λ i − 1 2 ∑ j = 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{aligned} \max *{\lambda}\left[\sum*{j=1}^{n} \lambda_{i}\right.& \left.-\frac{1}{2} \sum_{j=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. } & \sum_{i=1}^{n} \lambda_{i} y_{i}=0 \quad \lambda_{i} \geq 0 \end{aligned} max∗λ[∑∗j=1nλi−21j=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
没法一次只变动一个参数。所以我们选择了一次选择两个参数。具体步骤为:
-
选择两个需要更新的参数 λ 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\geq0 λi≥0。 -
对于仅有一个约束条件的最优化问题,我们完全可以在 λ i \lambda_i λi 上对优化目标求偏导,令导数为零,从而求出变量值 λ i n e w \lambda_{inew} λinew,然后根据 λ i n e w \lambda_{inew} λinew求出 λ j n e w \lambda_{jnew} λjnew。
-
多次迭代直至收敛。
通过 SMO 求得最优解 λ ∗ \lambda^* λ∗。
步骤 4 :
我们求偏导数时得到:
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
w
w。
我们知道所有
λ
i
>
0
\lambda_i>0
λi>0对应的点都是支持向量,我们可以随便找个支持向量,然后带入:
y
i
(
w
x
s
+
b
)
=
1
y_i(wx_s+b)=1
yi(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-wx_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)
步骤 5:
w
w
w和
b
b
b都求出来了,我们就能构造出最大分割超平面:
w
T
x
+
b
=
0
w^Tx+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 \min {w} \frac{1}{2}|w|^{2}+C \sum{i=1}^{m} \xi_{i}\\ 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 minw21∣w∣2+C∑i=1mξis.t.gi(w,b)=1−yi(wTxi+b)−ξi≤0,ξi≥0,i=1,2,…,n
其中
C
C
C是一个大于0的常数,可以理解为错误样本的惩罚程度,若
C
C
C为无穷大,$ \xi_{i}
必然无穷小,如此一来线性
S
V
M
就又变成了线性可分
S
V
M
;当
必然无穷小,如此一来线性SVM就又变成了线性可分SVM;当
必然无穷小,如此一来线性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} \dashv \cdot C & \sum*{i=1}^{m} \xi{i} \dashv \cdot \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} min∗w,b,ξmaxλ,μL(w,b,ξ,λ,μ)=21∣w∣2⊣⋅C∑∗i=1mξ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
w、b
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
w、b
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 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} 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) min∗w,b,ξL(w,b,ξ,λ,μ)=∑∗j=1nλi−21i=1∑nj=1∑nλiλjyiyj(xi⋅xj)
最小化结果只有 λ \lambda λ而没有 μ \mu μ,所以现在只需要最大化 λ \lambda λ就好:
max λ [ ∑ j = 1 n λ i − 1 2 ∑ j = 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 , C − λ i − μ i = 0 \max {\lambda}\left[\sum{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{j=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\right]\\ s.t. \quad \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 maxλ[∑j=1nλi−21j=1∑nj=1∑nλiλjyiyj(xi⋅xj)]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 ) 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) w=i=1∑mλiyixib=∣S∣1s∈S∑(ys−wxs)
然后我们通过上面两个式子求出
w
w
w和
b
b
b,最终求得超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0,
这边要注意一个问题,在间隔内的那部分样本点是不是支持向量?
我们可以由求参数
w
w
w的那个式子可看出,只要
λ
i
>
0
\lambda_i>0
λi>0的点都能够影响我们的超平面,因此都是支持向量。
5. 核函数
5.1 线性不可分
我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。
但我们可能会碰到的一种情况是样本点不是线性可分的,比如:
这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:
对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性SVM。
我们用
x
x
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 \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]\\ s.t. \quad \sum_{i=1}^{n} \lambda_{i} y_{i}=0, \quad \lambda_{i} \geq 0, \quad C-\lambda_{i}-\mu_{i}=0 minλ[21∑i=1nj=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 ) (x_i\cdot x_j) (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
i
)
⋅
ϕ
(
x
j
)
)
k(x,y)=\left(\phi\left(x_{i}\right) \cdot \phi\left(x_{j}\right)\right)
k(x,y)=(ϕ(xi)⋅ϕ(xj)),
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(N^2) O(N2),其中 N N N为训练样本的数量;
- 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( N 2 ) O(N^2) O(N2);
- 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。
因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。