KKT(Karush-Kuhn-Tucher)条件
在优化理论中,KKT条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将lagrange乘数法(Lagrange multipliers)中的等式约束优化问题推广至不等式约束。本文从Lagrange乘数法推导KKT条件。
给定一个目标函数f:Rn→Rf:Rn→R,我们希望找到x∈Rnx∈Rn ,在满足约束条件g(x)=0g(x)=0的前提下,使得f(x)f(x)有最小值。这个约束优化问题如下:
minimize f(x)f(x)
subject to g(x)=0g(x)=0
为方便分析,假设ff对gg是连续可导函数。Lagrange乘数法是含等式约束条件优化问题的典型解法。定义Lagrangian函数
L(x,λ)=f(x)+λg(x)L(x,λ)=f(x)+λg(x)
其中λλ为Lagrange乘数。Lagrange乘数法将原来的约束优化问题转化成等价的非约束问题
minimize x,λL(x,λ)minimize x,λL(x,λ)
优化必要条件:
▽xL=∂L∂x=▽f+λg(x)=0▽xL=∂L∂x=▽f+λg(x)=0
▽λL=∂L∂λ=g(x)=0▽λL=∂L∂λ=g(x)=0
其中第一个为stationary equation,第二个为约束条件。通过求解上述方程,可得L(x,λ)L(x,λ)的驻点(stationary point)x∗x∗以及λλ的值(正负数皆可能)。
接下来我们将约束等式g(x)=0g(x)=0推广为g(x)⩽0g(x)⩽0。优化问题如下:
minimize f(x)f(x)
subject to g(x)⩽0g(x)⩽0
约束不等式g(x)⩽0g(x)⩽0称为primal feasibility, 由此定义可行域(feasible region)K={x∈Rn∣g(x)⩽0}K={x∈Rn∣g(x)⩽0}。假设x∗x∗为满足约束条件的最佳解,分两种情况讨论:(1)g(x∗)⩽0g(x∗)⩽0,最佳解位于KK的内部,称为interior solution,这时约束条件是无效的;(2)g(x∗)=0g(x∗)=0,最佳解落在KK的边界,称为boundary solution,此时约束条件是有效的。这两种情况的最佳解具有不同的必要条件。
- 内部解:在约束条件无效的情形下, g(x)g(x)不起作用,约束优化问题退化为无约束优化问题,因此驻点x∗x∗满足▽f=0▽f=0且λ=0λ=0。
- 边界解:在约束条件有效的情形下,约束不等式变成等式g(x)=0g(x)=0,这与前面Lagrange乘数法的情况相同。我们可以证明驻点x∗x∗发生在▽f∈span{▽g}▽f∈span{▽g},换句话说,存在λλ使得▽f=−λg(x)▽f=−λg(x),但这里λλ的正负号是尤其意义的。因为我们希望最小化ff,梯度▽f▽f应该指向可行域KK的内部,但▽g▽g指向可行域KK的外部(即g(x)>0g(x)>0的区域),因此λ⩾0λ⩾0称为对偶可行性
- 更直观的图解来自https://en.wikipedia.org/wiki/Karush%E2%80%93Kuhn%E2%80%93Tucker_conditions 及 http://blog.csdn.net/johnnyconstantine/article/details/46335763:
不论是内部解还是边界解,λg(x)=0λg(x)=0恒成立,称为complementary slckness。综上,最佳解的必要条件包括lagrangian函数L(x,λ)L(x,λ)的定常方程式、原始可行性、对偶可行性,以及complementary slckness:
▽xL=▽f+λg(x)=0▽xL=▽f+λg(x)=0
g(x)⩽0g(x)⩽0
λ⩾0λ⩾0
λg(x)=0λg(x)=0
以上就是KKT条件。如果我们要做大化f(x)f(x)且受限于g(x)⩽0g(x)⩽0,那么对偶可行性要改成λ⩽0λ⩽0
考虑标准约束优化问题
minimize f(x)f(x)
subject to g(x)=0g(x)=0, j=1,...,mj=1,...,m
hk(x)⩽0hk(x)⩽0, k=1,...,pk=1,...,p
定义拉格朗日函数
L(x,{λj},{μk})=f(x)+∑mj=1λjgj(x)+∑pk=1μkhk(x)L(x,{λj},{μk})=f(x)+∑j=1mλjgj(x)+∑k=1pμkhk(x)
其中λjλj是对应gj(x)=0gj(x)=0的拉格朗日乘数,μkμk是对应hk(x)⩽0hk(x)⩽0的拉格朗日乘数,KKT条件
▽xL=0▽xL=0
gj=0,j=1,...,mgj=0,j=1,...,m
hk(x)⩽0hk(x)⩽0
μk⩾0μk⩾0
μkhk(x)=0,k=1,...,p
(转https://blog.csdn.net/chensheng312/article/details/73166909)
KKT(Karush-Kuhn-Tucher)条件的更多相关文章
- Support Vector Machine(2):Lagrange Duality求解线性可分SVM的最佳边界
在上篇文章<Support Vector Machine(1):线性可分集的决策边界>中,我们最后得到,求SVM最佳Margin的问题,转化为了如下形式: 到这一步后,我个人又花了很长的时 ...
- 【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
[整理] 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...
- 真正理解拉格朗日乘子法和 KKT 条件
这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容. 首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: \[min \quad f(x)\] 如 ...
- 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
参考文献:https://www.cnblogs.com/sddai/p/5728195.html 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush ...
- 装载:关于拉格朗日乘子法与KKT条件
作者:@wzyer 拉格朗日乘子法无疑是最优化理论中最重要的一个方法.但是现在网上并没有很好的完整介绍整个方法的文章.我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助. ...
- 关于拉格朗日乘子法与KKT条件
关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...
- 从感知机到 SVM,再到深度学习(二)
这篇博文承接上一篇,详细推导了 SVM 算法,包括对偶算法,SMO 优化算法,核函数技巧等等,最后还提到用高度非线性的曲线代替超平面,就是神经网络的方法. 在第一篇中已经得到了最优间隔 ...
- SVM笔记
1.前言 SVM(Support Vector Machine)是一种寻求最大分类间隔的机器学习方法,广泛应用于各个领域,许多人把SVM当做首选方法,它也被称之为最优分类器,这是为什么呢?这篇文章将系 ...
- 图解AI数学基础 | 概率与统计
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/83 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- [android] 手机卫士自定义组合控件
设置中心 新建SettingActivity 设置GridView条目的点击事件 调用GridView对象的setOnItemClickListenner()方法,参数:OnItemClickList ...
- Mysql 存储过程实例详解
存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,存储和和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN.OUT.INOUT类型,而函数的参数只能是IN类 ...
- MySQL学习(五) UNION与UNION ALL
UNION用于把来自许多SELECT语句的结果组合到一个结果集合中,也叫联合查询. SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | ...
- Redis入门 -- Redis安装与配置
Redis入门 -- Redis安装与配置 Redis的安装 Redis的安装,我这里使用的是虚拟机. 为了让主机和虚拟机之间可以顺利通信,按照以下步骤进行: 1. 将网络连接模式改为桥接 2. re ...
- js事件冒泡和事件捕获详解
Javascript与HTML之间的交互是通过事件实现. 一.事件流 事件,是文档或浏览器窗口中发生的一些特定的交互瞬间.事件流,描述的是页面中接受事件的顺序.IE9,chrome,Firefox,O ...
- 给OkHttp Client添加socks代理
Okhttp的使用没有httpClient广泛,网上关于Okhttp设置代理的方法很少,这篇文章完整介绍了需要注意的方方面面. 上一篇博客中介绍了socks代理的入口是创建java.net.Socke ...
- regular.js
//手机号验证 var regMobile=/^1[3,5,8]\d{9}$/; //固定电话 var regPhone=/^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|( ...
- 使用脚手架快速搭建React项目
create-react-app是Facebook官方推出的脚手架,基本可以零配置搭建基于webpack的React开发环境步骤: 打开控制台 进入你想要创建项目的目录文件下面 依次执行以下命令 np ...
- 【读书笔记】iOS-单元测试工具
一,单元测试工具. 1,OCUnit 苹果自带的. 2,GHUnit GHUnit是Objective-C语言里的另外一种单元测试工具. GHUnit- https://github.com/gh-u ...
- NopCommerce 根据手机浏览器和桌面浏览器切换 Theme
自从 NopCommerce 升级到 3.x 以来,默认的 ViewName.Mobile.cshtml 方式就被响应式的默认 Theme 取代了. 但是在今天各种手机专用前端库大行其道的情况下,响应 ...