在求解最优化问题中,拉格朗日乘子法(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个方程。求出的方程组的解就可能是最优化值(高等数学中提到的极值),将结果带回原方程验证就可得到解。

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

         

   对求偏导得到

     

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

          

   带入解得最大体积为:

    

(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. 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性

    深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...

  2. SVM中拉格朗日乘子法、KKT条件、对偶问题详解

    SVM中拉格朗日乘子法.KKT条件.对偶问题详解 创作目的 1.SVM回顾 2.拉格朗日乘子法 3.KKT条件 4.对偶问题 强对偶性证明 总结 创作目的 我是机器学习初学者,目前正在上机器学习课,老 ...

  3. 一文看懂拉格朗日乘子法、KKT条件和对偶问题

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 拉格朗日乘子法是解约束优化问题的常用方法,它和 KKT 条件.Sl ...

  4. 拉格朗日乘子法与KKT条件

    欢迎转载,转载请注明出处:https://blog.csdn.net/qq_41709378/article/details/106599811 --------------------------- ...

  5. 最优化之凸集、凸函数、上确界、Jensen不等式、共轭函数、Fenchel不等式、拉格朗日乘子法、KKT条件

    最优化之凸集.凸函数.上确界.Jensen不等式.共轭函数.Fenchel不等式.拉格朗日乘子法.KKT条件.拉格朗日对偶 1.直线的向量表达 1.1 共线定理 对于任意两个向量a⃗,b⃗\vec{a ...

  6. 拉格朗日乘子法、KKT条件、拉格朗日对偶性

    拉格朗日乘子法.KKT条件.拉格朗日对偶性 转载于http://blog.csdn.net/sinat_17496535/article/details/52103852 笔记主要来源于维基百科和&l ...

  7. 约束优化方法之拉格朗日乘子法与KKT条件

    来源:https://www.cnblogs.com/ooon/p/5721119.html 引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可 ...

  8. 一文详解从拉格朗日乘子法、KKT条件、对偶上升法到罚函数与增广Lagrangian乘子法再到ADMM算法(交替方向乘子法)

    最近看了ADMM算法,发现这个算法需要用到许多不少前备知识,在搜索补齐这些知识的过程中感觉网上的资料与总结在零散的同时又不够清晰,在此本文对这一块的内容进行汇总,同时表达自己的一些理解. 目录 拉格朗 ...

  9. 【数学理论】最优化问题:拉格朗日乘子法、KKT条件以及对偶问题

    前言 最优化问题的求解方法在机器学习算法中是经常被用到的.下面是一个最优化问题的一个简单概述: 求解f(x)f(x)f(x)最小值时的x∗x^*x∗,即: min⁡xf(x)\mathop {\min ...

最新文章

  1. 剑指offer:面试题34. 二叉树中和为某一值的路径
  2. 转录本counts,FPKM,TPM相互转化
  3. 使用Freestreamer 拖动滑动条音频重新播放或者没有声音seekToPosition无效
  4. i5四核八线程怎么样_同样四核八线程,Ryzen 3 3100和3300X区别大了!
  5. Linux下的删除命令
  6. 牛客网_PAT乙级_1028到底买不买(20)【用iterator迭代器,对两个vectorchar比较,删除相同元素】
  7. java的整数扩展,浮点数扩展,字符扩展,转义字符,布尔值扩展
  8. find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
  9. hdu 3930 Broot 二次剩余
  10. 多第八田间学校:几何+图论出度+模拟+找到规律
  11. 【译】用CSS实现基线韵律
  12. windows dll 学习
  13. 第三章 机器人系统的动力学模型
  14. unity接入 微信登录sdk
  15. css单线边框_css中的border-collapse属性如何设置表格边框线?(代码示例)
  16. java分词支持拼音_ik中文分词器及拼音分词器试用
  17. html 磁贴自动布局,也来“玩”MetroUI之磁贴(一)_html/css_WEB-ITnose
  18. 如何使用电骡eMule上传资源
  19. python计算时间间隔_python计算时间差
  20. SAP 软件价格体系及项目费用构成

热门文章

  1. linux 配置sftp日志,在CentOS 7.5上为SFTP配置ProFTPd
  2. 如何用指针访问opencv cv::Mat数据?ptr<uchar>()
  3. win10无法显示的AppData文件夹,以及隐藏的python安装
  4. 【中级软考】专利权的保护期限可以延长吗?商标使用权呢?
  5. tensorflow dataset_ops map()方法 (返回数据集通过函数“ map_func”的元素映射)
  6. 王道计算机考研 计算机组成原理 第一章、计算机系统概述
  7. PAT甲级题目翻译+答案 AcWing(高精度)
  8. 如何正确刷题计算机考研,2020考研:4个方法教你数学如何正确刷题!
  9. Mybatis 源码探究 (3)创建 SqlSessionFactory对象 执行sqlSession.getMapper()方法
  10. latex 加粗_LaTeX论文模板