KKT条件和拉格朗日乘子法详解
\(\frac{以梦为马}{晨凫追风}\)
最优化问题的最优性条件,最优化问题的解的必要条件和充分条件
无约束问题的解的必要条件
\(f(x)\)在\(x\)处的梯度向量是0
有约束问题的最优性条件
等式约束问题的必要条件:
一个条件,两变量
\(min f(x)=f([x]_1,[x]_2)\)
\(s.t. c(x)=c([x]_1,[x]_2)=0\)
则最优解的必要条件如下面式子所示:
\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(c(x^*)=0\)
\(\alpha^*\)是常数,即存在一个常数使得约束条件和待优化问题的梯度之和为0
上面就把它当成一个结论吧,具体推导见《数据挖掘中的新方法——支持向量机》
这里的理解是:
在\(x满足c(x_1,x_2)=0\)的条件下去寻找一个\(\mathbf x\)来使得\(f(x)\)最小。其实这个点就是在满足约束条件\(c(x)=0\)的曲面上。
来这样理解一下:

\(c(x)\)是曲线,画出\(f(x)=k\)的等高线,当然了在\(x=4\)的位置两者相交,但是二者不是相切的,这样就还能移动x点去寻找更低的点来满足最小化,其实这里要找的点就是二者相切的点,这样就能保证最小值,相切的时候,目标函数的梯度肯定正交于约束曲面,此时就有了
\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)

