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

1. 拉格朗日乘子法:

这个问题转换为

其中,称为拉格朗日乘子。

 wikipedia上对拉格朗日乘子法的合理性解释:

 现有一个二维的优化问题:

 我们可以画图来辅助思考。

  

 绿线标出的是约束的点的轨迹。蓝线是的等高线。箭头表示斜率,和等高线的法线平行。从图上可以直观地看到在最优解处,f和g的法线方向刚好相反(或者说叫梯度共线),即

 

 而满足(3)的点同时又是(4)的解。

 

 所以(2)和(4)等价。

 新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。

2.KKT条件

 

 其中

 

 上面的推导到此中断一下,我们看另外一个式子:

 

 这里的都就向量,所以去掉了下标k。另外一些博友不明白上式中是怎么推出来的,其实很简单,因为f(x)与变量无关,所以这个等式就是成立的。

 又

 

 联合(7),(8)我们得到

 

 

增广朗日乘子法(Augumented Lagrange Multiplier)是对二次惩罚法(Quadratic Penalty Method)的一种改进,二次惩罚法要求二次惩罚项的系数趋近于无穷(对约束的偏离给予很高的惩罚)。

增广拉格朗日乘子法就是在原来的目标函数上加一个罚函数。罚函数因子的话就是拉格朗日乘子法,乘子就是罚函数法。因为有约束项,所以加上罚函数以后问题的解是不变的。然后就很自然的有了增广拉格朗日函数。求解的方法比如:从一个相对比较小的罚函数因子和选定的初始的乘子出发,在迭代中不断地求出,在把因子调大,同时更新乘子参数使其逼近最优的乘子。然后在罚函数因子变得非常大之前,一般就能把最优解得出来了。
多出一个二次惩罚项会使得算法的收敛速度很快,体现在理论上就是当很小时,每次乘子的更新可以变得很大。而且增广拉格朗日乘子法比拉格朗日乘子法普适性更好,需要的条件更加温和,比如不要求原函数是强凸的,甚至可以是非凸的,而且原函数可以趋近于无穷,而这种条件下,拉格朗日乘子法就无能为力了。究其原因,是因为二次惩罚项具有很好的矫正作用,在原函数非凸的情况下,只要满足一定的条件(二次惩罚项系数足够大),增广拉格朗日函数在最优点处的二阶导是正定的。因此具有严格的局部极小值。

来源:https://www.zhihu.com/question/23424344/answer/39935081

   https://www.zhihu.com/question/23424344/answer/79955670
   http://www.cnblogs.com/zhangchaoyang

拉格朗日乘子法&KKT条件的更多相关文章

  1. 拉格朗日乘子法 - KKT条件 - 对偶问题

    接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法.KKT条件和对偶问题,所以本篇先作个铺垫. 大部分机器学习算法最后都可归结为最优化问题 ...

  2. 关于拉格朗日乘子法和KKT条件

    解密SVM系列(一):关于拉格朗日乘子法和KKT条件 标签: svm算法支持向量机 2015-08-17 18:53 1214人阅读 评论(0) 收藏 举报  分类: 模式识别&机器学习(42 ...

  3. 真正理解拉格朗日乘子法和 KKT 条件

        这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容.     首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: \[min \quad f(x)\]     如 ...

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

    拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件 ...

  5. 机器学习笔记——拉格朗日乘子法和KKT条件

    拉格朗日乘子法是一种寻找多元函数在一组约束下的极值方法,通过引入拉格朗日乘子,可将有m个变量和n个约束条件的最优化问题转化为具有m+n个变量的无约束优化问题.在介绍拉格朗日乘子法之前,先简要的介绍一些 ...

  6. 重温拉格朗日乘子法和KKT条件

    在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...

  7. 第99:真正理解拉格朗日乘子法和 KKT 条件

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

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

  9. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

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

随机推荐

  1. scrapy流程图

    refer:https://blog.yongli1992.com/2015/02/08/python-scrapy-module/ 这里是一张Scrapy架构图的展示.Scrapy Engine负责 ...

  2. os.path.join

    os.path.join()函数: 第一个以”/”开头的参数开始拼接,之前的参数全部丢弃. 以上一种情况为先.在上一种情况确保情况下,若出现”./”开头的参数,会从”./”开头的参数的上一个参数开始拼 ...

  3. 杨韬的Python/Jupyter学习笔记

    Python语法学习 https://zhuanlan.zhihu.com/p/24162430 Python 安装库 安装Jupyter Notebook 先安装Python cmd 进入K:\Ju ...

  4. 2017-2018-1 20155228 《数学建模》 MatlabR2017a安装教程

    2017-2018-1 20155228MatlabR2017a安装教程 原版软件和破解补丁的下载 原版软件和破解补丁的下载链接 需要关注微信公众号才能获取下载密码,照办就是了,为了学习嘛哈哈哈 有三 ...

  5. linux命令之pssh命令

    查看一下pssh命令的帮助文档: [root@test2 ~]# pssh --version [root@test2 ~]# pssh --help Usage: pssh [OPTIONS] co ...

  6. Shiro权限管理框架

    一.Shiro介绍 Apache Shiro 是Java 的一个安全框架.Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境.Shiro 可以 ...

  7. opencv学习之路(27)、轮廓查找与绘制(六)——外接圆、椭圆拟合、逼近多边形曲线、计算轮廓面积及长度、提取不规则轮廓

    一.最小外接圆 #include "opencv2/opencv.hpp" #include<iostream> using namespace std; using ...

  8. kettle 连接 Oracle 异常

    场景重现 新安装的 kettle(pdi-ce-7.0.0.0-25) 连接 Oracle 11G R2 报错如下: 解决办法 到 Oracle 官网 JDBC Downloads 下载对应的 ojd ...

  9. Learning-Python【4】:Python流程控制与循环

    一.if...else分支 1.什么是if判断 判断一个条件如果成立则如何,不成立则如何 2.为何要有if判断 让计算机能像人一样具有判断能力 语法1:if...else if 判断条件: 代码块1 ...

  10. 表达式引擎aviator

    Aviator是一个轻量级.高性能的Java表达式执行引擎, 本文内容主要来自于官方文档 简介 包依赖 使用手册 执行表达式 使用变量 exec 方法 调用函数 自定义函数 编译表达式 访问数组和集合 ...