Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将Lagrange乘数法(Lagrange multipliers)所处理涉及等式的约束优化问题推广至不等式。在实际应用上,KKT条件(方程组)一般不存在代数解,许多优化算法可供数值计算选用。这篇短文从Lagrange乘数法推导KKT条件并举一个简单的例子说明解法。
1. 等式约束优化问题
给定一个目标函数f:Rn→R ,我们希望找到x∈R,在满足约束条件g(x)=0的前提下,使得L(x,λ)=f(x)+λg(x)有最小值。这个约束优化问题记为
minf(x)s.t.g(x)=0为方便分析,假设f与g是连续可导函数。我们在高等数学中学过的Lagrange乘数法是等式约束优化问题的典型解法。
定义Lagrangian函数
L(x,λ)=f(x)+λg(x)其中λ 称为Lagrange乘数。Lagrange乘数法将原本的约束优化问题转换成等价的无约束优化问题
minx,λ L(x,λ)计算L对x与λ的偏导数并令其为0,可得最优解的必要条件: \(\nabla_{x}L = \frac{\partial L}{\partial x} = \nabla f + \lambda \nabla g = 0\)
∇λL=∂L∂λ=g(x)=0其中第一式为定常方程式(stationary equation),第二式为约束条件。解开上面n+1个方程式可得L(x,λ)的stationary pointx⋆以及λ的值(正负数皆可能)。
2. 不等式约束优化问题
接下来我们将约束等式g(x)=0推广为不等式g(x)≤0 。考虑这个问题
minf(x)s.t.g(x)≤0假设x⋆为满足约束条件的最佳解,分开两种情况讨论:
(1) g(x⋆)<0, 最佳解位于可行域K的内部,称为内部解(interior solution),这时约束条件是无效的(inactive);
(2) g(x⋆)=0, 最佳解落在可行域K的边界,称为边界解(boundary solution),此时约束条件是有效的(active)。
这两种情况的最佳解具有不同的必要条件。
(1)内部解:在约束条件无效的情形下,g(x)=0不起作用,约束优化问题退化为无约束优化问题,因此驻点x⋆满足∇f=0且λ=0。
(2)边界解:在约束条件有效的情形下,约束不等式变成等式g(x)=0,这与前述Lagrange乘数法的情况相同。我们可以证明驻点x⋆发生于∇f∈span∇g,换句话说,存在λ使得∇f=−λ∇g,但这里λ的正负号是有其意义的。因为我们希望最小化f,梯度∇f (函数f在点x的最陡上升方向)应该指向可行域K的内部(因为最优解最小值是在边界取得的),但∇g指向K的外部(即g(x)>0的区域,因为约束是小于等于0),因此λ≥0,称为对偶可行性(dual feasibility)。
因此,不论是内部解或边界解,λg(x)=0恒成立,称为互补松弛性(complementary slackness)。整合上述两种情况,最佳解的必要条件包括Lagrangian函数L(x,λ)的定常方程式、原始可行性、对偶可行性,以及互补松弛性:
∇xL=∇f+λ∇g=0g(x)≤0λ≥0λg(x)=0这些条件合称为Karush-Kuhn-Tucker (KKT)条件。如果我们要最大化f(x)且受限于g(x)≤0,那么对偶可行性要改成λ≤0
上面结果可推广至多个约束等式与约束不等式的情况。考虑标准约束优化问题(或称非线性规划):
minf(x)s.t.gj(x)=0,j=1,⋯,m,hk(x)≤0,k=1,⋯,p.定义Lagrangian 函数
L(x,{λj},{μk})=f(x)+m∑j=1λjgj(x)+p∑k=1μkhk(x)其中λj是对应gj(x)=0的Lagrange乘数,μk是对应hk(x)≤0的Lagrange乘数(或称KKT乘数)。
KKT条件包括
∇xL=0gj(x)=0,j=1,⋯,m,hk(x)≤0,μk≥0,μkhk(x)=0,k=1,⋯,p.3. 一个例子
minx21+x22,s.t.x1+x2=1x2≤α,其中(x1,x2)∈R2,α为实数. 写出Lagrangigan函数
L(x1,x2,λ,μ)=x21+x22+λ(1−x1−x2)+μ(x2−α)KKT方程组如下:
∂L∂xi=0,i=1,2x1+x2=1x2−α≤0μ≥0μ(x2−α)=0求偏导可得∂L∂x1=2x1−λ=0 , ∂L∂x2=2x2−λ+μ=0 , 分别解出x1=λ2 且 x2=λ2−μ2. 代入约束等式x1+x2=1, 得x1=μ4+12, x2=−μ4+12
最后再加入约束不等式,−μ4+12≤α,即μ≥2−4α. 下面分三种情况讨论
(1) α>12 : 不难验证μ=0>2−4α 满足所有的KKT条件,约束不等式是无效的,x⋆1=x⋆2=12是内部解,目标函数的最小值是12.
(2) α=12 : 如同1,μ=0=2−4α,满足所有的KKT条件,x⋆1=x⋆2=12是边界解
(3) α<12 : 这时约束不等式是有效的,μ=2−4α>0,则x⋆1=1−α,x⋆2=α,目标函数的极小值是(1−α)2+α2.