学习背景:理解SVM时需要这部分背景知识。
对于条件最佳化constrained optimization,我们使用拉格朗日乘子法。
所谓constrained optimization就是求在特定条件下变量能输出的函数最大值或者最小值。
举个例子:函数,其中两变量满足约束条件,现在求的最值。不难看出,的图像是无数个同心圆,原点是它的圆心。而约束条件是双曲线。
图中的圆是等高线,因为必须等于某个正数的时候才是圆的图像。而这个正数就是函数值。红色的圆正好和双曲线相切,再高就变成了相交。显然,随着等高线的升高,始终两者相交,因此这个问题没有最大值,只有最小值,且最小值就是两者相切的时候,等高线表达的值。
那么我们如何计算这个相切的位置?
根据上图可以想象,从一条等高线跨越到更高的一条等高线,必然是沿着垂直于切线的方向是最快的。而这个切线的方向就是梯度。这里不做数学上的证明,只需要有个直观的感受就够了。因此我们可以确定,梯度向量就是切线的法向量。两条曲线的法向量都和共同的切线垂直,那么它们也就共线,即两曲线的梯度共线。我们用来表示两者的长度关系,这也就是所谓的拉格朗日乘子:
即:和同时成立。这里的是,那么有:
因此函数在上述约束条件下的最小值就是。(不能等于-2,因为同号,而)
拉格朗日函数 (Lagrangian)
公式:
或者
具体到本例,也就是:
使这个新构造的函数的梯度等于0,那么得到的方程组和上述相同:
在我看来,这个拉格朗日函数就是一个上述算法的紧凑版,本质无区别。