前言
最近在学习SVM的时候发现想要了解SVM的前提是必须得了解拉格朗日乘子法和KKT条件。为此,在花时间了解了拉格朗日乘子法和KKT条件之后在此说说自己的理解,顺便记录下自己的学习过程。
第一次接触拉格朗日乘子法是在高数课上求解在一定等式约束条件下的函数极值问题。当时只知道稀里糊涂的如何去用,从来都没有想过为什么要这样去做。总的来说,拉格朗日乘子法(Lagrange multipliers)是一种寻找多元函数在一组约束条件下的极值问题。通过引入拉格朗日乘子法,可以将有d个变量与k个约束条件的最优化问题转化为具有d+k个变量的无约束优化问题。
无约束极值
在讲解拉格朗日之前,先来看看一个简单的列子,即无约束优化问题。
minf(x)(1)
对于这种无约束的函数求解,我们很自然会想到对其进行求导获取候选集,然后将候选解代入函数中寻找最小值。
等式约束
而对于下面这种等式约束情况
minf(x)s.t.g(x)=0(2)
这个时候我们就可以用到了拉格朗日乘子法。首先定义拉格朗日函数
L(x,λ)=f(x)+λg(x)(3)
然后分别对 x 和对
∂L(x,λ)∂