文章结构如下:
1: 等式约束优化问题
2: 不等式约束优化问题
3: 一个例子


注:本文来自台湾周志成老师《线性代数》及其博客 Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将Lagrange乘数法(Lagrange multipliers)所处理涉及等式的约束优化问题推广至不等式。在实际应用上,KKT条件(方程组)一般不存在代数解,许多优化算法可供数值计算选用。这篇短文从Lagrange乘数法推导KKT条件并举一个简单的例子说明解法。


1: 等式约束优化问题

给定一个目标函数 KKT条件 - 图1 ,我们希望找到 KKT条件 - 图2 ,在满足约束条件 KKT条件 - 图3 的前提下,使得 KKT条件 - 图4 有最小值。这个约束优化问题记为
KKT条件 - 图5
为方便分析,假设 KKT条件 - 图6KKT条件 - 图7 是连续可导函数。Lagrange乘数法是等式约束优化问题的典型解法。定义Lagrangian函数
KKT条件 - 图8
其中 KKT条件 - 图9 称为Lagrange乘数。Lagrange乘数法将原本的约束优化问题转换成等价的无约束优化问题
KKT条件 - 图10
计算 KKT条件 - 图11KKT条件 - 图12KKT条件 - 图13 的偏导数并设为零,可得最优解的必要条件:
KKT条件 - 图14
其中第一式为定常方程式(stationary equation),第二式为约束条件。解开上面 KKT条件 - 图15 个方程式可得 KKT条件 - 图16 的stationary point KKT条件 - 图17 以及 KKT条件 - 图18 的值(正负数皆可能)。


2: 不等式约束优化问题

接下来我们将约束等式 KKT条件 - 图19 推广为不等式 KKT条件 - 图20 。考虑这个问题
KKT条件 - 图21
约束不等式 KKT条件 - 图22 称为原始可行性(primal feasibility),据此我们定义可行域(feasible region) KKT条件 - 图23 。假设 KKT条件 - 图24 为满足约束条件的最佳解,分开两种情况讨论:
(1) KKT条件 - 图25 ,最佳解位于 KKT条件 - 图26 的内部,称为内部解(interior solution),这时约束条件是无效的(inactive);
(2) KKT条件 - 图27 ,最佳解落在 KKT条件 - 图28 的边界,称为边界解(boundary solution),此时约束条件是有效的(active)。
这两种情况的最佳解具有不同的必要条件。
(1)内部解:在约束条件无效的情形下, KKT条件 - 图29 不起作用,约束优化问题退化为无约束优化问题,因此驻点 KKT条件 - 图30 满足 KKT条件 - 图31KKT条件 - 图32
(2)边界解:在约束条件有效的情形下,约束不等式变成等式 KKT条件 - 图33 ,这与前述Lagrange乘数法的情况相同。我们可以证明驻点 KKT条件 - 图34 发生于 KKT条件 - 图35 ,换句话说,存在 KKT条件 - 图36 使得 KKT条件 - 图37 ,但这里 KKT条件 - 图38 的正负号是有其意义的。因为我们希望最小化 KKT条件 - 图39 ,梯度 KKT条件 - 图40 (函数 KKT条件 - 图41 在点 KKT条件 - 图42 的最陡上升方向)应该指向可行域 KKT条件 - 图43 的内部(因为你的最优解最小值是在边界取得的),但 KKT条件 - 图44 指向 KKT条件 - 图45 的外部(即 KKT条件 - 图46 的区域,因为你的约束是小于等于0),因此 KKT条件 - 图47 ,称为对偶可行性(dual feasibility)
因此,不论是内部解或边界解, KKT条件 - 图48 恒成立,称为互补松弛性(complementary slackness)。整合上述两种情况,最佳解的必要条件包括Lagrangian函数 KKT条件 - 图49 的定常方程式、原始可行性、对偶可行性,以及互补松弛性:
KKT条件 - 图50
这些条件合称为Karush-Kuhn-Tucker (KKT)条件。如果我们要最大化 KKT条件 - 图51 且受限于 KKT条件 - 图52 ,那么对偶可行性要改成 KKT条件 - 图53
上面结果可推广至多个约束等式与约束不等式的情况。考虑标准约束优化问题(或称非线性规划):
KKT条件 - 图54
定义Lagrangian 函数
KKT条件 - 图55
其中 KKT条件 - 图56 是对应 KKT条件 - 图57 的Lagrange乘数, KKT条件 - 图58 $是对应 KKT条件 - 图59 的Lagrange乘数(或称KKT乘数)。KKT条件包括
KKT条件 - 图60 注:感谢评论区 追梦的lin 提出,在使用KKT条件时需要满足Regularity conditions (or constraint qualifications),维基在第三部分有了介绍:> Karush-Kuhn-Tucker conditions 。比较常见的是Linearity constraint qualification (LCQ),即约束条件是仿射函数。


3: 一个例子

考虑这个问题
KKT条件 - 图61
其中 KKT条件 - 图62 为实数。写出Lagrangigan函数
KKT条件 - 图63
KKT 方程组如下:
KKT条件 - 图64
求偏导可得 KKT条件 - 图65KKT条件 - 图66 ,分别解出 KKT条件 - 图67KKT条件 - 图68 。代入约束等式 KKT条件 - 图69KKT条件 - 图70 。合并上面结果,
KKT条件 - 图71
最后再加入约束不等式 KKT条件 - 图72KKT条件 - 图73 。底下分开三种情况讨论。
(1) KKT条件 - 图74 :不难验证 KKT条件 - 图75 满足所有的KKT条件,约束不等式是无效的, KKT条件 - 图76 是内部解,目标函数的极小值是 KKT条件 - 图77
(2) KKT条件 - 图78 :如同1, KKT条件 - 图79 满足所有的KKT条件, KKT条件 - 图80 是边界解,因为 KKT条件 - 图81
(3) KKT条件 - 图82 :这时约束不等式是有效的, KKT条件 - 图83 ,则 KKT条件 - 图84KKT条件 - 图85 ,目标函数的极小值是 KKT条件 - 图86


4: 参考文献

周志成:《线性代数》,国立交通大学出版社
Karush-Kuhn-Tucker (KKT) 條件