设想你帮朋友小民租房。他有三条铁律:月租不超过 5000 元、通勤不超过 3 小时、必须有朝南窗户。他要在这三条铁律里花最少的钱——这是“原始问题”。但谈判桌另一侧,中介小王心里也有一套算法:他悄悄估量小民对每条铁律的“重视程度”,把它们折算成心理单价,然后反向报出一个尽量高的价。一个是“在约束下省钱”,一个是“借对方的偏好抬价”——同一场交易,两个视角。优化对偶理论就是研究这两个视角的数学:它们各自如何表述、谁高谁低、什么时候能恰好成交,以及成交时合同上该写什么。读完之后你会发现,SVM、求解器这些 AI 里的“硬骨头”,本质上都是这场谈判的不同章节。

岗位关联

对偶理论是凸优化世界的“透视镜”:它让你读懂 SVM、Lasso 等模型推导的本质,也能在工程中帮你判断“近似解离最优还有多远”,是算法工程师的必修内功。

目录
  1. 可视化演示
  2. 拉格朗日对偶 —— 给每条铁律贴一张“心理单价”
  3. 对偶问题构造 —— 中介反向抬价的数学表达
  4. 弱对偶性 —— 报价永远不会低于你的底线
  5. 强对偶性与 Slater 条件 —— 零差价成交的秘密
  6. KKT 充要条件 —— 成交合同的四条条款
  7. SVM 对偶应用 —— 只拜访“钉子户”的中介
  8. 内点法实践 —— 垫着弹性垫子慢慢磨价
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

拉格朗日对偶 —— 给每条铁律贴一张“心理单价”

小民嘴上说“这三条铁律缺一不可”,可中介小王精得很:他知道小民心里其实每个条件都有价码——通勤多 1 小时,他愿意多付 80 元来节省;若是没有南窗,他愿意每月少付 300 元来补偿。硬邦邦的条件清单,就这样被翻译成了一张“单价表”,原本不可通融的约束变成了可以计算的成本。

数学上,原始优化问题写作 min f(x),受不等式约束 g_i(x) ≤ 0 与等式约束 h_j(x) = 0 的限制。我们给每个约束配一个“心理单价”——拉格朗日乘子 λ_i、ν_j——把约束乘上单价塞进目标函数,就得到拉格朗日函数:

有了单价表,小民会在所有候选房里挑“综合开销”最低的一套。对给定的一组乘子,这个最低值就是对偶函数:g(λ,ν) = inf_x L(x,λ,ν)。注意 inf 是在所有 x 上取,不管 x 是否可行——约束被“软化”之后的代价是:任何方案都能被计算,只是不满足条件会被罚分。

对偶函数像中介的“摸底报告”:给定一套心理单价,先算出你可能接受的最低综合开销。但这只是摸底——真正报价还得靠下一步的反向操作。

L(x,λ,ν)=f(x)+∑i=1mλigi(x)+∑j=1pνjhj(x),λi≥0L(x,\lambda,\nu) = f(x) + \sum_{i=1}^{m}\lambda_i g_i(x) + \sum_{j=1}^{p}\nu_j h_j(x), \qquad \lambda_i \ge 0
拉格朗日函数就是把“条件清单”翻译成“加权罚金”:目标开销打底,违反条件就按单价扣钱。
  1. 目标项 f(x)这是原始开销本身,对应小民的月租总支出,是整个问题的“主线”。
    f(x)\displaystyle f(x)
  2. 不等式约束加权项λ_i ≥ 0 表示“单价从不为负”。g_i(x) ≤ 0 表示条件已满足,配上非负乘子,整体 Σλ_i g_i(x) ≤ 0——保证拉格朗日函数不会无端夸大开销。
    ∑i=1mλigi(x),λi≥0\displaystyle \sum_{i=1}^{m}\lambda_i g_i(x), \quad \lambda_i \ge 0
  3. 等式约束加权项等号约束没有方向,所以乘子 ν_j 可正可负,就像“多退少补”的尾款结算。
    ∑j=1pνjhj(x)\displaystyle \sum_{j=1}^{p}\nu_j h_j(x)

对偶问题构造 —— 中介反向抬价的数学表达

小王拿到了小民的心理单价表,接下来他要做的,是把单价往高了抬:单价越高,综合开销的底线压得越低,他可报的价格就越贴近你的真实上限。但单价不能乱抬——得遵守 λ ≥ 0 的规矩,否则逻辑上就讲不通。

