拉格朗日乘数和KTT条件
通常来说最优化问题是指:对于给定的某一函数,求其在指定作用域上的全局最优解。在求解数学的最优化问题中,Lagrange Multiplier (拉格朗日乘子法)和 Karush-Kuhn-Tucker Conditions(KTT条件)是两种常用于寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法。
拉格朗日乘子法常用于等式约束的优化问题,求取出最优值;KKT条件常用于受不等式约束的优化问题。其中KKT条件是拉格朗日乘数的推广。
常见的最优化问题有三种:
- 无约束优化问题
minf(x)
- 等式约束问题 (s.t. 表示subject to,受限于)
minf(x)
s.t.hi(x)=0i=1,2,…,l
- 不等式约束问题
minf(x)
s.t.hi(x)=0i=1,2,…,lgj(x)≤0j=1,2,…,m
对于第一类优化问题,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点,最后将结果带回原函数进行验证。
拉格朗日乘数——求解等式约束问题
首先我们通过维基百科的一个二维实例来进行介绍。
设目标函数为 f(x,y) ,约束等式为 g(x,y)=c 。
minf(x,y)
s.t.g(x,y)=c(cisconstant)
我们可以想象一下,f(x) 在三维空间中是一个曲面,当它与一个面 z=dn 相交构成等高线。对于不同的 dn 值,f(x) 有不同的等高线。
想象一下我们沿着约束条件 g(x,y)=c 构成的可行集走,在大部分情况下,f 的等高线和 g 的可行集不会重合,但是如果有解的情况下,两条线会有交点。想像此时我们移动 g(x,y)=c 上的点,因为 f 是连续的方程,我们因此能走到 f(x,y)=dn 更高或更低的等高线上,也就是说 dn 可以变大或变小。只有当 g(x,y)=c 和 f(x,y)=dn 相切,也就是说,此时,我们正同时沿着 g(x,y)=c 和 f(x,y)=dn 走。这种情况下,会出现极值。
用向量的形式来表达的话,我们说相切的性质在此意味着 f 和 g 的切线在某点上平行,同时也意味着两者的梯度平行。此时引入一个未知标量 λ ,并求解:
∇[f(x,y)+λ(g(x,y)−c)]=0
且 λ≠0 .
一旦求出 λ 的值,将其套入下式,易求在无约束条件下的极值和对应的极值点。
F(x,y,λ)=f(x,y)+λ(g(x,y)−c)
新方程
F(x,y,λ)在达到极值时与
f(x,y) 相等,因为
F(x,y,λ) 达到极值时
g(x,y)−c 总等于零。
上图蓝线为 f(x,y)=dn 的等高线,绿线为 g(x,y)=c 的点的轨迹。从梯度的方向上来看,显然有 d1>d2 。绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,f(x,y) 的最小值应该会落在最小那圈等高线内部的某一点上。而现在加上了约束,最小值点应该在哪里呢?显然应该是在 f(x,y) 的等高线正好和约束线相切的位置,因为如果只是相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值。
KTT条件——求解不等式约束问题
设目标函数为 f(x,y) ,约束等式为 hi(x),约束不等式为 gj(x) 。
minf(x)
s.t.hi(x)=0i=1,2,…,lgj(x)≤0j=1,2,…,m
则我们定义不等式约束下的拉格朗日函数 F ,则 F 的表达式为
F(x,λ,μ)=f(x)+∑i=1lλihi(x)+∑j=1mμjgj(x)
未完待续。。。
参看文献: