惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
宝玉的分享
宝玉的分享
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
P
Proofpoint News Feed
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Martin Fowler
Martin Fowler

博客园 - ace--碳水化合物

用ClaudeCode改简历 韦达定理 韦达定理1 梯形1 总平均分 m1 曲线相关 曲线 不等式 抛硬币 错位排列"(全错位)问题 11 1 两圆阴影面积 English1 Tidio 官方帮助中心 ERP 相关系统介绍 蝉翼定理 选配法 利润最大化公式 写在失业的一段话 排列组合-组合 在线简历 概率论与数理统计学习章节 绝对值 比例五大定理 算术平均值与几何平均值 等价符号 公因数与最大公因数 容斥原理
Karush-Kuhn-Tucker 条件
ace--碳水化合物 · 2026-05-26 · via 博客园 - ace--碳水化合物

Karush-Kuhn-Tucker (KKT) 条件,是判断一个点是否为约束优化问题最优解的必要条件。对于你刚才问的凸二次规划,它甚至是充分必要条件——满足了 KKT,就找到了全局最优解。


1. 它解决什么问题?

一般优化问题形式:

最小化  f(x)
满足   g_i(x) ≤ 0  (i=1,...,m)   —— 不等式约束
       h_j(x) = 0  (j=1,...,l)   —— 等式约束

KKT 条件把有约束的优化问题,转化成一个方程组/不等式组的求解问题。如果候选点 x* 是局部最优解,并且满足一定的“正则性条件”,那么必然存在乘子 μ_iλ_j,使以下条件成立。


2. KKT 条件(四个部分)

① 稳定性条件(梯度条件)

拉格朗日函数对变量 x 的梯度为零:

∇f(x*) + Σ μ_i ∇g_i(x*) + Σ λ_j ∇h_j(x*) = 0

这是“在约束边界上,目标函数的负梯度方向必须落在约束梯度张成的锥里”的数学表达。简单理解:在约束包围下,没有可行的下降方向了。

② 原始可行性

g_i(x*) ≤ 0,   h_j(x*) = 0

点必须在可行域内,这是基本要求。

③ 对偶可行性(乘子符号)

对于不等式约束的乘子:

μ_i ≥ 0

它保证约束形成的“推”力是朝向可行域内部的,而不是反向。

④ 互补松弛条件

μ_i · g_i(x*) = 0  (对每个不等式约束 i)

这意味着:

  • 如果约束生效g_i(x*) = 0,处于边界),乘子 μ_i 可以 > 0。
  • 如果约束未生效g_i(x*) < 0,在内部),乘子 μ_i 必须等于 0

它把“哪些约束真正在起作用”这件事自动编码到了乘子里。


3. 对凸二次规划的特殊之处

凸二次规划:

最小化  (1/2)xᵀQx + cᵀx
满足    Ax ≤ b
  • 目标函数是凸的(Q 半正定),约束是线性的。
  • 线性约束自动满足正则性条件,因此 KKT 条件是最优解的充分必要条件
  • 直接写出它的 KKT 系统:
Qx* + c + Aᵀμ = 0        (稳定性)
Ax* ≤ b                  (原始可行性)
μ ≥ 0                    (对偶可行性)
μᵀ(b - Ax*) = 0          (互补松弛)

这是一个混合线性互补问题,也是内点法、增广拉格朗日法等算法实际求解的系统。


4. 直觉理解:互补松弛是关键

想象一个简单的二次规划:

最小化  x²
满足    x ≥ 1
  • 无约束时,最优解是 x = 0
  • 加了 x ≥ 1 约束后,最优解是 x* = 1,约束生效。
  • 拉格朗日函数:L = x² - μ(x - 1)
  • KKT 条件:
    • 稳定性:2x - μ = 0μ = 2
    • 原始可行性:x ≥ 1
    • 对偶可行性:μ = 2 ≥ 0
    • 互补松弛:μ(x - 1) = 2 × 0 = 0

如果约束改成 x ≥ -5(不生效),最优解就是 x* = 0

  • 稳定性:2x - μ = 0μ = 0
  • 互补松弛:μ(x + 5) = 0 × 5 = 0
  • 乘子 μ 自动归零,约束“隐身”。

KKT 条件的精髓正在于此:它用乘子和互补松弛条件,优雅地区分了“起作用”和“不起作用”的约束。