拉格朗日乘子法和KKT条件
转自:http://www.cnblogs.com/zhangchaoyang/articles/2726873.html
拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。
对于无约束最优化问题,有很多经典的求解方法,参见无约束最优化方法。
拉格朗日乘子法
先来看拉格朗日乘子法是什么,再讲为什么。
minf(x)s.t.hi(x)=0i=1,2...,n
这个问题转换为
其中λi≠0,称为拉格朗日乘子。
下面看一下wikipedia上是如何解释拉格朗日乘子法的合理性的。
现有一个二维的优化问题:
minf(x,y)s.t.g(x,y)=c
我们可以画图来辅助思考。
绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。
从图上可以直观地看到在最优解处,f和g的斜率平行。
▽[f(x,y)+λ(g(x,y)−1)]=0λ≠0
一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。
F(x,y)=f(x,y)+λ(g(x,y)−c)
新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。
(1)取得极小值时其导数为0,即▽f(x)+▽∑ni=1λihi(x)=0,也就是说f(x)和h(x)的梯度共线。
KKT条件
先看KKT条件是什么,再讲为什么。
letL(x,μ)=f(x)+∑qk=1μkgk(x)
其中μk≥0,gk(x)≤0
∵μk≥0gk(x)≤0}=>μg(x)≤0
∴
∴
maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)
又∵μk≥0gk(x)≤0}=>minxμg(x)={0−∞ifμ=0org(x)=0ifμ>0andg(x)<0
∴maxμminxμg(x)=0此时μ=0org(x)=0
此时μ=0org(x)=0
联合(3),(4)我们得到minxmaxμL(x,μ)=maxμminxL(x,μ)
亦即L(x,μ)=f(x)+∑qk=1μkgk(x)μk≥0gk(x)≤0⎫⎭⎬⎪⎪=>minxmaxμL(x,μ)=maxμminxL(x,μ)=minxf(x)
我们把maxμminxL(x,μ)称为原问题minxmaxμL(x,μ)的对偶问题,上式表明当满足一定条件时原问题、对偶的解、以及minxf(x)是相同的,且在最优解x∗处μ=0org(x∗)=0。把x∗代入(2)得maxμL(x∗,μ)=f(x∗),由(4)得maxμminxL(x,μ)=f(x∗),所以L(x∗,μ)=minxL(x,μ),这说明x∗也是L(x,μ)的极值点,即∂L(x,μ)∂x|x=x∗=0。
最后总结一下:
L(x,μ)=f(x)+∑qk=1μkgk(x)μk≥0gk(x)≤0⎫⎭⎬⎪⎪=>⎧⎩⎨⎪⎪⎪⎪minxmaxμL(x,μ)=maxμminxL(x,μ)=minxf(x)=f(x∗)μkgk(x∗)=0∂L(x,μ)∂x|x=x∗=0
KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:
L(x,λ,μ)=f(x)+∑ni=1λihi(x)+∑qk=1μkgk(x)λi≠0hi(x)=0μk≥0gk(x)≤0⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪=>⎧⎩⎨⎪⎪⎪⎪minxmaxμL(x,λ,μ)=maxμminxL(x,λ,μ)=minxf(x)=f(x∗)μkgk(x∗)=0∂L(x,λ,μ)∂x|x=x∗=0
注:x,λ,μ都是向量。
∂L(x,λ,μ)∂x|x=x∗=0表明f(x)在极值点x∗处的梯度是各个hi(x∗)和gk(x∗)梯度的线性组合。
拉格朗日乘子法和KKT条件相关推荐
- 最优控制理论 六、拉格朗日乘子法和KKT条件
拉格朗日乘子法和KKT条件 1. 等式约束最优化 2. 不等式约束最优化 2.1 1个不等式约束 2.2 KKT条件 2.3 二维不等式约束图解 3. MATLAB不等式约束优化 总结 4. 参考文献 ...
- 真正理解拉格朗日乘子法和KKT条件
转载自:https://www.cnblogs.com/xinchen1111/p/8804858.html 这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容. 首先从无约束的优 ...
- 【数学基础】运筹学:拉格朗日乘子法和KKT条件(上)
引言 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.通常,对于等式约束问题,采用拉格朗日乘子法.对 ...
- 解密SVM系列(一):关于拉格朗日乘子法和KKT条件
转载 原地址https://blog.csdn.net/on2way/article/details/47729419 写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧 ...
- 第99:真正理解拉格朗日乘子法和 KKT 条件
转载于:https://www.cnblogs.com/invisible2/p/11441485.html
- 拉格朗日乘子法 KKT条件
目录 1. 拉格朗日乘子法用于最优化的原因 2. 最优化问题三种情况 2.1 无约束条件 2.2 等式约束条件:拉格朗日乘子法 2.3 不等式约束条件:KKT 3. Lagrange对偶函数 3.1 ...
- 拉格朗日乘子法和KTT条件
这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容. 首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: minf(x)minf(x) 如果问题是 ...
- 机器学习之拉格朗日乘子法和 KKT
有约束的最优化问题 最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候,才可以 ...
- 直观理解拉格朗日乘子法和Karush-Kuhn-Tucker(KKT)条件
在最优化问题中,经常是会有约束条件的,而约束条件可分为等式约束条件和不等式约束条件,对于前者,我们有拉格朗日乘子法,对于后者,有KKT条件,对于既有等式约束又有不等式约束的最优化问题,只需要结合拉格朗 ...
最新文章
- 【R】神经网络相关的R包
- Photoshop CC2018软件安装资料及教程
- Red Hat忘记root密码,重置root管理员密码
- vscode终端没显示_记一个VS Code终端显示问题的较完美解决
- eslint airbnb 不允许尾随逗号
- php 爬数据库,php爬虫爬取数据并存储至数据库
- Kubernetes学习总结(2)——Kubernetes设计架构
- 锁相环环路滤波器计算公式_锁相环PLL的电路原理以及基本构成
- Hibernate 注解 没有加@Column一样会在数据库创建这些字段
- Android小知识10则(下)
- 使用计算机对炼钢过程进行实时监控,转炉炉气分析与“投弹”检测相结合在自动化炼钢技术中的应用...
- 一、linux内核源码分析(内核源码结构组成)
- Chrome 扩展程序 CrxMouse 优化版 v3.0.1
- 偷梁换柱“Windows 11安装包”竟成了恶意程序?
- em模型补缺失值_缺失值填补方法
- 基于有道翻译的英翻中微信小程序
- 从0到1构建一个电商平台 – 开发篇(转)
- 利用DirectShow开发C#版的视频播放器
- C. Get an Even String
- 1、Multisim14 安装教程
热门文章
- 【机器学习项目实战10例目录】项目详解 + 数据集 + 完整源码
- 电源电路设计:详解线性电源和开关电源
- 基于c#的舞蹈教学网站
- Linux系统中.tar,.zip,.rar压缩与解压缩命令
- OPENSSL证书制作与浏览器认证
- Modelsim SE版本的安装及使用方法
- WINCE_.NET CF 示例集锦
- [神坑] 已经解决 但未知原因 dlib和torch导入的顺序问题 找不到指定的程序 \torch\lib\cublas64_11.dll
- 在自我导向行为中使用“意志力”这个概念有什么问题?
- python面向对象-老王开枪