机器学习数学原理(5)——广泛拉格朗日乘子法
这一篇博客针对的是有约束的凸优化问题,主要是为后面的最优间隔分类器以及其演化的SVM(支持向量机,Support Vector Machine)算法作铺垫。Andrew Ng在讲解最优间隔分类器时运用了广泛拉格朗日乘子法但并没有讲的十分的明细,而是直接使用了结论,故笔者专门复习了拉格朗日乘子法并且学习了其在不等式约束情况下的优化(即广泛拉格朗日乘子法)。
这里要感谢博主Poll的博文:http://www.cnblogs.com/maybe2030/p/4946256.html。笔者写的是以博主Poll的博文为骨架,同时加上了自己对其的补充,并且解释了原文中很容易引起误解的或者难理解的公式。当然这里也要感谢MIT的在线数学课程,博主Poll的博文正是课程上该内容的笔记。
另外老规矩,由于笔者水平有限,若出现不妥或者错误的地方,欢迎批评指出。
1 拉格朗日乘子法的基本思想
1.1 思想概括
首先我们先要明确这个算法的目的是优化,对于一个连续的函数来说其实就是求全局极值。
现在我们来考虑一下没有约束条件的凸优化问题。对高等数学略有了解的人应该都知道对于一个连续的函数求极值点,其实就应该将函数求导,然后取导数向量为零向量即可。
例如一个n元函数f(x1,x2,…,xn),记作f(X),当我们需要求其极值时,便分别求f(X)对于xi的偏导(i=1~n),然后令这n个偏导为零,便将求极值点的问题转化为n个n元方程构成的方程组求解。
然而往往事情并没有这么简单,上述问题的前提往往在规划问题中过于纯粹。在实际问题中这n个自变量往往不是独立的,即满足一些约束条件。这样一来上述求导的方法便不再使用,因为其求导计算出的极值点X往往并不能满足约束条件。
现在我们细细分析一下导致这种差别的原因。不难发现,出现这个问题的本质便是