ML-对偶(Duality)问题 KKT 条件
Primal => Dual
现实中我们遇到的原优化问题, 写为标准型的话是这样的.
\(min _w f(w) \\ s.t. \\ g_i(w) <=0 \\ h_i(w) = 0\)
即要求的是在w满足约束条件下, 且使得f(w)取得最小值的 w 的值.
那我们通常的做法是通过引入拉格朗日函数:
\(L(w, \alpha, \beta) = f(w) + \sum _{i=1}^{k} \alpha_i g_i(w) + \sum _{i=1}^{t} \beta_i h_i(w)\)
其中\(\alpha, \beta\) 都大于等于0, 称为拉格朗日算子. 至于为什么能这样做, 参考"对偶问题初识"的笔记里我有推导, 更详尽的可以翻翻高数, 关于带约束条件下求函数极值的部分, 分别从几何和分析的两个角度有推导(核心就是偏导数,梯度向量(法向量)平行), 这里就过了,不想牵扯太多.
现在来考虑一个max 的函数:
\(\theta_p(w) = max _{\alpha, \beta} L(w, \alpha, \beta)\) 即针对 \(\alpha, \beta\)要对L(w) 取最大.
对于给定的w, 如果对于原问题 f(w)中没有对w进行约束, 则可得出\(\theta_p(w)\)的是无穷大的.
\(\theta_p(w) = [f(w) + \sum _{i=1}^{k} \alpha_i g_i(w) + \sum _{i=1}^{t} \beta_i h_i(w)] = \infty\)
如过 w 满足primal 的约束, 则\(\theta_p(w) = f(w)\), 这里的"=",应该表示"最优化问题等价"不是数值上等于,感觉. 这里有一点绕, 其实想表达的是这样的思想:
欲对关于\(w,\alpha, \beta\)的函数\(L(w,\alpha, \beta) 取min\)时的优化问题, 转为先对 \(\alpha, \beta\) 优化取max, 再优化 w
用数学的形式来表达这样的思想即:
\(min_w \ [\theta_p (w)] =min_w \ [max_{\alpha, \beta} \ L(w, \alpha, \beta)]\)
再定义: \(\theta_D(\alpha, \beta) = min_w \ L(w, \alpha, \beta)\)
- \(\theta _p(w)\) 是针对 \(\alpha, \beta\) 的max 最优化
- \(\theta_D(\alpha, \beta)\) 是针对 w 的min 最优化
也就是将dual 的问题可定义为:
\(max_{\alpha, \beta} \ [\theta_D(\alpha, \beta)] = max_{\alpha, \beta \ min_w \ [L(w, \alpha, \beta)]}\)
对于原始及其对偶问题, 我们假设
p* 为primal 问题 \(min_w \ \theta_p(w)\) 的最优解
d* 为其 dual 问题 \(max_{\alpha, \beta} \ \theta_D(\alpha, \beta)\) 的最优解
必然有:
$p^* = min_w [max_{\alpha, \beta} L(w, \alpha, \beta)] >= max_{\alpha, \beta} [min_w L(w, \alpha, \beta)]= d* $
关于 p* >= d* 在"对偶问题初识"的笔记中有过证明, 根据约束条件及定义证明的
有一种这样的感觉: 对一个多元函数有: "min max" >= "max min", 多个参数哈.
KKT
关于primal 和 dual 的一个最为重要的结论, 莫过于p* >= d* (用约束定义证明)
\(minmize \ f_0(x) \\ s.t. \\ f_i(x) <=0, i=1,2,..m \\ h_j(x) = 0, j = 1,2...p\)
在凸优化及对偶的初识中, 我们知道, 如果 **p* = d*, 则称为强对偶, 当函数为convex, 一般会成立. 同样, 如果已经函数是convex. 如果满足: \(\exists \ x', f_i(x') <0, h_j(x')=0\) (称为slater's condition) 则可判定该convex是强对偶**的哦.
我们进一步还推导了 complementary slackness 条件
即如果 p=d 必然要有 \(\lambda^* f_i(x) = 0\)
这里先引入结论, p=d 只有在KKT条件下才会满足
KKT
- 是以3个科学家名字命名的: Karush-Kuhn-Tucke
- 广义化的拉格朗日数数乘的扩展
SVM算是KKT的一个最典型的应用了. 假设 f, g 都是convex函数\(f(w) = w^Tw\)的约束条件, 满足\(h_i(w), g_i(w)\) 都是 \(a_i^Tw+b\) 的线性形式, 同时假设存在w使得\(g_i(w)<=0 恒成立\). 则一定存在\(a_i^*, \beta^*, w^*\) 满足Karush-Kuhn-Tucker(KKT)条件,而 [ \(a_i^*, \beta^*, w^*\)] 也正好是 p=d 的解, KKT条件即:
\(\frac {\partial } {\partial w_i} L(w^*,a_i^*, \beta^*)= 0\)
\(\frac {\partial } {\partial \beta_i} L(w^*, a_i^*, \beta^*)= 0\)
\(\alpha_i^*g_i(w^*) = 0\) (很关键的 complementary 条件哦, 已通过定义证明)
\(g_i(w^*)<=0\)
\(a^* >= 0\)
why KKT?
不难发现在很多问题求解, 我们大多能转为dual的问题, 然而如果不能满足KKT条件, dual的问题可能不能简化primal问题的求解, KKT我自己平时也基本不会用到, 不过在SVM中却被巧妙地用到了, 就是有一条关键性质:
\(\alpha_i^*g_i(w^*) = 0\)
使得SVM在求解参数的时候, 简化了大量的运算量, 从而找到那些支持向量就搞定了, 其他地方, 欧文感觉也没太用到, 不过运筹学方面,应该会有涉及一点, 我也不管, 就像理解一波KKT和推导SMV, 装逼一波, 然后应用上做一个自信的调参侠,仅此而已, 下一波就推导SVM.
ML-对偶(Duality)问题 KKT 条件的更多相关文章
- 装载:关于拉格朗日乘子法与KKT条件
作者:@wzyer 拉格朗日乘子法无疑是最优化理论中最重要的一个方法.但是现在网上并没有很好的完整介绍整个方法的文章.我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助. ...
- 约束优化方法之拉格朗日乘子法与KKT条件
引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可以直接应用拉格朗日乘子法去求取最优值:对于含有不等式约束的优化问题,可以转化为在满足 KKT ...
- 从对偶问题到KKT条件
转自:http://xuehy.github.io/%E4%BC%98%E5%8C%96/2014/04/13/KKT/ 从对偶问题到KKT条件 Apr 13, 2014 对偶问题(Duality) ...
- 真正理解拉格朗日乘子法和 KKT 条件
这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容. 首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: \[min \quad f(x)\] 如 ...
- 关于拉格朗日乘子法与KKT条件
关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉 ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)
主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:59:22 大家好,今天一起交流下PRML第7章.第六章核函数里提到,有一类机器学习算法,不是对参数做点估计或求其分 ...
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
[整理] 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...
- 拉格朗日乘子法和KKT条件
拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件 ...
随机推荐
- Quay: Introducing an Application Registry for Kubernetes
转自: https://coreos.com/blog/quay-application-registry-for-kubernetes.html When we started Quay, we w ...
- C# Cef winform 脚本的执行 踩过的坑
先从后端代码 如何执行js 代码谈起; 一个简单的需求: 在winform上点击一个按钮,实现登录信息的填入 流程: 就是让C#去运行一段脚本,. 运行的方式有两种, 异步与同步, 因为CEF是一帧一 ...
- nuxtjs如何在单独的js文件中引入store和router
nuxtjs里面集成vuex的创建方式改变了,并且官方不建议以导出Vuex实例的方式创建store,并且会在nuxt3里面删除.这样就会存在一个问题,我怎么像普通vue spa项目一样直接 impor ...
- javaWeb项目配置自定义404错误页
1.情景展示 为了隐藏tomcat版本信息以及显示更友好的错误信息提示,如何将404的错误跳转到指定页面? 2.解决方案 第一步:修改项目的web.xml 将如下代码添加到</web-a ...
- 阿里云 azkaban 发邮件的坑
azkaban : 是一个 任务调度平台 安装文档: https://azkaban.readthedocs.io/en/latest/getStarted.html 因为阿里云是禁止掉是STMP 2 ...
- linux 系统时间 EST CST
早上本来要做一些实验的,基于时间的.date 查看时间,发现时间不对.用 pool.ntp.org 去同步发现时间还是一样的,并且没有报错.如是开启另外一台时间对的linux服务器进行对比.发现一个是 ...
- .net core使用AutoMapper
AutoMapper文档:http://docs.automapper.org/en/stable/The-MyGet-build.html 新的版本抛弃了静态API方法,我们将使用依赖注入来完成. ...
- IO流—字符流
字符流 只能读写文本文件 Reader 抽象类 字符输出流的父类 Writer 抽象类 字符输出流的父类 字符转换输出流: OutputStreamWriter(OutputStream out):创 ...
- [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)
0x001 简介 当IPC或WMI无法访问域内机器时,可通过脚本上控. 我们可以在个人机的开机注销重启脚本里配置持久化. 域环境下同样也有开机脚本,但得在在域控机器配置 可以使用BAT\VBS等脚本, ...
- element-ui复杂表单校验
复杂表单如下: <el-form size="mini" :rules="rules" :model="form" label-wid ...