从拉格朗日乘数法到KKT条件

最近看论文遇到了Karush–Kuhn–Tucker (KKT)条件,想搞清楚这是个什么东东,因此就把这个东西认真学习一下并且分享出来,希望对大家有用。学习KKT就不得不先学习一下拉格朗日乘数法,于是不得不重新翻出被记忆尘封的高数~~

1.拉格朗日乘数法

在数学最优问题中,拉格朗日乘数法是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数。

以二元函数为例:

设给定二元函数

maxz=f(x,y)s.t.φ(x,y)=0max z=f(x,y)\\s.t. φ(x,y)=0maxz=f(x,y)s.t.φ(x,y)=0

为寻找z=f(x,y)在附加条件下的极值点,先做拉格朗日函数

F(x,y,λ)=f(x,y)+λφ(x,y)F(x,y,\lambda)=f(x,y)+\lambda φ(x,y)F(x,y,λ)=f(x,y)+λφ(x,y)

其中λ\lambdaλ为参数。令F(x,y,λ)F(x,y,λ)F(x,y,λ)对xxx和yyy和λλλ的一阶偏导数等于零,即

Fx′=ƒx′(x,y)+λφx′(x,y)=0F'_x=ƒ'_x(x,y)+λφ'_x(x,y)=0 Fx′​=ƒx′​(x,y)+λφx′​(x,y)=0

Fy′=ƒy′(x,y)+λφy′(x,y)=0F'_y=ƒ'_y(x,y)+λφ'_y(x,y)=0Fy′​=ƒy′​(x,y)+λφy′​(x,y)=0

Fλ′=φ(x,y)=0F'_λ=φ(x,y)=0Fλ′​=φ(x,y)=0

由上述方程组解出x,yx,yx,y及λλλ,如此求得的(x,y)(x,y)(x,y),就是函数z=ƒ(x,y)z=ƒ(x,y)z=ƒ(x,y)在附加条件φ(x,y)=0φ(x,y)=0φ(x,y)=0下的可能极值点。
若这样的点只有一个,由实际问题可直接确定此即所求的点。

下面这篇博客可以很好的帮助理解:

支持向量机(SVM)课前准备(一)–拉格朗日乘子法 - be·freedom - 博客园 (cnblogs.com)

2.KKT条件

先给出一个KKT条件的实例,我们优化的目标是:

minimizef(x)s.t.ki=0gj≤0,i,j=1,2,3,...minimize f(x)\\ s.t. k_i = 0\\ g_j\leq0,i,j=1,2,3,... minimizef(x)s.t.ki​=0gj​≤0,i,j=1,2,3,...
其中,KKT条件如下:

∇f+∑λiki+ωjgj=0.......(1)ki=0......(2)gj=0......(3)uj≥0......(4)ujgj=0......(5)\nabla f+\sum\lambda_ik_i+\omega_jg_j=0.......(1)\\ k_i=0......(2)\\ g_j=0......(3)\\ u_j\geq0......(4)\\ u_jg_j=0......(5)\\ ∇f+∑λi​ki​+ωj​gj​=0.......(1)ki​=0......(2)gj​=0......(3)uj​≥0......(4)uj​gj​=0......(5)
公式1、2、3容易理解。

公式4、5,通过一个简单例子说明:

minimizef(x)s.t.g1(x)=a−x≤0g2(x)=x−b≤0minimize f(x)\\s.t. g_1(x)=a-x\leq0\\g_2(x)=x-b\leq0minimizef(x)s.t.g1​(x)=a−x≤0g2​(x)=x−b≤0

gig_igi​添加一个 ≥0 的松弛变量a12,b12a_1^2,b_1^2a12​,b12​。得到
g1(x)=a−x+a12g2(x)=x−b+b12g_1(x)=a-x+a_1^2\\g_2(x)=x-b+b_1^2g1​(x)=a−x+a12​g2​(x)=x−b+b12​

由此,我们将不等式转化为等式约束,应用拉格朗日乘子法。

拉格朗日方程如下:

L(x1,a1,b1,u1,u2)=f(x)+u1(a−x+a12)+u2(x−b+b12)...(1)L(x_1,a_1,b_1,u_1,u_2)=f(x)+u_1(a-x+a_1^2)+u_2(x-b+b_1^2)...(1)L(x1​,a1​,b1​,u1​,u2​)=f(x)+u1​(a−x+a12​)+u2​(x−b+b12​)...(1)
对方程求偏导如下:

{∂F∂x=∂f∂x+u1dg1dx+u2dg2dx=∂f∂x−u1+u2=0...(2)∂F∂u1=a−x+a12=g1+a12=0...(3)∂F∂u2=x−b+a12=g2+b12=0...(4)∂F∂a1=2u1a1=0...(5)∂F∂b1=2u2b1=0...(6),u1≥0,u2≥0\begin{cases}\frac {\partial F}{\partial x} =\frac{\partial f}{\partial x}+u_1\frac{{d}g_1}{{d}x}+u_2\frac {{d}g_2}{{d}x}=\frac{\partial f}{\partial x}-u_1+u_2=0...(2)\\\frac {\partial F}{\partial u_1}=a-x+a_1^2=g_1+a_1^2=0...(3)\\\frac {\partial F}{\partial u_2}=x-b+a_1^2=g_2+b_1^2=0...(4)\\\frac {\partial F}{\partial a_1}=2u_1a_1=0...(5)\\\frac {\partial F}{\partial b_1}=2u_2b_1=0...(6),u_1\geq0,u_2\geq0\end{cases}⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​∂x∂F​=∂x∂f​+u1​dxdg1​​+u2​dxdg2​​=∂x∂f​−u1​+u2​=0...(2)∂u1​∂F​=a−x+a12​=g1​+a12​=0...(3)∂u2​∂F​=x−b+a12​=g2​+b12​=0...(4)∂a1​∂F​=2u1​a1​=0...(5)∂b1​∂F​=2u2​b1​=0...(6),u1​≥0,u2​≥0​

那么现在开始解方程组

首先考虑 式5,

当u1=0,a1≠0u1=0,a1≠0u1=0,a1​=0时,即g1g_1g1​ 对f(x)f(x)f(x)无约束

当u1≠0,a1=0u1≠0,a1=0u1​=0,a1=0时,即 g1g_1g1​对f(x)f(x)f(x)有约束,且根据式3可知,g1g_1g1​ 也等于0。

式6同理。注意,不等式对f(x)有约束效果时,不等式等于零。

此时,方程组简化成

{∂f∂x+u1dg1dx+u2dg2dx=0u1g1(x)=0,u2g2(x)=0,μ1≥0,μ1≥0.\begin{cases}\frac{\partial f}{\partial x}+u_1\frac{{d}g_1}{{d}x}+u_2\frac {{d}g_2}{{d}x}=0\\u_1g_1(x)=0,u_2g_2(x)=0,\\\mu_1\geq0,\mu_1\geq0.\end{cases}⎩⎪⎨⎪⎧​∂x∂f​+u1​dxdg1​​+u2​dxdg2​​=0u1​g1​(x)=0,u2​g2​(x)=0,μ1​≥0,μ1​≥0.​

推广,对于多个不等式约束,有

minf(x)s.t.gj(x)≤0(j=1,2,...,m)min f(x)\\s.t. g_j(x)\leq0(j=1,2,...,m)minf(x)s.t.gj​(x)≤0(j=1,2,...,m)

我们有

{∂f(x∗)∂x+∑j=1mujdgj(x∗)dx∗=0ujgj(x∗)=0(j=1,2,...,m),μj≥0(j=1,2,...m).\begin{cases}\frac{\partial f(x^*)}{\partial x}+\sum_{j=1}^{m}u_j\frac{{d}g_j(x^*)}{{d}x^*}=0\\u_jg_j(x^*)=0(j=1,2,...,m),\\\mu_j\geq0(j=1,2,...m).\end{cases}⎩⎪⎨⎪⎧​∂x∂f(x∗)​+∑j=1m​uj​dx∗dgj​(x∗)​=0uj​gj​(x∗)=0(j=1,2,...,m),μj​≥0(j=1,2,...m).​

上述不等式称之为KKT条件,与本文一开始略有不同的是没有了等式的约束(不用在此纠结,我们关心的是不等式的约束问题),其中uju_juj​称之为KKT乘子

从拉格朗日乘数法到KKT条件相关推荐

  1. 拉格朗日乘数法及KKT条件-通俗理解

    拉格朗日乘子法及KKT条件数学理解 1.拉格朗日乘数法的基本思想 在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这 ...

  2. SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)

    SVM支持向量机-手写笔记 作者:某丁 日期:2021.05.21 写完了,发现想要真正理解SVM还需要继续深入学习,以上所写只不过是冰山一角,我的管中窥豹而已. 参考 [1] 一文搞懂支持向量机(S ...

  3. 拉格朗日乘数法 和 KTT条件

    预备知识 令 \(X\) 表示一个变量组(向量) \((x_1, x_2, \cdots, x_n)\) 考虑一个处处可导的函数 \(f(X)\), 为了方便描述, 这里以二元函数为例 对于微分, 考 ...

  4. 内点惩罚函数法matlab_拉格朗日乘数法求解多元条件极值问题

    点击蓝字,关注废柴姐姐 拉格朗日乘数法 " 一种不直接依赖消元法而求解条件极值问题的有效方法 二元函数入手 我们从  皆为二元函数这一简单情况人手. 欲求函数 的极值,其中受条件 的限制. ...

  5. 拉格朗日乘数法的原理,我用10幅图把它讲清楚了

    机器学习是一个目标函数优化问题,给定目标函数f,约束条件会有一般包括以下三类: 仅含等式约束 仅含不等式约束 等式和不等式约束混合型 当然还有一类没有任何约束条件的最优化问题 关于最优化问题,大都令人 ...

  6. 拉格朗日乘数法 —— 通俗理解

    拉格朗日乘数法(Lagrange Multiplier Method)在数学最优问题中,是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.记得以前大学高数.数模等课程多次提到过,在求解最有问 ...

  7. [Math Algorithm] 拉格朗日乘数法

    https://www.cnblogs.com/maybe2030/p/4946256.html 阅读目录 1. 拉格朗日乘数法的基本思想 2. 数学实例 3. 拉格朗日乘数法的基本形态 4. 拉格朗 ...

  8. 拉格朗日乘数法怎么判断极大极小_最优化方法:拉格朗日乘数法

    解决约束优化问题--拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程. 拉格朗日乘数法的基本思想 作为一种优化算法,拉 ...

  9. 最优化方法:拉格朗日乘数法

    http://blog.csdn.net/pipisorry/article/details/52135854 解决约束优化问题--拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplie ...

最新文章

  1. 学霸现身!博士生发18篇SCI,4篇CNS子刊,开学典礼上全场震撼
  2. 基于workerman实现的web消息推送站内信功能
  3. Babel的配置和使用
  4. bzoj 2870 最长道路tree——边分治
  5. 禅道开源项目管理软件正式发布2.3版本
  6. 电话号码中间四位用****代替
  7. 图解HTTP学习笔记
  8. ideajava目录显示类成员_c++ 目录操作
  9. c语言中输入字符用什么作用是什么意思,C语言编程问题
  10. python编程(pdb调试)
  11. 软件设计师备考知识06--树
  12. python工作技巧_4个基本的 Python 技巧让你的工作流程自动化
  13. 【PostgreSQL-9.6.3】创建、修改、删除PostgreSQL数据库
  14. [leetcode]_Climbing Stairs
  15. linux全局查找-find,locate,whereis,which,type区别
  16. html json加密 ajax请求问题
  17. 在线编辑Word——插入表格
  18. 模电、数电、电路面试题
  19. 技术小卡系列之Eclipse 窗口说明
  20. 专题·快速沃尔什变换(FWT)【including FWT,洛谷P4717【模板】快速沃尔什变换

热门文章

  1. 使用密码摘要生成器扩展JMeter
  2. 首先记录异常的根本原因
  3. MySQL数据库模式_SQL模式
  4. windows数据自动上传服务器,windows服务器间自动传输文件
  5. java用户名检查数据库_登入界面账号密码是访问数据库,但登入问题时if判断时就是执行不了...
  6. python 字符串分割_如何使用python语言split方法对不同字符串分割
  7. C语言中for语句的执行过程是什么?
  8. 有意思的C语言运算符
  9. 大学计算机需要论文吗,大一新生刚开学,是否有必要带电脑?听听辅导员的建议,非常中肯...
  10. deepin下载python_深度操作系统中怎样下载python?