拉格朗日乘子法与KKT条件

拉格朗日乘子法与KKT条件

拉格朗日乘子法

在实际中我们常常遇到这样一种优化问题(min和max都是一样的,因为min f(x)等价于max -f(x)):

minf(x)s.tg(x)=0

这是一个等式约束问题,按照拉格朗日乘子法,可以转换为无条件约束的形式:
f(x)+λg(x)=0

接下来分别对x和 λ 求导即可:
{f(x)+λg(x)=0g(x)=0

求解这个方程组即可。但是为什么可以这样做呢?
以这样一个问题为例:假设上面的x是一个二维的变量,即:
minf(x1,x2)s.tg(x1,x2)=0

图一
如图所示, f(x1,x2) 是一个曲面, g(x1,x2)=0 确定了一个曲线(若x是一个n维向量,则 g(x1,x2)=0 确定了一个n-1维的曲面,因为n维向量和一个等式可得其中一个变量可由另外n-1个线性表示),我们的目的是在这条曲线上找一点能够使目标函数 f(x1,x2) 取得最小值。为了便于观察,将这条曲线沿Z轴正向投影到曲面上,即我们沿着曲线从点A到点B找一点使曲面达到最低点。
现在还要补充一个预备知识,什么是等高线。假如我们有一个刀片,这个刀片平行于上图中的xOy面,我们不断的沿着Z轴移动这个刀片,它会与我们的曲面相交产生一系列的交线,我们把这些交线投影到xOy面上,于是得到下图(当然我们不可能画出所有的交线,只是部分):
图二
我们可以知道:

  • 每一条圈上的函数值是相同的(用图一来说就是有相同的Z值);
  • 根据图一可以知道,圈越往里函数值越小;
  • 圈与曲线相交的点对应着可取的点,该点所在的圈对应着可取的函数值
    图三
    下面说一下梯度,梯度表征了函数值变化最快的方向和速度,看上图在M点的梯度,沿着该梯度方向函数值减小最快,沿着它的逆方向函数值增大最快;曲面上任意一点,其等高线的切线方向与其梯度方向相互垂直;沿等高线的切线方向运动,函数值不变。此外我们有以下两个结论:

  • 对于约束曲面(线)上的任意点x,该点的梯度 g(x) 正交于约束曲面(线)

  • 在最优点 x ,目标函数在该点的梯度 f(x) 正交于约束曲面(线)
    图四
    第一点很明显,因为对于一个曲面(线),它的法线的方向就是梯度的方向;关键是第二点,如上图假如最优点是A点,且目标函数在A点的梯度 f(A) 与约束曲面不正交,我们看到存在一点B,其函数值f(B)比f(A)要小,这与我们的前提矛盾,也就是说若梯度 f(x) 与约束平面不正交,则仍可在约束曲面上移动该点使函数值进一步下降(其实也可以根据两者的梯度来判断,往下看就明白这一点了)。
    图五
    于是我们得到最优点的位置如上图所示,在最优点 x ,梯度 f(x) 与梯度 g(x) 的方向必相同或相反,即存在 λ0 ,使得:
    f(x)+λg(x)=0

    而且 x 必定也是满足 g(x)=0 的,这正好对应了我们前面所说的拉格朗日的解决等式约束问题的方法,由此得证。

    KKT条件

现在我们可以解决等式约束的问题了,但是对于不等式约束如何处理呢?考虑下面的情况:

minf(x)s.th(x)=0g(x)0

考虑 g(x)0 ,此时最优解 x 或者在 g(x)<0 的区域中,或者在边界 g(x)=0 上,如下图所示:
图6
对上图左侧,此时最优解 x g(x)<0 的区域中;对上图右侧,最优解 x 在边界 g(x)=0 上。对于左图的情况,即 g(x)<0 的情况,约束 g(x)0 并没有起作用,比如你把左图的灰色区域去掉,是不是可以直接利用我们学过的方法得到最优解 x ;对于右图的情况,很明显就是一个等式约束问题了,我们前面已经说过了,注意此时梯度 f(x) 与梯度 g(x) 的方向相反。由此原问题依然可以使用拉格朗日来解决,相应的拉格朗日函数为:
L(x,λ,μ)=f(x)+λh(x)+μg(x)

相应的KKT条件为:
g(x)0μ0μg(x)=0

g(x)<0 时, μ=0 ,原式中就不考虑g(x);当 g(x)=0 时, λ 可取任何大于等于0的值。然后对于这样一个优化问题,我们可以使用拉格朗日对偶性将原问题转换为对偶问题,通过求对偶问题的解而得到原始问题的解。


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值