拉格朗日对偶

对于一个标准形式的优化问题, 我们可以写为:

minimize ⁡ f 0 ( x ) subject to  f i ( x ) ⩽ 0 , i = 1 , ⋯ , m h i ( x ) = 0 , i = 1 , ⋯ , p , \begin{array}{ll} \operatorname{minimize} & f_{0}(x) \\ \text { subject to } & f_{i}(x) \leqslant 0, \quad i=1, \cdots, m \\ & h_{i}(x)=0, \quad i=1, \cdots, p, \end{array} minimize subject to ​f0​(x)fi​(x)⩽0,i=1,⋯,mhi​(x)=0,i=1,⋯,p,​

我们定义其 拉格朗日函数 为:

L ( x , λ , ν ) = f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) (1) L(x, \lambda, \nu)=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x) \tag{1} L(x,λ,ν)=f0​(x)+i=1∑m​λi​fi​(x)+i=1∑p​νi​hi​(x)(1)

L ( x , λ , ν ) L(x, \lambda, \nu) L(x,λ,ν) 被称为 Lagrange 函数, 就是在原目标函数上加上了 约束条件的 加权和。 λ i \lambda_i λi​ 代表 f i ( x ) ≤ 0 f_i(x)\le 0 fi​(x)≤0这一约束的拉格朗日乘子。 类似的, v i v_i vi​就是 h i ( x ) = 0 h_i(x)=0 hi​(x)=0的拉格朗日乘子。

进一步地, 在(1)中对 x x x取最小, 即:
g ( λ , ν ) = inf ⁡ x ∈ D L ( x , λ , ν ) = inf ⁡ x ∈ D ( f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) ) g(\lambda, \nu)=\inf _{x \in \mathcal{D}} L(x, \lambda, \nu)=\inf _{x \in \mathcal{D}}\left(f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x)\right) g(λ,ν)=x∈Dinf​L(x,λ,ν)=x∈Dinf​(f0​(x)+i=1∑m​λi​fi​(x)+i=1∑p​νi​hi​(x))
inf ⁡ \inf inf代表下界。 函数 g g g 被称为 拉格朗日对偶函数。

注意到 g ( λ , ν ) g(\lambda, \nu) g(λ,ν)可被视作 一簇关于 λ \lambda λ 和 ν \nu ν 的 仿射函数 (不同的 x x x对应具体不同的仿射函数) 的 逐点下确界。 因此, g ( λ , ν ) g(\lambda, \nu) g(λ,ν) 必定是一个凹函数(详细证明略)。

拉格朗日函数的核心意义在于, 给出了最优解的一个下界

当 λ ⪰ 0 \lambda \succeq 0 λ⪰0 时, 将有:
g ( λ , ν ) ⩽ p ⋆ . g(\lambda, \nu) \leqslant p^{\star} . g(λ,ν)⩽p⋆.
这是因为, 对于任意一个原问题的可行点 x ~ \tilde{\boldsymbol{x}} x~, 必有:
∑ i = 1 m λ i f i ( x ~ ) + ∑ i = 1 p ν i h i ( x ~ ) ⩽ 0 \sum_{i=1}^{m} \lambda_{i} f_{i}(\tilde{x})+\sum_{i=1}^{p} \nu_{i} h_{i}(\tilde{x}) \leqslant 0 i=1∑m​λi​fi​(x~)+i=1∑p​νi​hi​(x~)⩽0
那么:
L ( x ~ , λ , ν ) = f 0 ( x ~ ) + ∑ i = 1 m λ i f i ( x ~ ) + ∑ i = 1 p ν i h i ( x ~ ) ⩽ f 0 ( x ~ ) L(\tilde{x}, \lambda, \nu)=f_{0}(\tilde{x})+\sum_{i=1}^{m} \lambda_{i} f_{i}(\tilde{x})+\sum_{i=1}^{p} \nu_{i} h_{i}(\tilde{x}) \leqslant f_{0}(\tilde{x}) L(x~,λ,ν)=f0​(x~)+i=1∑m​λi​fi​(x~)+i=1∑p​νi​hi​(x~)⩽f0​(x~)
而根据 g g g的定义, 他是 L L L函数关于 x x x求得的最小值, 因此必定有:
g ( λ , ν ) = inf ⁡ x ∈ D L ( x , λ , ν ) ⩽ L ( x ~ , λ , ν ) ⩽ f 0 ( x ~ ) g(\lambda, \nu)=\inf _{x \in \mathcal{D}} L(x, \lambda, \nu) \leqslant L(\tilde{x}, \lambda, \nu) \leqslant f_{0}(\tilde{x}) g(λ,ν)=x∈Dinf​L(x,λ,ν)⩽L(x~,λ,ν)⩽f0​(x~)
也就是说, 对于任意可行点 x ~ \tilde{\boldsymbol{x}} x~都成立, 那么最优点显然也是可行点之一, 因此就有
g ( λ , ν ) ⩽ p ⋆ . g(\lambda, \nu) \leqslant p^{\star} . g(λ,ν)⩽p⋆.

