这个方法还是有很多没懂,后面等仔细研究了运筹学再来补充。这里先备份。
本文承接上一篇 约束优化方法之拉格朗日乘子法与KKT条件,将详解一些拉格朗日对偶的内容。都是一些在优化理论中比较简单的问题或者一些特例,复杂的没见过,但是简单的刚接触都感觉如洪水猛兽一般,所以当真是学海无涯。
在优化理论中,目标函数f(x)会有多种形式:如果目标函数和约束条件都为变量x的线性函数, 称该问题为线性规划; 如果目标函数为二次函数, 约束条件为线性函数, 称该最优化问题为二次规划; 如果目标函数或者约束条件均为非线性函数, 称该最优化问题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良好的性质,以下列举几个:
- 对偶问题的对偶是原问题;
- 无论原始问题是否是凸的,对偶问题都是凸优化问题;
- 对偶问题可以给出原始问题一个下界;
- 当满足一定条件时,原始问题与对偶问题的解是完全等价的;
比如下边这个例子,虽然原始问题非凸,但是对偶问题是凸的:
原始问题
对偶问题
直观地,可以理解为“最小的里最大的那个要比最大的中最小的那个要小”。具体的证明过程如下:
强对偶是一个非常好的性质,因为在强对偶成立的情况下,可以通过求解对偶问题来得到原始问题的解,在 SVM 中就是这样做的。当然并不是所有的对偶问题都满足强对偶性 ,在 SVM 中是直接假定了强对偶性的成立,其实只要满足一些条件,强对偶性是成立的,比如说 Slater 条件与KKT条件。
Slater条件
KKT条件
关于对偶的问题到此为止,其实都是很优化方法中比较简单的内容。总结一下。本文介绍了对偶的基本概念,对于一个约束优化问题,找到其对偶问题,当弱对偶成立时,可以得到原始问题的一个下界。而如果强对偶成立,则可以直接求解对偶问题来解决原始问题。 SVM 就是这样的。对偶问题由于性质良好一般比原始问题更容易求解,在 SVM 中通过引入对偶问题可以将问题表示成数据的内积形式从而使得 kernel trick 的应用更加自然)。此外,还有一些情况会同时求解对偶问题与原始问题 ,比如在迭代求解的过程中,通过判断对偶间隔的大小,可以得出一个有效的迭代停止条件。
参考文献
1. https://www.cs.cmu.edu/~ggordon/10725-F12/slides/15-duality.pdf
https://www.cs.cmu.edu/~ggordon/10725-F12/slides/16-kkt.pdf
2. http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Lectures/Duality.pdf
4. 支持向量机SVM(二) - JerryLead - 博客园
5. http://blog.pluskid.org/?p=702
6. Free Mind
7.书籍 Convex Optimization Cambridge版 (7.1)| 统计学习方法 李航(7.2)