拉格朗日乘子法(Lagrange multiplier)

在数学中的最优化问题中,拉格朗日乘数法是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法,这里的条件约束是等式约束,不等式约束使用KKT解决。这种方法可以将一个有有约束优化 - 图1个变量与k个约束条件的最优化问题转换为一个解有有约束优化 - 图2个变量的方程组的解的问题。这种方法中引入了一个或一组新的未知数,即拉格朗日乘数,又称拉格朗日乘子,或拉氏乘子,它们是在转换后的方程,即约束方程中作为梯度(gradient)的线性组合中各个向量的系数。

比如,要求有约束优化 - 图3有约束优化 - 图4时的最大值时,我们可以引入新变量拉格朗日乘数有约束优化 - 图5,这时我们只需要下列拉格朗日函数的极值:

有约束优化 - 图6

更一般地,对含有约束优化 - 图7个变量和有约束优化 - 图8个约束的情况,有:

有约束优化 - 图9

拉格朗日乘数法所得的极点会包含原问题的所有极值点,但并不保证每个极值点都是原问题的极值点。

假设有函数有约束优化 - 图10,要求其极值(最大值/最小值),且满足条件:有约束优化 - 图11有约束优化 - 图12是常数。对不同有约束优化 - 图13的值,不难想象出有约束优化 - 图14的等高线。而方程有约束优化 - 图15的可行集所构成的线正好是有约束优化 - 图16。想像我们沿着有约束优化 - 图17的可行集走;因为大部分情况下有约束优化 - 图18的等高线和有约束优化 - 图19的可行集线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动有约束优化 - 图20上的点,因为有约束优化 - 图21是连续的方程,我们因此能走到有约束优化 - 图22更高或更低的等高线上,也就是说有约束优化 - 图23可以变大或变小。只有当有约束优化 - 图24有约束优化 - 图25相切,也就是说,此时,我们正同时沿着有约束优化 - 图26有约束优化 - 图27走。这种情况下,会出现极值或鞍点。

Lagrange_multiplier.png

用向量的形式来表达的话,我们说相切的性质在此意味着有约束优化 - 图29有约束优化 - 图30的切线在某点上平行,同时也意味着两者的梯度平行。此时引入一个未知标量有约束优化 - 图31,并求解:

有约束优化 - 图32

一旦求出有约束优化 - 图33的值,将其套入下式,易求在无约束条件下的极值和对应的极值点:

有约束优化 - 图34

新方程有约束优化 - 图35在达到极值时与有约束优化 - 图36相等,因为有约束优化 - 图37达到极值时有约束优化 - 图38总等于零

Example

有约束优化 - 图39满足有约束优化 - 图40的最小值。因为只有一个限制条件,我们只需要用一个乘数有约束优化 - 图41

有约束优化 - 图42

将所有有约束优化 - 图43方程的偏微分设为零,得到一个方程组,最小值是以下方程组的解中的一个:

有约束优化 - 图44

卡罗需-库恩-塔克条件(KKT)

卡罗需-库恩-塔克条件(Kuhn-Tuhn, KKT)是在满足一些规则的条件(可以为不等式)下,一个非线性规划(Nonlinear Programming)问题有最优化解法的一个必要和充分条件,是一个广义化拉格朗日乘数的成果。

现在考虑不等式有约束优化 - 图45,此时最优点要不在有约束优化 - 图46的区域中,或在边界有约束优化 - 图47上。

  1. 对于有约束优化 - 图48的情形,约束有约束优化 - 图49不起作用,可直接通过条件有约束优化 - 图50来获得最优点;这等价于将有约束优化 - 图51置零然后对有约束优化 - 图52置零得到最优点。
  2. 有约束优化 - 图53的情形类似于上面等式约束的分析,但需要注意的是,此时有约束优化 - 图54的方向必须与有约束优化 - 图55相反(即一个增大另一个必须减小,才能使两者和为零),即存在常数有约束优化 - 图56(若有约束优化 - 图57则会出现有约束优化 - 图58,不符合约束)使得有约束优化 - 图59整合这两种情形,必满足有约束优化 - 图60

