支持向量机SVM(2)——拉格朗日乘数法

支持向量机SVM——拉格朗日乘数法

接上一篇支持向量机SVM——间隔最大化
我们知道了支持向量所需要解决的问题如下:
m i n ( w , b ) 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m min_{(w,b)} \frac{1}{2}||w||^{2}\\s.t.\quad y_i(w^Tx_i+b)\geq1 ,\quad i=1,2,...,m min(w,b)21w2s.t.yi(wTxi+b)1,i=1,2,...,m
上面是一个有条件约束情况下的目标函数优化(求极值),这类问题也称为条件极值。而条件极值的问题我们通常可以通过构造拉格朗日函数来进行求解。

1.拉格朗日函数

首先我们看到一个二元函数的例子:

求函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在条件 ϕ ( x , y ) = 0 \phi(x,y)=0 ϕ(x,y)=0限制下的极值?
消元法:
设函数 f ( x , y ) f(x,y) f(x,y) ϕ ( x , y ) \phi(x,y) ϕ(x,y) ( x 0 , y 0 ) (x_0,y_0) (x0,y0)附近具有连续偏导数,且 ϕ x ′ ( x , y ) \phi^{'}_x(x,y) ϕx(x,y) ϕ y ′ ( x , y ) \phi^{'}_y(x,y) ϕy(x,y)不同时为0,将y视为由方程 ϕ ( x , y ) \phi(x,y) ϕ(x,y)确定的x的函数 y = ψ ( x ) y=\psi(x) y=ψ(x),于是二元函数的条件极值问题就化为了一元函数 z = f ( x , ψ ( x ) ) z=f(x,\psi(x)) z=f(x,ψ(x))的无条件极值问题。
因此在极值点处必须满足一元函数极值存在的必要条件(即导数等于0):
d z d x = 0 \frac{d_z}{d_x}=0 dxdz=0
进一步z对x求导得:
d z d x = f x ′ ( x , y ) + f y ′ ( x , y ) d y d x ( 1 ) \frac{d_z}{d_x}=f^{'}_x(x,y)+f^{'}_y(x,y)\frac{d_y}{d_x} \qquad(1) dxdz=fx(x,y)+fy(x,y)dxdy(1)
又由 ϕ ( x , y ) = 0 \phi(x,y)=0 ϕ(x,y)=0得(这里使用了隐函数的微分法):
d y d x = − ϕ x ′ ( x , y ) ϕ y ′ ( x , y ) ( 2 ) \frac{d_y}{d_x}=-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)} \qquad (2) dxdy=ϕy(x,y)ϕx(x,y)(2)
将(2)式代入(1)中,可得:
d z d x = f x ′ ( x , y ) − ϕ x ′ ( x , y ) ϕ y ′ ( x , y ) f y ′ ( x , y ) \frac{d_z}{d_x}=f^{'}_x(x,y)-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)}f^{'}_y(x,y) dxdz=fx(x,y)ϕy(x,y)ϕx(x,y)fy(x,y)
根据极值存在必要条件的等式 d z d x = 0 \frac{d_z}{d_x}=0 dxdz=0以及题目中的约束可得极值点的坐标必须满足以下方程:
{ f x ′ ( x , y ) − ϕ x ′ ( x , y ) ϕ y ′ ( x , y ) f y ′ ( x , y ) = 0 ( 3 ) ϕ ( x , y ) = 0 ( 4 ) \begin{cases}f^{'}_x(x,y)-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)}f^{'}_y(x,y)=0 \qquad(3)\\\phi(x,y)=0\qquad\qquad\qquad\qquad\quad(4)\end{cases} fx(x,y)ϕy(x,y)ϕx(x,y)fy(x,y)=0(3)ϕ(x,y)=0(4)

我们将方程(3)(4)联立求解即可得到我们的极值点。

拉格朗日函数的做法:
F ( x , y ) = f ( x , y ) + λ ϕ ( x , y ) F(x,y)=f(x,y)+\lambda\phi(x,y) F(x,y)=f(x,y)+λϕ(x,y)(这里的F(x,y)就是我们的拉格朗日函数, λ \lambda λ称为拉格朗日乘数)
对上式求偏导,得:
{ F x ′ ( x , y ) = f x ′ ( x , y ) + λ ϕ x ′ ( x , y ) F y ′ ( x , y ) = f y ′ ( x , y ) + λ ϕ y ′ ( x , y ) \begin{cases} F^{'}_x(x,y)=f^{'}_x(x,y)+\lambda\phi^{'}_x(x,y)\\ F^{'}_y(x,y)=f^{'}_y(x,y)+\lambda\phi^{'}_y(x,y) \end{cases} {Fx(x,y)=fx(x,y)+λϕx(x,y)Fy(x,y)=fy(x,y)+λϕy(x,y)

F x ′ ( x , y ) = 0 , F y ′ ( x , y ) = 0 F^{'}_x(x,y)=0,F^{'}_y(x,y)=0 Fx(x,y)=0Fy(x,y)=0
此时我们得到无条件极值的极值点要满足的必要条件:
{ f x ′ ( x , y ) + λ ϕ x ′ ( x , y ) = 0 f y ′ ( x , y ) + λ ϕ y ′ ( x , y ) = 0 \begin{cases} f^{'}_x(x,y)+\lambda\phi^{'}_x(x,y)=0\\ f^{'}_y(x,y)+\lambda\phi^{'}_y(x,y)=0 \end{cases} {fx(x,y)+λϕx(x,y)=0fy(x,y)+λϕy(x,y)=0
上式中消去 λ \lambda λ我们可以得到与消元法最后相同的结果,这也证明了为什么要这样构造拉格朗日函数。

推广到n元函数在m个附加条件下的极値问题,拉格朗日函数的一般形式:
F ( x 1 , x 2 , . . . , x n ) = f ( x 1 , x 2 , . . . , x n ) + ∑ i = 1 m λ i ϕ i ( x 1 , x 2 , . . . , x n ) F(x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n)+\sum_{i=1}^m\lambda_i\phi_i(x_1,x_2,...,x_n) F(x1,x2,...,xn)=f(x1,x2,...,xn)+i=1mλiϕi(x1,x2,...,xn)
然后对其求偏导解方程就可以得到极值点了。

了解完拉格朗日函数之后,我们回到SVM的所要解决的问题,即在给定条件下求最小值,这里的条件主要分为了等式约束条件和不等式两种。

2.等式约束条件

这和我们上面的例子是差不多的,假设我们的目标函数是 f ( x ) f(x) f(x),约束条件 h i ( x ) = 0 h_i(x)=0 hi(x)=0,即:
m i n f ( x ) \qquad\qquad\qquad\qquad\qquad minf(x) minf(x)
s . t . h i ( x ) = 0 , i = 1 , 2 , 3... \qquad\qquad \qquad s.t. \quad h_i(x)=0,i=1,2,3... s.t.hi(x)=0i=1,2,3...
这里的x表示的是向量 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn)
解决这类问题主要有以下几个步骤:
1.构造拉格朗日函数:
F ( x ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) \qquad\qquad\qquad\qquad F(x)=f(x)+\sum_{i=1}^m\lambda_ih_i(x) F(x)=f(x)+i=1mλihi(x)
2.对变量求偏导
3.联合等式约束条件和偏导等于0进行求解得到极值点(最优解),再将极值点代入我们的目标函数,得到最小值。

3.不等式约束条件

对于本文开头所说SVM所需要解决的问题,因为 w w w是向量,我们可以将 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2写成 w T w w^Tw wTw
{ m i n ( w , b ) 1 2 w T w s . t . y i ( w T x i + b ) ≥ 1    ⟺    1 − y i ( w T x i + b ) ≤ 0 \begin{cases}min_{(w,b)}\frac{1}{2}w^Tw\\ s.t. \quad y_i(w^Tx_i+b)\geq1\iff1- y_i(w^Tx_i+b)\leq0\end{cases} {min(w,b)21wTws.t.yi(wTxi+b)11yi(wTxi+b)0
(注:min的下标(w,b)表示是找到一个w和b,来最小化目标函数,并且i=1,2,…N)

(1)首先构造拉格朗日函数:
L ( w , b , λ ) = 1 2 w T w + ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) \qquad\qquad\qquad L(w,b,\lambda)=\frac{1}{2}w^Tw+\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b)) L(w,b,λ)=21wTw+i=1Nλi(1yi(wTxi+b))
(2)接下来我们可以把原问题转为如下形式:
{ m i n ( w , b )    m a x λ L ( w , b , λ ) s . t . λ i ≥ 0 \begin{cases}min_{(w,b)}\;max_{\lambda}L(w,b,\lambda)\\ s.t. \quad \lambda_i\geq0\end{cases} {min(w,b)maxλL(w,b,λ)s.t.λi0

原问题中w,b是要满足条件 1 − y i ( w T x i + b ) ≤ 0 1- y_i(w^Tx_i+b)\leq0 1yi(wTxi+b)0的,那么这么转换后和原问题是否等价,并且我们的优化目标是否也和原优化目标等价?

这里我看到了网上的一种粗略的证明方法,比较好理解:

首先我们求解一下 m a x λ L ( w , b , λ ) max_{\lambda}L(w,b,\lambda) maxλL(w,b,λ)到底等于多少?
我们构造的拉格朗日函数中 1 − y i ( w T x i + b ) 1- y_i(w^Tx_i+b) 1yi(wTxi+b)这一项无非两种情况大于0或小于等于0.
1)如果 1 − y i ( w T x i + b ) > 0 1- y_i(w^Tx_i+b)>0 1yi(wTxi+b)>0,当 λ → ∞ \lambda\to\infty λ时, ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) \sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b)) i=1Nλi(1yi(wTxi+b))也趋于 ∞ \infty ,所以 m a x λ L ( w , b , λ ) = ∞ max_{\lambda}L(w,b,\lambda)=\infty maxλL(w,b,λ)=

2)如果 1 − y i ( w T x i + b ) ≤ 0 1- y_i(w^Tx_i+b)\leq0 1yi(wTxi+b)0,当 λ = 0 \lambda=0 λ=0时, ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) \sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b)) i=1Nλi(1yi(wTxi+b))取得最大值为0,所以 m a x λ L ( w , b , λ ) = 1 2 w T w max_{\lambda}L(w,b,\lambda)=\frac{1}{2}w^Tw maxλL(w,b,λ)=21wTw