数学上,对偶函数 g(λ,ν) 对任何乘子都给出原始最优值的一个下界。我们要在所有合法乘子中挑选使下界最大的那一组,这就是对偶问题:

无论原始问题多么“野”,对偶问题一定是凸优化:对偶函数是一族关于乘子仿射的函数的逐点下确界,天然是凹函数,“求最大”恰好站在“求最小”的对立面。这个结构性红利把复杂问题换成了一个好问题——代价是可能出现对偶间隙,也就是两个视角之间有落差。

中介的报价策略有了完整数学模型:先摸底、再抬价、规则清晰。但他报的价和小民的真实底线到底谁高谁低?这正是弱对偶性要回答的问题。

max⁡λ≥0,  ν  g(λ,ν)=max⁡λ≥0,  ν  inf⁡x  L(x,λ,ν)\underset{\lambda \ge 0,\;\nu}{\max}\; g(\lambda,\nu) = \underset{\lambda \ge 0,\;\nu}{\max}\; \inf_{x}\; L(x,\lambda,\nu)
对偶问题的本质是“两层嵌套”:内层先求最低综合开销,外层再挑单价把这个底线抬到最高。
  1. 内层取 inf给定一组乘子,先在全部候选方案中挑出综合开销最低的一个——这是“摸底”。
    inf⁡x  L(x,λ,ν)\displaystyle \inf_{x}\; L(x,\lambda,\nu)
  2. 外层取 max在乘子合法(λ ≥ 0)的范围内,把“摸底底线”抬到最高——这是“抬价”。
    max⁡λ≥0,  ν\displaystyle \max_{\lambda \ge 0,\; \nu}
  3. 乘子符号约束λ_i ≥ 0 对应不等式方向,ν_j ∈ ℝ 对应等式——两条谈判规则缺一不可。
    λi≥0,νj∈R\displaystyle \lambda_i \ge 0, \quad \nu_j \in \mathbb{R}

弱对偶性 —— 报价永远不会低于你的底线

无论小王怎么精打细算,有一个规律他撼动不了:他报的价,永远不会高于小民愿意付的价——更准确说,永远不低于小民真实的心理底线。原因很朴素:小民的底线是在所有真实房源里精挑细选得出来的;而小王只是拿着一套估算的单价表算了个近似值,近似值怎么可能比真值更优?

数学证明同样朴素。对任意可行 x 与任意 λ ≥ 0,因为 g_i(x) ≤ 0 且 λ_i ≥ 0,所以 Σλ_i g_i(x) ≤ 0,于是 L(x,λ,ν) ≤ f(x)。对左边取下确界,立刻得到 g(λ,ν) ≤ p*,其中 p* 是原始最优值;再对左边取最大值,就得到 d* ≤ p*:

弱对偶的工程价值非同小可:当你只能求一个近似解或启发式解时,对偶问题给出的 d* 就是一把“理论下限标尺”,用来度量近似解与最优解之间到底差多远。AI 训练里很多收敛判据,本质上都在量这把尺子。

报价 ≤ 底价,这是谈判的安全护栏。但若报价永远到不了底线,成交就无从谈起。什么时候能零差价成交?那就要请出强对偶性与 Slater 条件。

g(λ,ν)  ≤  p∗,p∗−d∗  ≥  0g(\lambda,\nu) \;\le\; p^{*}, \qquad p^{*} - d^{*} \;\ge\; 0
弱对偶是“免费的午餐”:不需要任何凸性假设,永远成立,对偶间隙永远非负。
  1. 关键不等式乘子非负 + 约束非正,推出惩罚项非正,拉格朗日函数成为目标的一个“不夸大”的版本。
    λi≥0,  gi(x)≤0  ⟹  λigi(x)≤0  ⟹  L≤f\displaystyle \lambda_i \ge 0,\; g_i(x) \le 0 \;\Longrightarrow\; \lambda_i g_i(x) \le 0 \;\Longrightarrow\; L \le f
  2. 两边取 inf对一切可行 x 成立的不等式,取下确界后仍成立,故对偶函数是 p* 的下界。
    inf⁡x  L(x,λ,ν)≤p∗\displaystyle \inf_x\; L(x,\lambda,\nu) \le p^{*}
  3. 对偶间隙原始最优值减对偶最优值永远非负,这个差值就是谈判空间。
    p∗−d∗≥0\displaystyle p^{*} - d^{*} \ge 0