因此,在约束有约束优化 - 图61下最小化有约束优化 - 图62,可转化为在如下约束下最小化有约束优化 - 图63的拉格朗日函数:

有约束优化 - 图64

上式即称为Karush-Kuhn-Tucker(KKT)条件。上式可推广到多个约束,比如问题:

有约束优化 - 图65

也就是说,自变量有约束优化 - 图66是一个有约束优化 - 图67维向量,要最大化一个目标函数有约束优化 - 图68,满足若干等式和不等式约束。KKT条件宣称,如果有一个点有约束优化 - 图69是满足所有约束的极值点,则

有约束优化 - 图70

简单说,就是在极值处,有约束优化 - 图71的梯度是一系列等式约束有约束优化 - 图72的梯度和不等式约束有约束优化 - 图73的梯度的线性组合。在这个线性组合中,等式约束梯度的权值有约束优化 - 图74没有要求;不等式约/束梯度的权值有约束优化 - 图75是非负的,并且如果每个有约束优化 - 图76严格小于有约束优化 - 图77,那这个约束不会出现在加权式子中,因为对应的权值有约束优化 - 图78,必须为有约束优化 - 图79。换句话说,只有有约束优化 - 图80恰好在边界有约束优化 - 图81上的那些有约束优化 - 图82的梯度才会出现在加权式中。如果去掉不等式约束部分,那么上式就是拉格朗日乘子法的精确表述。

给定一个优化问题,我们把满足所有约束条件的n维空间区域称为可行域。从可行域中的每一个点有约束优化 - 图83朝某个方向有约束优化 - 图84出发走一点点,如果还在可行域中,或者偏离可行域的程度很小,准确地说,偏移量是行进距离的高阶无穷小量,那么我们就说有约束优化 - 图85是一个可行方向。我们用有约束优化 - 图86表示点有约束优化 - 图87的所有可行方向的集合。对于可行域中的一个极大值点有约束优化 - 图88,它的可行方向集合为有约束优化 - 图89,从有约束优化 - 图90有约束优化 - 图91中某个方向走一小步,那么落点仍然(近似)在可行域中。有约束优化 - 图92是局部最大值点就意味着在这些可行方向上目标函数有约束优化 - 图93不能增大,从而我们得到这样一个结论:在极值点有约束优化 - 图94,让目标函数增大的方向不能在有约束优化 - 图95中。

Example

求解:有约束优化 - 图96

写出拉格朗日函数:

有约束优化 - 图97

KKT方程组:

有约束优化 - 图98

拉格朗日对偶性(Lagrange duality)

在约束最优化问题中,常利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题得到原始问题的解。

原始问题

假设有约束优化 - 图99是定义在有约束优化 - 图100上的连续可微函数。考虑约束最优化问题:

有约束优化 - 图101

称此约束最优化问题为原始最优化问题或原始问题。

首先,引入拉格朗日函数:

有约束优化 - 图102

这里,有约束优化 - 图103是拉格朗日乘子,有约束优化 - 图104。考虑有约束优化 - 图105的函数

有约束优化 - 图106

这里,下标有约束优化 - 图107表示原始问题。假定给定某个有约束优化 - 图108。如果有约束优化 - 图109违反原始问题的约束条件,即存在某个有约束优化 - 图110使得有约束优化 - 图111或者存在某个有约束优化 - 图112使得有约束优化 - 图113,那么就有

有约束优化 - 图114

因为若某个有约束优化 - 图115使约束有约束优化 - 图116,则可令有约束优化 - 图117,若某个有约束优化 - 图118使约束有约束优化 - 图119,则可令有约束优化 - 图120,而将其余各项有约束优化 - 图121均取值为有约束优化 - 图122

相反地,若有约束优化 - 图123满足等式和不等式约束,则可知有约束优化 - 图124,因此

有约束优化 - 图125