KKT条件

首先, 我们先直接给出 KKT 条件, 为:

f i ( x ⋆ ) ⩽ 0 , i = 1 , ⋯ , m h i ( x ⋆ ) = 0 , i = 1 , ⋯ , p λ i ⋆ ⩾ 0 , i = 1 , ⋯ , m λ i ⋆ f i ( x ⋆ ) = 0 , i = 1 , ⋯ , m ∇ f 0 ( x ⋆ ) + ∑ i = 1 m λ i ⋆ ∇ f i ( x ⋆ ) + ∑ i = 1 p ν i ⋆ ∇ h i ( x ⋆ ) = 0 , \begin{aligned} &f_{i}\left(x^{\star}\right) \leqslant 0, i =1, \cdots, m \\ &h_{i}\left(x^{\star}\right) =0, i =1, \cdots, p \\ &\lambda_{i}^{\star} \geqslant 0, i=1, \cdots, m \\ &\lambda_{i}^{\star} f_{i}\left(x^{\star}\right) =0, i=1, \cdots, m \\ &\nabla f_{0}\left(x^{\star}\right)+\sum_{i=1}^{m} \lambda_{i}^{\star} \nabla f_{i}\left(x^{\star}\right)+\sum_{i=1}^{p} \nu_{i}^{\star} \nabla h_{i}\left(x^{\star}\right) =0, \end{aligned} ​fi​(x⋆)⩽0,i=1,⋯,mhi​(x⋆)=0,i=1,⋯,pλi⋆​⩾0,i=1,⋯,mλi⋆​fi​(x⋆)=0,i=1,⋯,m∇f0​(x⋆)+i=1∑m​λi⋆​∇fi​(x⋆)+i=1∑p​νi⋆​∇hi​(x⋆)=0,​
满足上述条件的点 x ⋆ x^{\star} x⋆就是KKT条件给出的解。

接下来, 我们分析 KKT 条件的意义。 即, 这个 x ⋆ x^{\star} x⋆ 到底是什么?

首先, 假设原问题就是一个凸问题。 也就是说, f 0 ( x ) f_0(x) f0​(x)是一个凸函数。 此时, x ⋆ x^{\star} x⋆就是原问题的最优解。

我们接下来进行相应的证明。

假设 x ~ , λ ~ , ν ~ \tilde{x}, \tilde{\lambda}, \tilde{\nu} x~,λ~,ν~ 是满足KKT条件的点。

由于 f 0 ( x ) f_0(x) f0​(x) 是 凸函数, 而 λ ⪰ 0 \lambda \succeq 0 λ⪰0, 因此 L ( x , λ ~ , ν ~ ) L(x, \tilde{\lambda}, \tilde{\nu}) L(x,λ~,ν~) 是 x x x的凸函数。 因为 f i ( x ) f_i(x) fi​(x)是凸函数(因为假设原问题是凸问题), 而凸函数加凸函数仍是一个凸函数。

因此, 最后一个条件即梯度为0代表了 x ~ \tilde{x} x~ 为 L L L的最小点。 因此,有:
g ( λ ~ , ν ~ ) = L ( x ~ , λ ~ , ν ~ ) = f 0 ( x ~ ) + ∑ i = 1 m λ ~ i f i ( x ~ ) + ∑ i = 1 p ν ~ i h i ( x ~ ) = f 0 ( x ~ ) \begin{aligned} g(\tilde{\lambda}, \tilde{\nu}) &=L(\tilde{x}, \tilde{\lambda}, \tilde{\nu}) \\ &=f_{0}(\tilde{x})+\sum_{i=1}^{m} \tilde{\lambda}_{i} f_{i}(\tilde{x})+\sum_{i=1}^{p} \tilde{\nu}_{i} h_{i}(\tilde{x}) \\ &=f_{0}(\tilde{x}) \end{aligned} g(λ~,ν~)​=L(x~,λ~,ν~)=f0​(x~)+i=1∑m​λ~i​fi​(x~)+i=1∑p​ν~i​hi​(x~)=f0​(x~)​
第一个等式来自于 g g g的定义: L L L关于 x x x的下界。 最后一个等式成立是因为KKT条件中的
λ i ⋆ f i ( x ⋆ ) = 0 , i = 1 , ⋯ , m \lambda_{i}^{\star} f_{i}\left(x^{\star}\right) =0, i=1, \cdots, m λi⋆​fi​(x⋆)=0,i=1,⋯,m

