等式约束问题
假设x是一个d−dimension的向量,且我们有如下的优化问题:( g(x) 确定一个 d-1 维的空间)
minf(x),s.t.g(x)=0.
首先我们知道 ∇g(x) 一定垂直于约束空间,这是因为 g(x) 的值等于 0,也就是说 x 在约束空间中的移动不影响 g(x) 的值。
其次,假设 x∗是上述约束问题的解,则 ∇f(x∗) 一定垂直于约束空间,这是因为如果 ∇f(x∗)不垂直于约束空间,则我们一定可以在约束空间中找到 f(x) 的一个下降方向,从而找到一个更优解,这与 x∗ 是上述问题的解的结论相矛盾。
所以,从上述的性质中,我们可以得出以下结论:在最优解 x∗ 处,∇g(x∗) 与 ∇f(x∗) 只可能同向或者反向(事实上,∇f(x∗) 可以用 ∇g(x∗) 线性表示。这在有多个等式约束的时候也可以这样理解:∇f(x∗)=∑λigi(x∗), ∃λi )。所以我们可以以下的式子成立:
∇f(x∗)+λ∇g(x∗)=0.(1)
所以我们可以按照如下的形式定义我们的拉格朗日函数:
L(x,λ)=f(x)+λg(x).
观察我们的拉格朗日函数,如果我们想令 (1) 式成立,只需要令 ∇xL(x,λ) 等于 0;而如果我们还想满足约束条件 g(x)=0,只需要令 ∇λL(x,λ) 也等于 0。所以原来的带约束问题就转换成了无约束问题,变为求解 ∇L(x,λ)=0。
一般约束问题
现在我们在问题的约束中,引入不等式的约束,定义为 h(x)≤0 (所有的不等式约束问题都可以通过简单的变换成此形式)。
minf(x),s.t.h(x)≤0.
对于这种约束的形式,如果最优解 x∗ 最终落在 h(x)<0 的空间中,则上述约束不起作用,我们就可以简单地通过令 ∇f(x)=0 来计算,这跟令 μ=0 且 ∇xL(x,μ)=0 是等价的。
而如果最优解 x∗ 最终落在 h(x)=0 的空间中,情况将与上述讨论过的等式约束问题是一样的,只不过此时 ∇h(x∗) 与 ∇f(x∗) 的方向只可能是反方向,也即 μ>0 。这是因为 ∇h(x∗) 的方向只可能指向约束空间外,否则约束空间内存在 x0 使得 h(x0)>0 ,这与约束空间的定义矛盾;而 ∇f(x∗)的方向只可能指向约束空间内,否则约束空间内存在使得 f(x) 更小的 x 的存在,与最优解落在 h(x)=0 的区域的假设矛盾;而且 ∇h(x∗) 与 ∇f(x∗) 与 h(x)=0 的空间垂直(如 等式约束问题 部分所述)。
所以我们能得到如下的约束:
⎩⎨⎧h(x)≤0,μ≥0,μh(x)=0.
这也就是我们熟知的 Karush-Kuhn-Tucker condition(KKT 条件)。
所以假设我们有如下的一般约束问题:
minf(x),s.t.gi(x)=0(i=1,...,m),hj(x)≤0(j=1,...,n).
我们引入拉格朗日乘子 λ=(λ1,...,λm)T 和 μ=(μ1,...,μn)T,进而得到拉格朗日函数
L(x,λ,μ)=f(x)+i=1∑mλigi(x)+j=1∑nμjhj(x)(2)
和我们对应的 KKT 条件
⎩⎨⎧hj(x)≤0,μj≥0,μjhj(x)=0
我们可以求解处 (2) 式的无约束问题的解,最后检验我们的解是否满足 KKT 条件,进而确定原约束问题的解。
之后更新dual problem