本页目录
优化 III · 对偶与 KKT 条件
约束优化的两大支柱:Lagrange 对偶(把可写成 Lagrangian 的问题映成一个凹的对偶函数,给出下界与边际价值信息)与 KKT 条件(把“导数为零”改写成约束几何中的平衡)。对偶函数总是凹,并不保证对偶问题自动更容易;数分 V 的 Lagrange 乘数法在这里补全不等式约束的另一半,ai 课 02 讲 SVM 对偶推导的每一步也都有出处。
学习层:目标点撞上三角形后,哪条边接住它?
1. 具体谜题:把无约束目标投回资源三角形
给定目标点 \(q=(a,b)\) 与资源 \(R>0\),考虑
无约束时答案就是 \(q\);加入约束后,答案是 \(q\) 到可行三角形的欧氏投影。谜题是:目标点被哪一条边或哪个角点“接住”?等高线在最优点处为什么不再需要与坐标轴正交,而是由若干条约束法向量共同平衡?
2. 先预测:操作前先写下活动集和乘子
不要先拖滑块。对下面四组确定性输入,先猜 \(z^*=(x^*,y^*)\)、活动边,以及非零乘子:
- \(q=(1.2,0.8),R=3\):目标点在三角形内。
- \(q=(2.2,1.8),R=3\):资源边 \(x+y=R\) 会不会绷紧?
- \(q=(-0.8,-0.4),R=3\):原点角点处两条坐标边同时活动时,\(\lambda_x,\lambda_y\) 各是多少?
- \(q=(4.1,-0.6),R=3\):右下角 \((R,0)\) 处,资源边与 \(y=0\) 的法向量如何共同抵消目标梯度?
预测的检查标准不是“看起来离目标最近”,而是四个残差都为零(数值显示只会有舍入误差):原始可行、对偶可行、平稳性、互补松弛。
3. 最小模型:三个不等式和一个法锥平衡
把约束写成
对应的 Lagrange 函数和梯度平稳性是
这是一个严格凸二次目标加多面体约束,因此最优点唯一。实验使用有限的活动集枚举,等价于比较三个边投影和三个顶点:
再把可行的无约束点 \(q\) 和三个角点 \((0,0),(R,0),(0,R)\) 一并比较 \(f\)。这不是随机搜索:每一步都可手算复核,且在边界处保留“约束紧但乘子为零”的可能性。
4. 可操作步骤:让等高线和账本同时说话
- 先选一组参数,提交活动集预测并揭示结果;再拖动 \(a,b,R\) 滑块,把目标点推过一条边或一个角。
- 图中细线是等高线,三角形是可行域,红点是无约束目标 \(q\),蓝点是唯一最优点;粗边表示 \(g_i(z^*)=0\)。
- 观察最优点旁的 \(\nabla f(z^*)\) 与 \(\sum_i\lambda_i\nabla g_i(z^*)=-\nabla f(z^*)\) 两个相反向量,再读下方四项 KKT 账本。
- 把目标点调到一条边上,检查“活动”不必等于“\(\lambda_i>0\)”;调到角点,检查两条活动边的乘子如何共同完成平稳性。
5. 误区与边界:图形不能替定理补条件
- 活动不等于收费。 \(g_i(z^*)=0\) 只表示约束紧;互补松弛给出 \(g_i<0\Rightarrow\lambda_i=0\) 和 \(\lambda_i>0\Rightarrow g_i=0\),但允许 \(g_i=0,\lambda_i=0\)。
- 角点不是“梯度为零”。 角点的目标梯度通常不为零,其负向量落在活动约束梯度生成的法锥中;图中两条法向量的加权和正是在表达这一点。
- “KKT iff”需要前提。 本实验是凸、可微、\(R>0\) 的多面体问题,\((R/3,R/3)\) 给出 Slater 点,所以 KKT 对全局最优是充要的。一般凸问题还要说明闭性、可解性和适当的 constraint qualification;非凸光滑问题在 LICQ/MFCQ 等约束资格下,KKT 通常只是局部极小的必要条件,缺少约束资格时甚至可能没有 KKT 乘子,更不提供全局充分性。
- 强对偶也有边界。 Slater 是凸问题中保证零对偶间隙(并在标准有限性条件下保证乘子取得)的充分条件,不是所有强对偶实例的必要条件;若 Slater 失败,不能仅凭“凸”推出强对偶或对偶最优解存在。
6. 回到定理:把一次投影读成四组 KKT 条件
对这个实验,任意一组满足原始可行、\(\lambda\ge0\)、\(\nabla f+\sum_i\lambda_i\nabla g_i=0\)、\(\lambda_i g_i=0\) 的 \(z,\lambda\),都已经是全局最优的 KKT 证书;严格凸性再保证 \(z\) 唯一。对偶函数给出同一个结论的另一种语言:乘子把不可行方向的目标梯度“定价”,在最优点把约束法向量合成为反向梯度。
7. 迁移问题:换模型时,哪些结论还在?
若把目标换成 \(\frac12(z-q)^\top Q(z-q)\) 且 \(Q\succ0\),投影仍唯一,但欧氏垂足公式会被 \(Q\) 改变;你会如何重新写平稳性和每条边的候选解?若把资源右端 \(R\) 作为参数,\(\lambda_R\) 什么时候可读作最优值对 \(R\) 的边际改善率?最后比较约束形式 \(\|w\|\le t\) 与惩罚形式 \(f(w)+\lambda\|w\|\):在适当凸性、闭性和可解性条件下可以找到匹配的参数,但 \(t\leftrightarrow\lambda\) 不保证对任意参数一一对应,非光滑或解路径平台处尤其如此。
先独立完成下面两题,再打开答案:
- 取 \(Q=\operatorname{diag}(4,1)\)、\(q=(2,2)\)、\(R=3\)。求最优点、三个乘子,并判断资源增加 \(0.01\) 时的最优值一阶变化。
- 最小化 \(f(x)=x\),约束 \(x^2\le0\)。最优点存在吗?它有 KKT 乘子吗?由此指出哪一个资格条件失效。
迁移题参考答案:加权投影、影子价格与资格失败
写 \(Q=\begin{pmatrix}A&C\\C&B\end{pmatrix}\succ0\)。在 \(x=0\) 边,把目标当成 \(y\) 的一元二次式,导数为 \(-Ca+B(y-b)\),候选 \(y=\operatorname{clip}(b+Ca/B,0,R)\);在 \(y=0\) 边,候选 \(x=\operatorname{clip}(a+Cb/A,0,R)\)。在资源边置 \(z=(u,R-u)\),方向向量为 \(v=(1,-1)\);令 \(v^TQ(z-q)=0\) 得
分母 \(v^TQv>0\),因此每边只有一个极小候选。加上可行的 \(q\),比较目标即可;被 clip 截到端点时,仍需按角点检验乘子。
第 1 题资源边解为 \(x=9/5,y=6/5\),\(Q(z-q)=(-4/5,-4/5)\),故 \(\lambda_R=4/5\),其余为零。最优值 \(2/5\)。在活动集不变的小邻域内,\(p(R)=\frac25(4-R)^2\),所以 \(p'(3)=-4/5\);增加 \(0.01\) 的一阶预测是减少 \(0.008\)(精确减少 \(0.00796\))。值函数转折处则应使用次梯度,不能硬求唯一导数。
第 2 题唯一可行点 \(x=0\) 当然最优,但平稳性要求 \(1+\lambda(2x)=0\),在零点不可能成立。它是凸问题,却没有严格可行点;活动约束梯度也为零。凸性保证已有 KKT 证书的充分性,并不能凭空造出乘子。
无 JavaScript 时的静态读法:四个预设的精确答案如下。内点为 \((1.2,0.8)\),活动集为空且三个乘子均为 \(0\);\((2.2,1.8),R=3\) 投影为 \((1.7,1.3)\),只有 \(x+y=R\) 活动且 \(\lambda_R=0.5\);\((-0.8,-0.4),R=3\) 投影为 \((0,0)\),\((\lambda_x,\lambda_y,\lambda_R)=(0.8,0.4,0)\);\((4.1,-0.6),R=3\) 投影为 \((3,0)\),\((\lambda_x,\lambda_y,\lambda_R)=(0,1.7,1.1)\)。滑块实验只是在这些可复核公式之间连续移动,不使用随机数;改变参数会清除旧预测。
无 JavaScript 时的静态读法:阅读上面的投影公式和四个预设答案即可;JavaScript 开启后,这个占位区域会显示同一组计算的 SVG 与残差账本。
1. 问题形式与 Lagrange 函数
标准形:
Lagrange 函数(给每条约束配一个"价格"):
关键观察(把内层 \(\max\) 理解为上确界):\(\sup_{\lambda \geq 0, \nu} L = \begin{cases} f(x) & x \text{ 可行} \\ +\infty & \text{违反某条不等式或等式} \end{cases}\)。因此在扩展实数意义下,原问题的值可写成 \(\inf_x\sup_{\lambda,\nu}L\);这是把不可行点标成 \(+\infty\) 的值函数恒等式,不等于说外层极小值或内层乘子一定取得(ai 课 02 讲 SVM 推导开头的那句话在此验明)。
2. 对偶问题
对偶函数:\(d(\lambda, \nu) = \inf_x L(x, \lambda, \nu)\);\(\inf\) 不一定在某个有限 \(x\) 上取得。
性质一(凹性,无条件成立):\(d\) 是 \((\lambda,\nu)\) 的仿射函数族的逐点下确界 ⇒ 恒为凹函数(优化 I 保凸运算)。所以对偶的“最大化凹函数”可按凸优化的形式处理,但不保证它比原问题更容易,也不保证对偶最优解取得——哪怕原问题极度非凸,弱对偶仍然成立。
性质二(弱对偶,无条件成立):对任意可行 \(x\) 与 \(\lambda \geq 0\):
一行证明:\(d(\lambda,\nu) = \inf_z L \leq L(x,\lambda,\nu) = f + \underbrace{\textstyle\sum\lambda_i g_i}_{\leq 0} + \underbrace{\textstyle\sum \nu_j h_j}_{=0} \leq f(x)\)。——对偶给原问题免费下界(分支定界、验证解质量都靠它)。
强对偶 \(d^* = p^*\)(对偶间隙为零):一般不成立。对 proper、闭凸的目标和不等式函数、仿射等式约束,在原问题可行且最优值有限,并存在位于公共定义域相对内部、满足等式且对所有不等式严格可行的点(Slater 点),则零对偶间隙成立,且对偶最优乘子取得。等式约束不要求“严格”。Slater 是凸问题中的充分约束资格,不是每个强对偶实例的必要条件;若 Slater 失败,不能只凭凸性推出强对偶或对偶最优解存在。线性规划则由 LP 对偶定理给出更专门的结论:在相应问题可行且最优值有限时,原/对偶最优值相等(不必把 LP 生硬套成一般非线性 Slater 论证,详见优化 IV)。
影子价格解读:若把约束参数化为 \(a_i(x)\le b_i\),并记最优值函数为 \(p^*(b)\),在强对偶、适当可解性和局部正则性下,任一匹配的最优乘子满足 \(-\lambda^*\in\partial p^*(b)\);若 \(p^*\) 在该点可微,才可写成 [ \frac{\partial p^}{\partial b_i}=-\lambda_i^. ] 因此放松 \(b_i\) 一单位的局部最优值变化约为 \(-\lambda_i^*\),符号依赖于你把右端写在不等式哪一侧。若值函数不可微,影子价格可能是一个集合;\(\lambda_i^*=0\) 对非活动约束是必然的,但活动约束也可能因退化而有零乘子,所以不能把零乘子直接等同于“全局不稀缺”。
3. KKT 条件(本页顶点)
定理(凸问题的 KKT 充要性) 设 \(f,g_i\) 可微凸、\(h_j\) 仿射;若原问题可行、最优值有限,并满足 Slater 等适当约束资格,则 \(x^*\) 为全局最优 \(\iff\) 存在 \((\lambda^*,\nu^*)\) 满足四组 KKT 条件。任意满足这四组条件的三元组都是原/对偶最优并给出零对偶间隙;一般凸不可微时,把梯度平稳性改成次梯度包含关系。这里的“存在乘子”是结论的一部分,不能仅由一句“强对偶成立”无条件推出,因为还要排除对偶最优不取得、目标不可微或约束资格失败等情况。
(凸问题 + 适当 CQ 下是充要条件;对非凸问题,若局部极小点满足 LICQ、MFCQ 等约束资格,KKT 通常只是必要条件。没有 CQ 时,局部极小点可能没有 KKT 乘子;即使有,KKT 点也可能是鞍点或非全局最优点。)
逐条读:第 1 条是数分 V Lagrange 乘数法的推广(目标梯度被约束梯度的锥组合抵消);第 4 条是灵魂——\(g_i<0\) 时必有 \(\lambda_i=0\),\(\lambda_i>0\) 时必有 \(g_i=0\),但 \(g_i=0,\lambda_i=0\) 也完全允许。价格机制的读法是局部边际信息,而不是对所有参数扰动都成立的绝对稀缺性判定。
🔗 AI 衔接对账:SVM 的支持向量(ai 课 02 讲)正是互补松弛的产物——按所选标准形记号,严格位于间隔约束外侧的点满足 \(g_i<0\) ⇒ \(\alpha_i=0\),而 \(\alpha_i>0\) 的点必在间隔边界上;边界点取零乘子也可能是退化情形。岭回归/Lasso 的约束形式 \(\|w\|\le t\) 与惩罚形式 \(f(w)+\lambda\|w\|\) 来自同一个拉格朗日/值函数视角,但并非对任意 \(t,\lambda\) 一一等价;在适当凸性、闭性、可解性和强对偶条件下,才可以讨论某个约束解与某个乘子参数的匹配,且解路径平台会造成多对一或参数区间。
4. 求解套路与例题
KKT 手算流程:按互补松弛对"哪些约束绷紧"分类讨论 → 每种情形解平稳性方程 → 验可行性与 \(\lambda \geq 0\) → 比较候选点。
例 1(完整 KKT 流程) \(\min x_1^2 + x_2^2\) s.t. \(x_1 + x_2 \geq 4\)(即 \(g = 4 - x_1 - x_2 \leq 0\))。 解:\(L = x_1^2 + x_2^2 + \lambda(4 - x_1 - x_2)\)。平稳性:\(2x_1 = \lambda,\ 2x_2 = \lambda\) ⇒ \(x_1 = x_2\)。情形 A(先试 \(\lambda = 0\),并不预先断言约束松弛):\(x = (0,0)\) 违反可行性,弃。情形 B(绷紧 \(x_1 + x_2 = 4\)):\(x^* = (2,2),\ \lambda^* = 4 \geq 0\) ✓。最优值 8。(几何:原点到直线的投影——最近点问题的 KKT 面目。)
例 2(对偶推导演练) 对例 1 构造对偶:\(d(\lambda) = \inf_x L = -\frac{\lambda^2}{2} + 4\lambda\)(对 \(x\) 配方),\(\sup_{\lambda \geq 0} d\) 得 \(\lambda^* = 4\),\(d^* = 8 = p^*\)——强对偶亲手验证一次(凸 + Slater 显然)。
例 3(水填充,信息论名例) \(\max \sum_i \ln(x_i + a_i)\) s.t. \(\sum x_i = 1,\ x_i \geq 0\)(功率分配,设有限个信道、每个 \(a_i>0\))。KKT 给出 \(x_i^* = \max(0,\ \tfrac{1}{\nu} - a_i)\)。推导时最小化 \(-\sum_i\log(x_i+a_i)\),取 \(L=-\sum_i\log(x_i+a_i)+\nu(\sum_i x_i-1)-\sum_i\lambda_i x_i\);平稳性为 \(-1/(x_i+a_i)+\nu-\lambda_i=0\)。若 \(x_i>0\) 则 \(\lambda_i=0\),若 \(x_i=0\) 则 \(\nu\ge1/a_i\);合并得到上述截断式,再由 \(\sum_i\max(0,w-a_i)=1\) 确定水位 \(w=1/\nu\)。例如 \(a=(0.2,0.6,1.4)\) 时 \(w=0.9\),分配 \((0.7,0.3,0)\);第三条信道没有分到功率,正是互补松弛的结果。\(\blacksquare\)
5. 收束:对偶的思维价值
对偶不只是技巧,是一种换视角:原问题问"怎么分配变量",对偶问题在适当正则性下问"每条约束的局部边际价值是多少"。同一个最优解,两套语言互为镜像(互补松弛是镜面)。这个视角在经济学(影子价格)、组合优化(最大流-最小割)、机器学习(SVM 对偶把数据表示为内积,便于用核替代;RKHS 原始表述也可使用核)反复变现——遇到难优化问题,先写对偶看看是受用终身的动作,但要同时检查可行性、间隙和乘子是否取得。
下一页:约束优化最重要的特例——线性规划:单纯形法、LP 对偶,以及动态规划一瞥。
先修与来源:先补 凸性与一阶条件、多元微分与乘子法,再到 LP/DP。对偶、Slater 与 KKT 的完整条件见 Boyd–Vandenberghe 《Convex Optimization》第 5 章讲义。