拉格朗日乘数法(等式约束和不等式约束)及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梯度的线性组合。

深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式...
  • xianlingmao
  • xianlingmao
  • 2012-09-22 17:05:52
  • 307010

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

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

等式约束与不等式约束问题

针对特殊约束条件下的优化问题,有着不同类别适应不同条件的求解算法。包括梯度法、求解线性等式约束问题的投影梯度法、适用于含有等式约束规划和含有不等式规划的拉格朗日乘子法、针对不等式约束的KKT条件法、罚...
  • touristman5
  • touristman5
  • 2017-02-26 17:07:40
  • 1996

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

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

不等式拉格朗日乘子大于0 的解释

一直郁闷与这点:在一本书上看到先关内容   是:《》
  • mucai1
  • mucai1
  • 2014-06-04 09:58:15
  • 1381

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

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

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

解决约束优化问题——拉格朗日乘数法拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程。1. 拉格朗日乘数法的基本思想  作为一种优化算法...
  • pipisorry
  • pipisorry
  • 2016-08-18 14:34:38
  • 11522

拉格朗日乘数法

拉格朗日乘数法是用来求条件极值的,极值问题有两类,其一,求函数在给定区间上的极值,对自变量 没有其它要求,这种极值称为无条件极值。其二,对自变量有一些附加的约束条件限制下的极值,称为 条件极值。例如给...
  • ACdreamers
  • ACdreamers
  • 2014-11-23 18:25:33
  • 34817

对拉格朗日乘数法的直观认识

高数里面我们学过,带等式约束的最优化问题可以用拉格朗日乘数法解决。最近看到一些文章,还是觉得把这个记下来,防止忘记。 【例子】 问题描述:求双曲线xy=3上离远点最近的点。 这个问题是一个带等...
  • vincent2610
  • vincent2610
  • 2017-04-19 12:30:57
  • 584

机器学习之拉格朗日乘数法

在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n...
  • sinat_35512245
  • sinat_35512245
  • 2016-11-19 18:39:08
  • 1345
收藏助手
不良信息举报
您举报文章:拉格朗日乘数法(等式约束和不等式约束)及KKT条件
举报原因:
原因补充:

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