卡罗需-库恩-塔克条件(Karush-Kuhn-Tucker conditions)
/ Karush: KAR-oosh; Kuhn: koon; Tucker: TUK-er /
拉格朗日乘数把等式约束处理得很漂亮,但真实问题还带着不等式:守住预算,让量保持非负,不超过产能。卡罗需-库恩-塔克条件,简称 KKT,是这类混合问题的最优点必须满足的一阶必要条件总集。它们是现代受约束优化的基石。
它有四个组成部分。稳定性:目标梯度被各约束梯度的加权和所平衡,grad f = sum of mu_i 乘 grad g_i 加上等式项——正是拉格朗日条件的推广。原始可行性:该点确实服从全部约束。对偶可行性:不等式约束上的乘数符号正确(标准设置下为非负),因为单边围栏只能推、绝不能拉。还有互补松弛,最微妙的一条:对每条不等式,要么约束起作用(紧绷,g = 0),要么它的乘数为零——你不能让一条松弛的约束仍然施力。互补松弛恰恰是起作用与否的代数表述。
KKT 是线性规划、二次规划、支持向量机、最优控制和经济均衡模型背后的引擎。关键的诚实之处:KKT 条件作为最优的必要条件,仅在某个约束品性条件(起作用约束梯度的某种正则性)下成立,而且一般而言它们是必要而非充分的——一个点可以满足 KKT 却仍非最优。最大的例外是凸问题:在那里,若约束良好,KKT 既必要又充分,任何 KKT 点都是全局最优。这正是凸性如此被看重的原因。
在 x 大于等于 1(写作 g(x) = 1 - x 小于等于 0)下求 f(x) = x^2 的极小。KKT 稳定性给出 2x - mu = 0 且 mu 大于等于 0,互补松弛为 mu(1 - x) = 0。约束起作用:x = 1, mu = 2,即受约束极小。
互补松弛迫使约束要么紧绷、要么乘数为零——这里约束是紧绷的。
在非凸问题中,KKT 点只是候选——是必要而非充分条件。只有对满足约束品性的凸问题,满足 KKT 才保证真正的全局最优。