注意到, 也就是说: g ( λ ~ , ν ~ ) = f 0 ( x ~ ) g(\tilde{\lambda}, \tilde{\nu}) =f_{0}(\tilde{x}) g(λ~,ν~)=f0​(x~),
而我们上面证明过:
g ( λ , ν ) ⩽ p ⋆ . g(\lambda, \nu) \leqslant p^{\star} . g(λ,ν)⩽p⋆.
因此, f 0 ( x ~ ) ⩽ p ⋆ f_{0}(\tilde{x})\leqslant p^{\star} f0​(x~)⩽p⋆。 而 p ⋆ p^{\star} p⋆的定义就是 f 0 ( x ) f_0(x) f0​(x)的最小值。 因此 f 0 ( x ~ ) ≥ p ⋆ f_{0}(\tilde{x})\ge p^{\star} f0​(x~)≥p⋆。
所以, 有: f 0 ( x ~ ) = p ⋆ f_{0}(\tilde{x}) = p^{\star} f0​(x~)=p⋆。
即: x ~ \tilde{x} x~ 就是 f 0 ( x ) f_0(x) f0​(x)的最优解。

总结一下,结论就是: 当原问题是凸问题时, 满足KKT条件的解, 就是原问题的解。

但如果原问题不是凸问题的时候呢?
此时 g ( λ ~ , ν ~ ) = L ( x ~ , λ ~ , ν ~ ) g(\tilde{\lambda}, \tilde{\nu}) =L(\tilde{x}, \tilde{\lambda}, \tilde{\nu}) g(λ~,ν~)=L(x~,λ~,ν~)这一步就不一定成立了, 因为导数为0不代表就是最小值。
但是,如果我们已知强对偶性成立, 即 g ( λ ~ , ν ~ ) = p ⋆ g(\tilde{\lambda}, \tilde{\nu})=p^{\star} g(λ~,ν~)=p⋆时,有:
f 0 ( x ⋆ ) = g ( λ ⋆ , ν ⋆ ) = inf ⁡ x ( f 0 ( x ) + ∑ i = 1 m λ i ⋆ f i ( x ) + ∑ i = 1 p ν i ⋆ h i ( x ) ) ⩽ f 0 ( x ⋆ ) + ∑ i = 1 m λ i ⋆ f i ( x ⋆ ) + ∑ i = 1 p ν i ⋆ h i ( x ⋆ ) ⩽ f 0 ( x ⋆ ) \begin{aligned} f_{0}\left(x^{\star}\right) &=g\left(\lambda^{\star}, \nu^{\star}\right) \\ &=\inf _{x}\left(f_{0}(x)+\sum_{i=1}^{m} \lambda_{i}^{\star} f_{i}(x)+\sum_{i=1}^{p} \nu_{i}^{\star} h_{i}(x)\right) \\ & \leqslant f_{0}\left(x^{\star}\right)+\sum_{i=1}^{m} \lambda_{i}^{\star} f_{i}\left(x^{\star}\right)+\sum_{i=1}^{p} \nu_{i}^{\star} h_{i}\left(x^{\star}\right) \\ & \leqslant f_{0}\left(x^{\star}\right) \end{aligned} f0​(x⋆)​=g(λ⋆,ν⋆)=xinf​(f0​(x)+i=1∑m​λi⋆​fi​(x)+i=1∑p​νi⋆​hi​(x))⩽f0​(x⋆)+i=1∑m​λi⋆​fi​(x⋆)+i=1∑p​νi⋆​hi​(x⋆)⩽f0​(x⋆)​
由此可见, 两个不等式必须要取等号。 因为 f 0 ( x ⋆ ) = f 0 ( x ⋆ ) f_{0}\left(x^{\star}\right) =f_{0}\left(x^{\star}\right) f0​(x⋆)=f0​(x⋆)。 第一个不等号要想成立, 那么必须满足KKT条件的最后一个条件:即对 x ⋆ x^{\star} x⋆的导数为0. 而第二个等号要想成立, 就必须满足KKT的最后第二个条件。

因此, 此时KKT条件时最优解的必要条件 (但不一定充分)。

