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) 条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等 ...
随机推荐
- node+express搭建个人网站(2)
node+express搭建个人网站(1)这一节中成功启动了一个网站但还很简陋,仅仅打印了一个helloworld的网页 作为个人网站,我们当然想输出自己设计好的网页, 我们借助 Express 应用 ...
- 最小费用流spfa最小费用路算法模板(pascal)
3.30: 这篇是以前写的,用的还是指针存图,今天又写了个代码,码风稍微好看点. 传送门:http://www.cnblogs.com/Currier/p/6648685.html --------- ...
- (转)Linux GCC常用命令
1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...
- python实现RSA加解密
# coding=utf-8 """ @author:Eleven created on:2018年10月30日 """ import bi ...
- SMBv3空指针引用dos漏洞复现
0x01 前言 去年年底,当设置一个模拟器来定位SMB协议时,发现了一个如此简单而又非常有效的攻击大型企业的漏洞.TL; DR:一个拒绝服务错误允许BSOD协议向Windows 8.1和Windows ...
- [学习笔记]矩阵乘法及其优化dp
1.定义: $c[i][j]=\sum a[i][k]\times b[k][j]$ 所以矩阵乘法有条件,(n*m)*(m*p)=n*p 即第一个矩阵的列数等于第二个矩阵的行数,否则没有意义. 2.结 ...
- 《剑指offer》— JavaScript(11)二进制中1的个数
二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路一 用1和n进行位运算,结果为1则n的二进制最右边一位为1,否则为0: 将n二进制形式右移1位,继续与 ...
- maven 启动 tomcat 及 跳过 test 安装
1.先在pom文件中配置 tomcat插件 <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload< ...
- Codeforces 543.B Destroying Roads
B. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- VS集成opencv编译C++项目遇到的问题
当我们新建一个c++项目的时候总是提示脚本错误的信息,虽然不影响使用,但是还是很烦躁,对于有强迫症的我来说,实在受不了,终于找到了解决方案 这个提示的路径根据大家自己安装vs的路径来查找: http: ...