您的位置:首页 > 其它

拉格朗日乘子法(Lagrange Multiplier)和KKT条件

2017-10-15 20:33 417 查看

一:前言

如果我们现实生活中的多元值求最优化的问题,我们会遇到一下三种场景:

无条件约束的优化问题

有等式约束的优化问题

有不等式约束的优化问题

而拉格朗日乘子法和KKT条件是现实生活中求解这类优化问题两种非常重要的求值方法。这里我们将从上边的上个场景讲解这两种方法。

接下来的讲解过程中,我们所使用的未知变量都会都向量,而非我们以前所对应的一个实数。因为我们考虑的是多元问题,即未知数可能不止一个,也可能是几十个、几百个,而这种场景才能运用到现实生活中,毕竟所有的数学研究都是为了直接或者间接解决现实生活中的问题而存在的。

二:无条件约束的优化问题

场景描述:

minf(x)

2.1 凸函数

凸函数是定义在某个向量空间的凸子集C(区间)上的实值区域,对于区间上的任意两个向量x1,x2都存在f((x1+x2)2)⪖f(x1)+f(x2)2。这里给大家展示一个二维向量凸函数的示意图:



2.2 Fermat引理求最优解

该类问题比较简单。我们可以通过Fermat引理就可以获取到相应的最优值。Fermat引理的求解最优解的过程可以总结为如下的流程(以前文中提到的场景为例):

求出f(x)的导数——f′(x)

求出当f′(x)=0 时x的值,这样我们就可以得到对应最优值的后选值——我们将这些值以集合N代表

验证N中的每一个值,如果是凸函数的话,那么我们可以认为当前对应可能是最小值

如果考虑到局部最优解的话,我们可能需要再作进一步的分析

由于Fermat引理是比较相对简单并且不是本章讲解的中点,所以这里我们不做进一步的讲解,如果有兴趣的话大家可以私下去看一下。

三:有等式约束的优化问题

3.1 拉格朗日乘子法

优化场景如下:

minf(x)s.t.hi(x)=0;i=1,…,m

这个场景就是:当满足hi(x)=0;的时候求解f(x)的最小值。

s.t.的含义代表:subject to 表示:“受限于”

关于这类问题我们经常使用的是拉格朗日乘子法(也就是我们标题中提到的方法之一)。

拉格朗日乘子法是将约束等式(hi=0)乘以一个系数与原函数f(x)联系在一起写成一个式子,称为拉格朗日函数。如下是我们场景转变后的结果:

L(x,a)=f(x)+aT⋅h(x)

该方程还有另外一种表示形式如下:

L(x,a)=f(x)+∑i=1maihi(x)

以上两种形式的式子表示的都是同一个含义的内容。ai是各个约束条件的待定系数。L代表等式约束的个数。

当我们获取了如上所示的拉格朗日函数的时候,我们通过对这个函数对各个变量求导,令其函数等于零,可以求出后选值,然后验证得出最优值(就是我们第二章讲解的Fermat引理)。公式如下:

3.2 几何解释——为什么这样做可以求最优化?

首先呢我们给一个文字描述,因为x是多元的,我们不能够通过图形的方式显示出来,但是在文字讲解完毕的话我们会给一个二维的例子来帮助理解记忆。

针对目标函数z=f(x),x代表向量,z可以取不同的值。当z值为3的时候,即3=f(x)我们把所有符合条件的值投影在一个x形成的超平面(曲面)上,就会形成等高线。这里我们假设向量x同时满足另外一个条件h(x)=0(在几何层面我们可以将这个函数看成一个在由x构成的超平面中的曲线)。假设h(x)与等高线相交,那么交点就是满足了约束条件(h(x))与等高线对应的目标函数可行域的值,但是肯定不是最优解。

为什么不是最优解呢?

因为相交意味着还有其它等高线在内部或外部,使得新的等高线的值更大或更小(而这个等高线的值也就是我们实际中需要关注的目标函数的值,我们要求的最优解也是求等高线的值的最优解),而只有当等高线与对应约束条件线相切的时候,可能会取的最优值。

如下左图中被红色圈中的部分,等高线f(x,y)=d2与约束条件g(x,y)=c相切,根据我们所学的数学知识,可以得出最优解必须满足∇f(x)的梯度=λ∇(g(x)−c)的梯度,因为对应点在两条线上的切线所代表的向量必须在同一条直线上。

在这种情况下我们就可以得出如果我们对约束条件乘以某一个值之后可以满足在同一个点两个函数都能够取到最优值的情况,所以就产生了如上所示的方程。





这里我们给出一个二维最优的例子:

如上两图:我们给定一个二元函数f(x,y)=z的等高线(函数等高线的定义:二元函数z=f(x,y)在空间中表示的是一个曲面——如上右图所示,这个曲面与片面z=c的交线在xoy平面上的投影曲线f(x,y)=c称为z=f(x,y)的一条等高线。)