【凸优化】关于 KKT 条件 及其最优性相关推荐

  1. SVM中对偶、凸优化与KTT条件问题

    对偶问题:http://blog.csdn.net/wuwuwuwuwuwuwuwu/article/details/8252056 最优化与KTT条件:http://blog.csdn.net/wu ...

  2. 凸优化基础知识笔记-凸集、凸函数、凸优化问题

    文章目录 1. 凸集 2. 凸函数 2.1. 凸函数的一阶条件 2.1. 凸函数例子 3. 凸优化问题 4. 对偶 4.1. Lagrange函数与Lagrange对偶 4.2. 共轭函数 4.3. ...

  3. 对凸优化(Convex Optimization)的一些浅显理解

    ©作者 | 李航前 单位 | EPFL 研究方向 | 计算机图形学与三维视觉 最近学习了一些凸优化课程,整理笔记的同时写下一些自己的理解,向着头秃的道路上越走越远. 凸优化是应用数学的一个基本分支,几 ...

  4. 【机器学习】凸集、凸函数、凸优化、凸优化问题、非凸优化问题概念详解

    目录 1 基本概念 2 凸优化问题 3 非凸优化问题 4 总结 1 基本概念 (1)凸集和非凸集 凸集是一个点集, 这个点集有一个性质, 就是在这个集合中任取不同的两个点x和y, 他们之间的线段(包括 ...

  5. 优化问题---凸优化基本概念

    目录 1.凸优化到底是什么? 1.1 基本概念 1.2 凸优化和非凸优化 2.集合概念 2.1 仿射集.仿射包.仿射组合 2.2 凸集.凸包.凸组合 2.3 锥.凸锥 3.凸函数与非凸函数 4.总结 ...

  6. 判断kkt条件的例题_浅谈最优化问题的KKT条件

    最近学习了最优化理论,正好学到了机器学习中支持向量机(Support Vector Machine)和最大熵模型(Maximum Entropy Model)中用到的KKT条件(Karush–Kuhn ...

  7. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件

    机器学习+优化问题的种类.如何优化.凸优化.非凸优化.对偶问题.KKT条件 目录

  8. 凸优化基本概念与kkt条件

    凸优化问题 一般用 min f0(x){f_{_0}}(x)f0​​(x) s.t. fi(x)≤0,i=1,...,m{f_i}(x) \le 0,i = 1,...,mfi​(x)≤0,i=1,. ...

  9. KKT条件和二阶条件和凸度优化(六)

    KKT要点和备注 KKT条件是一般约束优化问题的一阶必要条件(FONC). KKT条件统一了所有以前研究过的FONC. 满足KKT条件的IA(可行)点称为KKT点,无论它是否满足CQ. KKT点是局部 ...

最新文章

  1. 美国正在衰落的24个行业:“猝不及防”还是“温水煮青蛙”?
  2. 蓝桥杯 1427 买不到的数目 (模拟)
  3. DLL入门浅析(1)——如何建立DLL
  4. RabbitMQ入门(五)-Topics(主题)
  5. python中二维数组如何查找_【剑指offer】---二维数组中的查找(Python)
  6. 视频剪辑用i7,8600还是r5,3600好些?
  7. Python3.x:生成器简介
  8. pytorch: 网络层参数初始化
  9. PHP应用memcache函数详解
  10. 破解版极品飞车12免费下载 - 卧底风云(极道车神)
  11. 欧22转债,永02转债上市价格预测
  12. 一个描述二氧化硅的两体势能BKS
  13. mac怎么查python的版本_Mac下如何查看Python的版本?
  14. Hive HBase
  15. PLMN SPN运营商名称显示来源
  16. HTML5语音标签和作用,HTML5标签:source元素的使用方法及作用
  17. 绝望的主妇第八季/Desperate Housewives迅雷下载
  18. k8s中控制器使用详解
  19. 阿里云物联网操作系统AliOS Things获国家重点研发计划立项
  20. 《商务与经济统计》Python实现笔记(五)

热门文章

  1. 人大金仓数据库的使用心得
  2. c语言程序 出圈游戏,【出圈】 (C语言代码)
  3. ctab法提取dna流程图_(完整版)CTAB法提取DNA原理及步骤、制胶、电泳
  4. 去哪儿网2015校园招聘笔试面试经历分享
  5. 很牛的求职经历(转)
  6. C#获取动态key的json对象的值
  7. ISO26262 功能安全(1)--概览学习
  8. nginx proxy_pass规则
  9. kali下的免杀之veil安装步骤
  10. Debian网卡配置