装载:关于拉格朗日乘子法与KKT条件 拉格朗日乘子法的数学基础  拉格朗日乘数法的形象化解读  参考文献 

作者:@wzyer

拉格朗日乘子法无疑是最优化理论中最重要的一个方法。但是现在网上并没有很好的完整介绍整个方法的文章。我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助。本文分为两个部分:第一部分是数学上的定义以及公式上的推导;第二部分主要是一些常用方法的直观解释。初学者可以先看第二部分,但是第二部分会用到第一部分中的一些结论。请读者自行选择。

共轭函数 

对于一个函数R为:

 

按照上面的定义,这个函数值是有可能取到y的取值范围就是共轭函数的定义域。

下面是一些常用函数的对偶函数:

  • 线性函数a。
  • 负对数0。
  • 指数函数0。
  • 负熵函数R
  • 倒数函数0。
  • 任意范数∥的对偶范数。
  • 范数平方∥的对偶范数。
  • 二次型y

这个函数的几何意义可以通过下图解释:
装载:关于拉格朗日乘子法与KKT条件
拉格朗日乘子法的数学基础 
拉格朗日乘数法的形象化解读 
参考文献 
随着y的变化所变化的情况。

很容易看出不管原函数的凹凸性如何,共轭函数一定是凸函数(可以由凸函数性质看出,这里不细说)。

拉格朗日函数 

对于一个标准形式的优化问题:

 

这里我们并没有假定这个问题是凸的。

拉格朗日函数就是将目标函数和约束进行有权重的求和:

 

这个函数不仅仅是0的拉格朗日乘子。

拉格朗日对偶函数 

拉格朗日对偶函数,或者直接叫对偶函数,被定义为拉格朗日函数在x自由变化时所取到的最小值:

 

很显然,这是一个关于拉格朗日乘子向量ν的函数。可以通过凸函数的性质发现无论原优化问题的凹凸性,这个对偶函数始终是凹的。

目标函数最优值的下界 

假设原始问题目标函数最优值是0。我们很容易发现:

 

因此,很容易得到下面的不等式:

 

所以,我们可以得到:

 

但是需要注意的是,由于g函数不会取到无穷这样的定义域内进行的。

拉格朗日对偶函数与共轭函数的联系 

线性约束的问题的拉格朗日对偶函数可以通过对共轭函数来表达出来。考虑如下线性约束问题:

 

他的拉格朗日对偶函数为:

 

对偶函数的定义域由共轭函数⋆的定义域所确定:

 

拉格朗日对偶问题 

由于我们知道)是一定不会大于原问题的最优解的,我们可以通过构造一个如下的最优化问题来寻找原始优化问题的最优下界:

 

我们用)来代表这个问题找到最优时候的对应的拉格朗日乘子的值。

由于我们知道拉格朗日对偶函数)一定是凹的(不论原始优化问题凹凸性如何),因此我们知道这个拉格朗日对偶问题一定是个凸优化问题。

如何显式的表述拉格朗日对偶问题 

上面形式的拉格朗日对偶问题很难在实际中求解。通常情况下为了求解,我们需要一些更明确的条件来把拉格朗日对偶问题表述出来。一般我们如下几种方法。

由定义消去下确界 

如果拉格朗日函数能够简单的求得下确界。我们就可以直接消去原始问题的变量,得到明确的对偶问题。

例如对于:

 

拉格朗日函数为)。这显然是个凸函数,我们可以直接求极值,令其导数为0:

 

可得ν,带入拉格朗日函数:

 

可以看到,这个问题的对偶问题变成了一个无约束的优化问题:

 

隐式求解约束 

有时候拉格朗日对偶函数可以取到无穷。为了得到有意义的解,我们可以求出对偶可行域,即让∞成立所需要的约束。然后可得对偶问题。

例如对于标准线性规划问题:

 

拉格朗日函数为:

 

应用下确界运算,可以得到:

 

则可以得到对偶问题为:

 

也可以把这个问题写成这样的形式;

 

共轭函数法 

由于线性约束的问题和共轭函数有密切的关系,很多时候我们可以利用共轭函数来求解对偶问题的约束。

例如最大化熵问题:

 

我们知道,负熵函数0的共轭函数是:

 

定义域是n。
由线性约束问题的对偶函数与共轭函数的关系可得:

 

这里A矩阵的第i列。

所以,这个问题也转化为了一个无约束的优化问题:

 

弱对偶 

如果我们把拉格朗日对偶问题的最优值记为⋆,我们有如下关系:

 

这个关系就被称为弱对偶关系。

弱对偶关系即使在∞,即原始问题是不可行的。

我们把原始问题和对偶问题最优值之间的差值⋆称为最有对偶间隙(optimal duality gap)。显然,这个值总是正的。

强对偶 

如果原始问题和对偶问题的最优值相等,即:

 

我们就称这种关系为强对偶关系。在这种情况下,我们仅仅从对偶问题中就可以知道原始问题的最优解。

通常情况下强对偶关系并不成立。但是如果原始问题是凸的,即对于这样的形式:

 

m都是凸的,那么我们通常能够得到强对偶关系。但是这种情况下也存在两个问题都无可行解的情况,此时强对偶关系不成立。为了确保我们一定能得到强对偶关系,除了原始问题是凸的之外,我们还需要更多的限制条件。
一种经常被用到的条件是

  • Slator条件:存在一点D (D的相对内点集)满足
    b

    这样的点也可称之为 严格可行 的。

可以证明,如果原问题是凸的,并且Slator条件成立的情况下,强对偶条件一定成立。

如果有一些不等约束是仿射的,Slator条件还可以被弱化。假设前k个不等约束是仿射的,则Slator条件可以被转化为:

  • Refined Slater’s 条件:存在一点D (D的相对内点集)满足
    b

