拉格朗日乘数法(等式约束和不等式约束)及KKT条件

转载 2017年04月23日 14:23:58

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。

对于无约束最优化问题,有很多经典的求解方法,参见无约束最优化方法

拉格朗日乘子法

先来看拉格朗日乘子法是什么,再讲为什么。

minf(x)s.t.hi(x)=0i=1,2…,n” style=”position: relative;” tabindex=”0” id=”MathJax-Element-1-Frame” class=”MathJax”>minf(x)s.t.hi(x)=0i=1,2…,nminf(x)s.t.hi(x)=0i=1,2...,n

这个问题转换为

(1)min[f(x)+∑i=1nλihi(x)]” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-2-Frame” class=”MathJax”>min[f(x)+i=1nλihi(x)](1)(1)min[f(x)+∑i=1nλihi(x)]

其中λi≠0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-3-Frame” class=”MathJax”>λi0λi≠0,称为拉格朗日乘子。

下面看一下wikipedia上是如何解释拉格朗日乘子法的合理性的。

现有一个二维的优化问题:

(2)minf(x,y)s.t.g(x,y)=c” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-4-Frame” class=”MathJax”>minf(x,y)s.t.g(x,y)=c(2)(2)minf(x,y)s.t.g(x,y)=c

我们可以画图来辅助思考。

绿线标出的是约束g(x,y)=c” style=”position: relative;” tabindex=”0” id=”MathJax-Element-5-Frame” class=”MathJax”>g(x,y)=cg(x,y)=c的等高线。箭头表示斜率,和等高线的法线平行。

从图上可以直观地看到在最优解处,f和g的法线方向刚好相反(或者说叫梯度共线),即

(3)▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-7-Frame” class=”MathJax”>[f(x,y)+λ(g(x,y)c)]=0λ0(3)(3)▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0

而满足3” style=”position: relative;” tabindex=”0” id=”MathJax-Element-8-Frame” class=”MathJax”>33的解。

(4)min F(x,y)=f(x,y)+λ(g(x,y)−c)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-10-Frame” class=”MathJax”>min F(x,y)=f(x,y)+λ(g(x,y)c)(4)(4)min F(x,y)=f(x,y)+λ(g(x,y)−c)

所以2” style=”position: relative;” tabindex=”0” id=”MathJax-Element-11-Frame” class=”MathJax”>22等价。

新方程F(x,y)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-13-Frame” class=”MathJax”>F(x,y)F(x,y)总等于零。

KKT条件

先看KKT条件是什么,再讲为什么。

(5)letL(x,μ)=f(x)+∑k=1qμkgk(x)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-17-Frame” class=”MathJax”>letL(x,μ)=f(x)+k=1qμkgk(x)(5)(5)letL(x,μ)=f(x)+∑k=1qμkgk(x)

其中μk≥0,gk(x)≤0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-18-Frame” class=”MathJax”>μk0,gk(x)0μk≥0,gk(x)≤0

∵μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-19-Frame” class=”MathJax”>μk0gk(x)0}∵μk≥0gk(x)≤0}

∴” style=”position: relative;” tabindex=”0” id=”MathJax-Element-21-Frame” class=”MathJax”>

∴” style=”position: relative;” tabindex=”0” id=”MathJax-Element-23-Frame” class=”MathJax”>

上面的推导到此中断一下,我们看另外一个式子。

maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-25-Frame” class=”MathJax”>maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)

这里的u” style=”position: relative;” tabindex=”0” id=”MathJax-Element-26-Frame” class=”MathJax”>uu无关,所以这个等式就是成立的。

∵μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-32-Frame” class=”MathJax”>μk0gk(x)0}∵μk≥0gk(x)≤0}

∴maxμminxμg(x)=0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-34-Frame” class=”MathJax”>maxμminxμg(x)=0∴maxμminxμg(x)=0

(8)∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-36-Frame” class=”MathJax”>maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)(8)(8)∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)

联合(7)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-38-Frame” class=”MathJax”>(7)(7)

亦即L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-41-Frame” class=”MathJax”>L(x,μ)=f(x)+qk=1μkgk(x)μk0gk(x)0L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}

我们把maxμminxL(x,μ)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-43-Frame” class=”MathJax”>maxμminxL(x,μ)maxμminxL(x,μ)

最后总结一下:

L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-57-Frame” class=”MathJax”>L(x,μ)=f(x)+qk=1μkgk(x)μk0gk(x)0L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}

KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:

L(x,λ,μ)=f(x)+∑i=1nλihi(x)+∑k=1qμkgk(x)λi≠0hi(x)=0μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-59-Frame” class=”MathJax”>L(x,λ,μ)=f(x)+ni=1λihi(x)+qk=1μkgk(x)λi0hi(x)=0μk0gk(x)0L(x,λ,μ)=f(x)+∑i=1nλihi(x)+∑k=1qμkgk(x)λi≠0hi(x)=0μk≥0gk(x)≤0}

注:x,λ,μ” style=”position: relative;” tabindex=”0” id=”MathJax-Element-61-Frame” class=”MathJax”>x,λ,μx,λ,μ都是向量。

∂L(x,λ,μ)∂x|x=x∗=0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-62-Frame” class=”MathJax”>L(x,λ,μ)x|x=x=0∂L(x,λ,μ)∂x|x=x∗=0梯度的线性组合。

约束下的最优求解:拉格朗日乘数法和KKT条件

机器学习面对各种各样的求解极值或者最值问题 ,现在对常见的求解极值或者最值问题思路做一下理论上的梳理。最值问题简单了解最值问题  求最值是非常常见的问题,比如如何选择交通路线,最快地到达某地;如何用手...
  • yujianmin1990
  • yujianmin1990
  • 2015年09月16日 15:18
  • 7964

约束下的最优求解:拉格朗日乘数法和KKT条件

机器学习面对各种各样的求解极值或者最值问题 ,现在对常见的求解极值或者最值问题思路做一下理论上的梳理。最值问题简单了解最值问题  求最值是非常常见的问题,比如如何选择交通路线,最快地到达某地;如何用手...
  • yujianmin1990
  • yujianmin1990
  • 2015年09月16日 15:18
  • 7964

拉格朗日乘数法(等式约束和不等式约束)及KKT条件

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件...
  • niuniuyuh
  • niuniuyuh
  • 2017年04月23日 14:23
  • 1459

求约束条件下极值的拉格朗日乘子法

学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法。 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下: (1)求出f(x,y)的一阶偏导函数f’x(x,y)...
  • saltriver
  • saltriver
  • 2016年10月23日 13:29
  • 7231

约束最优化问题求解:拉格朗日乘子法和KKT条件

在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中,例如最大熵模型和支持向量机。对...
  • DawnRanger
  • DawnRanger
  • 2016年11月11日 21:29
  • 4875

约束优化方法之拉格朗日乘子法与KKT条件

转载自:http://www.cnblogs.com/ooon/p/5721119.html 引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约...
  • chixia1785
  • chixia1785
  • 2017年12月08日 13:03
  • 32

约束优化方法之拉格朗日乘子法与KKT条件

引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可以直接应用拉格朗日乘子法去求取最优值;对于含有不等式约束的优化问题,可以转化为在满足 KK...
  • xkl7111
  • xkl7111
  • 2017年11月28日 21:26
  • 71

《SVM笔记系列之三》拉格朗日乘数法和KKT条件的直观解释

《SVM笔记系列之三》拉格朗日乘数法和KKT条件的直观解释 前言在SVM的推导中,出现了核心的一个最优化问题,这里我们简单介绍下最优化问题,特别是带有约束的最优化问题,并且引入拉格朗日乘数法和广义拉...
  • LoseInVain
  • LoseInVain
  • 2017年11月24日 15:08
  • 351

拉格朗日乘数法解带约束的极值问题

拉格朗日乘数法是用来求条件极值的,极值问题有两类,其一,求函数在给定区间上的极值,对自变量 没有其它要求,这种极值称为无条件极值。其二,对自变量有一些附加的约束条件限制下的极值,称为 条件极值。例...
  • PeterZhuGe
  • PeterZhuGe
  • 2016年03月12日 22:35
  • 1342

求约束条件下极值的拉格朗日乘子法

学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法。 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下: (1)求出f(x,y)的一阶偏导函数f’...
  • fengxianghui01
  • fengxianghui01
  • 2017年06月01日 16:08
  • 389
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:拉格朗日乘数法(等式约束和不等式约束)及KKT条件
举报原因:
原因补充:

(最多只允许输入30个字)