拉格朗日乘子法及KKT条件

来源:互联网 发布:java 相似度计算 编辑:程序博客网 时间:2024/05/21 11:11

拉格朗日乘子的引入:
1 对于求极值和有等式约束的优化问题,例如:
假设有自变量x和y,给定约束条件g(x,y)=c,要求f(x,y)在约束g下的极值。我们可以画出f的等高线图,如下图。此时,约束g=c由于只有一个自由度,因此也是图中的一条曲线(红色曲线所示)。显然地,当约束曲线g=c与某一条等高线f=d1相切时,函数f取得极值。两曲线相切等价于两曲线在切点处拥有共线的法向量。因此可得函数f(x,y)与g(x,y)在切点处的梯度(gradient)成正比。于是我们便可以列出方程组求解切点的坐标(x,y),进而得到函数f的极值。
这里写图片描述
对于上面的f与g在某处的梯度平行,用公式表示就是:

f+λg=0

反向转换过来就是:
minf(x)g(x)=c
等价于
minf(x,y)+λ(g(x,y)c)

其中λ就叫拉格朗日乘子,上面的min换成max是一样的
而对于这个求极值的问题,就又有很多方法可以求解:
梯度下降法,坐标下降法等等
而在实际中还有很多约束问题是非等式约束,在非等式下的拉格朗日乘子就需要使用KKT条件来实现:
KKT(Karush-Kuhn-Tucker)条件:是指在满足一定规则下,一个非线性规划问题能有最优化解的充要条件
首先说说为什么要推KKT条件:
原始问题:
minxf(x)

约束:
gk(x)0

添加拉格朗日乘子项后:
L(x,u)=f(x)+k=1qukgk(x)
uk0

问题还是上面的问题,但是怎么样将新的函数和旧的函数最优解对应起来?
上面原始函数在添加拉格朗日乘子后,由于添加的拉格朗日乘子项是不等式,因此,要证明在添加约束项后,所求解也是最优解,即要求满足:
minxf(x)=minx,uL(x,u)
这样我们在添加拉格朗日乘项后所求的解才有意义,但是实际上面,上面等式是不能够完全成立的,但是可以进行简单的变通使得上式成立:
minxf(x)=minxmaxuL(x,u)
这个式子为什么能够成立?因为:
ug(x)0
maxuL(x,u)=f(x)
即在参数u下函数L(x,u)的最大值为f(x)
所以我们可以将
minxmaxuL(x,u)
作为原始问题的解
然后再来看看minxmaxuL(x,u)的对偶问题:
maxuminxL(x,u)
推导:
maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)
由于maxuminxf(x)与u无关,因此第一项只剩
minxf(x)
,对于第二项,我们限制约束为:
ug(x)=0
,则有:
maxuminxL(x,u)=maxuminxf(x)+maxuminxug(x)=minxf(x)

所以在满足ug(x)=0时,minxmaxuL(x,u)和对偶问题解相同,同时也和原始解minxf(x)相同:
minxf(x)=minxmaxuL(x,u)=maxuminxL(x,u)
ug(x)=0

如果再把等式约束加进来:
约束
hi(x)=0,uk0,gk(x)0

minxf(x)
,等价于:
minxf(x)=minxmaxuL(x,u,c)
其中
L(x,u,c)=f(x)+k=1qukgk(x)+i=1pcihi(x)
约束不变:
hi(x)=0uk0gk(x)0

而所谓的KKT条件,就是上式取极值时的约束条件:
L(x,u,c)x=0
L(x,u,c)u=0
L(x,u,c)c=0
hi(x)=0uk0gk(x)0

另外,如果对偶互补条件成立:
ug(x)=0
那么对偶式成立:
minxmaxuL(x,u,c)=maxuminxL(x,u,c)

新的KKT条件添加ug(x)=0即可,新的KKT条件:
L(x,u,c)x=0
L(x,u,c)u=0
L(x,u,c)c=0
hi(x)=0uk0gk(x)0
ug(x)=0
在这些约束下:
minxf(x)=minxmaxuL(x,u,c)=maxuminxL(x,u,c)
其中
L(x,u,c)=f(x)+k=1qukgk(x)+i=1pcihi(x)
对这个等式,可以采用梯度下降法,坐标下降法等进行求解,需要说明的是,有很多时候原始问题不好求解,而对偶问题较好求解,因此可以添加对偶约束求对偶问题的最优解,比如SVM中就使用对偶问题进行求解.

原创粉丝点击