在优化理论中,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)条件的更多相关文章

  1. Support Vector Machine(2):Lagrange Duality求解线性可分SVM的最佳边界

    在上篇文章<Support Vector Machine(1):线性可分集的决策边界>中,我们最后得到,求SVM最佳Margin的问题,转化为了如下形式: 到这一步后,我个人又花了很长的时 ...

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

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

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

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

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

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

  5. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

    参考文献:https://www.cnblogs.com/sddai/p/5728195.html 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush ...

  6. 装载:关于拉格朗日乘子法与KKT条件

    作者:@wzyer 拉格朗日乘子法无疑是最优化理论中最重要的一个方法.但是现在网上并没有很好的完整介绍整个方法的文章.我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助. ...

  7. 关于拉格朗日乘子法与KKT条件

    关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件   目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...

  8. 从感知机到 SVM,再到深度学习(二)

        这篇博文承接上一篇,详细推导了 SVM 算法,包括对偶算法,SMO 优化算法,核函数技巧等等,最后还提到用高度非线性的曲线代替超平面,就是神经网络的方法.     在第一篇中已经得到了最优间隔 ...

  9. SVM笔记

    1.前言 SVM(Support Vector Machine)是一种寻求最大分类间隔的机器学习方法,广泛应用于各个领域,许多人把SVM当做首选方法,它也被称之为最优分类器,这是为什么呢?这篇文章将系 ...

  10. 图解AI数学基础 | 概率与统计

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/83 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. mysql常见操作语句,建表,增删改查

    用户操作 新建用户 grant 权限 on 数据库.表名 to 用户名@'访问地址' identified by "密码"; 新建一个可以远程访问数据库的用户 test, 密码:p ...

  2. Nhibernate学习的第一天

    书本:https://www.tutorialspoint.com/nhibernate/index.htm 第一天学习内容 概念 Nhibernate是一个ORM框架. ORM框架:将声明的类映射到 ...

  3. js实现的玫瑰花

    <html> <head> <meta charset="utf-8"> <title>开心快乐每一天</title> ...

  4. AIMLBot (中文自动回复)文本自动回复机器人

    https://github.com/chivandikwa/AIMLBot (csharp) https://github.com/gunthercox/ChatterBot (python) ht ...

  5. [HTML/CSS]有一种节点叫做文本节点

    HTML可以看成是由节点(node)组成的树结构 我们一般都是在<p>节点里面写字符串. 在上图中,<p>节点和字符串之间有一个text, 这个text就是文本节点. 我们可以 ...

  6. mysql 优化配置参数(my.cnf)

    max_connections:允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000max_connect_errors:如果客户端尝试连接的错误数量超过这个参数设置的值, ...

  7. loadrunner 运行脚本-Run-time Settings-ContentCheck简单设置

    运行脚本-Run-time Settings-ContentCheck简单设置 by:授客 QQ:1033553122 ContentCheck的设置可用来让VuGen检测存在错误的站点页面.如果被测 ...

  8. tomcat 取消项目名访问路径

    在server.xml  里,<host>...</host>的标签之间添加<Context path="" docBase="projec ...

  9. html 知识整理

    一. 前言 本文全面介绍了html的定义.使用和具体常用标签. 参考资料:菜鸟教程 二.定义 html是HyperText Markup Language的简称,也就是超文本标记语言的缩写.通过htm ...

  10. PLSQL无法粘贴复制

    有2个原因会导致这个问题发生: 一:快捷键设置不正确,按照网上的设置方法把复制粘贴的快捷键重新设置一下,然后重启plsql 二:远程桌面连接开着,关闭后试下(亲测有效)