即仿射的不等约束不必取严格小于。

此外,满足 Slater’s 条件(或 Refined Slater’s 条件) 不仅意味着(凸优化问题)强对偶性的成立,而且也表示当⋆,即此时对偶最优值是可取到的。

原始问题与对偶问题的关系 

  1. 原始问题和对偶问题都是可行的,则弱对偶关系成立,强对偶关系不一定成立。
  2. 原始问题和对偶问题都不可行,则弱对偶关系依然成立,但强对偶关系不成立。
  3. 关于原始问题和对偶问题之间的解的关系,可以整理如下表格:
对偶问题原始问题 可行 无下界 不可行
可行 × ×
无上界 × ×
不可行 ×

最优条件 

现在假设我们现在已经知道了原始问题和对偶问题的最优值相等(强对偶)。)是对偶问题的最优解。我们可以写出如下的式子:

 

强对偶存在的情况下,上面的不等号都要取到等号。

这里有两个不等号,第三行取到等号的必要条件是:

 

这个条件会出现在下面的KKT条件中。

而第四行取到等号的条件是:

 

这个条件可以得到下面的互补松弛(Complementary slackness)条件。

互补松弛条件 

上面得到:

 

由于这个求和的每一项都小于等于0,所以我们可以得到:

 

这就是著名的互补松弛条件。由这个条件我们可以得到如下结论:

  1. 如果拉格朗日不等约束乘子0。
  2. 如果某不等约束严格取不等号,即0。

互补松弛条件通常代表着一定物理意义。其中的乘子常常是一个明确的状态指示器。代表着约束的有效与否。

KKT条件 

一般问题的KKT条件 

将上面讨论的条件结合起来,我们就得到了著名的KKT条件:

 

这里前两行条件是原始问题的约束,第三行是拉格朗日函数的要求,第四行是互补松弛条件,最后一行是对拉格朗日函数取极值时候带来的一个必要条件。

容易看出,由于最后一个条件的限制,对于任意优化问题,只要)是原始问题和对偶问题的最优解,则其一定满足KKT条件。即KKT条件是一组解成为最优解的必要条件

凸问题的KKT条件 

如果原始问题是凸的,则KKT条件也是充分的。这是因为KKT的最后一个条件在对拉格朗日函数取下确界的时候成为了充要条件。这时候我们有如下结论:

  • 如果一个凸优化问题有可微的目标函数和约束,并且满足Slater条件,则KKT条件是取得最优的充要条件:Slater条件保证了最优对偶间隙为零并且最优点可以取到;在此基础上)满足KKT条件。

KKT条件的用途 

KKT条件在优化问题中有重要意义。它可以用于如下方面:

  1. 有时候可以直接从KKT条件里得到最优的解析解。
  2. 等式约束的优化问题,可以通过KKT条件转化为无约束方程求零点问题。
  3. 有不等式约束的优化问题,可以使用KKT条件来简化,帮助求解。

拉格朗日乘数法的形象化解读 

上面的论述都是拉格朗日乘子法的数学基础。但是上面的公式无法解释一个问题:为何要如此构造拉格朗日函数?其背后的意义是什么?这一部分就试图来回答这个问题。

等式约束的拉格朗日乘子法 

考虑这个决策变量是二维平面内点)的优化问题:

 

我们在二维平面内画出两个函数的图像。由于缺少第三维,我们使用等高线来表示目标函数
图中画出了两条)的等高线和约束相切,则他们切点的梯度一定在一条直线上,即:

 

其中ν可以是任何实数。

因此,我们通过观察可以得到优化取到最小值的条件:

 

最为对比,我们使用前一部分推导的KKT条件来直接写出这个问题的KKT条件:

 

可以看到这两个条件几乎完全一样,唯一的不同就是ν的符号有任何限制,所以是否取负号对于这个问题没有任何影响。

仍然需要提醒的是,这些条件对于一般问题只是取到最优的必要条件。但是对于大多数凸问题来说,这个条件也是充分条件。具体情况请看上面公式推导。

含有不等约束的情况 

上面仅仅考虑了等式约束的情况。那么含有不等式的约束情况下,λ乘子又有什么意义呢?

我们还是考虑一个和上面问题类似的问题:

 

我们同样在平面内画下这个问题的图像:
装载:关于拉格朗日乘子法与KKT条件
拉格朗日乘子法的数学基础 
拉格朗日乘数法的形象化解读 
参考文献 
这个和之前的图不同之处在于:约束决定的可行区域由一条直线变成了一段带状区域。这个带状区域由两条边界d来决定。

大家立刻可以从图中发现,这个问题的最优解和之前的等式约束情况下没有任何区别。也就是依然满足条件:

 

我们来看看不等约束的KKT条件怎么说:

 

这两个条件看起来一点也不像。。。。。。好吧,让我们来仔细分析一下这个KKT条件。

这里的核心问题是互补松弛条件。我们上面已经说过了由于互补松弛条件的存在,λ乘子必然为0。我们也很容易从图里看出来,要想取到最优,我们首先需要:

 

这时候我们有:

 

把这样两个关系带入KKT条件,可以得到:

 

果然和我们之前的最优点条件一模一样了。

由上面的问题可以看出来,不等约束的拉格朗日乘子λ乘子就带着对应的约束从梯度运算中消失了,并不去影响目标函数的梯度。

参考文献 

  1. Stephen Boyd, Lieven Vandenberghe. Convex Optimization.
  2. 维基百科.拉格朗日乘数.

作者:@wzyer

原文出处:http://www.moozhi.com/topic/show/54a8a261c555c08b3d59d996