强对偶性与 Slater 条件 —— 零差价成交的秘密

什么情况下报价恰好等于底线?小民发现,中介之所以敢把价格顶到最高,是因为房源市场足够“厚”:存在一套各方面都留有余地的候选房——通勤 2.5 小时、月租 4800、有窗还朝南。这套“备胎房”给了谈判足够的缓冲,让双方没有死磕空间,价格一碰即合。

数学上的对应是:若原始问题是凸优化(目标与不等式约束凸、等式约束仿射),并且存在一个严格可行点 x̂ 满足所有不等式 g_i(x̂) < 0,即 Slater 条件,则强对偶成立,对偶间隙为零:

Slater 条件本质上保证一定存在一个支撑超平面(对应一组乘子),能把目标值集合与“理想方向”完美分开。机器学习里,带正则化的凸模型(软间隔 SVM、Lasso)几乎都满足 Slater,所以强对偶在 AI 领域几乎“默认生效”——这正是我们能放心把 SVM 换成对偶形式来解的根本原因。

零差价成交意味着合同可以写得明明白白。成交合同上该有哪些条款?那就是 KKT 条件的故事。

∃ x^:  gi(x^)<0  (∀i),f,  gi convex,  hj affine  ⟹  d∗=p∗\exists\,\hat{x}:\; g_i(\hat{x}) < 0\;(\forall i), \quad f,\; g_i\ \text{convex},\; h_j\ \text{affine}\;\Longrightarrow\; d^{*} = p^{*}
Slater 条件说:可行域必须有“内部”,不能只剩一条贴边的缝。有缓冲,才能零差价成交。
  1. 凸性前提原问题必须是凸优化问题——这是强对偶成立的“体质要求”。
    f,  gi convex,hj affine\displaystyle f,\; g_i\ \text{convex}, \quad h_j\ \text{affine}
  2. Slater 条件存在一个点使所有不等式约束严格成立,即留有余量而非贴边。
    ∃ x^:  gi(x^)<0\displaystyle \exists\,\hat{x}:\; g_i(\hat{x}) < 0
  3. 零间隙结论在以上条件下对偶最优值等于原始最优值,两个视角完全对齐。
    d∗=p∗\displaystyle d^{*} = p^{*}

KKT 充要条件 —— 成交合同的四条条款

成交那天,中介掏出一份合同,只有四条条款:第一条,你选的方案在所有候选里综合开销最低;第二条,只有真正紧绷到极限的条件才会被收费,宽松的条件分文不取;第三条,方案必须满足所有硬条件;第四条,单价没有负价。小民逐项打勾,全部通过,签字。

当强对偶成立且函数可微时,x* 与 (λ, ν) 分别是最优解,当且仅当它们一起满足 KKT 条件。其中核心的两条公式是平稳性与互补松弛:

对凸问题 + Slater,KKT 是最优性的充要条件;对非凸问题,它只是必要条件。机器学习里互补松弛有极漂亮的直观:SVM 中只有落在间隔边界上(约束取等)的样本,其对偶变量 α_i 才非零——这些“钉子户”就是支持向量,其余样本对模型毫无贡献。

合同签完,理论闭环了。但小民好奇:这套谈判模型,在真实世界的 AI 算法里到底怎么当主角?下一节看 SVM。

∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1pνj∗∇hj(x∗)=0,λi∗gi(x∗)=0\nabla f(x^{*}) + \sum_{i=1}^{m}\lambda_i^{*}\nabla g_i(x^{*}) + \sum_{j=1}^{p}\nu_j^{*}\nabla h_j(x^{*}) = 0, \qquad \lambda_i^{*} g_i(x^{*}) = 0
KKT 条件是“成交合同”:每条条款都是一条数学等式或不等式,全部打勾才成交。
  1. 平稳性目标梯度与所有约束梯度的加权和为零,几何上是“最优点的等高线被约束面刚好托住”。
    ∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1pνj∗∇hj(x∗)=0\displaystyle \nabla f(x^{*}) + \sum_{i=1}^{m}\lambda_i^{*}\nabla g_i(x^{*}) + \sum_{j=1}^{p}\nu_j^{*}\nabla h_j(x^{*}) = 0
  2. 互补松弛乘子与约束值至少一个为零——约束没绷紧,乘子(收费单价)就必须是零。
    λi∗gi(x∗)=0\displaystyle \lambda_i^{*} g_i(x^{*}) = 0
  3. 可行性条件原始可行 g_i(x*) ≤ 0、h_j(x*) = 0 与对偶可行 λ_i* ≥ 0 同样不可或缺,否则合同自相矛盾。
    gi(x∗)≤0,hj(x∗)=0,λi∗≥0\displaystyle g_i(x^{*}) \le 0, \quad h_j(x^{*}) = 0, \quad \lambda_i^{*} \ge 0

