支持向量机:Duality
来源:互联网 发布:计算机编程语言 知乎 编辑:程序博客网 时间:2024/05/05 23:19
在之前关于 support vector 的推导中,我们提到了 dual ,这里再来补充一点相关的知识。这套理论不仅适用于 SVM 的优化问题,而是对于所有带约束的优化问题都适用的,是优化理论中的一个重要部分。简单来说,对于任意一个带约束的优化都可以写成这样的形式:
形式统一能够简化推导过程中不必要的复杂性。其他的形式都可以归约到这样的标准形式,例如一个
虽然约束条件能够帮助我们减小搜索空间,但是如果约束条件本身就是比较复杂的形式的话,其实是一件很让人头痛的问题,为此我们希望把带约束的优化问题转化为无约束的优化问题。为此,我们定义 Lagrangian 如下:
它通过一些系数把约束条件和目标函数结合在了一起。当然 Lagrangian 本身并不好玩,现在让我们来让他针对
这里
因为如果原始问题有最优值,那么肯定是在满足约束条件的某个
到这里,我们成功把带约束问题转化为了无约束问题,不过这其实只是一个形式上的重写,并没有什么本质上的改变。我们只是把原来的问题通过 Lagrangian 写作了如下形式:
这个问题(或者说原始的带约束的形式)称作 primal problem 。如果你看过之前关于 SVM 的推导,那么肯定就知道了,相对应的还有一个 dual problem ,其形式非常类似,只是把
交换之后的 dual problem 和原来的 primal problem 并不相等,直观地,我们可以这样来理解:胖子中最瘦的那个都比瘦骨精中最胖的那个要胖。当然这是很不严格的说法,而且扣字眼的话可以纠缠不休,所以我们还是来看严格数学描述。和刚才的
并称
因为对于极值点(实际上包括所有满足约束条件的点)
因此
于是
这样一来就确定了
实际上就是最大的下界。这是很自然的,因为得到下界之后,我们自然地就希望得到最好的下界,也就是最大的那一个——因为它离我们要逼近的值最近呀。记 dual problem 的最优值为
这个性质叫做 weak duality ,对于所有的优化问题都成立。其中
这样一来,对于那些难以求解的 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 条件是指存在严格满足约束条件的点
让我们回到 duality 的话题。来看看 strong duality 成立的时候的一些性质。假设
由于两头是相等的,所以这一系列的式子里的不等号全部都可以换成等号。根据第一个不等号我们可以得到
此外,由第二个不等式,又显然
这个条件叫做 complementary slackness 。显然,如果
任何满足 strong duality (不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 strong duality 的一个必要条件。不过,当原始问题是凸优化问题的时候(当然还要求一应函数是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。换句话说,如果 primal problem 是一个凸优化问题,且存在
的极值点(如果不是凸优化问题,则不一定能推出来),亦即:
最后一个式子是根据 KKT 条件的第二和第四个条件得到。由于
- 支持向量机:Duality
- 支持向量机:Duality
- 支持向量机:Duality
- 支持向量机:Duality
- 支持向量机:Duality
- 支持向量机:Duality
- 支持向量机_6:Duality
- [Free Mind]支持向量机:Duality
- SVM支持向量机---(Lagrange Duality)
- “支持向量机系列”的番外篇一: Duality
- 支持向量机笔记(二) Lagrange duality
- SVM支持向量机二(Lagrange Duality)
- 支持向量机笔记(二) Lagrange duality拉格朗日对偶
- 支持向量机:Duality(转载,防止丢失)
- 【理论】支持向量机6:Duality —— 关于 dual 问题推导的一些补充理论
- 支持向量机(SVM)(二)-- 拉格朗日对偶(Lagrange duality)
- 人工智能-支持向量机
- 支持向量机
- Maven 手动添加 JAR 包到本地仓库
- 微信公众帐号开发教程第18篇-应用实例之音乐搜索
- 【笔记】Android开发中从EditText中获取数字
- 关于一致/非一致代码段与TSS 关系的个人看法
- shell--文件操作1
- 支持向量机:Duality
- 测试插入代码
- modelsim显示状态机名称的方法
- spring4声明式事务—02 xml配置方式
- 先选分类,再选待选项。
- Dao基类的设计方案之一
- PowermanagerService的sleep和wakeup流程
- 黑客辞典:暗网(the Dark Web)
- BZOJ 2243 染色 树链剖分