拉格朗日 & KKT条件

有什么用

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。(前提:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。)

拉格朗日乘子法

如上所述,拉格朗日乘子法可以将等式约束优化问题转换为无约束优化问题,即将问题:

minf(x)s.t. hi(x)=0, i=1,2,...n(1)(2) (1) min f ( x ) (2) s . t .   h i ( x ) = 0 ,   i = 1 , 2 , . . . n

转化为:

minf(x)+i=1nλihi(x) min f ( x ) + ∑ i = 1 n λ i h i ( x )

其中, λi0 λ i ≠ 0 ,称为拉格朗日乘子。(关于为什么成立可以参考维基百科,或者 这篇博文,更形象的理解可以参考 知乎的说明。)

KKT条件

当遇到不等式约束的时候怎么办呢?这个时候就需要用到KKT条件,KKT条件是拉格朗日乘子法的泛化,使其可扩展到了不等式约束的优化问题的求解。他就是将问题:

minf(x)s.t. gk(x)0, k=1,2,...q(3)(4) (3) min f ( x ) (4) s . t .   g k ( x ) ⩽ 0 ,   k = 1 , 2 , . . . q

转化为一个极大极小问题:
L(x,u)=f(x)+k=1qukgk(x), uk0maxuminxL(x,u) L ( x , u ) = f ( x ) + ∑ k = 1 q u k g k ( x ) ,   u k ⩾ 0 max u min x L ( x , u )

不明白为什么?没关系,下面先看两个证明(两个方向),

1、证明 minxf(x)=minxmaxuL(x,u) min x f ( x ) = min x max u L ( x , u )

因为,

uk0gk(x)0}ug(x)0 u k ⩾ 0 g k ( x ) ⩽ 0 } → u g ( x ) ⩽ 0

所以,
maxuL(x,u)=f(x) max u L ( x , u ) = f ( x )

于是,
minxf(x)=minxmaxuL(x,u) min x f ( x ) = min x max u L ( x , u )

2、证明 minxf(x)=maxuminxL(x,u) min x f ( x ) = max u min x L ( x , u )

maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)=minxf(x)+maxuminxug(x)(5)(6)(7) (5) max u min x L ( x , u ) = max u [ min x f ( x ) + min x u g ( x ) ] (6) = max u min x f ( x ) + max u min x u g ( x ) (7) = min x f ( x ) + max u min x u g ( x )

上述式子中, maxuminxf(x) max u min x f ( x ) 因为 f(x) f ( x ) u u 无关,所以maxuminxf(x)=minxf(x)。我们着重考察下后面个式子,因为

uk0gk(x)0}minxug(x)={0,u=0g(x)=0,u>0  g(x)<0 u k ⩾ 0 g k ( x ) ⩽ 0 } → min x u g ( x ) = { 0 , u = 0 或 g ( x ) = 0 − ∞ , u > 0   且   g ( x ) < 0

所以,
maxuminxug(x)=0,u=0g(x)=0 max u min x u g ( x ) = 0 , 此 时 有 u = 0 或 g ( x ) = 0

也就是说,
maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)=minxf(x)+maxuminxug(x)=minxf(x)(8)(9)(10)(11) (8) max u min x L ( x , u ) = max u [ min x f ( x ) + min x u g ( x ) ] (9) = max u min x f ( x ) + max u min x u g ( x ) (10) = min x f ( x ) + max u min x u g ( x ) (11) = min x f ( x )

上面两个证明,什么意思呢?也就是原始问题(不等式约束)转化为了两个等价的问题(无约束):

minxf(x)=minxmaxuL(x,u)=maxuminxL(x,u)(12)(13) (12) min x f ( x ) = min x max u L ( x , u ) (13) = max u min x L ( x , u )

我们将 maxuminxL(x,u) max u min x L ( x , u ) 称为原问题 minxmaxuL(x,u) min x max u L ( x , u ) 的对偶问题。

有了KKT条件我们的原始问题如下求得

L(x,u)=f(x)+k=1qukgk(x)uk0gk(x)0(14)(15)(16)minxf(x)ukgk(x)=0L(x,u)x|x=x=0=minxmaxuL(x,u)=maxuminxL(x,u) (14) L ( x , u ) = f ( x ) + ∑ k = 1 q u k g k ( x ) (15) u k ⩾ 0 (16) g k ( x ) ⩽ 0 } → { min x f ( x ) = min x max u L ( x , u ) = max u min x L ( x , u ) u k g k ( x ∗ ) = 0 ∂ L ( x , u ) ∂ x | x = x ∗ = 0

同时,KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:
这里写图片描述

参考

拉格朗日乘子法和KKT条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值