在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。

  我们这里提到的最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值(因为最小值与最大值可以很容易转化,即最大值问题可以转化成最小值问题)。提到KKT条件一般会附带的提一下拉格朗日乘子。对学过高等数学的人来说比较拉格朗日乘子应该会有些印象。二者均是求解最优化问题的方法,不同之处在于应用的情形不同。

一般情况下,最优化问题会碰到一下三种情况:

(1)无约束条件

  这是最简单的情况,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点。将结果带回原函数进行验证即可。

(2)等式约束条件

设目标函数为f(x),约束条件为h_k(x),形如:

  s.t. 表示subject to ,“受限于”的意思,l表示有l个约束条件。

        

   则解决方法是消元法或者拉格朗日法。消元法比较简单不在赘述,这里主要讲拉格朗日法,因为后面提到的KKT条件是对拉格朗日乘子法的一种泛化。

   例如给定椭球:

          

    求这个椭球的内接长方体的最大体积。这个问题实际上就是条件极值问题,即在条件      下,求的最大值。

    当然这个问题实际可以先根据条件消去 z (消元法),然后带入转化为无条件极值问题来处理。但是有时候这样做很困难,甚至是做不到的,这时候就需要用拉格朗日乘数法了。

    首先定义拉格朗日函数F(x):

          ( 其中λk是各个约束条件的待定系数。)

然后解变量的偏导方程:

    ......,

   如果有l个约束条件,就应该有l+1个方程。求出的方程组的解就可能是最优化值(高等数学中提到的极值),将结果带回原方程验证就可得到解。

   回到上面的题目,通过拉格朗日乘数法将问题转化为

         

   对求偏导得到

     

   联立前面三个方程得到,带入第四个方程解之

          

   带入解得最大体积为:

    

   至于为什么这么做可以求解最优化?维基百科上给出了一个比较好的直观解释。

 举个二维最优化的例子:

     min f(x,y)

      s.t. g(x,y) = c

  这里画出z=f(x,y)的等高线(函数登高线定义见百度百科):

                    

绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。从梯度的方向上来看,显然有d1>d2。绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,f(x,y)的最小值应该会落在最小那圈等高线内部的某一点上。而现在加上了约束,最小值点应该在哪里呢?显然应该是在f(x,y)的等高线正好和约束线相切的位置,因为如果只是相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值。

  如果我们对约束也求梯度∇g(x,y),则其梯度如图中绿色箭头所示。很容易看出来,要想让目标函数f(x,y)的等高线和约束相切,则他们切点的梯度一定在一条直线上(f和g的斜率平行)。

  也即在最优化解的时候:∇f(x,y)=λ(∇g(x,y)-C)    (其中∇为梯度算子; 即:f(x)的梯度 = λ* g(x)的梯度,λ是常数,可以是任何非0实数,表示左右两边同向。)

即:▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0

  那么拉格朗日函数: F(x,y)=f(x,y)+λ(g(x,y)−c) 在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。

  min( F(x,λ) )取得极小值时其导数为0,即▽f(x)+▽∑ni=λihi(x)=0,也就是说f(x)和h(x)的梯度共线。

  简单的说,在F(x,λ)取得最优化解的时候,即F(x,λ)取极值(导数为0,▽[f(x,y)+λ(g(x,y)−c)]=0)的时候,f(x)与g(x) 梯度共线,此时就是在条件约束g(x)下,f(x)的最优化解。

(3)不等式约束条件

设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:

        

则我们定义不等式约束下的拉格朗日函数L,则L表达式为:

        

其中f(x)是原目标函数,hj(x)是第j个等式约束条件,λj是对应的约束系数,gk是不等式约束,uk是对应的约束系数。

  常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + a*g(x)+b*h(x),

  KKT条件是说最优值必须满足以下条件:

    1)L(a, b, x)对x求导为零;

    2)h(x) =0;

    3)a*g(x) = 0;

  求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。

  接下来主要介绍KKT条件,推导及应用。详细推导过程如下:

参考:

  【1】拉格朗日乘数法

  【2】KKT条件介绍

  【3】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

  【4】拉格朗日乘子法和KKT条件

