【转】:http://blog.pluskid.org/?p=702

本文是“支持向量机系列”的番外篇(1),参见本系列的其他文章。

在之前关于 support vector 的推导中,我们提到了 dual ,这里再来补充一点相关的知识。这套理论不仅适用于 SVM 的优化问题,而是对于所有带约束的优化问题都适用的,是优化理论中的一个重要部分。简单来说,对于任意一个带约束的优化都可以写成这样的形式:

形式统一能够简化推导过程中不必要的复杂性。其他的形式都可以归约到这样的标准形式,例如一个 可以转化为 等。假如 全都是凸函数,并且 全都是仿射函数(就是形如 的形式),那么这个问题就叫做凸优化(Convex Optimization)问题。凸优化问题有许多优良的性质,例如它的极值是唯一的。不过,这里我们并没有假定需要处理的优化问题是一个凸优化问题。

虽然约束条件能够帮助我们减小搜索空间,但是如果约束条件本身就是比较复杂的形式的话,其实是一件很让人头痛的问题,为此我们希望把带约束的优化问题转化为无约束的优化问题。为此,我们定义 Lagrangian 如下:

它通过一些系数把约束条件和目标函数结合在了一起。当然 Lagrangian 本身并不好玩,现在让我们来让他针对 最大化,令:

这里 理解为向量 的每一个元素都非负即可。这个函数 对于满足原始问题约束条件的那些 来说,其值等于 ,这很容易验证,因为满足约束条件的 会使得 ,因此最后一项消掉了,而 ,并且我们要求了 ,因此 ,所以最大值只能在它们都取零的时候得到,这个时候就只剩下 了。因此,对于满足约束条件的那些 来说, 。这样一来,原始的带约束的优化问题其实等价于如下的无约束优化问题:

因为如果原始问题有最优值,那么肯定是在满足约束条件的某个 取得,而对于所有满足约束条件的 都是相等的。至于那些不满足约束条件的 ,原始问题是无法取到的,否则极值问题无解。很容易验证对于这些不满足约束条件的 ,这也和原始问题是一致的,因为求最小值得到无穷大可以和“无解”看作是相容的。

到这里,我们成功把带约束问题转化为了无约束问题,不过这其实只是一个形式上的重写,并没有什么本质上的改变。我们只是把原来的问题通过 Lagrangian 写作了如下形式:

这个问题(或者说原始的带约束的形式)称作 primal problem 。如果你看过之前关于 SVM 的推导,那么肯定就知道了,相对应的还有一个 dual problem ,其形式非常类似,只是把 交换了一下:

交换之后的 dual problem 和原来的 primal problem 并不相等,直观地,我们可以这样来理解:胖子中最瘦的那个都比瘦骨精中最胖的那个要胖。当然这是很不严格的说法,而且扣字眼的话可以纠缠不休,所以我们还是来看严格数学描述。和刚才的 类似,我们也用一个记号来表示内层的这个函数,记:

并称 为 Lagrange dual function (不要和 的 Lagrangian 混淆了)。 有一个很好的性质就是它是 primal problem 的一个下界。换句话说,如果 primal problem 的最小值记为 ,那么对于所有的 ,我们有:

因为对于极值点(实际上包括所有满足约束条件的点),注意到 ,我们总是有

因此

于是

这样一来就确定了 的下界性质,于是

实际上就是最大的下界。这是很自然的,因为得到下界之后,我们自然地就希望得到最好的下界,也就是最大的那一个——因为它离我们要逼近的值最近呀。记 dual problem 的最优值为 的话,根据上面的推导,我们就得到了如下性质:

这个性质叫做 weak duality ,对于所有的优化问题都成立。其中 被称作 duality gap 。需要注意的是,无论 primal problem 是什么形式,dual problem 总是一个 convex optimization 的问题——它的极值是唯一的(如果存在的话),并且有现成的软件包可以对凸优化问题进行求解(虽然求解 general 的 convex optimization 实际上是很慢并且只能求解规模较小的问题的)。这样一来,对于那些难以求解的 primal problem (比如,甚至可以是 NP 问题),我们可以通过找出它的 dual problem ,通过优化这个 dual problem 来得到原始问题的一个下界估计。或者说我们甚至都不用去优化这个 dual problem ,而是(通过某些方法,例如随机)选取一些 ,带到 中,这样也会得到一些下界(只不过不一定是最大的那个下界而已)。当然要选 也并不是总是“随机选”那么容易,根据具体问题,有时候选出来的 带入 会得到 ,这虽然是一个完全合法的下界,然而却并没有给我们带来任何有用的信息。