如上左图:箭头表示斜率,虚线表示目标函数的等高线,绿色线表示约束条件所表示的曲线。根据前边的文字描述,只有出现如图中红色线圈中的情况,才有可能会出现最优值,即∇f(x,y)=λ∇g(x,y)。所以对于如下所示的函数:

L(x)=f(x,y)+λ(g(x,y)−c)

如果我们可以确定λ的值,那么我们就可以求得在约束条件下求指定函数最优解的问题转换成了无约束条件求最优解的问题。

四:有不等式约束的优化问题

假设我们求解的不等式约束的优化问题如下:

minf(x)s.t.gi(x)⩽0;i=1,…,mhi(x)=0;i=1,…,m

那么根据前一章讲解的拉格朗日函数,我们可以得到如下的公式:

minL(x,λ,b)=f(x)+∑i=1qλigi(x)+∑i=1mbhi(x)(1)

如果我们对这样的公式求最小值会出现什么问题呢?由于没有任何的限制条件,所以λg(x)的值可能为正也可能为负,这样在无形中就增加了我们的验证难度,所以这里我们可以将λi调整为最大的正值,使λg(x)的值趋近于负无穷,使由于x变化导致的f(x)的变化基本上不会影响λg(x)的变化,这样我们就可以忽略后半部分λg(x)的值,而只关注前边f(x)的部分就可以了。这样就延伸出如下的问题:

θp(x)=maxλ⩾0L(x,λ,b)

即:求解λ最大值,使λg(x)趋近于负无穷(这个负无穷是相对的,取决于实际的情况)的值。

这样我们的问题就转变成了如下的内容:

minxf(x)=minxθp(x)=minxmaxλL(x,λ,b)s.t.λ⩾0

如果我们直接求解minxθp(x)的话,不好求解,这里有两个参数,并且存在一个不等式约束,这个求解过程是比较复杂的。要求解这个过程话,我们需要先了解下拉格朗日对偶的问题。

首先思考一下,我们考虑这个公式的对偶面,即:先在λ固定的情况下,求解关于x的最小值,然后再针对λ求最大值。

如果我们只是简单的调换下求极值的顺序,那么会产生如下的结果:

minxmaxλL(x,λ,b)⩾maxλminxL(x,λ,b)

(至于这个公式问什么成立,笔者还没有搞清楚,暂时先把他当一个公式记住了。后续如果机会研究一下的话,我会补充上这个内容,如果那位读者知道这个的话,可以评论留言一下,笔者感激不尽。)

由于我们需要的是两个等式相等,那么我们就需要寻找能够使两者相等的条件,这里呢我们就需要引入KKT条件了,KKT条件有如下几条:

∇L(x,λ,b)∇x的值为0,即拉格朗日函数对x求导的值为0。求极值的必须要求。

bi≠0。根据朗格朗日算子法,那么算子系数b的话就不能够为0。

λ⩾0。这个条件已经在前边将结果了,需要寻找不等式值的负无穷,使我们能够将求值过程简化。

λg(x)=0。

hi(x)=0;i=1,…,q。这个是前提条件。

gi(x)⩽0;i=1,…,m。这个也是前提条件。

五:拉格朗日对偶问题

如果我们求解一下不等式的优化问题:

minf(x)s.t.gi(x)⩽0;i=1,…,m

如果我们用KKT条件话会生成如下的函数:

minL(x,λ)=f(x)+∑i=1qλigi(x)(1)s.t.λi⩾0,gi(x)⩽0(2)

这个函数是不是有点熟悉,这个和我们在上一章讲解的拉格朗日乘子法很想像,但是不同的是限制条件——拉格朗日算子法的限制条件是λ≠0,而KKT条件的限制条件是:λ⩾0。KKT条件实际上是对拉格朗日乘子法的泛化

接下来将为大家展示一个基于KKT条件生成的函数产生的一个证明过程,如下所示:

∵ui⩾0且gi(x)⩽0(3)∴λg(x)⩽0(4)∴maxλL(x,λ)=f(x)(5)∴minxf(x)=minxmaxλL(x,λ)(6)

这里我们看一下另外一个等式:

maxλminxL(x,λ)=maxλ[minxf(x)+minxλg(x)](7)=maxλminxf(x)+maxλminxλg(x)(8)=minxf(x)+maxλminxλg(x)(9)

这里讲解一下有(8)——(9)的变化过程,对于f(x)来说,变量λ对于f(x)来说是无效的,所以我们可以进行这种变换。

∵ui⩾0且gi(x)⩽0∴λg(x)={0ifλ=0org(x)=0−∞ifλ>0andg(x)<0∴当λ=0org(x)=0时maxλminxλg(x)=0∵maxλminxL(x,λ)=minxf(x)+maxλminxλg(x)∴maxλminxL(x,λ)=minxf(x)(10)

我们结合(9),(10)我们可以得到如下的公式:

maxλminxL(x,λ)=minxmaxλL(x,,λ)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息