SVM 对偶应用 —— 只拜访“钉子户”的中介

小民后来当了算法工程师,遇到一个分类任务。他发现自己就是在当“聪明中介”:几百个样本里,真正决定分类边界的是少数几个“态度最硬”的样本(支持向量),与它们相比,其余样本无论怎么改都不影响最终价格——不影响模型。

软间隔 SVM 的原始问题是 min ½‖w‖² + CΣξ_i,约束 y_i(w·x_i + b) ≥ 1 - ξ_i。做拉格朗日对偶化(对 w、b 求平稳性并代入)之后,得到只含对偶变量 α 的SVM 对偶问题:

这就是对偶的红利三连:第一,内积可以被任何核函数替换,自动获得非线性分类能力;第二,计算复杂度只依赖样本数 n 而非特征维数;第三,KKT 的互补松弛直接告诉我们哪些是支持向量。SMO 算法逐对更新 α 的每一步,本质上都是在“拜访钉子户”。

中介只盯钉子户,SVM 只留支持向量——同一个故事换了场景。可如果谈判双方条件极多、局面复杂,中介还需要一套“磨价”的工程手段——内点法登场。

max⁡α  ∑i=1nαi−12∑i=1n∑j=1nαiαjyiyj⟨xi,xj⟩,s.t.0≤αi≤C, ∑i=1nαiyi=0\max_{\alpha}\; \sum_{i=1}^{n}\alpha_i - \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i \alpha_j y_i y_j \langle x_i, x_j \rangle, \qquad \text{s.t.} \quad 0 \le \alpha_i \le C,\ \sum_{i=1}^{n}\alpha_i y_i = 0
对偶三连红利:内积可换核、复杂度只依赖样本数、互补松弛直接给出支持向量。
  1. 代入消元平稳性给出 w* = Σα_i y_i x_i 与 Σα_i y_i = 0,未知量从高维 w 变成 n 个 α。
    w∗=∑i=1nαiyixi,∑i=1nαiyi=0\displaystyle w^{*} = \sum_{i=1}^{n}\alpha_i y_i x_i, \quad \sum_{i=1}^{n}\alpha_i y_i = 0
  2. 样本内积形式目标函数里样本只以内积 <x_i, x_j> 出现——维数被彻底“藏”进内积。
    ⟨xi,xj⟩\displaystyle \langle x_i, x_j \rangle
  3. 决策函数分类时只累加 α_i > 0 的项,其余样本“事不关己”。
    f(x)=∑i=1nαiyi⟨xi,x⟩+b∗\displaystyle f(x) = \sum_{i=1}^{n}\alpha_i y_i \langle x_i, x \rangle + b^{*}

内点法实践 —— 垫着弹性垫子慢慢磨价

面对上百条约束的复杂谈判,快手中介也不硬砍了。他的办法是:每条约束先垫一层“弹性垫子”,让方案暂时可以微微越界;在垫子上慢慢调整,谈妥一步就抽掉一层垫子。垫子越抽越薄,方案越调越接近真实成交点。

内点法把约束优化变成一长串无约束问题。对每个不等式约束 g_i(x) ≤ 0 加一个对数障碍项,得到近似目标,其中参数 t 控制“垫子厚度”:

每一轮都用牛顿法求解无约束问题,t 按倍数递增(如 ×10)。内点法的两个工程优点:一是迭代次数与问题规模弱相关,适合大规模约束优化;二是乘子可以“免费”获得——障碍函数的梯度就是 λ——于是能用对偶间隙做停机判据:报价与底价之差小于容差即成交。CVX、scipy 里的 QP/SDP 求解器大多走这条路。