故事到这里还没有结束,既然有 weak duality ,显然就会有 strong duality 。所谓 strong duality ,就是

这是一个很好的性质,strong duality 成立的情况下,我们可以通过求解 dual problem 来优化 primal problem ,在 SVM 中我们就是这样做的。当然并不是所有的问题都能满足 strong duality ,在讲 SVM 的时候我们直接假定了 strong duality 的成立,这里我们就来提一下 strong duality 成立的条件。不过,这个问题如果要讲清楚,估计写一本书都不够,应该也有不少专门做优化方面的人在研究这相关的问题吧,我没有兴趣(当然也没有精力和能力)来做一个完整的介绍,相信大家也没有兴趣来看这样的东西——否则你肯定是专门研究优化方面的问题的了,此时你肯定比我懂得更多,也就不用看我写的介绍啦。

所以,这里我们就简要地介绍一下 Slater 条件和 KKT 条件。Slater 条件是指存在严格满足约束条件的点 ,这里的“严格”是指 中的“小于或等于号”要严格取到“小于号”,亦即,存在 满足

我们有:如果原始问题是 Convex 的并且满足 Slater 条件的话,那么 strong duality 成立。需要注意的是,这里只是指出了 strong duality 成立的一种情况,而并不是唯一情况。例如,对于某些非 convex optimization 的问题,strong duality 也成立。这里我们不妨回顾一下 SVM 的 primal problem ,那是一个 convex optimization 问题(QP 是凸优化问题的一种特殊情况),而 Slater 条件实际上在这里就等价于是存在这样的一个超平面将数据分隔开来,亦即是“数据是可分的”。当数据不可分是,strong duality 不能成立,不过,这个时候我们寻找分隔平面这个问题本身也就是没有意义的了,至于我们如何通过把数据映射到特征空间中来解决不可分的问题,这个当时 已经介绍过了,这里就不多说了。

让我们回到 duality 的话题。来看看 strong duality 成立的时候的一些性质。假设 分别是 primal problem 和 dual problem 的极值点,相应的极值为 ,首先 ,此时我们可以得到

由于两头是相等的,所以这一系列的式子里的不等号全部都可以换成等号。根据第一个不等号我们可以得到 的一个极值点,由此可以知道 处的梯度应该等于 0 ,亦即:

此外,由第二个不等式,又显然 都是非正的,因此我们可以得到

这个条件叫做 complementary slackness 。显然,如果 ,那么必定有 ;反过来,如果 那么可以得到 。这个条件正是我们在介绍支持向量的文章末尾时用来证明那些非支持向量(对应于 )所对应的系数 (在本文里对应 )是为零的。 :)再将其他一些显而易见的条件写到一起,就是传说中的 KKT (Karush-Kuhn-Tucker) 条件:

任何满足 strong duality (不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 strong duality 的一个必要条件。不过,当原始问题是凸优化问题的时候(当然还要求一应函数是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。换句话说,如果 primal problem 是一个凸优化问题,且存在 满足 KKT 条件,那么它们分别是 primal problem 和 dual problem 的极值点并且 strong duality 成立。其证明也比较简单,首先 primal problem 是凸优化问题的话, 的求解对每一组固定的 来说也是一个凸优化问题,由 KKT 条件的最后一个式子,知道 的极值点(如果不是凸优化问题,则不一定能推出来),亦即:

最后一个式子是根据 KKT 条件的第二和第四个条件得到。由于 的下界,这样一来,就证明了 duality gap 为零,也就是说,strong duality 成立。到此为止,做一下总结。我们简要地介绍了 duality 的概念,基本上没有给什么具体的例子。不过由于内容比较多,为了避免文章超长,就挑了一些重点讲了一下。总的来说,一个优化问题,通过求出它的 dual problem ,在只有 weak duality 成立的情况下,我们至少可以得到原始问题的一个下界。而如果 strong duality 成立,则可以直接求解 dual problem 来解决原始问题,就如同经典的 SVM 的求解过程一样。有可能 dual problem 比 primal problem 更容易求解,或者 dual problem 有一些优良的结构(例如 SVM 中通过 dual problem 我们可以将问题表示成数据的内积形式从而使得 kernel trick 的应用成为可能)。此外,还有一些情况会同时求解 dual 和 primal problem ,比如在迭代求解的过程中,通过判断 duality gap 的大小,可以得出一个有效的迭代停止条件。

支持向量机:Duality相关推荐

  1. 支持向量机_6:Duality

    在之前关于 support vector 的推导中,我们提到了 dual ,这里再来补充一点相关的知识.这套理论不仅适用于 SVM 的优化问题,而是对于所有带约束的优化问题都适用的,是优化理论中的一个 ...

  2. 机器学习算法与Python实践之(二)支持向量机

    http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...

  3. 机器学习算法与Python实践之(二)支持向量机(SVM)初级

    机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...

  4. 模型算法-支持向量机SVM

    支持向量机(Support Vector Machine),一般简称SVM,它是个二分类的分类模型,即给定一个包含正例和反例的样本集合(有监督的机器学习算法),支持向量机的目的是寻找一个超平面来将样本 ...

  5. SVM支持向量机【直观理解】

    转载文章:https://baijiahao.baidu.com/s?id=1607469282626953830&wfr=spider&for=pc 如果你曾经使用机器学习解决分类问 ...

  6. 一文详解支持向量机(SVM)

    ©PaperWeekly 原创 · 作者|王东伟 单位|Cubiz 研究方向|深度学习 本文介绍支持向量机(Support Vector Machine,SVM). 在上一篇文章关于逻辑回归的叙述中, ...

  7. Ng第十二课:支持向量机(Support Vector Machines)(一)

    1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...

  8. 机器学习基础——支持向量机

    前言    最开始接触SVM是在吴恩达的课程上,展示了一个例子:用SVM将人声从环境声中单独剥离出来.后来,在吴教授的Coursera机器学习课程中监督学习部分的末尾,讲述了SVM.但是他所讲述的SV ...

  9. 机器学习——支持向量机SVM之非线性模型(原问题和对偶问题)

    目录 一.原问题(prime problem) 二.原问题的对偶问题(dual problem) 1.定义一个辅助函数 2.定义对偶问题 >>>问题1:上面说到遍历w,那w的取值范围 ...

  10. SVM支持向量机通俗导论(理解SVM的三层境界)

    神文 转自july:http://blog.csdn.net/v_july_v/article/details/7624837 支持向量机通俗导论(理解SVM的三层境界) 作者:July .致谢:pl ...

最新文章

  1. 求一个字符串中连续出现的次数最多的子串
  2. 转:软件设计漫谈之三:30分钟掌握面向对象类的设计原则
  3. 使用Nginx+FFMPEG搭建HLS直播转码服务器
  4. Intel Realsense D435 在windows系统下运行时请修改相机隐私设置以确保摄像头正常运行(没啥子用,还是掉线)
  5. boost::core模块lightweight的测试实例
  6. 华为交换机VLAN Trunk模式设置
  7. Docker 原理、学习教程
  8. 最全面的MySQL面试题大全-一
  9. mybatis-plus 从2.x到3.x升级指南
  10. linux系统homeinode,ubuntu14.04 64位安装H3C iNode客户端
  11. 编程语言中的句柄是什么?
  12. 实现财务自由的十大步骤
  13. 自动匹配模板 一分钟搞定财务报表
  14. 支付宝实现当面付扫描支付退款及退款查询
  15. import torch -- AttributeError: module ‘typing‘ has no attribute ‘_SpecialForm‘
  16. 数学中的术语与常用表达
  17. 客户端和服务器之间的信息结构,客户端与服务器之间的通信过程
  18. PLC通讯-串口通讯
  19. 74LS139改3―8线译码器_数字译码器
  20. 如何更改vs2013,vs2019等编译器的背景,更换壁纸

热门文章

  1. mysql win10 优化设置_Win10电脑优化必做的几个优化技巧提升速度!
  2. 遇到问题--python---ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel supp
  3. 数据错误(循环冗余检查) 各种解决方法
  4. 将自家的位置标注到地图上(51ditu.com)
  5. Java的全局异常处理(统一异常处理)+登陆拦截鉴权+注解实现记录日志
  6. Typecho中handsome主题如何增加侧边导航栏
  7. 计算机桌面背景设成白色,电脑桌面背景变白色的了怎么处理啊?
  8. bootstrap-select 的多选+模糊查询下拉框详解(官方示例文档解读)
  9. 推特难民涌入「长毛象」!这个小众社交平台一夜爆红
  10. iDB-数据库自动化运维平台