机器学习系列(23)_SVM碎碎念part6:对偶和拉格朗日乘子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaoqiang2011/article/details/79080123

原文地址:SVM - Understanding the math - duality-lagrange-multipliers/ by Brandon Amos
感谢参与翻译同学:@Fox && @程超 && @吕征达
时间:2018年1月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/70214565
声明:版权所有,转载请联系寒小阳 (hanxiaoyang.ml@gmail.com)并注明出

1.引言

本篇是《SVM背后的数学原理》系列第6篇。今天我们将学习对偶,优化问题以及拉格朗日乘子。

如果你还没有阅读之前的文章,你可以先去阅读这篇文章:SVM碎碎念1

2.对偶

在数学优化理论中,对偶原理the duality principle)表示一个优化问题既可以从原始问题(primal problem)的角度,也可以从对偶问题(the dual problem)的角度来处理。解决了对偶问题,就可以获得原始问题解决方案的一个下界(a lower bound)。(摘自维基百科

如果你知道下界( lower bound)是什么,那么对偶的概念就很容易理解。

2.1 什么是下界?

如果你有一个部分有序集合K(有序集合指的是集合中的元素可以使用“小于或等于”关系进行比较),下界指的是集合K中的一个小于或等于集合S中的任意元素的元素。

具体点说,从实数集中选取一个实数,它小于等于实数集的子集中的任意元素,那么这个被选取的实数就叫做下界。

例如:

我们考虑如下 的子集:

S={2,4,8,12}

  • 因为1小于等于2,4,8,12,那么1可以是S的下界。

  • -3同样符合上面的条件。

  • 2是S中的一个元素,同样也是S的一个下界。

此外,因为2大于任何其他下界,我们给它起一个特殊的名字:下确界infimum),即最大下界。

在上面的例子中,你可以找到无数的下界,但是下确界只有一个。

备注:同理,对于大于等于的关系,存在上界upper-bound)和上确界supremum)的概念。

2.2 回到对偶

现在我们知道了下界的概念,那么我们如何理解对偶的定义呢?对偶的定义表示可以将最小化问题转化为最大化问题 ,并且这个最大化问题的最大值是最小化问题的一个下界。也就是说,这个最大值小于等于最小化问题的最小值

2.3 我们为什么关心对偶?

根据经验,有些情况下,解决对偶问题远比解决原始问题简单的多。从我们对下界已有的理解中可以得出,对于某些问题原始问题和对偶问题的结果是一样的!那什么情况下会这样?

我们看下面的图解。


Duality gap

如上图所示,假设原始问题是寻找图中上半部分函数的最小值。这个最小值在P点。如果为上半部分的函数寻找一个对偶函数,我们可以找到图中下半部分的函数,它的最大值在D点。在这个例子中,可以明显的看到,D点是一个下界。PD的值我们称之为对偶间隙(duality gap)。在此例中, PD>0,我们称之为弱对偶成立(weak duality holds)。

在下图中,PD=0,不存在对偶间隙,我们称之为强对偶成立(strong duality holds)。


o duality gap

3.有约束条件的优化问题

3.1 注释

一个优化问题通常写成:

minimizexsubjecttof(x)gi(x)=0,i=1,,phi(x)0,i=1,,m

这种写法称为标准式。你应该知道还有其他多种写法

在标准式中,f称为目标函数(有时也称为损失函数)。通过改变x(优化变量),我们希望找到使f最小的 x

还有 p 个定义等式约束的函数 gi 以及 m 个定义不等式约束的函数 hi

必须遵守这些约束条件!

3.2 遵守约束是条件什么意思?

比如我们需要解决如下的优化问题:

minimizexx2

没有任何约束,找到它的最小值非常容易,当 x=0 时函数 x2 的值为0。如下图中的红色五角星:


When there is no constraint the minimum is zero

0

3.2.1 等式约束

但是,如果我们尝试添加一个等式约束呢? 例如,我们想要找到最小值,但是我们必须确保 x=1。 这意味着我们需要解决如下的优化问题:

minimizexsubjecttox2x=1

这一次,当我们尝试 x=0 时,我们看到函数返回它的最小值。但是,我们不能说这就是优化问题的解。 事实上,这违反了约束条件 x=1 。 在这个例子中,我们唯一的选择是使用 x=1,这就是优化问题的解。