从拉格朗日对偶到内点法,一条完整的“谈判学”闭环:贴单价、摸底、抬价、零间隙成交、签合同,再到现实中的 SVM 和求解器。现在再看任何凸优化算法的文档,你应该能读懂它们背后那个精明的中介了。

min⁡x  f(x)−1t∑i=1mlog⁡ ⁣(−gi(x))\min_{x}\; f(x) - \frac{1}{t}\sum_{i=1}^{m}\log\!\big(-g_i(x)\big)
对数障碍像一个弹性垫子:越靠近约束边界,反弹力越大,把迭代点稳稳弹回可行域内部。
  1. 对数障碍项越靠近边界(g_i 越接近 0)障碍越大,迭代点被“弹”回可行域内部。
    −1tlog⁡ ⁣(−gi(x))\displaystyle -\frac{1}{t}\log\!\big(-g_i(x)\big)
  2. 系数 1/tt 越大障碍越薄,无约束解越逼近原问题的约束最优解。
    1t→0\displaystyle \frac{1}{t} \to 0
  3. 中心路径随着 t 增大,每一步的无约束最优点连成一条轨迹,终点就是原问题最优解。
    x∗(t)→x∗\displaystyle x^{*}(t) \to x^{*}

AI 应用场景

图像分类中的 SVM 对偶训练

阶段:模型训练与优化

解决的问题:原始 SVM 是带硬约束的二次规划,直接求解需要处理复杂的约束矩阵,且无法利用核函数。通过对偶化,问题变成仅含样本内积的凸 QP,配合 SMO 算法每次只更新两个 α 即可高效收敛,并天然支持 RBF 等核函数完成非线性分类。

具体案例:某电商团队的图片审核模型用 RBF 核 SVM 对 2 万张商品图特征分类,对偶形式 + SMO 把训练时间从数小时压到几分钟;打印出 α > 0 的支持向量后,团队发现误判样本几乎全部集中在支持向量附近,据此补充了针对性标注数据。

广告预算分配中的内点法求解

阶段:决策优化系统

解决的问题:多平台广告预算分配是典型的带大量线性约束的凸问题,传统启发式调参既慢又不稳定。内点法沿中心路径迭代,以对偶间隙作为停机判据,能稳定输出高精度解,同时附带对偶变量用于敏感性分析。

具体案例:某投放系统每天用内点法求解预算分配 QP,运营人员利用互补松弛条件发现“某渠道约束乘子为零”,说明该渠道预算从未触顶,果断把预算调往乘子较大的渠道,整体 ROI 提升 12%。

Python 演示

python33 行
import numpy as np def objective(x):    return (x - 1.0) ** 2 def constraint(x):    return 2.0 - x  # g(x) <= 0 means x >= 2 def lagrangian(x, lam):    return objective(x) + lam * constraint(x) def solve_dual_by_grid():    xs = np.linspace(0.0, 4.0, 20001)    lams = np.linspace(0.0, 4.0, 2001)    dual = np.array([lagrangian(xs, lam).min() for lam in lams])    d_star = dual.max()    lam_star = lams[dual.argmax()]    return d_star, lam_star def verify_kkt(x_star, lam_star):    grad_l = 2.0 * (x_star - 1.0) - lam_star    comp = lam_star * constraint(x_star)    print("stationarity residual :", round(grad_l, 8))    print("complementary residual:", round(comp, 8)) if __name__ == "__main__":    p_star = objective(2.0)    d_star, lam = solve_dual_by_grid()    print("primal optimal p* =", round(p_star, 6))    print("dual   optimal d* =", round(d_star, 6))    print("duality gap       =", round(p_star - d_star, 6))    print("optimal multiplier lambda* =", round(lam, 4))    verify_kkt(2.0, lam)
目的:用网格搜索数值求解一个含约束优化问题的拉格朗日对偶,验证强对偶(对偶间隙为零)并检查 KKT 条件的两条核心残差。
  1. dual = np.array([lagrangian(xs, lam).min() for lam in lams])对每个候选乘子 λ,在密集网格上求拉格朗日函数的最小值,即“摸底”对偶函数 g(λ)。
  2. d_star = dual.max()在所有 λ 中挑最大的 g(λ),得到对偶最优值 d*,对应“抬价”到极限。
  3. lam_star = lams[dual.argmax()]同时记录最优乘子 λ*,约等于 2,对应中介最终采用的单价。
  4. grad_l = 2.0 * (x_star - 1.0) - lam_star验证平稳性:将 x*=2、λ*≈2 代入目标与约束梯度的加权和,残差应接近零。
  5. comp = lam_star * constraint(x_star)验证互补松弛:λ × g(x) 应接近零,因为 x*=2 时约束恰好取等(绷紧)。

