原文地址: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 什么是下界?

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

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

例如:

我们考虑如下 ℝ\mathbb{R} 的子集:

S={2,4,8,12}

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 我们为什么关心对偶?

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

我们看下面的图解。

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

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

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

3.1 注释

一个优化问题通常写成:

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

\begin{aligned}{\operatorname {minimize} }}&&f(x)\\&\operatorname {subject\;to} &&g_{i}(x)=0,\quad i=1,\dots ,p\\&&&h_{i}(x)\leq 0,\quad i=1,\dots ,m\end{aligned}

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

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

还有 pp 个定义等式约束的函数 gig_i 以及 mm 个定义不等式约束的函数 hih_i 。

必须遵守这些约束条件!

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

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

minimizexx2

\begin{aligned}{\operatorname {minimize} }}&&x^2\end{aligned}

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

当没有任何约束是最小值是0

当没有任何约束是最小值是0

3.2.1 等式约束

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

minimizexsubjecttox2x=1

\begin{aligned}{\operatorname {minimize} }}&&x^2\\&\operatorname {subject\;to} &&x=1\end{aligned}

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

当约束条件为x=1时,最小值为1

当约束条件为x=1时,最小值为1

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

3.2.2 不等式约束

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

minimizexsubjecttox2x≥1

\begin{aligned}{\operatorname {minimize} }}&&x^2\\&\operatorname {subject\;to} &&x\geq1\end{aligned}

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

不等式约束

不等式约束

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

数学表述如下:

R={x∈ℝ|x≥1}

R=\{x \in \mathbb{R} | x \geq 1 \}

集合RR中的 xx 值满足约束条件。

3.2.3 多个约束条件

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

minimizexsubjecttox2x>=1x<=2

\begin{aligned}{\operatorname {minimize} }}&&x^2\\&\operatorname {subject\;to} &&x>=1\\&&&x

多个约束条件限定了可行区域

多个约束条件限定了可行区域

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

minimizexsubjecttox2x=1x<=0

\begin{aligned}{\operatorname {minimize} }}&&x^2\\&\operatorname {subject\;to} &&x=1\\&&&x

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

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

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

R=\{x \in \mathcal{X}\;|\;g(x)=0,\;h(x) \leq 0 \}

3.3 什么是优化问题的解?

一个优化问题如下:

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

\begin{aligned}{\operatorname {minimize} }}&&f(x)\\&\operatorname {subject\;to} &&g_{i}(x)=0,\quad i=1,\dots ,p\\&&&h_{i}(x)\leq 0,\quad i=1,\dots ,m\end{aligned}

它的最优解x∗x^*是:

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

x^* = \text{inf}\{f(x) \mid g_i(x)=0,\; i=1,\dots,p,\;h_{i}(x)\leq 0, i=1,\dots,m\}

(资源(第二页))

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

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

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

约瑟夫·路易斯·拉格朗日

约瑟夫·路易斯·拉格朗日

4.1 拉格朗日乘子法

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

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

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

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

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

4.2 等高线

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

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

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

等高线的关键概念:

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

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

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

函数的梯度被投影成矢量场(维基百科)

函数的梯度被投影成矢量场(维基百科)

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

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

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

4.3 回到拉格朗日乘子法

考虑如下优化问题:

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

\begin{aligned}{\operatorname {minimize} }}&&f(x,y)=x^2+y^2\\&\operatorname {subject\;to} &&g_{i}(x,y)=x+y-1=0\end{aligned}

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

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

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

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

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

x+y−1=0x+y=1y=1−x

\begin{aligned}&x+y-1 = 0 \\&\\&x+y =1\\&\\&y=1-x \end{aligned}

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

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

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

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

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

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

4.3.1 数学解释是怎样的呢?

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

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

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

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

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

注意, ∇f(x,y)=λ∇g(x,y) \nabla f(x,y)=\lambda\nabla g(x,y) 等价于:

∇f(x,y)−λ∇g(x,y)=0 \nabla f(x,y) - \lambda\nabla g(x,y) = 0

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

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

∇L(x,y,λ)=∇f(x,y)−λ∇g(x,y) \nabla L(x,y,\lambda)=\nabla f(x,y)-\lambda \nabla g(x,y)

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

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

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

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

\begin{aligned}{\operatorname {minimize} }}&&f(x,y)=x^2+y^2\\&\operatorname {subject\;to} &&g_{i}(x,y)=x+y-1=0\end{aligned}

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

L(x,y,λ)=f(x,y)−λg(x,y) L(x,y,\lambda)=f(x,y)-\lambda g(x,y)

其梯度为:

∇L(x,y,λ)=∇f(x,y)−λ∇g(x,y) \nabla L(x,y,\lambda)=\nabla f(x,y)-\lambda \nabla g(x,y)

第2步:求解其梯度

求解:

∇L(x,y,λ)=0 \nabla L(x,y,\lambda)= 0

即解下列方程组:

⎧⎩⎨⎪⎪∂L∂x=0∂L∂y=0∂L∂λ=0

\begin{cases}\frac{\partial L}{\partial x} = 0\\\frac{\partial L}{\partial y} = 0\\\frac{\partial L}{\partial \lambda} = 0\end{cases}

⎧⎩⎨⎪⎪2x−λ=02y−λ=0−x−y+1=0

\begin{cases}2x- \lambda = 0 \\2y- \lambda = 0 \\-x-y+1=0\end{cases}

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

2x−2y=0

2x-2y=0

x=y

x=y

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

−x−x+1=0−2x+1=0−2x=−1x=12