With an equality constraint x=1, the minimum is 1

x=11

在这个例子中,你可能会觉得等式约束是无用的。 情况并非如此,因为大部分情况下优化问题都是基于多个维度。 所以你可以试着最小化一个函数 f(x,y),而它只有关于 x 的一个等式约束。

3.2.2 不等式约束

如果我们现在使用不等式约束呢? 问题的形式如下:

minimizexsubjecttox2x1

这一次,我们可以尝试更多的 x 值。 例如,x=2,它满足约束条件,所以它可能是问题的解。 最后,我们发现函数f满足约束条件的最小值再一次出现在 x=1 处。


Inequality constraint

在上图中,x轴上黑色加粗的区域我们称之为可行域(feasible region),区域中的 x 值符合约束条件。这个区域也被称为可行集(feasible set)

数学表述如下:

R={x|x1}

集合R中的 x 值满足约束条件。

3.2.3 多个约束条件

一个优化问题可能有多个约束条件。下面的例子中有两个不等式约束,它的可视化展示如下图:

minimizexsubjecttox2x>=1x<=2


Combining constraints restrict the feasible region

请注意,等式约束与不等式约束可以混在一起。唯一的限制是,如果约束条件之间存在矛盾,那么最终很可能没有可行集合:

minimizexsubjecttox2x=1x<=0

事实上,约束条件必须是有意义的。 当有若干约束条件时,整体必须是有意义的。 在上面的例子中, x不可能等于1,同时小于0。

对于函数 fXY ,它需要满足一个等式约束 g(x) 和一个不等式约束 h(x) ,那么这个函数的可行集为:

R={x|g(x)=0,h(x)0}

3.3 什么是优化问题的解?

一个优化问题如下:

minimizexsubjecttof(x)gi(x)=0,i=1,,phi(x)0,i=1,,m

它的最优解x是:

x=inf{f(x)gi(x)=0,i=1,,p,hi(x)0,i=1,,m}

(资源(第二页))

通常情况下,用数学语言来表述,最优解是满足所有约束条件下,函数 f(x) 的下确界。

4.如何找到有约束优化问题的解?

我们将使用拉格朗日乘子法。该方法是由意大利数学家约瑟夫·路易斯·拉格朗日在1806年前后提出的。



··

4.1 拉格朗日乘子法

通常,我们可以在维基百科中找到清楚的定义:

在数学优化问题中,拉格朗日乘子法是求在等式约束下函数局部极大值和极小值的一种策略。(摘自维基百科)

上述定义中最需要注意的关键是拉格朗日乘子法只能用于等式约束。所以我们将会使用它来解决那些有一个或多个等式约束的优化问题。

不过也别担心,拉格朗日乘子法也是解决不等式约束问题的基础,因此理解这个简单案例也是有意义的。

在解释拉格朗日乘子法的概念之前,让我们先回顾一下等高线。

4.2 等高线

为了更好地领会拉格朗日乘子法,重要的是先理解等高线的意义。

等高线图是一种将三维函数以二维形式展示的方法。

比如说,下面显示了函数 x+y 的三维图像(左图)和等高线图(右图):


image

等高线的关键概念:

  • 对线上的任意一点,函数返回相同的值
  • 区域颜色越深,函数值越小

比如下面两张图,尽管它们有相同的等高线,但颜色变化能够使我们在脑海中描绘出对应函数的3D图像。


image


image

此外,函数的梯度可以被可视化为矢量场,箭头指向函数增加的方向:


image

()

这意味着我们可以很容易地在等高线图上绘制梯度向量:

  • 垂直于等高线
  • 指向函数增加的方向

这是在两个等高线图上的展示:


image

4.3 回到拉格朗日乘子法

考虑如下优化问题:

minimizex,ysubjecttof(x,y)=x2+y2gi(x,y)=x+y1=0

目标函数 f(x,y) 和约束函数 g(x,y) 的等高线图如下所示:


image

值得注意的是,我们可以将两个等高线图合而为一来看看这两个函数在一个图上的表现如何。下图中蓝色线条表示约束函数。

另外,我也画了几个目标函数的梯度向量(黑色)和约束函数的梯度向量(白色)。


image

然而,我们对整个约束函数不感兴趣。我们只对满足约束的点感兴趣,比如 g(x,y)=0

