SVM预备——拉格朗日对偶问题

拉格朗日对偶问题

我在学习支持向量机的时候遇到了拉格朗日对偶问题,查资料了解后发现是个挺有意思的东西,于是乎打算把这个问题简要总结一下,为以后介绍支持向量机做知识储备。本文涉及到了拉格朗日乘子法,这个方法在本科高等数学中有介绍,没有了解过或忘了的朋友点击这里,这是百度百科的介绍,文中的图片已经很好的解释了这个问题。
ok,我们开始


先观察一个优化问题:

minf(x) m i n f ( x )

如果这个函数连续可微,那么如果我们要求解这个优化问题只需求出它一阶导为0的点,也就是我们所说的驻点,然后对这些点一一排查就可得到结果,这是无约束优化问题。
但如果我们加一些条件把x的值限制在某些范围内,那么我们想通过求导去解决这个问题显然就是不可能的。这时候我们就想如果把约束去掉该多好,拉格朗日乘子法就是解决这个问题的!
对于问题:

minf(x) m i n f ( x )
s.t.gi(x)0i=1,2,3,4...k s . t . g i ( x ) ≤ 0 i = 1 , 2 , 3 , 4... k
hj(x)=0j=1,2,3,4...l h j ( x ) = 0 j = 1 , 2 , 3 , 4... l

如果是极大值问题可以前面加符号变成极小值问题,约束条件也是这样。它有k个不等式约束,l个等式约束,它的拉格朗日函数是:

L(x,α,β)=f(x)+ki=1αici(x)+lj=1βihj(x) L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β i h j ( x )

其中 α α β β 是拉格朗日乘子,我们这里要求 α>=0 α >= 0 。之所以这么要求是为了以后的对偶问题,这是人为定义的一个约束。
按我们以前的在高等数学中学到的知识,此时只需要分别对三个变量求偏导数,令其偏导数为0即可求出可能为极值的解。在简单问题里是可以这样求解的,但是这个问题里有很多个参数需要去优化,要用普通方法去求这个拉个朗日函数非常困难,于是我们就引出了对偶问题。

(说到这里我们来理一下思路,本篇是SVM的预备篇。在SVM中需要求解带约束的优化问题,于是在SVM中想到了拉格朗日乘子法,但在样本点非常多的情况下SVM的拉格朗日方程求解非常复杂,于是就想到了它的对偶问题。)


每一个线性规划问题都有一个与它相对应的对偶问题,当解决原始问题非常困难的时候,解决它的对偶问题往往会给解决原始问题提供一定的便利。我们先来人为构造一个方程:

maxα,β:αi0L(x,α,β)=f(x)+ki=1αici(x)+lj=1βihj(x) m a x α , β : α i ≥ 0 L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β i h j ( x )

我们将L看成 α α β β 的方程,意思就是将x看成常数。如果要求它的最大值,那么可以分成两种呢情况:x符合约束条件和不符合约束条件。(此处的约束条件就是最初的g和h一系列约束)

  1. 当x不符合条件的时候。也就是 gi(x)>0 g i ( x ) > 0 或者 hj(x)0 h j ( x ) ≠ 0 或者二者同时成立。我们总能找到 α α β β 使其最大值是正无穷。(违反前者将 α α 变得非常大即可,违反后者将 α α 变成0并使 β β 保持与h的符号相同并变得非常大即可,同时违反也是同样的道理。)
  2. 当x符合条件的时候。不等式约束永远是非正的, α α 永远是非负的,他们的积就是非正的,要使整个最大我们让 α α 与c的积为0即可。符合条件的情况下第三项为0。那么它的最大值就是 f(x)。不要问我为什么f(x)前面没有max符号,我们说过这是一个关于 α α β β 的函数。

    所以总结一下:

    maxL(x,α,β)={ f(x)ifxmeettheconditionelse m a x L ( x , α , β ) = { f ( x ) i f x m e e t t h e c o n d i t i o n ∞ e l s e

    这样的话我们求解目标函数f(x)的最小值就可以转换为求拉格朗日函数最大值的最小值,其中拉格朗日函数的最大值称为原始问题(注意min符号下面是关于x的):

    minxmaxα,β:α0L(x,α,β)=minxf(x) m i n x m a x α , β : α ≥ 0 L ( x , α , β ) = m i n x f ( x )

    当然是在符合约束条件的情况下,这样问题就变得非常nice了。我们可以考虑它的对偶问题的最大值:

    maxα,β:α0minxL(x,α,β) m a x α , β : α ≥ 0 m i n x L ( x , α , β )

看起来其实就是最大和最小顺序换了一下。愿问题是最大的中的最小的,对偶问题是最小的中的最大的,从字面上理解来看,原始问题的最优解>=对偶问题的最优解。即:

minxL(x,α,β)<=L(x,α,β)<=maxα,β:α0L(x,α,β) m i n x L ( x , α , β ) <= L ( x , α , β ) <= m a x α , β : α ≥ 0 L ( x , α , β )

左边就是对偶问题,我们用D代替。右边就是原始问题,我们用P代替。我们有D<=P,所以max D <= min P。我们应该注意到了这个等号,我们现在的思路就是让这个等于号成立,这样对偶问题的最优解就是原始问题的最优解,这样就可以通过求对偶问题来求解原始问题。那么什么情况下等号成立呢?

下面有Slater条件:
当f(x)、 gi(x) g i ( x ) 是凸函数, hi(x) h i ( x ) 是仿射函数时,如果存在x使得所有c(x)都取到>0,所有的h(x)取到=0,那么就存在原始问题于对偶问题有相同最优解的情况。此时称为强对偶,当不一定取到等号的时候称为弱对偶。 (具体这个定理的证明就又涉及到了凸优化很多问题,其实我也不太清楚,毕竟不是数学专业的。。。。)

符合Slater条件的情况下能取到相同的最优解,那么符合什么条件就是最优解呢?前人也为我们总结好了,KKT条件!
KKT条件:

Lx=0αigi=0gi(x)0hj(x)=0αi0 { ∂ L ∂ x = 0 α i g i = 0 g i ( x ) ≤ 0 h j ( x ) = 0 α i ≥ 0

当x满足KKT条件的时候就是二者相同的最优解,这是充分必要条件,当然是对于凸优化来说。对于非凸优化,这是必要条件。
第一个条件是函数在x方向上的偏导为0,第二个条件是对偶互补条件,后三个条件是目标函数的约束条件。
关于KKT条件怎么理解,知乎上王小龙老师的回答是我看过的最直观最容易理解的回答,链接如下:

https://www.zhihu.com/question/23311674

现在来总结一下思路:
带约束求解问题无法通过求导解决——拉格朗日乘子法——拉格朗日函数难解——对偶问题——符合Slater条件下原始问题与对偶问题有相同的最优解,符合KKT条件的x就是二者的最优解

对偶问题貌似看上去也不好解,而且也没有说怎么解对偶问题。这个只是理论推导,到了SVM中实际问题上的时候就会发现对偶问题将多变量优化转换成了单变量优化,关于如何解对偶问题也有很多快速的算法,如有名SMO算法等,以后我们再介绍。

猜你喜欢

转载自blog.csdn.net/zhaojc1995/article/details/79994810