svm 解得的w和b分别是什么意思_《SVM笔记系列之三》拉格朗日乘数法和KKT条件的直观解释...

《SVM笔记系列之三》拉格朗日乘数法和KKT条件的直观解释

前言

在SVM的推导中,出现了核心的一个最优化问题,这里我们简单介绍下最优化问题,特别是带有约束的最优化问题,并且引入拉格朗日乘数法和广义拉格朗日乘数法,介绍并且直观解释了KKT条件,用于解决带约束的最优化问题。本人无专业的数学学习背景,只能在直观的角度上解释这个问题,如果有数学专业的朋友,还望不吝赐教。 如有误,请联系指正。转载请注明出处。

联系方式: e-mail: FesianXu@gmail.com

QQ: 973926198

github: https://github.com/FesianXu

有关代码开源: click


最优化问题

我们在高中,包括在高数中都会经常遇到求解一个函数的最小值,最大值之类的问题,这类问题就是属于最优化问题。比如给出下列一个不带有约束的最优化问题:

equation?tex=%5Cmin_%7Bx%7D+3x%5E2%2B4x%2B5%2C+x+%5Cin+R+%5Ctag%7B1.1%7D+

其中的

equation?tex=3x%5E2%2B4x%2B5我们称为
目标函数(objective function)。这样的问题,直接利用**罗尔定理(Rolle's theorem)**求出其鞍点,又因为其为凸函数而且可行域是整个
equation?tex=R,求出的鞍点便是最值点,这个是对于无约束最优化问题的解题套路。 如果问题带有约束条件,那么就变得不一样了,如:

equation?tex=%5Cmin_%7Bx%2C+y%7D+3xy%5E2+%5C%5C+s.t.%E3%80%80%E3%80%80%E3%80%804x%2B5y+%3D+10+%5Ctag%7B1.2%7D+

因为此时的约束条件是仿射函数(affine function)[^1],所以可以利用换元法将

equation?tex=x表示为
equation?tex=y的函数,从而将目标函数变为无约束的形式,然后利用罗尔定理便可以求出最值点了。 然而如果约束条件一般化为
equation?tex=g%28x%2C+y%29+%3D+c,那么
equation?tex=x就不一定可以用其他变量表示出来了,这个时候就要利用**拉格朗日乘数法(Lagrange multipliers )**了。

拉格朗日乘数法(Lagrange multipliers)

我们先一般化一个二元最优化问题为

equation?tex=%282.1%29形式:

equation?tex=%5Cmin_%7Bx%2C+y%7D+f%28x%2C+y%29+%5C%5C+s.t.%E3%80%80%E3%80%80g%28x%2C+y%29+%3D+c+%5Ctag%7B2.1%7D+

将目标函数

equation?tex=f%28x%2C+y%29和等式约束条件
equation?tex=g%28x%2C+y%29%3Dc画出来就如下图所示:

bd41c027bd92c5f252b767d0c08f5ebc.png

其中的

equation?tex=f%28x%2C+y%29虚线为等高线,而红线为
equation?tex=g%28x%2C+y%29%3Dc这个约束函数曲线与
equation?tex=f%28x%2Cy%29的交点的连线在
equation?tex=x-y%E5%B9%B3%E9%9D%A2的映射。其中,假设有
equation?tex=d_3+%3E+d_2+%3E+d_1
equation?tex=d_1点为最小值点(最优值点)。
从直观上可以发现,在
equation?tex=g%28x%2Cy%29%3Dc
equation?tex=f%28x%2Cy%29的非最优化交点A,B,C,D上,其
equation?tex=f%28x%2Cy%29
equation?tex=g%28x%2Cy%29的法线方向并不是共线的,注意,这个相当关键,因为如果不是共线的,说明
equation?tex=g%28x%2Cy%29%3Dc
equation?tex=f%28x%2Cy%29的交点中,还存在可以取得更小值的点存在。对于A点来说,B点就是更为小的存在。因此,我们从直觉上推论出只有当
equation?tex=g%28x%2Cy%29%3Dc
equation?tex=f%28x%2Cy%29的法线共线时,才是最小值点的候选点(鞍点)。推论到多元变量的问题的时候,法线便用梯度表示
。于是,我们有原问题取得最优值的必要条件:

equation?tex=%5Cnabla+f%28x%2Cy%29+%3D+%5Cnabla+%5Clambda+%28g%28x%2C+y%29-c%29+%5Ctag%7B2.2%7D+

equation?tex=%282.2%29其中的
equation?tex=%5Clambda表示两个梯度共线。 可以简单的变形为

equation?tex=%5Cnabla+L%28x%2C+y%2C+%5Clambda%29+%3D+%5Cnabla+f%28x%2Cy%29+-+%5Cnabla+%5Clambda+%28g%28x%2C+y%29-c%29+%3D+0+%5Ctag%7B2.3%7D+

让我们去掉梯度算子,得出

equation?tex=L%28x%2C+y%2C+%5Clambda%29+%3D+f%28x%2C+y%29+-+%5Clambda%28g%28x%2C+y%29+-+c%29+%5Ctag%7B2.4%7D+

这个时候

equation?tex=%5Clambda取个负号也是不影响的,所以式子
equation?tex=%282.4%29通常写作:

equation?tex=L%28x%2C+y%2C+%5Clambda%29+%3D+f%28x%2C+y%29+%2B+%5Clambda%28g%28x%2C+y%29+-+c%29+%5Ctag%7B2.5%7D+

看!我们得出了我们高数中经常见到的等式约束下的拉格朗日乘数函数的表示方法

多约束的拉格朗日乘数法

以上,我们讨论的都是单约束的拉格朗日乘数法,当存在多个等式约束时(其实不等式约束也是一样的),我们进行一些推广。先一般化一个二元多约束最小化问题:

equation?tex=%5Cmin_%7Bx%2C+y%7D+f%28x%2C+y%29+%5C%5C+s.t.%E3%80%80%E3%80%80g_i%28x%2C+y%29+%3D+0%2C+i+%3D+1%2C2%2C+%5Ccdots%2CN+%5Ctag%7B2.6%7D+

对于每个目标函数和约束配对,我们有:

equation?tex=L_1%28x+%2Cy+%2C%5Clambda_1%29+%3D+f%28x%2Cy%29%2B%5Clambda_1+g_1%28x%2Cy%29+%5C%5C+%5Cvdots+%5C%5C+L_N%28x%2C+y%2C+%5Clambda_N%29+%3D+f%28x%2Cy%29%2B%5Clambda_N+g_N%28x%2Cy%29+%5C%5C

将上式相加有:

equation?tex=%5Csum_%7Bi%3D1%7D%5EN+L_i%28x%2Cy%2C%5Clambda_i%29%3DN+f%28x%2C+y%29%2B%5Csum_%7Bi%3D1%7D%5EN+%5Clambda_ig_i%28x%2Cy%29+%5Ctag%7B2.7%7D+

定义多约束的拉格朗日函数为:

equation?tex=L%28x%2Cy%2C%5Clambda%29+%3D+f%28x%2Cy%29%2B%5Cfrac%7B1%7D%7BN%7D+%5Csum_%7Bi%3D1%7D%5EN+%5Clambda_ig_i%28x%2Cy%29+%5Ctag%7B2.8%7D+

因为

equation?tex=%5Clambda_i是常数,表示共线的含义而已,所以乘上一个常数
equation?tex=%5Cfrac%7B1%7D%7BN%7D也不会有任何影响,我们仍然用
equation?tex=%5Clambda_i表示,因此式子
equation?tex=%282.8%29变成:

equation?tex=L%28x%2Cy%2C%5Clambda%29+%3D+f%28x%2Cy%29%2B%5Csum_%7Bi%3D1%7D%5EN+%5Clambda_ig_i%28x%2Cy%29+%5Ctag%7B2.9%7D+

这就是多约束拉格朗日乘数法的函数表达形式。

一个计算例子

让我们举一个单约束的拉格朗日乘数法的计算例子,例子来源于引用3。 给出一个最大化任务

equation?tex=%5Cmax_%7Bx%2Cy%7D+xy%5E2+%5C%5C+s.t.%E3%80%80%E3%80%80g%28x%2Cy%29%3Ax%5E2%2By%5E2-3%3D0+%5Ctag%7B2.10%7D+

图像如:

77a6285a7bae5df3df22c5812ddafd87.png

只有一个约束,使用一个乘子

equation?tex=%5Clambda,有拉格朗日函数:

equation?tex=L%28x%2Cy%2C%5Clambda%29%3Dxy%5E2%2B%5Clambda%28x%5E2%2By%5E2-3%29+%5C%5C

按照条件求解候选点:

equation?tex=%5Cnabla_%7Bx%2Cy%2C%5Clambda%7D+L%28x%2Cy%2C%5Clambda%29+%3D+%28%5Cfrac%7B%5Cpartial+L%7D%7B%5Cpartial+x%7D%2C+%5Cfrac%7B%5Cpartial+L%7D%7B%5Cpartial+y%7D%2C+%5Cfrac%7B%5Cpartial+L%7D%7B%5Cpartial+%5Clambda%7D%29%3D%282xy%2B2%5Clambda+x%2C+x%5E2%2B2+%5Clambda+y%2C+x%5E2%2By%5E2-3%29%3D0+%5C%5C

equation?tex=x%28y%2B%5Clambda%29%3D0+%5Ctag%7Bi%7D++
equation?tex=x%5E2%2B2+%5Clambda+y+%3D+0+%5Ctag%7Bii%7D++
equation?tex=x%5E2%2By%5E2%3D3+%5Ctag%7Biii%7D+

根据式子

equation?tex=%28i%29%28ii%29%28iii%29, 解得有:

equation?tex=%28%5Cpm+%5Csqrt%7B2%7D%2C+1%2C+-1%29%3B+%28%5Cpm+%5Csqrt%7B2%7D%2C+-1%2C+1%29%3B+%280%2C+%5Cpm+%5Csqrt%7B3%7D%2C+0%29+%5C%5C

代入

equation?tex=f%28x%2Cy%29,得到:2, -2, 0,也就是我们需要求得的最大值,最小值。可以从图中看出,
我们观察到其等高线与约束投影线的确是相切的。

广义拉格朗日乘数法(Generalized Lagrange multipliers)

上面我们的拉格朗日乘数法解决了等式约束的最优化问题,但是在存在不等式约束的最优化问题(包括我们SVM中需要求解的最优化问题)上,普通的拉格朗日乘数法并不能解决,因此学者提出了广义拉格朗日乘数法(Generalized Lagrange multipliers), 用于解决含有不等式约束的最优化问题。这一章,我们谈一谈广义拉格朗日乘数法。

首先,我们先一般化我们的问题,规定一个二元标准的带有不等式约束的最小化问题(当然可以推广到多元的问题),如:

equation?tex=%5Cmin_%7Bx%2C+y%7D+f%28x%2C+y%29+%5C%5C+s.t.%E3%80%80%E3%80%80g_i%28x%2C+y%29+%5Cleq+0%2C+i+%3D+1%2C2%2C%5Ccdots%2CN+%5C%5C+h_i%28x%2C+y%29+%3D+0%2C+i+%3D+1%2C2%2C+%5Ccdots%2C+M+%5Ctag%7B3.1%7D+

类似于拉格朗日乘数法,参照式子

equation?tex=%282.9%29,我们使用
equation?tex=%5Calpha_i
equation?tex=%5Cbeta_i作为等式约束和不等式约束的拉格朗日乘子,得出下式:

equation?tex=L%28x%2C+y%2C+%5Calpha%2C+%5Cbeta%29+%3D+f%28x%2C+y%29%2B%5Csum_%7Bi%3D1%7D%5EN+%5Calpha_ig_i%28x+%2Cy%29%2B%5Csum_%7Bi%3D1%7D%5EM+%5Cbeta_i+h_i%28x%2C+y%29+%5Ctag%7B3.2%7D+

**KKT条件(Karush–Kuhn–Tucker conditions)**指出,当满足以下几个条件的时候,其解是问题最优解的候选解(摘自wikipedia)。

  1. Stationarity
  • 对于最小化问题就是:
    equation?tex=%5Cnabla+f%28x%2Cy%29%2B%5Csum_%7Bi%3D1%7D%5EN+%5Calpha_i+%5Cnabla+g_i%28x+%2Cy%29%2B%5Csum_%7Bi%3D1%7D%5EM+%5Cbeta_i+%5Cnabla+h_i%28x%2C+y%29+%3D+0+%5Ctag%7B3.3%7D
  • 对于最大化问题就是:
    equation?tex=%5Cnabla+f%28x%2Cy%29-%28%5Csum_%7Bi%3D1%7D%5EN+%5Calpha_i+%5Cnabla+g_i%28x+%2Cy%29%2B%5Csum_%7Bi%3D1%7D%5EM+%5Cbeta_i+%5Cnabla+h_i%28x%2C+y%29%29+%3D+0+%5Ctag%7B3.4%7D
  1. Primal feasibility
  • equation?tex=g_i%28x%2Cy%29+%5Cleq0%2C+i+%3D+1%2C2%2C%5Ccdots%2CN+%5Ctag%7B3.5%7D
  • equation?tex=h_i%28x%2C+y%29+%3D+0%2C+i+%3D+1%2C2%2C%5Ccdots%2CM+%5Ctag%7B3.6%7D
  1. Dual feasibility
  • equation?tex=%5Calpha_i+%5Cgeq+0%2C+i+%3D+1%2C2%2C+%5Ccdots%2C+N+%5Ctag%7B3.7%7D
  1. Complementary slackness
  • equation?tex=%5Calpha_i+g_i%28x%2C+y%29+%3D+0%2C+i+%3D+1%2C2%2C%5Ccdots%2CN+%5Ctag%7B3.8%7D

其中的第一个条件和我们的拉格朗日乘数法的含义是相同的,就是梯度共线的意思;而第二个条件就是主要约束条件,自然是需要满足的;有趣的和值得注意的是第三个和第四个条件,接下来我们探讨下这两个条件,以及为什么不等式约束会多出这两个条件。


为了接下来的讨论方便,我们将N设为3,并且去掉等式约束,这样我们的最小化问题的广义拉格朗日函数就变成了:

equation?tex=L%28x%2C+y%2C+%5Calpha%2C+%5Cbeta%29+%3D+f%28x%2C+y%29%2B%5Csum_%7Bi%3D1%7D%5E3+%5Calpha_ig_i%28x+%2Cy%29+%5Ctag%7B3.9%7D+

绘制出来的示意图如下所示:

a29cfd7ef738331cd4acb0112076a6b4.png

其中

equation?tex=d_i+%3E+d_j%2C+when%E3%80%80i+%3E+j,而蓝线为最优化寻路过程。

让我们仔细观察式子

equation?tex=%283.7%29
equation?tex=%283.8%29,我们不难发现,因为
equation?tex=%5Calpha_i+%5Cgeq+0
equation?tex=g_i%28x%2C+y%29+%5Cleq+0,并且需要满足
equation?tex=%5Calpha_i+g_i%28x%2C+y%29+%3D+0,所以
equation?tex=%5Calpha_i
equation?tex=g_i%28x%2Cy%29之中必有一个为0,那为什么会这样呢?

我们从上面的示意图入手理解并且记好公式

equation?tex=%283.3%29。让我们假设初始化一个点A, 这个点A明显不处于最优点,也不在可行域内,可知
equation?tex=g_2%28x%2Cy%29%3E0违背了
equation?tex=%283.5%29,为了满足约束
equation?tex=%283.8%29,有
equation?tex=%5Calpha_2%3D0,导致
equation?tex=%5Calpha_2+%5Cnabla+g_2%28x%2Cy%29%3D0,而对于
equation?tex=i%3D1%2C3,因为满足约束条件而且
equation?tex=g_1%28x%2Cy%29+%5Cneq+0%2C+g_3%28x%2Cy%29+%5Cneq+0,所以
equation?tex=%5Calpha_1+%3D+0%2C+%5Calpha_3+%3D+0。这样我们的式子
equation?tex=%283.3%29就只剩下
equation?tex=%5Cnabla+f%28x%2Cy%29
因此对着
equation?tex=%5Cnabla+f%28x%2Cy%29进行优化,也就是沿着
equation?tex=f%28x%2Cy%29梯度方向下降即可,不需考虑其他的条件(因为还完全处于可行域之外)
。因此,A点一直走啊走,从A到B,从B到C,从C到D,这个时候因为D点满足
equation?tex=g_2%28x%2Cy%29%3D0,因此
equation?tex=%5Calpha_2+%3E+0,所以
equation?tex=%5Calpha_2%5Cnabla+g_2%28x%2Cy%29+%5Cneq+0,因此
equation?tex=%283.3%29就变成了
equation?tex=%5Cnabla+f%28x%2Cy%29%2B%5Calpha_2%5Cnabla+g_2%28x%2Cy%29所以在优化下一个点E的时候,就会考虑到需要满足约束
equation?tex=g_2%28x%2Cy%29+%5Cleq+0的条件,朝着向
equation?tex=g_2%28x%2Cy%29减小,而且
equation?tex=f%28x%2Cy%29减小的方向优化。因此下一个优化点就变成了E点,而不是G点。因此没有约束的情况下其优化路径可能是
equation?tex=A+%5Crightarrow+B+%5Crightarrow+C+%5Crightarrow+D+%5Crightarrow+G+%5Crightarrow+H,而添加了约束之后,其路径变成了
equation?tex=A+%5Crightarrow+B+%5Crightarrow+C+%5Crightarrow+D+%5Crightarrow+E+%5Crightarrow+F

这就是为什么KKT条件引入了条件3和条件4,就是为了在满足不等式约束的情况下对目标函数进行优化。让我们记住这个条件,因为这个条件中某些

equation?tex=%5Calpha_i%3D0的特殊性质,将会在SVM中广泛使用,而且正是这个性质定义了
支持向量(SV)

引用

  1. 拉格朗日乘子法如何理解? 知乎
  2. 《统计学习方法》 豆瓣
  3. 《【直观详解】拉格朗日乘法和KKT条件》 微信公众号
  4. 《解密SVM系列(一):关于拉格朗日乘子法和KKT条件》 CSDN
  5. Karush–Kuhn–Tucker conditions wikipedia

[^1]: 最高次数为1的多项式,形如

equation?tex=f%28x%29+%3D+AX%2BB,其中
equation?tex=X
equation?tex=m+%5Ctimes+k的仿射矩阵,其与线性函数的区别就是,线性函数是
equation?tex=f%28x%29+%3D+AX没有偏置项
equation?tex=B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值