Lagrange Multiply method 拉格朗日乘子法

207 阅读1分钟

等式约束问题

假设xx是一个ddimensiond-dimension的向量,且我们有如下的优化问题:( g(x)g(x) 确定一个 d-1 维的空间)

minf(x),s.t.g(x)=0.\min \quad f(x),\\ s.t.\quad g(x)=0.

首先我们知道 g(x)\nabla g(x) 一定垂直于约束空间,这是因为 g(x)g(x) 的值等于 00,也就是说 xx 在约束空间中的移动不影响 g(x)g(x) 的值。

其次,假设 xx^* 是上述约束问题的解,则 f(x)\nabla f(x^* ) 一定垂直于约束空间,这是因为如果 f(x)\nabla f(x^* )不垂直于约束空间,则我们一定可以在约束空间中找到 f(x)f(x) 的一个下降方向,从而找到一个更优解,这与 xx^* 是上述问题的解的结论相矛盾。

所以,从上述的性质中,我们可以得出以下结论:在最优解 xx^* 处,g(x)\nabla g(x^* )f(x)\nabla f(x^* ) 只可能同向或者反向(事实上,f(x)\nabla f(x^* ) 可以用 g(x)\nabla g(x^* ) 线性表示。这在有多个等式约束的时候也可以这样理解:f(x)=λigi(x)\nabla f(x^* )=\sum\lambda_i g_i(x^* ), λi\exist\lambda_i )。所以我们可以以下的式子成立:

f(x)+λg(x)=0.(1)\nabla f(x^* ) + \lambda \nabla g(x^* ) = 0.\quad \quad(1)

所以我们可以按照如下的形式定义我们的拉格朗日函数:

L(x,λ)=f(x)+λg(x).L(x, \lambda) = f(x) + \lambda g(x).

观察我们的拉格朗日函数,如果我们想令 (1) 式成立,只需要令 xL(x,λ)\nabla_x L(x, \lambda) 等于 00;而如果我们还想满足约束条件 g(x)=0g(x)=0,只需要令 λL(x,λ)\nabla_\lambda L(x, \lambda) 也等于 00。所以原来的带约束问题就转换成了无约束问题,变为求解 L(x,λ)=0\nabla L(x, \lambda) = 0

一般约束问题

现在我们在问题的约束中,引入不等式的约束,定义为 h(x)0h(x)\le 0 (所有的不等式约束问题都可以通过简单的变换成此形式)。

minf(x),s.t.h(x)0.\min \quad f(x),\\ s.t.\quad h(x) \le 0.

对于这种约束的形式,如果最优解 xx^* 最终落在 h(x)<0h(x) < 0 的空间中,则上述约束不起作用,我们就可以简单地通过令 f(x)=0\nabla f(x) = 0 来计算,这跟令 μ=0\mu = 0xL(x,μ)=0\nabla_x L(x, \mu) = 0 是等价的。

而如果最优解 xx^* 最终落在 h(x)=0h(x) = 0 的空间中,情况将与上述讨论过的等式约束问题是一样的,只不过此时 h(x)\nabla h(x^* )f(x)\nabla f(x^* ) 的方向只可能是反方向,也即 μ>0\mu > 0 。这是因为 h(x)\nabla h(x^* ) 的方向只可能指向约束空间外,否则约束空间内存在 x0x_0 使得 h(x0)>0h(x_0) > 0 ,这与约束空间的定义矛盾;而 f(x)\nabla f(x^* )的方向只可能指向约束空间内,否则约束空间内存在使得 f(x)f(x) 更小的 xx 的存在,与最优解落在 h(x)=0h(x) = 0 的区域的假设矛盾;而且 h(x)\nabla h(x^* )f(x)\nabla f(x^* )h(x)=0h(x) = 0 的空间垂直(如 等式约束问题 部分所述)。

所以我们能得到如下的约束:

{h(x)0,μ0,μh(x)=0.\left\{ \begin{array}{ll} h(x) \le 0, \\ \mu \ge 0,\\ \mu h(x) = 0. \end{array} \right.

这也就是我们熟知的 Karush-Kuhn-Tucker condition(KKT 条件)。

所以假设我们有如下的一般约束问题:

minf(x),s.t.gi(x)=0(i=1,...,m),hj(x)0(j=1,...,n).\min \quad f(x),\\ s.t. \quad g_i(x) = 0 \quad (i = 1, ... ,m),\\ h_j(x) \le 0 \quad (j = 1, ... , n).

我们引入拉格朗日乘子 λ=(λ1,...,λm)T\lambda = (\lambda_1, ... ,\lambda_m)^Tμ=(μ1,...,μn)T\mu = (\mu_1, ... ,\mu_n)^T,进而得到拉格朗日函数

L(x,λ,μ)=f(x)+i=1mλigi(x)+j=1nμjhj(x)(2)L(x, \lambda, \mu) = f(x) + \sum_{i = 1}^m\lambda_ig_i(x) + \sum_{j=1}^n\mu_jh_j(x) \quad \quad (2)

和我们对应的 KKT 条件

{hj(x)0,μj0,μjhj(x)=0\left\{ \begin{array}{ll} h_j(x) \le 0, \\ \mu_j \ge 0,\\ \mu_j h_j(x) = 0 \end{array} \right.

我们可以求解处 (2) 式的无约束问题的解,最后检验我们的解是否满足 KKT 条件,进而确定原约束问题的解。

之后更新dual problem