意味着我们需要的点满足:

x+y1=0x+y=1y=1x

下图中我们在目标函数上方画出直线 y=1x 。我们早些时候看到过,这条线也被称为可行集


image

拉格朗日发现了什么?他发现了在约束 g(x,y)=0 下,当它们梯度方向一致时 f(x,y) 取得最小值。

下图中,我们可以看到目标函数和可行集相切的点。我还添加了一些目标函数的梯度向量(黑色)和约束函数的梯度向量(白色)。


image

可以发现只在一个点上两个向量方向一致:这就是在约束下的目标函数最小值。

设想你把手指放在图片上方第一个有箭头的点上,然后计算目标函数,得到某个值 v。现在,你想知道是否还有更小的值。此时你必须保持在蓝色线上,否则就会违反约束条件。因此,你只能向左或向右移动。

也许你想向左移动,但接着你会发现目标函数的梯度向量指向左(记住梯度向量总是指向函数增加的方向),所以这不是个好主意。为了确认这点,可以试着向左移动一下,目标函数返回 v+1,可见值增长了,这不是你所期望的。这次你向右移动,目标函数返回 v1。嗯,这回对了。你接着继续向右移动直到到达两个向量平行的那个中点。但随后你发现,一旦再移动一丁点儿目标函数都会继续增长。由于不能在不增加目标函数的情况下左右移动,你得出结论,这一点是最小的。

4.3.1 数学解释是怎样的呢?

拉格朗日告诉我们要找到约束函数的最小值,我们需要找到满足 f(x,y)=λg(x,y) 的点。(译注:原文look or points 应为 look for points)

可是 λ 又是什么,从哪儿来的呢?

这就是我们所称的拉格朗日乘子。事实上,即使两个梯度向量方向一致,他们也可能长度不同,所以必须有个因子λ 来将进行向量转换。

注意这个公式并不需要梯度向量有相同的方向(乘以一个负数就可以改变方向),只需要平行即可。这是为了可以同时找到最大值和最小值(可以参考这篇文章的例1)。

4.3.2 如何找到满足 f(x,y)=λg(x,y) 的点?

注意, f(x,y)=λg(x,y) 等价于:

f(x,y)λg(x,y)=0

为了使问题简单一点,我们注意到如果我们定义这样一个函数:

L(x,y,λ)=f(x,y)λg(x,y),它的梯度为:

L(x,y,λ)=f(x,y)λg(x,y)

函数 L 就被称为拉格朗日函数,求解拉格朗日函数的梯度(求解 L(x,y,λ)=0 )就意味着找到了使 fg 的梯度向量平行的点。

4.3.3 用拉格朗日乘子法求解例题

回顾一下,要解决的问题是:

minimizex,ysubjecttof(x,y)=x2+y2gi(x,y)=x+y1=0

*第1步:引入拉格朗日函数

L(x,y,λ)=f(x,y)λg(x,y)

其梯度为:

L(x,y,λ)=f(x,y)λg(x,y)

第2步:求解其梯度

求解:

L(x,y,λ)=0

即解下列方程组:

Lx=0Ly=0Lλ=0

2xλ=02yλ=0xy+1=0

将第二个方程乘以-1,再加上第一个方程,得到:

2x2y=0


x=y

x 替换 y ,代入第三个方程:

xx+1=02x+1=02x=1x=12

12 替换 x ,代入第一个方程:

212λ=01λ=0λ=1

得到解: x=12,y=12  λ=1

结论为:在约束 g(x,y)=0 下, fx=12,y=12 处取得最小值。

让我们通过下图中的图形分析验证一下结论是否合理:


image

fx=1/2y=1/2

可以看到点 (x,y)=(12,12) 确实在可行集(蓝线)上,正是我们之前确定的。

5.结论

在本文中,我们学习了最优化中的一个重要概念:对偶性。此外,我们发现一个优化问题可以有等式和不等式约束。最后,我们了解了拉格朗日乘子法是什么,以及如何用其解决有一个等式约束的最优化问题。

如果你希望进一步了解SVM中的拉格朗日乘子法,可以查阅这篇高质量论文,该论文展示了如何在更多的等式约束和不等式约束条件下运用拉格朗日乘子法。

没有更多推荐了,返回首页