最后, m i n ( w , b )    m a x λ L ( w , b , λ ) = m i n ( w , b )   ( ∞ , 1 2 w T w ) = m i n ( w , b ) 1 2 w T w min_{(w,b)}\;max_{\lambda}L(w,b,\lambda)=min_{(w,b)}\,(\infty,\frac{1}{2}w^Tw)=min_{(w,b)}\frac{1}{2}w^Tw min(w,b)maxλL(w,b,λ)=min(w,b)(,21wTw)=min(w,b)21wTw.
可以看到我们的优化目标是等价的,并且在求min的时候我们自动忽略掉等于 ∞ \infty 的那部分(也就是忽舍弃w,b满足 1 − y i ( w T x i + b ) > 0 1- y_i(w^Tx_i+b)>0 1yi(wTxi+b)>0),所以我们 λ , b \lambda,b λb也就自动满足原问题中的条件
,构造拉格朗日函数的好处就是我们把原问题中带约束转换为了对w,b无约束的问题,这就很方便我们后面求最优解了。

转换后的问题也称作原始问题的对偶问题

(3)利用对偶关系将我们上面得到的新问题再次转换为如下形式(即将极小极大问题转换为极大极小问题):
{ m a x λ    m i n ( w , b ) L ( w , b , λ ) s . t . λ i ≥ 0 \begin{cases}max_{\lambda}\;min_{(w,b)}L(w,b,\lambda)\\ s.t. \quad \lambda_i\geq0\end{cases} {maxλmin(w,b)L(w,b,λ)s.t.λi0
转换后的优化问题也称为(2)的对偶问题。
这里需要引用一个定理,即凸二次规划问题是具有强对偶关系的,因此我们可以这么转换(凸二次规划问题就是目标函数是二次的连续可微的凸函数,条件是最高次为1的多项式函数的这种情况),但是需要满足KKT条件,灾后面会提出。

这么转换的原因是此时w,b无约束, λ i \lambda_i λi有约束(要满足 λ i ≥ 0 \lambda_i\geq0 λi0),而无约束的情况是很好求极值的,所以通过对偶关系转换之后我们可以先求min这部分达到化简的作用。

那么接下来就可以直接求解无约束极值问题 m i n ( w , b ) L ( w , b , λ ) min_{(w,b)}L(w,b,\lambda) min(w,b)L(w,b,λ):
因为此时w,b是无约束的,所以我们就可以通过直接对w,b求偏导的方式来求极值。(求导的过程就不写出来了,直接放结果)
{ ∂ L ( w , b , λ ) ∂ b = 0    ⟺    ∑ i = 1 N λ i y i = 0 ∂ L ( w , b , λ ) ∂ w = 0    ⟺    w = ∑ i = 1 N λ i y i x i \begin{cases}\frac{∂ L(w,b,\lambda)}{∂ b}=0\iff\sum_{i=1}^N\lambda_iy_i=0\\\\\frac{∂ L(w,b,\lambda)}{∂ w}=0\iff w=\sum_{i=1}^N\lambda_iy_ix_i\end{cases} bL(w,b,λ)=0i=1Nλiyi=0wL(w,b,λ)=0w=i=1Nλiyixi
此时我们求得的w就是最优解,虽然还没求得b,但是将求得的结果代入 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ)也会把b消掉,代入后的结果就得到了最小值,即:
m i n ( w , b ) L ( w , b , λ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i min_{(w,b)}L(w,b,\lambda)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_jx^T_ix_j+\sum_{i=1}^N\lambda_i min(w,b)L(w,b,λ)=21i=1Nj=1NλiλjyiyjxiTxj+i=1Nλi

(4)将上面求得的最小值代入优化问题中,(3)中的问题就变成如下形式:
{ m a x λ    ( − 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 ∑ i = 1 N λ i y i = 0 \begin{cases}max_{\lambda}\;(-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_jx^T_ix_j+\sum_{i=1}^N\lambda_i)\\ s.t. \quad \lambda_i\geq0\\\qquad\sum_{i=1}^N\lambda_iy_i=0\end{cases} maxλ(21i=1Nj=1NλiλjyiyjxiTxj+i=1Nλi)s.t.λi0i=1Nλiyi=0

前面我们已经求得了w的最优解,现在我们的任务是通过上面的优化问题来求b的最优解。

(5)KKT条件:
{ λ i ( 1 − y i ( w T x i + b ) ) = 0 λ i ≥ 0 1 − y i ( w T x i + b ) ≤ 0 \begin{cases}\lambda_i(1- y_i(w^Tx_i+b))=0\\ \lambda_i\geq0\\1- y_i(w^Tx_i+b)\leq0\end{cases} λi(1yi(wTxi+b))=0λi01yi(wTxi+b)0
注意:原问题和对偶问题满足“强对偶关系”的充要条件就是他们满足KKT条件。
而前面(3)中我们说过凸二次规划问题具有强对偶关系,所以我们(4)中的问题是需要满足KKT条件的。

现在我们要用这个条件来求b:
对于任意支持向量 ( x k , y k ) (x_k,y_k) (xk,yk),都有 1 − y k ( w T x k + b ) = 0 1- y_k(w^Tx_k+b)=0 1yk(wTxk+b)=0

将w代入求得求得 b = y k − ∑ i = 1 N λ i y i x i T x k b=y_k-\sum_{i=1}^N\lambda_iy_ix^T_ix_k b=yki=1NλiyixiTxk
即最优解为:
{ w = ∑ i = 1 N λ i y i x i b = y k − ∑ i = 1 N λ i y i x i T x k \begin{cases}w=\sum_{i=1}^N\lambda_iy_ix_i\\b=y_k-\sum_{i=1}^N\lambda_iy_ix^T_ix_k\end{cases} {w=i=1Nλiyixib=yki=1NλiyixiTxk

但是现实中会采用一种更鲁棒的做法:使用所有支持向量来取平均值。 b = 1 ∣ S ∣ ∑ k ∈ S ( 1 y k − ∑ i = 1 N λ i y i x i T x k ) b=\frac{1}{|S|}\sum_{k\in S}(\frac{1}{y_k}-\sum_{i=1}^N\lambda_iy_ix^T_ix_k) b=S1kS(yk1i=1NλiyixiTxk)
(S是所有支持向量的下标集合,|S|即集合的大小)

小结:现在只需要求得 λ i \lambda_i λi就可以得到超平面方程,但是目前都是基于数据集线性可分的情况,但是现实情况数据集往往并不线性可分,可能只是近似线性可分,因此就有了软间隔最大化的做法。

下一篇支持向量机SVM(3)——软间隔

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值