-x-x+1=0\\-2x+1=0\\-2x=-1\\x=\frac 1 2

用 12\frac 1 2 替换 xx ,代入第一个方程:

212−λ=01−λ=0λ=1

2 \frac 1 2 -\lambda = 0\\1-\lambda=0\\\lambda=1

得到解: x=12,y=12 且 λ=1 x = \frac 1 2 , y=\frac 1 2 \text{ 且 } \lambda =1

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

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

f在x=1/2,y=1/2处为最小值

f在x=1/2,y=1/2处为最小值

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

5.结论

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

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

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

  1. 机器学习系列(22)_SVM碎碎念part5:凸函数与优化

    原文地址:SVM - Understanding the math - convex-functions/ by Brandon Amos 感谢参与翻译同学:@程亚雄 && @张蒙 & ...

  2. 吴恩达机器学习系列23:基于内容的推荐算法

    如今,推荐算法已经深入到我们生活的各个方面,比如说淘宝根据我们之前的浏览记录给我们推荐想要购买的商品:抖音不停地给我们推荐各种我们感兴趣的视频(虽然我个人不太喜欢抖音,觉得抖音会让我们丧失独立思考的能 ...

  3. 机器学习中的数学——拉格朗日乘子法(一):等式约束的拉格朗日乘子法

    分类目录:<机器学习中的数学>总目录 相关文章: ·拉格朗日乘子法(一):等式约束的拉格朗日乘子法 ·拉格朗日乘子法(二):不等式约束与KKT条件 拉格朗日乘子法是一种寻找多元函数在一组约 ...

  4. 机器学习碎碎念:霍夫丁不等式

    点击上方"AI有道",选择"设为星标" 关键时刻,第一时间送达! 红色石头每天碎碎念一些机器学习知识和概念,大家一起学习,每天进步一点点!喜欢的话别忘了文末点赞 ...

  5. 前端碎碎念 之 nextTick, setTimeout 以及 setImmediate 三者的执行顺序

    『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到. 我会查阅一些资料并可能加上自己的理解,来记录这些问题.更多文章请前往我的个人博客 ...

  6. 每月碎碎念 | 2019.08

    Hi,这里是新开辟的"碎碎念"的世界. 这个区域作为记录心情的地方,把每日的所思所想所感所悟记录在这里,当做一个写日记的地方,每个月底汇总成一篇文章,只给我的朋友看. 不知不觉一个 ...

  7. 数据分析+数据挖掘暑期实习碎碎念

    写在前面 在闺蜜的博客乱写一篇关于最近春招的心得! 先念念叨一点麻痹自我的鸡汤. 鸡汤说:要有最朴素的生活与最遥远的梦想,即使明日天寒地冻,路遥马亡. 鸡汤还说:慢慢走比较快:踏实一点,你想要的岁月都 ...

  8. 2018 年,我在朋友圈的碎碎念

    阅读本文大概需要 3.8 分钟. 很多微信好友都知道,我朋友圈几乎一年 365 天输出,一方面我经常阅读,善于观察,有时候就在朋友圈随手记录一些思考与感悟,另一方面,通过输出倒逼输入的方式,逼自己持续 ...

  9. 每月碎碎念 | 2019.09

    Hi,这里是新开辟的"碎碎念"的世界. 这个区域作为记录心情的地方,把每日的所思所想所感所悟记录在这里,当做一个写日记的地方,每个月底汇总成一篇文章,只给我的朋友看. 2019-9 ...

最新文章

  1. Ubuntu~Tensorflow~GPU
  2. MongoDB使用入门
  3. 若依JAVA开源框架自动生成代码步骤记录-创建子module以及导入子module相关问题
  4. Devops (1)
  5. python怎么加图片_怎么在图片旁边加文字 python如何在图片上添加文字 - 励志 - 52资讯网...
  6. Hadoop中的问题–何时无法交付?
  7. 雷神开机logo更改_九代酷睿i9加持的性能怪兽 雷神911黑武士Ⅱ评测
  8. 16软件1班安卓第二学期学习总结
  9. .net core精彩实例分享 -- 依赖注入和中间件
  10. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp
  11. ubuntu 创建桌面图标快捷方式
  12. 算法,PHP取数据库中百万条数据中随机20条记录
  13. cvLoadImage()的调用参数设置
  14. 产品案例分析 - 华为软件开发云
  15. “钱三篇”后续之物价为什么上涨?
  16. ansys18安装以后打不开_ansys18.0安装过程及常见问题解决方案【图文】
  17. 解决在MyEclipse中,process报launching client等待的问题
  18. 数据库:一条sql语句查询每门课程都大于80分的学生姓名
  19. 阿里云大数据助理工程师认证考试考什么内容?
  20. 台湾评论大陆量子计算机,台湾媒体盛赞大陆工业科研水平 称台湾人对大陆懵懂无知...

热门文章

  1. 吃鸡用什么蓝牙耳机效果好?手游吃鸡公认最好的几款蓝牙耳机
  2. 关于 (Xcode setting ENABLE_BITCODE)问题
  3. 基于S3C6410的ARM11学习(一) 基础知识
  4. JRUY-G3交流三相电压继电器
  5. 孙鑫Java无难事零基础入门
  6. InDesign 教程:如何共享inDesign文件?
  7. 同源基因鉴定 | OrthoFinder 2.0 + MAFFT + IQtree
  8. 动态网页设计(ASP)期末复习总结01
  9. 基于STM32单片机流水灯仿真与程序设计
  10. UE4 纯蓝图 WIdget勾选框 互斥