KKT 拉格朗日乘数法相关推荐

  1. 从拉格朗日乘数法到KKT条件

    从拉格朗日乘数法到KKT条件 最近看论文遇到了Karush–Kuhn–Tucker (KKT)条件,想搞清楚这是个什么东东,因此就把这个东西认真学习一下并且分享出来,希望对大家有用.学习KKT就不得不 ...

  2. 拉格朗日乘数法及KKT条件-通俗理解

    拉格朗日乘子法及KKT条件数学理解 1.拉格朗日乘数法的基本思想 在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这 ...

  3. 拉格朗日乘数法的原理,我用10幅图把它讲清楚了

    机器学习是一个目标函数优化问题,给定目标函数f,约束条件会有一般包括以下三类: 仅含等式约束 仅含不等式约束 等式和不等式约束混合型 当然还有一类没有任何约束条件的最优化问题 关于最优化问题,大都令人 ...

  4. 拉格朗日乘数法 —— 通俗理解

    拉格朗日乘数法(Lagrange Multiplier Method)在数学最优问题中,是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.记得以前大学高数.数模等课程多次提到过,在求解最有问 ...

  5. 拉格朗日乘数法 和 KTT条件

    预备知识 令 \(X\) 表示一个变量组(向量) \((x_1, x_2, \cdots, x_n)\) 考虑一个处处可导的函数 \(f(X)\), 为了方便描述, 这里以二元函数为例 对于微分, 考 ...

  6. [Math Algorithm] 拉格朗日乘数法

    https://www.cnblogs.com/maybe2030/p/4946256.html 阅读目录 1. 拉格朗日乘数法的基本思想 2. 数学实例 3. 拉格朗日乘数法的基本形态 4. 拉格朗 ...

  7. 优化算法之梯度下降法、牛顿法、拟牛顿法和拉格朗日乘数法

      在机器学习中,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解最优化问题. - 无约束最优化问题:梯度下降法.牛顿法.拟牛顿法: - 有约束最优化问题:拉格朗 ...

  8. 对拉格朗日乘数法的理解

    参考 百度百科 拉格朗日乘数法:https://www.cnblogs.com/maybe2030/p/4946256.html 拉格朗日乘数法的一种几何解释:https://zhuanlan.zhi ...

  9. 拉格朗日乘数法怎么判断极大极小_最优化方法:拉格朗日乘数法

    解决约束优化问题--拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程. 拉格朗日乘数法的基本思想 作为一种优化算法,拉 ...

最新文章

  1. 魅蓝android底层是什么,集体去YunOS化:魅蓝2\魅蓝Metal更换安卓底层
  2. [WPF系列]-DynamicResource与StaticResource的区别
  3. ipad和iphone切图_如何在iPhone,iPad和Mac上签名PDF
  4. C++编绎器编绎C语言的问题
  5. 查看目录中的内容及权限
  6. ISTQB 软件测试资质认证
  7. 简单的代码提交,还能玩出这么多花样?
  8. 游戏开发之C++类和对象相关概念实例(C++)
  9. Unity-failed to update unity web player
  10. Java.千呼万唤始出来
  11. 浦发笔试考计算机知识么,浦发银行考试:笔试到底考什么?
  12. 微信支付宝,个人支付收款接口现状剖析
  13. 一个屌丝程序猿的人生(五)
  14. 【世界杯赛程表】v1.3 100614 我做的M8软件!
  15. xgboost在LTR(学习排序)中的应用
  16. AirServer 7.3.0中文版手机设备无线传送电脑屏幕工具
  17. 存储市场竞争加剧 美光科技再次光荣绽放
  18. CPU密集和IO密集
  19. Docker启动了Mysql命令行连不上报access denied for user ‘sy-fjj-web‘@‘localhost‘ (using password: YES)
  20. 新年将至,如何用python给朋友送上新年祝福呢?

热门文章

  1. 医保局:2018年跨省异地就医直接结算近132万人次
  2. 中医-判断“上火”的来源及常用解决方案
  3. Java基础案例2-4:为新员工分配部门
  4. excel计算出均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation)
  5. smtp发送服务器的协议,smtp协议总结
  6. 2. 代价函数与梯度下降
  7. crypto-cat‘s gift(CATCTF)
  8. Starting Tomcat v7.0 Server at localhost' has encountered a problem问题的解决
  9. 小区监控案例1-解决方案
  10. 使用JavaScript实现后退键