机器学习笔记-理解支持向量机拉格朗日函数+对偶问题+KKT条件

理解支持向量机拉格朗日函数+对偶问题+KKT条件

  这章内容主要是对支持向量机中拉格朗日函数、对偶问题和KKT条件进行一个说明,虽然我们成功推导出支持向量机的对偶形式,也知道如何进行求解最优参数,但是具体为什么这样做,我们还是不得而知。为此,我觉得需要更加深入了解一下什么是KKT条件、为什么要构造拉格朗日函数,以及对偶问题又是什么?

  在深入了解之前,先分清楚对偶问题、拉格朗日函数、KKT条件,这三个概念其实都不一样,只是在支持向量机中将他们三个都使用了。
  首先来看拉格朗日函数,拉格朗日函数其实是由于引进了拉格朗日乘子而构造出来的。我们如果想搞清楚支持向量机的推导,就必须逐一了解其中的概念,从最开始的原始问题出发:

min ⁡ w , b 1 2 ∥ w ∥ 2 s . t .       y i ( w ⋅ x i + b ) − 1 ≥ 0 ,       i = 1 , 2 , ⋯   , N \min\limits_{w,b}{\frac{1}{2}\left\|{w}\right\|^2}\\ s.t.\,\,\,\,\,y_i(w\cdot x_i+b)-1\ge0,\,\,\,\,\,i=1,2,\cdots,N w,bmin21w2s.t.yi(wxi+b)10,i=1,2,,N

  在原始问题中,我们需要求解的是最优的参数 w w w b b b,而原始问题是一个二次规问题,且存在不等式约束条件。针对这样一个优化问题,我们肯定就想找到最好最快的方法来求解此类问题,于是就用到了拉格朗日乘数法。

拉格朗日乘数法

假设有如下的约束最优化问题:
min ⁡ x ∈ R n       f ( x ) s . t .       c i ( x ) ≤ 0 ,       i = 1 , 2 , ⋯   , k h j ( x ) = 0 ,      j = 1 , 2 , ⋯   , l \min\limits_{x\in R^n}\,\,\,\,\,f(x)\\ s.t.\,\,\,\,\,c_i(x)\le0,\,\,\,\,\,i=1,2,\cdots,k\\ h_j(x)=0,\,\,\,\,j=1,2,\cdots,l xRnminf(x)s.t.ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l
  称此约束问题为最优化问题的原始最优化问题,或者也叫原始问题,我们需要引进拉格朗日乘子用来构建拉格朗日函数:
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) L(x,\alpha,\beta)=f(x)+ \sum\limits_{i=1}^k{\alpha_ic_i(x)}+\sum\limits_{j=1}^l{\beta_jh_j(x)} L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)
  这就是广义拉格朗日函数,其中 α i , β j \alpha_i,\beta_j αi,βj是拉格朗日乘子,且 α i ≥ 0 \alpha_i\ge0 αi0,至于为什么要这样定义,我们的目的就是把有约束问题转换为无约束问题。而上述定义的拉格朗日函数还不能表示原始问题,我们需要对上述的拉格朗日函数求极大值,这里应该是很多人最难以理解的地方,为什么一定要对拉格朗日函数求极大值呢?
首先设原始问题为 ϕ p ( x ) \phi_p(x) ϕp(x),那么就有下面的等式成立:
ϕ p ( x ) = max ⁡ α , β : α i ≥ 0       L ( x , α , β ) \phi_p(x)=\max\limits_{\alpha,\beta:\alpha_i\ge0} \,\,\,\,\,L(x,\alpha,\beta) ϕp(x)=α,β:αi0maxL(x,α,β)
  下面再来看在 ∑ i = 1 k α i c i ( x ) \sum\limits_{i=1}^k{\alpha_ic_i(x)} i=1kαici(x)部分中,我们的 α i \alpha_i αi是乘子,而 c i ( x ) ≤ 0 c_i(x)\le0 ci(x)0是约束条件,假设,存在一个解 x i x_i xi是不满足 c i ( x ) ≤ 0 c_i(x)\le0 ci(x)0的,这个时候就会出现 c i ( x ) > 0 c_i(x)>0 ci(x)>0的情况,而我们的原始问题是对拉格朗日函数求极大值,此时的极大值就变成了 + ∞ +\infty + ,也就是说当有解是不满足约束条件时,我们的原始问题就不成立了,所以该解就不能要。
  同样的对 ∑ j = 1 l β j h j ( x ) \sum\limits_{j=1}^l{\beta_jh_j(x)} j=1lβjhj(x)也是一样,当存在一个解不满足 h i ( x ) = 0 h_i(x)=0 hi(x)=0这个约束条件,那么我们的求极大的结果就仍然是 + ∞ +\infty +,所以对拉格朗日函数求极大值,其实就是为了保证我们的约束条件是成立的,因为我们要求的是极大值,所以所有 c i ( x ) < 0 c_i(x)<0 ci(x)<0 i i i都会成为我们极大的障碍,所以这些 i i i α i \alpha_i αi都是等于0的。其次 h j ( x ) h_j(x) hj(x)也是如此。这样就可以保证我们找到的解肯定是满足约束条件的解,即必定满足下面的式子:
ϕ P ( x ) = { f ( x )         x 满 足 原 始 约 束 条 件 + ∞         其 他 {\phi _P}(x)=\left\{ \begin{array}{l} f(x)\,\,\,\,\,\,\,x满足原始约束条件\\ +\infty\,\,\,\,\,\,\,其他 \end{array} \right. ϕP(x)={f(x)x+
到这里已经明白了为什么对拉格朗日函数求极大就等于原始问题了。
  在原始的最优化问题中,我们是求极小值,所以我们要对拉格朗日函数先求极大值再求极小值,就出现了下面的式子:
min ⁡ x ϕ P ( x ) = min ⁡ x max ⁡ α , β : α i ≥ 0 L ( x , α , β ) \min\limits_{x}\phi_P(x)=\min\limits_{x}\max\limits_{\alpha,\beta:\alpha_i\ge0}L(x,\alpha,\beta) xminϕP(x)=xminα,β:αi0maxL(x,α,β)
  它是与原始最优化问题是等价的,即求解上述函数的解就是原始问题的解,所以后面求解只需要针对拉格朗日函数来求解。
如果在支持向量机(指线性可分支持向量机)中,与此时对应的部分应该是:
min ⁡ w , b max ⁡ α L ( w , b , α ) \min\limits_{w,b}\max\limits_{\alpha}L(w,b,\alpha) w,bminαmaxL(w,b,α)

对偶问题

  在将原始问题转换为对拉格朗日函数 L L L的先求极大再求极小问题,此时我们只需要关心如何求解这个极小极大问题即可。
此时就需要再引入一个新方法,叫对偶方法,下面来看:
优化问题延续上面定义的拉格朗日函数,接着定义:
ϕ D ( α , β ) = min ⁡ x L ( x , α , β ) \phi_D(\alpha,\beta)=\min\limits_{x}L(x,\alpha,\beta) ϕD(α,β)=xminL(x,α,β)
接着再考虑极大化 ϕ D ( α , β ) \phi_D(\alpha,\beta) ϕD(α,β),即得到:
max ⁡ α , β : α i ≥ 0 ϕ D ( α , β ) = max ⁡ α , β : α i ≥ 0 min ⁡ x L ( x , α , β ) \max\limits_{\alpha,\beta:\alpha_i\ge0}\phi_D(\alpha,\beta)=\max\limits_{\alpha,\beta:\alpha_i\ge0}\min\limits_{x}L(x,\alpha,\beta) α,β:αi0maxϕD(α,β)=α,β:αi0maxxminL(x,α,β)
我们把上述问题称为拉格朗日函数的极大极小问题。在上面我们给出了一个极小极大问题,这里又定义了一个极大极小问题,很明显,我们后续要证明的内容就是极大极小问题等于极小极大问题。
假设设极小极大问题和极大极小问题的最优值分别为: p ∗ p^* p d ∗ d^* d。则有:
d ∗ = max ⁡ α , β : α i ≥ 0 min ⁡ x L ( x , α , β ) p ∗ = min ⁡ x max ⁡ α , β : α i ≥ 0 L ( x , α , β ) d^*=\max\limits_{\alpha,\beta:\alpha_i\ge0}\min\limits_{x}L(x,\alpha,\beta)\\ p^*=\min\limits_{x}\max\limits_{\alpha,\beta:\alpha_i\ge0}L(x,\alpha,\beta) d=α,β:αi0maxxminL(x,α,β)p=xminα,β:αi0maxL(x,α,β)
因为拉格朗日函数的形式是一样的,所以如果我们先对拉格朗日函数求极大再求极小,求解的解肯定要比先对其求极小再求极大要大,即下面的式子恒成立:
d ∗ = max ⁡ α , β : α i ≥ 0 min ⁡ x L ( x , α , β ) ≤ min ⁡ x max ⁡ α , β : α i ≥ 0 L ( x , α , β ) = p ∗ d^*=\max\limits_{\alpha,\beta:\alpha_i\ge0}\min\limits_{x}L(x,\alpha,\beta)\le \min\limits_{x}\max\limits_{\alpha,\beta:\alpha_i\ge0}L(x,\alpha,\beta)=p^* d=α,β:αi0maxxminL(x,α,β)xminα,β:αi0maxL(x,α,β)=p
我们需要找到上述式子等式成立的情况,因为只有这种情况才是我们需要的。
下面给出定理:

对于对偶问题和原始问题,假设 f ( x ) f(x) f(x) c i ( x ) c_i(x) ci(x)是凸函数, h j ( x ) h_j(x) hj(x)是仿射函数,并且不等式约束 c i ( x ) c_i(x) ci(x)是严格执行的;即存在 x x x,对有所的 i i i都有 c i ( x ) < 0 c_i(x)<0 ci(x)<0,则存在 x ∗ , α ∗ , β ∗ x^*,\alpha^*,\beta^* x,α,β,使得 x ∗ x^* x是原始问题的最优解, α ∗ , β ∗ \alpha^*,\beta^* α,β是对偶问题的最优解,并且:
d ∗ = p ∗ = L ( x ∗ , α ∗ , β ∗ ) d^*=p^*=L(x^*,\alpha^*,\beta^*) d=p=L(x,α,β)

事实上,在绝大多数情况下,原始问题和对偶问题的最优值相等,这里的相关证明不详细叙述,有兴趣的可以阅读《最优化理论与算法》这本书。

KKT条件

我们已经得出了在支持向量机中下面的式子恒成立:
max ⁡ α min ⁡ w , b L ( w , b , α ) = min ⁡ w , b max ⁡ α L ( w , b , α ) \max\limits_{\alpha}\min\limits_{w,b}L(w,b,\alpha)=\min\limits_{w,b}\max\limits_{\alpha}L(w,b,\alpha) αmaxw,bminL(w,b,α)=w,bminαmaxL(w,b,α)
  从最开始的原始问题到先求拉格朗日函数对 α \alpha α的极大问题再到拉格朗日函数对 w , b w,b w,b的极小问题,变换到这一步,我们终于能开心的进行求解了,计算最小值,而且是无不等式和等式约束的最小值,那么直接简单求偏导令其等于0即可,求完偏导之后得到的 w w w b b b的表达式是成立的,带入拉格朗日函数中得到最后支持向量机的对偶形式,此时的对偶形式表达式中应该只包含 α \alpha α。再后续就是对对偶形式进行求解,此时要用到SMO算法,假设求解得到的最优解为 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α l ∗ ) \alpha^*=(\alpha^*_1,\alpha_2^*,\cdots,\alpha_l^*) α=(α1,α2,,αl)是对偶最优化问题的解,如果存在下标 α j ∗ > 0 \alpha_j^*>0 αj>0这时就可以使用下面的式子求得最原始的最优化问题。在这里我们可能会有一个疑问,为什么对偶问题的解就可以认为是原始问题的最优解呢?这就需要用到KKT条件了。
有定理:

假设有原始问题 min ⁡ x ∈ R n       f ( x ) s . t .       c i ( x ) ≤ 0 ,       i = 1 , 2 , ⋯   , k h j ( x ) = 0 ,      j = 1 , 2 , ⋯   , l \min\limits_{x\in R^n}\,\,\,\,\,f(x)\\ s.t.\,\,\,\,\,c_i(x)\le0,\,\,\,\,\,i=1,2,\cdots,k\\ h_j(x)=0,\,\,\,\,j=1,2,\cdots,l xRnminf(x)s.t.ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l 引进拉格朗日乘数和对偶变换后变成如下的对偶问题:
max ⁡ α , β : α i ≥ 0 min ⁡ x L ( x , α , β ) s . t .       α i ≥ 0 ,      i = 1 , 2 , ⋯   , k \max\limits_{\alpha,\beta:\alpha_i\ge0}\min\limits_{x}L(x,\alpha,\beta)\\ s.t.\,\,\,\,\,\alpha_i\ge0,\,\,\,\,i=1,2,\cdots,k α,β:αi0maxxminL(x,α,β)s.t.αi0,i=1,2,,k
假设对偶问题和原始问题如上所述,其中 f ( x ) f(x) f(x) c i ( x ) c_i(x) ci(x)是凸函数, h j ( x ) h_j(x) hj(x)是仿射函数,并且不等式约束 c i ( x ) c_i(x) ci(x)是严格执行的,则 x ∗ x^* x α ∗ , β ∗ \alpha^*,\beta^* α,β分别是原始问题和对偶问题解的充分必要条件是 x ∗ , α ∗ , β ∗ x^*,\alpha^*,\beta^* x,α,β满足下面的KKT条件:
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 α i ∗ c i ( x ∗ ) = 0 ,        i = 1 , 2 , ⋯   , k c i ( x ∗ ) ≤ 0 ,        i = 1 , 2 , ⋯   , k α i ∗ ≥ 0 ,        i = 1 , 2 , ⋯   , k h j ( x ∗ ) = 0 ,        i = 1 , 2 , ⋯   , l \nabla_xL(x^*,\alpha^*,\beta^*)=0\\ \alpha_i^*c_i(x^*)=0,\,\,\,\,\,\,i=1,2,\cdots,k\\ c_i(x^*)\le0,\,\,\,\,\,\,i=1,2,\cdots,k\\ \alpha_i^*\ge0,\,\,\,\,\,\,i=1,2,\cdots,k\\ h_j(x^*)=0,\,\,\,\,\,\,i=1,2,\cdots,l xL(x,α,β)=0αici(x)=0,i=1,2,,kci(x)0,i=1,2,,kαi0,i=1,2,,khj(x)=0,i=1,2,,l

这就是KKT条件的内容,根据定理,KKT条件在支持向量机中是显然成立的。于是在支持向量机中对偶问题为:
min ⁡ α       1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t .      ∑ i = 1 N α i y i = 0 α i ≥ 0      i = 1 , 2 , ⋯   , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\sum\limits_{i=1}^N{\alpha_iy_i=0}\\ \alpha_i\ge0\,\,\,\,i=1,2,\cdots,N αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=0αi0i=1,2,,N
套用KKT条件得到:

支持向量机的KKT条件
∇ w L ( w ∗ , b ∗ , α ∗ ) = w ∗ − ∑ i = 1 N α i ∗ y i x i = 0 ∇ b L ( w ∗ , b ∗ , α ∗ ) = − ∑ i = 1 N α i ∗ y i = 0 α i ∗ ( y i ( w ∗ ⋅ x i + b ∗ ) − 1 ) = 0 ,        i = 1 , 2 ⋯   , N y i ( w ∗ ⋅ x i + b ∗ ) − 1 ≥ 0 ,        i = 1 , 2 ⋯   , N α i ∗ ≥ 0 ,        i = 1 , 2 ⋯   , N \nabla_wL(w^*,b^*,\alpha^*)=w^*-\sum\limits_{i=1}^N{\alpha_i^*y_ix_i=0}\\ \nabla_bL(w^*,b^*,\alpha^*)=-\sum_{i=1}^N{\alpha_i^*y_i=0}\\ \alpha_i^*(y_i(w^*\cdot x_i+b^*)-1)=0,\,\,\,\,\,\,i=1,2\cdots,N\\ y_i(w^*\cdot x_i+b^*)-1\ge 0,\,\,\,\,\,\,i=1,2\cdots,N\\ \alpha_i^*\ge0,\,\,\,\,\,\,i=1,2\cdots,N wL(w,b,α)=wi=1Nαiyixi=0bL(w,b,α)=i=1Nαiyi=0αi(yi(wxi+b)1)=0,i=1,2,Nyi(wxi+b)10,i=1,2,Nαi0,i=1,2,N

于是可以解出 w ∗ w^* w的值:
w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum\limits_{i=1}^N{\alpha_i^*y_ix_i} w=i=1Nαiyixi
并且此时 α \alpha α中必定会有至少一个 α j > 0 \alpha_j>0 αj>0,因为如果没有 α j \alpha_j αj是大于0的,那么所有的 α j \alpha_j αj都是等于0,导致 w ∗ = 0 w^*=0 w=0,此时 w ∗ w^* w无解,产生矛盾,因此必定有 α j > 0 \alpha_j>0 αj>0成立。接着我们就可以利用这个 j j j来求解 b b b的值了,我们将 w ∗ w^* w的解带入下面的表达式中:
y i ( w ∗ ⋅ x j + b ∗ ) − 1 = 0 y_i(w^*\cdot x_j+b^*)-1=0 yi(wxj+b)1=0
再次化简得到:
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum\limits_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b=yji=1Nαiyi(xixj)
这样支持向量机中的 w w w b b b就全部求解出来,并且原始问题和对偶问题也就弄清楚了。

总结

  到这里接触支持向量机已经是第二次了,第一次的时候只能大概看明白支持向量机的工作原理,对其背后的数学思想是非常模糊的,在这次重新学习的过程中,我深入了解到一些支持向量机背后的数学思想,所有的结果背后都有着非常严谨的证明推理,正是这样才让支持向量机在20世纪初成为最热门的机器学习算法之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值