上面的\(z\)是待优化的函数,\(c(x_1,x_2)\)是约束的等式条件,注意这里面的\(x_1,x_2\)是在平面上的(联想圆锥曲线)然后把z的等高线投影到\(x_1,x_2\)平面上,在该平面上的约束条件上面的点就是该x取值的可行域,在这些点里面选取的x使得目标函数最小。当等高线与\(c(x_1,x_2)\)相交时,在等高线内部肯定还有满足\(z\)更小的\(x_1,x_2\),只有当等高线与\(c(x_1,x_2)\)相切时,等高线内部就没有了点使得优化函数更小,于是就必须是等高线的梯度方向和约束曲线的方向相同或者一致,这样才能保证相切,于是就有了式子
\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
引入拉格朗日函数
\(L(x,\alpha)=L([x]_1,[x]_2,\alpha)=f([x]_1,[x]_2)+\alpha c([x]_1,[x]_2)\)
上面的条件就变成:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=c(x^*)=0\)
推广到两个约束条件,三个变量的问题
\(min f(x)=f([x]_1,[x]_2,[x]_3)\)
\(s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)=0\)
它的最优解的必要条件是:
\(\triangledown f(x^*)+\alpha^*_1 \triangledown c_1(x^*)+\alpha^*_2 \triangledown c_2(x^*)=0\)
\(c_1(x^*)=0\)
\(c_2(x^*)=0\)
引入拉格朗日函数
\(L(x,\alpha)=L([x]_1,[x]_2,[x]_3,\alpha_1,\alpha_2)=f([x]_1,[x]_2,[x]_3)+\alpha_1 c_1([x]_1,[x]_2,[x]_3)+\alpha_2 c_2([x]_1,[x]_2,[x]_3)\)
于是最优化条件变成:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^*_1 \triangledown c_1(x^*)+\alpha^*_2 \triangledown c_2(x^*)=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=\mathbf c(x^*)=0\)
然后是多变量,多\(q\)条件约束:
引入拉格朗日函数
\(L(x,\alpha)=L([x]_1,[x]_2,\cdots,[x]_n,\alpha_1,\cdots,\alpha_q)=f([x]_1,[x]_2)+\sum\limits_{i=1}^q\alpha_i c_i([x]_1,[x]_2)=f(x)+\alpha^Tc(x)\)
当\(x^* = ([x]_1^*,[x]_2^*,\cdots,[x]_n^*)\)是该问题的局部最优解,且约束函数在\(x^*\)处的梯度向量\(\triangledown c_1(x^*),\cdots,\triangledown c_q(x^*)\)线性无关此时\(x^*\)则存在q维向量:\(\mathbf{\alpha}^*=(\alpha^*_1,\cdots,\alpha^*_q)\)满足下面条件
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\sum\limits_{i=1}^{q}\alpha^*_i \triangledown c_i(x^*)=\triangledown f(x^*)+\triangledown \mathbf{c}(x^*)\mathbf{\alpha}^*=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=\mathbf {c}(x^*)=0\)
其中\(\triangledown \mathbf{c}(x^*)\)是以\(\triangledown c_1(x^*),\cdots,\triangledown c_q(x^*)\)为列的矩阵,注意这里的\(\mathbf{c}(x^*),\mathbf{\alpha}^*\)是向量形式
不等式约束时候的条件
最简单的不等式约束问题
\(min f(x)=f([x]_1,[x]_2,[x]_3)\)
\(s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)\leq0\)
此时的问题类比于上面的等式约束,并引入拉格朗日函数\(L(x,\alpha)=f(x)+\alpha c(x)\)
此时的条件要满足的是:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(c(x^*)\leq0\)
\(\alpha^*\geq0\)
\(\alpha^*c(x^*)=0\)
这里最后一个条件是\(\alpha^*c(x^*)=0\),包含是\(\alpha^* = 0\)或者\(c(x^*)=0\)
此时的两种情况是:当\(x^*\)在约束条件内部的时候,该问题变成了\(f(x)\)的无约束最值问题,此时有
\(\triangledown f(x^*) = 0,\qquad c(x^*) < 0\)
当在约束条件边缘取值的时候,该问题变成等式的约束问题
\(\triangledown f(x^*)+\triangledown \mathbf{c}(x^*)\mathbf{\alpha}^*=0\)
\(\mathbf {c}(x^*)=0\)
\(\alpha^*\geq 0\)
一般不等式约束问题
引入Lagrange函数
\(L(x,\alpha)=f(x)+\sum\limits_{i=1}^p \alpha_i c_i(x)=f(x)+\mathbf {\alpha}^T\mathbf{c}(x)\)
该约束问题最优解的必要条件就是
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+ \sum\limits_{i=1}^{p} \alpha^*_i\triangledown c_i(x^*)=\triangledown f(x^*)+ \triangledown c(x^*)\mathbf{\alpha}^*=0\)
\(c_i(x^*)\leq0\) \(i=1,\cdots ,p\)
\(\alpha^*_i\geq0\) \(i=1,\cdots ,p\)
\(\alpha_i^*c_i(x^*)=0\) \(i=1,\cdots ,p\)
其中\(\triangledown \mathbf{c}(x^*)\)是一个以\(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_p(x^*)\)列矩阵
综合上面的结论就导出了下面的KKT条件
KKT条件一般约束问题的必要条件
考虑一般问题:
\(min f(x)\)
\(s.t.c_i(x)\leq0\) \(i=1,\cdots ,p\)
\(c_i(x)=0\) \(i=p+1,\cdots ,p+q\)
优化问题\(f(x),c(x),i=1,\cdots ,p+q\)具有连续一阶偏导,\(x^*\)为问题的局部解。若在\(x^*\)处的有效约束梯度\(\triangledown c_i(x^*)\)线性无关,或者所有的约束函数都是线性函数,则存在\(p+q\)维向量\(\alpha^*=(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_{p+q})\)使得:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+ \sum\limits_{i=1}^{p+q} \alpha^*_i\triangledown c_i(x^*)=\triangledown f(x^*)+ \triangledown c(x^*)\mathbf{\alpha}^*=0\)
\(c_i(x^*)\leq0\) \(i=1,\cdots ,p\)
\(c_i(x^*)=0\) \(i=p+1,\cdots ,p+q\)
\(\alpha^*_i\geq0\) \(i=1,\cdots ,p\)
\(\alpha_i^*c_i(x^*)=0\) \(i=1,\cdots ,p\)
这里\(\triangledown \mathbf{c}(x^*)\)是一个以\(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_{p+q}(x^*)\)列矩阵即:
\(\triangledown \mathbf{c}(x^*)=(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_{p+q}(x^*))\)
把\(p+q\)维向量\(\alpha^*\)称为KKT乘子向量或者lagerange乘子向量,其分量\(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_{p+q}\)称为KKT乘子或者lagrange乘子
当优化问题为凸约束问题的时候上述的KKT条件变为最优解的充要条件
上面的方法就是为了在寻找多元函数在一组约束下的极值优化的方法,通过引入拉格朗日乘子,可以将有d个变量与k个约束条件的最优化问题转化为具有\(d+k\)个变量的无约束的优化问题进行求解
更为感性的理解这个条件就是:
引入了拉格朗日乘子,描述了在可行域边上的时候是等式约束的条件这时候用的是拉格朗日乘子法. 在可行域的内部是无约束的条件,或者是不等式约束的条件下变换出了KKT条件。归根结底的说KKT条件是拉格朗日乘子法的一个泛化
KKT包含了等式边缘和内部的条件两种情况
KKT条件和拉格朗日乘子法详解的更多相关文章
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
[整理] 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...
- 关于拉格朗日乘子法与KKT条件
关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...
- 拉格朗日乘子法 - KKT条件 - 对偶问题
接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法.KKT条件和对偶问题,所以本篇先作个铺垫. 大部分机器学习算法最后都可归结为最优化问题 ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- 装载:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- Machine Learning系列--深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- 【机器学习】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- 约束优化方法之拉格朗日乘子法与KKT条件
引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可以直接应用拉格朗日乘子法去求取最优值:对于含有不等式约束的优化问题,可以转化为在满足 KKT ...
- 机器学习——最优化问题:拉格朗日乘子法、KKT条件以及对偶问题
1 前言 拉格朗日乘子法(Lagrange Multiplier) 和 KKT(Karush-Kuhn-Tucker) 条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等 ...
随机推荐
- [C/C++] 指针数组和数组指针
转自:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html 这两个名字不同当然所代表的意思也就不同.我刚开始看到这就吓到了,主要是中文 ...
- CF464C-Substitutes in Number
题意 开始给出一个长为\(n\)的数字串,有\(m\)次操作按顺序执行,每次把当前数字串中的某一个数码替换成一个数字串\(t\)(可以为空或多位),最后问操作结束后的数字串十进制下模\(10^9+7\ ...
- 【Java】编程技术经典书籍列表
这个列表包括了 100 多本经典技术书籍,涵盖:计算机系统与网络.系统架构.算法与数据结构.前端开发.后端开发.移动开发.数据库.测试.项目与团队.程序员职业修炼.求职面试 和 编程相关的经典书籍. ...
- NHibernate常见错误
Oracle 下必须用 Sequence [PrimaryKey(PrimaryKeyType.Sequence,"ID")] 1.提示 ORA-02289: 序列不存在 -- C ...
- [AT2172] [agc007_e] Shik and Travel
题目链接 AtCoder:https://agc007.contest.atcoder.jp/tasks/agc007_e 洛谷:https://www.luogu.org/problemnew/sh ...
- CF487E Tourists 【圆方树 + 树剖 + 堆】
题目链接 CF487E 题解 圆方树 + 树剖 裸题 建好圆方树维护路径上最小值即可 方点的值为其儿子的最小值,这个用堆维护 为什么只维护儿子?因为这样修改点的时候就只需要修改其父亲的堆 这样充分利用 ...
- bzoj4144【AMPPZ2014】Petrol
题解: 首先注意到起点和终点都是加油站; 假设中途经过某个非加油站的点u,u连到v,离u最近的加油站是x,那么从u到x加油后回到u,再到v一定不比直接从u到v差: 因 ...
- poj3421 X-factor Chains
X-factor Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7733 Accepted: 2447 D ...
- 前端PHP入门-003-echo离不开它,注释看人品
不要自以为是,瞪着双眼看是没有用的!因为你不是天才! 永远不要自欺欺人,写不出来代码就是不会. 不要问为什么?我头疼! 我接触的人当中,以为自己已经很很很牛X了,总是问为什么这么写? [心中吐槽]:我 ...
- Android Studio 打包自定义apk文件名
使用Android Studio打包的时候,我们有时候需要自定义apk的文件名,在此记录一下. 在app的build.gradle中,根节点下使用关键词def声明一个全局变量,用于获取打包的时间,格式 ...