拉格朗日乘子法
基本的拉格朗日乘子法就是求函数f(x1,x2,...)在约束条件g(x1,x2,...)=0下的极值的方法。其主要思想是引入一个新的参数λ,将约束条件函数与原函数联立,从而求出使原函数取得极值的各个变量的解。
有等式约束的优化问题,可以写为:
min f(x),
s.t. h_i(x) = 0; i =1, ..., n
如果既有等式约束又有不等式约束,则求对偶问题
关于上界下界
设函数f(x)的定义域为D,f(x)集合D上有定义。
如果存在数K1,使得 f(x)≤K1对任意x∈D都成立,则称函数f(x)在D上有上界。
反之,如果存在数字K2,使得 f(x)≥K2对任意x∈D都成立,则称函数f(x)在D上有下界,而K2称为函数f(x)在D上的一个下界。
如果存在正数M,使得 |f(x)|≤M 对任意x∈D都成立,则称函数在D上有界。如果这样的M不存在,就称函数f(x)在D上无界;等价于,无论对于任何正数M,总存在x1属于X,使得|f(x1)|>M,那么函数f(x)在X上无界。
此外,函数f(x)在X上有界的充分必要条件是它在X上既有上界也有下界。
最小的上界是上确界。
总结
有时候也不计算对偶问题,而是随机选择乘子λ和ν,代入到g里面计算下界。但不能确保是最大下界,甚至有可能会出现负无穷。
如果这两个相等,就是强对偶。解决SVM就是假设了强对偶关系。强对偶的条件涉及到Slater,KKT。
任何满足 strong duality (不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 strong duality 的一个必要条件。不过,当原始问题是凸优化问题的时候(当然还要求一应函数是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。
在只有 weak duality 成立的情况下,我们至少可以得到原始问题的一个下界。而如果 strong duality 成立,则可以直接求解 dual problem 来解决原始问题,就如同经典的 SVM 的求解过程一样。有可能 dual problem 比 primal problem 更容易求解,或者 dual problem 有一些优良的结构(例如 SVM 中通过 dual problem 我们可以将问题表示成数据的内积形式从而使得 kernel trick 的应用成为可能)。此外,还有一些情况会同时求解 dual 和 primal problem ,比如在迭代求解的过程中,通过判断 duality gap 的大小,可以得出一个有效的迭代停止条件。