拉格朗日乘子法及KKT条件

拉格朗日乘子的引入:
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中就使用对偶问题进行求解.

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值