常见误区

误区“把原问题转成对偶问题一定更高效,所以遇到优化就用对偶。”

正解对偶最大的红利是理论性的——对偶问题一定凸、提供最优值下界、还能引入核技巧;但计算效率取决于问题结构。举个反例:稠密核矩阵的 SVM 对偶在大规模数据上是 O(n²) 内存,此时直接求解原始问题(如 Pegasos 随机梯度法)反而更快。选择哪一侧要看数据规模、稀疏性和算子结构,而不是“对偶 = 快”这个直觉。

为何常见:很多教材讲 SVM 都走对偶路线,初学者容易把“推导路径”误当成“最优计算路径”。

误区“我训练深度学习模型都能收敛到很好的解,强对偶应该天生成立吧?”

正解强对偶只在凸优化 + 约束品性(如 Slater 条件)下成立。深度学习的损失函数高度非凸,原始问题与对偶问题之间存在真实的对偶间隙;训练收敛到低代价解,并不代表对偶问题给出了相同的值。只有理解这一点,才不会被“对偶间隙 = 0”的幻觉误导。

为何常见:深度学习中梯度下降经常收敛到不错的解,与“强对偶成立”的条件被混为一谈。

误区“只要某个点满足 KKT 条件,它就一定是全局最优解。”

正解KKT 是非凸问题局部最优的必要条件(在约束品性下),并不是充分条件。只有原始问题凸且强对偶成立时,KKT 才升级为全局最优的充要条件。换句话说,非凸问题里一个点完全可能满足四条“合同条款”却仍是个鞍点。

为何常见:教材通常在凸优化章节之后讲 KKT,学习者忽略了“凸性”这个反复被强调的前提恰恰是充要性的命门。

误区“拉格朗日乘子代表惩罚成本,所以所有乘子都必须大于零。”

正解不等式约束的乘子要求 λ ≥ 0;但等式约束的乘子 ν 符号自由,因为它对应的约束没有方向。符号规则由约束写法决定:g ≤ 0 配 λ ≥ 0;若把约束写成 g ≥ 0,乘子符号要相应反转。写错符号会直接得到错误的对偶问题。

为何常见:直觉上“惩罚应为正”,忽略了等式约束没有方向、可以多退少补。

误区“KKT 的互补松弛要求所有约束都绷紧到取等号。”

正解互补松弛是 λ_i g_i(x*) = 0,逻辑是“或”:要么约束松弛(g_i < 0 且 λ_i = 0),要么约束绷紧(g_i = 0 且 λ_i > 0)。预算远没花完的约束对应乘子为零,完全正常。把逻辑或误读成“每个约束都必须取等”,会漏掉大量正则项起作用的方式。

为何常见:教材强调“取等”的半边(因为支持向量很醒目),初学者容易忽略另一半“乘子为零”才是常态。

面试题

Q1. 对偶函数 g(λ,ν) 的正确定义是?

单选题 · easy

  • A.拉格朗日函数对乘子取最大值
  • B.拉格朗日函数对原变量取下确界← 正确答案
  • C.原目标函数在可行域上的最小值
  • D.全部约束函数值的加权求和

答案:B。对偶函数是对拉格朗日函数关于原变量 x 取下确界,即在所有候选方案中选综合开销最低的那一个,对应谈判中的“摸底”。A 把极值方向搞反;C 描述的是原问题最优值 p*;D 只是惩罚项本身,缺少目标项。

Q2. 关于拉格朗日乘子符号约束的正确说法是?

单选题 · easy

  • A.不等式乘子必须严格大于零
  • B.等式乘子也必须满足非负
  • C.所有乘子都必须满足符号一致
  • D.不等式乘子非负等式乘子自由← 正确答案

答案:D。不等式约束 g ≤ 0 配非负乘子 λ,保证“单价不为负”;等式约束没有方向,乘子 ν 可正可负,像多退少补的尾款。A 说“严格大于零”过强(允许取零);B、C 都错在等式乘子的符号自由上。

Q3. 弱对偶性给出的结论是?

