在优化理论中,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. java_二进制的前导的零

    题目内容: 计算机内部用二进制来表达所有的值.一个十进制的数字,比如18,在一个32位的计算机内部被表达为00000000000000000000000000011000.可以看到,从左边数过来,在第 ...

  2. How to distinguish between strings in heap or literals?

    Question: I have a use case where I can get pointers of strings allocated either in memory or litera ...

  3. What are the differences between a pointer variable and a reference variable in C++?

    Question: I know references are syntactic sugar, so code is easier to read and write. But what are t ...

  4. 分布式日志框架之ExceptionLess【二】:自行搭建帮助文档【译文】

    原文地址:https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting ExceptionLess自行托管环境搭建 一.测试环境 如 ...

  5. 设置div背景透明的CSS样式

    div背景透明样式: 样式代码: .alert{filter:alpha(opacity=100); /* IE */ -moz-opacity:1.0; /* Moz + FF */ opacity ...

  6. 网页布局设计css中单位px和em,rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...

  7. c语言学习笔记-do......while

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.do......while函数意义 循环执行(人机交互) 二.do......while函数结构 do{ 语句1: 语句2: ...

  8. Centos 7.x 安装 Docker-ce

    Centos 下安装 Docker-ce CentOS 7.0, CentOS 7.2: cat > /etc/yum.repos.d/docker-main.repo << -'E ...

  9. TCP握手过程中建连接的流程和队列

    这里有两个队列:syns queue(半连接队列):accept queue(全连接队列). 三次握手过程中: 第一步: server 收到 client 的 syn 后,把这个连接信息放到半连接队列 ...

  10. 前端整理——Vue部分

    (1)Vue的生命周期 1)创建vue实例,初始化生命周期钩子函数 2)数据检测及方法和计算属性代理.在数据检测和初始化数据之前调用beforeCreated(),这时还获取不到props或者data ...