所以如果考虑极小化问题

有约束优化 - 图126

它是与原始最优化问题等价的,即他们有相同解。问题有约束优化 - 图127称为广义拉格朗日函数的极小极大问题。这样一来,就把原始最优化问题表示为拉格朗日函数的极小极大问题。为了方便,定义原始问题的最优值

有约束优化 - 图128

对偶问题

定义有约束优化 - 图129再考虑极大化,即

有约束优化 - 图130

可以将广义拉格朗日函数的极大极小为表示为约束最优化问题:

有约束优化 - 图131

称为原始问题的对偶问题。定义对偶问题的最优值

有约束优化 - 图132

原始问题和对偶问题关系

若原始问题和对偶问题都有最优值,则

有约束优化 - 图133

证明:

有约束优化 - 图134有约束优化 - 图135,对任意有约束优化 - 图136

有约束优化 - 图137

有约束优化 - 图138,由于原始问题和对偶问题均有最优解,所以

有约束优化 - 图139

有约束优化 - 图140

推论:设有约束优化 - 图141分别是原始问题和对偶问题的可行解,并且有约束优化 - 图142,则有约束优化 - 图143分别是原始问题和对偶问题的最优解。

线性规划(Linear programming)

在数学中,线性规划(Linear Programming,简称LP)特指目标函数和约束条件皆为线性的最优化问题。描述线性规划问题的常用和最直观形式是标准型。标准型包括以下三个部分:

  1. 一个需要极大化的线性函数,例如有约束优化 - 图144
  2. 以下形式的问题约束,例如有约束优化 - 图145
  3. 和非负变量,例如有约束优化 - 图146

线性规划问题通常可以用矩阵形式表达成:

有约束优化 - 图147

例如极小化等其他类型问题,不同形式的约束问题,和有负变量的问题,都可以改写成其等价问题的标准型。

线性规划.png

二次规划(Quadratic programming)

二次规划包括凸二次优化和非凸二次优化。在此类问题中,目标函数是变量的二次函数,约束条件是变量的线性不等式。假定变量个数为有约束优化 - 图149,约束条件的个数为有约束优化 - 图150,则标准的二次规划问题形如下:

有约束优化 - 图151

其中有约束优化 - 图152有约束优化 - 图153维向量,有约束优化 - 图154实对称矩阵有约束优化 - 图155实矩阵有约束优化 - 图156有约束优化 - 图157为实向量,有约束优化 - 图158的每一行对应一个约束。

  1. 有约束优化 - 图159半正定矩阵,则上式是凸函数,相应的二次规划是凸二次优化问题;此时若约束条件有约束优化 - 图160定义的可行域不为空,且目标函数在此可行域有下界,则该问题将有全局最小值。
  2. 有约束优化 - 图161正定矩阵,则该问题有唯一的全局最小解
  3. 有约束优化 - 图162为非正定矩阵,则上式有多个平稳点和局部极小点的NP-hard问题

常用的二次规划解法有椭球法,内点法,增广拉格朗日法、梯度投影法等。

半正定规划(Semi-Definite programming)

半正定规划(SDP)是一类凸优化问题,其中的变量可组织成半正定对称矩阵形式,且优化问题的目标函数和约束都是这些变量的线性函数。给定有约束优化 - 图163的对称矩阵有约束优化 - 图164

有约束优化 - 图165

有约束优化 - 图166也是有约束优化 - 图167的对称矩阵,有约束优化 - 图168有约束优化 - 图169个实数,则半正定规划问题形如:

有约束优化 - 图170

半正定规划与线性规划都拥有线性的目标函数和约束,但半正定规划中的约束有约束优化 - 图171是一个非线性、非光滑约束条件。在优化理论中,半正定规划具有的一般性,能将几种标准的优化问题(如线性规划、二次规划)统一起来。

常见的用于求解线性规划的内点法经过少许改造即可求解半正定规划问题,但半正定规划的计算复杂度较高,难以直接用于大规模的问题。