单选题 · easy

  • A.对偶最优值不小于原始最优值
  • B.对偶最优值恰等于原始最优值
  • C.对偶最优值不大于原始最优值← 正确答案
  • D.对偶与原始最优值完全无关

答案:C。弱对偶说 d* ≤ p*,即中介报价永远不高于真实底线。A 把不等式方向写反;B 是强对偶的结论,只在凸性 + Slater 下成立;D 忽略了“对偶间隙恒非负”这一必然联系。

Q4. 对偶间隙的正确定义是?

单选题 · mid

  • A.原始最优值减去对偶最优值← 正确答案
  • B.对偶最优值减去原始最优值
  • C.目标函数值减去对偶函数值
  • D.约束个数减去变量的个数

答案:A。对偶间隙 = p* - d* ≥ 0,衡量两个视角之间的谈判空间,间隙为零就是强对偶。B 方向反了;C 混淆了具体点处的函数值与最优值的差别;D 把问题维度当成了间隙,毫无关系。

Q5. 强对偶成立的充分条件是?

单选题 · mid

  • A.原问题非凸并且约束全为线性
  • B.凸问题且存在严格可行点← 正确答案
  • C.原问题可微且没有任何约束
  • D.对偶变量的取值全部为正值

答案:B。强对偶需要“凸性 + Slater 条件”两个要素:目标与不等式约束凸、等式约束仿射,且存在一点让所有不等式严格成立。A 非凸时即便有可行点也存在间隙;C 无约束时对偶平凡;D 只描述了乘子符号,与间隙归零无关。

Q6. Slater 条件的核心内容是?

单选题 · hard

  • A.可行域中存在目标值为零的点
  • B.存在点使不等式严格成立← 正确答案
  • C.约束函数的梯度全部为零
  • D.对偶函数在该点取得下界

答案:B。Slater 条件要求存在一个点 x̂ 使所有不等式约束 g_i(x̂) < 0 严格成立,即可行域有“内部”而非只贴一条边。比喻上就像存在一套各方面都宽松的备选房。A 与目标值无关;C 是平稳性在退化点的特殊情况;D 描述的是对偶函数的求值过程。

Q7. 互补松弛条件的含义是?

单选题 · mid

  • A.乘子与约束函数值的乘积为零← 正确答案
  • B.乘子与约束函数值的乘积为一
  • C.乘子与约束函数值的加和为零
  • D.乘子与约束函数值必须都为零

答案:A。互补松弛是 λ_i g_i(x*) = 0,即“约束没绷紧则乘子必为零,乘子非零则约束必取等”,逻辑是或关系。D 错在把“或”误读成“都为零”;B、C 是对乘积关系的歪曲。

Q8. KKT 条件包含下列哪些组成?

多选题 · mid

  • A.平稳性即目标与约束梯度加权和为零← 正确答案
  • B.互补松弛即乘子与约束乘积为零← 正确答案
  • C.原始可行性与对偶可行性同时成立← 正确答案
  • D.目标函数必须严格凸且约束全线性

答案:ABC。KKT 四件套是平稳性、互补松弛、原始可行、对偶可行。D 中的“严格凸 + 全线性”不是 KKT 本身的内容,而是额外用于保证唯一性或充要性的条件,混淆了前提与结论。

Q9. 关于 SVM 对偶形式的正确说法是?

多选题 · hard

  • A.对偶目标中样本只以内积形式出现← 正确答案
  • B.核技巧可由此自然引入分类器← 正确答案
  • C.对偶问题一定是非凸的优化问题
  • D.非零对偶变量对应着支持向量← 正确答案

答案:ABD。SVM 对偶目标只含样本内积 <x_i, x_j>,把它替换成核函数即可非线性化;互补松弛保证 α_i > 0 的样本恰是约束取等的支持向量。C 错——对偶问题在核矩阵半正定时是凸 QP。

Q10. 内点法求解约束优化的特征有?

多选题 · hard

  • A.用对数障碍函数逼近原有约束← 正确答案
  • B.迭代点保持在可行域的内部← 正确答案
  • C.用对偶间隙作为停机判据← 正确答案
  • D.要求原问题无任何约束存在

答案:ABC。内点法给每个不等式垫一层对数障碍,迭代点被“弹”回可行域内部,沿中心路径逼近最优解,并以对偶间隙小于容差作为收敛判据。D 恰好说反——内点法正是为带约束问题而生的,无约束问题根本不需要它。