雨后的山谷里,你站在一片山坡上,远处山顶云海翻涌,可景区规定:你只能沿着一条环形的栅栏小路走,不能直接冲上顶峰。于是你沿路前进,每走几步都感觉有两只“看不见的手”:一只是山坡本身给出的“最陡上升方向”,另一只是栅栏在路边给出的“约束法线方向”。你沿着小路一直爬,直到某个地方发现,这两只手指向了同一条直线,再往前任何一步都不会更高——这里就是栅栏约束下的最高点。 这个画面,就是拉格朗日乘子法的全部几何直觉。目标函数是山坡高度,约束条件是栅栏小路,那根把两个方向联系起来的比例系数,就是拉格朗日乘子 λ。它刻画了“栅栏往外挪一点,你能多爬多高”。从这幕山景出发,我们还能看懂:路相切时为什么梯度共线、KKT 条件怎样处理“不许越过红线”的不等式、对偶问题怎样给每条约束“定价”,以及支持向量机为什么只在少数样本上“较劲”。

岗位关联

对 AI 从业者而言,拉格朗日乘子法是读懂 SVM、正则化、对偶优化的共通语言;在面试和复盘中,能把“山坡与栅栏”的图景讲清楚,比背公式更有说服力。

目录
  1. 可视化演示
  2. 几何直觉
  3. 约束几何
  4. 乘子含义
  5. 拉格朗日函数
  6. KKT条件
  7. 对偶几何
  8. 强对偶与Slater条件
  9. 机器学习应用
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

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

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

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

几何直觉

想象你去登山,山峰锁定在云海,但景区规定只能沿一条环形栅栏小路走。你不可能直冲山顶,只能在路上找“目前为止最高”的位置。站在路上,你能同时感觉到两个箭头:一个指向山坡最陡的上升方向,另一个是栅栏“挡路”的法线方向。沿着路走到某一点时,山坡方向不再让你继续爬升——红箭头和绿箭头落在同一条直线上,这个点就是约束下的最高点。

数学把这幅画面写成:目标函数 \(f(x,y)\) 是山坡高度,约束 \(g(x,y)=c\) 是栅栏小路。如果 ∇f 沿路切线方向还有上升分量,你就能继续爬;最优时沿路的分量为零,所以 ∇f 垂直于路。而 \(g\) 在整条路上恒为常数,它的梯度 ∇g 也垂直于路。两个向量都垂直于同一条路,自然就在同一条直线上。

这就是拉格朗日乘子法的几何核心:

回到山景:登山者不必知道山顶坐标,只需在栅栏上盯住两个箭头;一旦它们在一条直线上,就找到了约束最优。这个“盯箭头”的过程,就是拉格朗日乘子法最直观的工作方式。

∇f(x∗)=λ∇g(x∗)\nabla f(\mathbf{x}^*) = \lambda \nabla g(\mathbf{x}^*)
最优点处,目标函数的梯度与约束函数的梯度共线;λ 只是两个箭头之间的缩放比例。
  1. 目标梯度\(\nabla f(\mathbf{x}^*)\) 是在最优点上让目标函数增加最快的方向,对应“山坡最陡上升箭头”。
    ∇f(x∗)\nabla f(\mathbf{x}^*)
  2. 约束梯度\(\nabla g(\mathbf{x}^*)\) 是栅栏小路向外推的法向箭头,它垂直于路的切线方向。
    ∇g(x∗)\nabla g(\mathbf{x}^*)
  3. 共线关系等式 \(=\lambda\) 表示两个箭头在同一条直线上,允许方向相同或相反,也允许长度不同。
    =λ=\lambda

约束几何

栅栏小路在每一点都有一块“切平面”——也就是当下脚底那片无限延伸的平地。你沿路走出的任意一小步,都落在这块切平面上。约束 \(g(x,y)=c\) 的意思,是无论怎么走,都不能离开这块“等值面”。因此,约束的梯度 ∇g 一定垂直于切平面:它是指向“面外”的法线。

再看目标函数。山坡上的等高线把高度相同的点连成一条条环线,∇f 总是指向等高线外法向,也就是与等高线垂直。在约束最优处,小路与某条等高线相切:它们共用同一条切线。于是两个法线都垂直于同一条切线,必须共线。这个几何事实用公式表达为:

这座“切平面”的比喻贯穿始终:目标梯度要进入约束面,必须先把自己的切向分量消掉;当它的法向与约束法线重合时,剩余力就完全被栅栏承受,于是达到平衡。

∇g(x)⋅v=0,∀v∈Tx\nabla g(\mathbf{x})\cdot \mathbf{v} = 0,\quad \forall \mathbf{v}\in T_{\mathbf{x}}
对约束面切平面里的任意方向向量 \(\mathbf{v}\),约束梯度都与它垂直;这保证了 ∇g 是约束面的法线。
  1. 切向量\(\mathbf{v}\in T_{\mathbf{x}}\) 表示从当前点出发、仍然留在栅栏路上的任意微小方向。
    v∈Tx\mathbf{v}\in T_{\mathbf{x}}
  2. 点积为零\(\nabla g(\mathbf{x})\cdot \mathbf{v}=0\) 表示栅栏法向与所有可行方向垂直。
    ∇g(x)⋅v=0\nabla g(\mathbf{x})\cdot \mathbf{v}=0
  3. 任意方向\(\forall\) 强调不是某一步特殊,而是切平面中的所有方向都满足。
    ∀\forall

乘子含义

λ 是什么?它不是普通系数,而是“栅栏的影子价格”。假设你和管理员商量:把栅栏往外挪一米,你能多爬多高?这个“每多放行一单位约束,最优高度增加多少”的边际收益,正是 λ 的数值含义。在经济学里它叫影子价格,在力学里它叫约束力,在机器学习里它叫正则化强度。

从公式看,λ 同时是两个梯度长度的比例系数。它的符号取决于你把约束写成 \(g(x,y)=c\) 还是 \(c-g(x,y)=0\);因此不必死记正负,关键是绝对值对应敏感度。若把约束常数视为可调参数 \(c\),最优值 \(f^*\) 对 \(c\) 的变化率就是 λ:

栅栏不是免费的。每个约束都在暗中标好了价格,λ 就是那行价签。理解了这一点,SVM 中每个样本的 α 也就从“抽象的拉格朗日乘子”变成了“这个样本对决策边界有多重要”。

λ=df∗dc\lambda = \frac{d f^*}{d c}
拉格朗日乘子衡量“约束放松一点点,最优目标值变化多少”,是约束的边际价格。
  1. 最优值函数\(f^*\) 表示在给定约束常数 \(c\) 下已经求出的最优目标值。
    f∗f^*
  2. 微小松弛\(dc\) 表示约束条件向外挪动的微小量。
    dcdc
  3. 变化率\(\frac{d f^*}{d c}\) 是“栅栏每松一单位,山顶高度提升多少”,也就是 λ 的经济学解释。
    df∗dc\frac{d f^*}{d c}

拉格朗日函数

与其在路上每走一步都提心吊胆地检查约束,不如把约束“买进”目标函数,变成一个统一的新函数。这个新函数叫拉格朗日函数:原目标 \(f(x,y)\) 减去“违反约束的惩罚项” \(\lambda(g(x,y)-c)\)。当点落在栅栏路上时 \(g=c\),惩罚项归零;当点偏离时,惩罚项会拉低总得分。

构造出拉格朗日函数后,求约束最优就转化为对这个新函数求“无约束驻点”。对变量 \(x,y\) 求偏导得到梯度共线条件,对 λ 求偏导刚好还原出约束方程。整个过程如同把登山者的眼睛从“只看高度”升级为“同时监督高度和是否越界”:

这座“新山峰”看似把栅栏拆了,其实栅栏的影子仍然藏在惩罚项里。拉格朗日函数的好处是,所有约束都被统一成一套偏导方程,为后续的 KKT 和对偶铺平了路。

L(x,y,λ)=f(x,y)−λ(g(x,y)−c)\mathcal{L}(x,y,\lambda) = f(x,y) - \lambda \big(g(x,y) - c\big)
拉格朗日函数把“在约束下最优化”变成“对包含惩罚项的表达式求驻点”,惩罚力度由 λ 控制。
  1. 原目标\(f(x,y)\) 是山坡高度,也就是我们不希望丢失的原始得分。
    f(x,y)f(x,y)
  2. 惩罚项\(\lambda(g(x,y)-c)\) 在违反约束时给出代价,乘子 λ 决定代价多大。
    λ(g(x,y)−c)\lambda(g(x,y)-c)
  3. 减号约定减号只是一种常见书写习惯,换成加号只会让 λ 的符号翻转,核心驻点条件不变。
    −-

KKT条件

现实中的约束往往不是“必须走在栅栏上”,而是“不许越过红线”。不等式约束就像一片营地:只要在营地内,你可以自由活动;一旦贴在边界上,才需要重新考虑约束。KKT 条件正是把等式约束的共线思想推广到“边界可能激活、也可能不激活”的情形。

KKT 由几条组成:最优点上拉格朗日函数对原始变量的梯度为零;不等式约束的乘子必须非负;乘子与约束函数值的乘积必须为零——这就是互补松弛。它很像说:如果约束没有拦住你,对应价签就是 0;如果价签不为 0,说明你正靠在边界上:

回到画面:你在营地里走得自由时,边界没有价格;当你贴在红色警示线时,那条线才像栅栏一样给出法向力。KKT 不是新的魔法,而是把“山坡与栅栏”的故事扩展到了“营地与围墙”。

∇xL(x∗,μ∗)=0,μj∗hj(x∗)=0,μj∗≥0\nabla_x \mathcal{L}(\mathbf{x}^*,\boldsymbol{\mu}^*) = 0,\quad \mu_j^* h_j(\mathbf{x}^*) = 0,\quad \mu_j^* \ge 0
KKT 条件告诉算法:哪些约束真正起作用,哪些只是“摆设”;只有贴着边界的约束才会获得非零乘子。
  1. 驻点条件\(\nabla_x \mathcal{L}=0\) 是拉格朗日函数对原变量的一阶导为零,表示力的平衡。
    ∇xL(x∗,μ∗)=0\nabla_x \mathcal{L}(\mathbf{x}^*,\boldsymbol{\mu}^*) = 0
  2. 互补松弛\(\mu_j^ h_j(\mathbf{x}^)=0\) 意味着乘子与约束函数值至少有一个为零。
    μj∗hj(x∗)=0\mu_j^* h_j(\mathbf{x}^*) = 0
  3. 非负乘子\(\mu_j^* \ge 0\) 保证不等式约束的方向正确,价签不会“越改越乱”。
    μj∗≥0\mu_j^* \ge 0

对偶几何

同一个山坡,可以从两个视角观察。原始问题视角是:登山者必须走在栅栏上,寻找最高点。对偶视角则是:管理员给每段栅栏定一个“过路价”,想知道怎样定价能让自己从登山者的收益中“抽成”最大化。两个视角看似不同,其实盯着同一个几何场景。

对偶函数 \(d(\lambda)\) 的做法是:固定一个 λ,把所有位置 \(x\) 的拉格朗日函数都算一遍,取全局最小。这个“最保守的报价”永远不会超过原始问题的最优高度,这就是弱对偶。几何上,栅栏价格体系给出的任何下界,都不可能比真实山顶更高:

对偶像一面镜子:原始问题问“路怎么走”,对偶问题问“路怎么收费”。镜子里的像不会高过实物,但足够接近时,我们就找到了通往强对偶的入口。

d(λ)=inf⁡xL(x,λ)≤f(x∗)d(\lambda) = \inf_{x} \mathcal{L}(x,\lambda) \le f(\mathbf{x}^*)
对偶函数是拉格朗日函数对原始变量的“最差情况报价”;弱对偶保证它始终是原始最优的下界。
  1. 拉格朗日函数\(\mathcal{L}(x,\lambda)\) 是包含约束价格的综合得分。
    L(x,λ)\mathcal{L}(x,\lambda)
  2. 取下确界\(\inf_x\) 表示在所有位置中挑出最不利的那个,得到保守报价。
    inf⁡x\inf_x
  3. 弱对偶不等式\(\le f(\mathbf{x}^*)\) 说明任何合理报价都不能超过真实最优高度。
    ≤f(x∗)\le f(\mathbf{x}^*)

强对偶与Slater条件

弱对偶只保证“对偶报价 ≤ 真实山顶”,但什么时候报价能刚好等于真实山顶?这需要一套“完善的市场规则”。规则之一是问题满足凸性——山坡只有一个碗形或一个丘形,不会出现多个捣乱的局部高峰;规则之二是 Slater 条件,即存在一个严格满足不等式约束的内部点,让边界不是唯一的藏身之处。

当凸性和 Slater 条件成立,原始最优值 \(p^\) 与对偶最优值 \(d^\) 之间的“对偶间隙”为零,称为强对偶。此时管理员的价格体系非常完美,它对栅栏的定价恰好等于登山者因此损失的每一分高度:

在机器学习中,许多目标函数天然是凸的,因此强对偶几乎自动成立。这也是为什么 SVM 可以放心地把原问题换成对偶问题求解——价格体系可靠,镜子里的像完全真实。

d∗=p∗if the problem is convex and ∃ x,  hj(x)<0d^* = p^* \quad \text{if the problem is convex and } \exists\,\mathbf{x},\; h_j(\mathbf{x}) < 0
强对偶成立时,原问题和对偶问题的最优值相同;Slater 条件保证可行域内部不是空洞,定价体系不会“失灵”。
  1. 对偶最优值\(d^*\) 是管理员把所有 λ 都试过之后能拿到的最高报价。
    d∗d^*
  2. 原始最优值\(p^*\) 是登山者在栅栏上真正能到达的最高高度。
    p∗p^*
  3. Slater 条件\(\exists\,\mathbf{x},\; h_j(\mathbf{x})<0\) 表示存在一个约束全部严格满足的内部点,避免边界“一家独大”。
    ∃ x,  hj(x)<0\exists\,\mathbf{x},\; h_j(\mathbf{x}) < 0

机器学习应用

拉格朗日乘子法不只是考试公式,它是支持向量机的“发动机”。SVM 想找一条最宽的街道分开两类点,街道两侧的约束是“每个点都必须待在正确的一侧”。把这些约束写进拉格朗日函数后,每个样本对应一个乘子 α。KKT 的互补松弛告诉我们:远离边界的样本 α=0,只有贴在街道边上的样本 α>0——它们就是支持向量。于是决策边界只由少数“推着栅栏”的点决定:

同样,L2 正则化也可以看成“在 \(\|w\|^2\) 不超过某个预算的前提下最小化损失”,λ 就是这条预算的影子价格。正则化越强,λ 越大,模型越不敢把权重推得太远。山坡与栅栏的故事,就这样从纯数学走进了每一行机器学习代码。

max⁡α∑iαi−12∑i,jαiαjyiyjxi⋅xjs.t. αi≥0,  ∑iαiyi=0\max_{\alpha} \sum_i \alpha_i - \frac{1}{2}\sum_{i,j}\alpha_i \alpha_j y_i y_j \mathbf{x}_i\cdot \mathbf{x}_j\quad \text{s.t. } \alpha_i \ge 0,\; \sum_i \alpha_i y_i = 0
在 SVM 中,拉格朗日乘子 α 把约束的重要性翻译成数值,非零 α 对应的样本就是支持向量。
  1. 线性项\(\sum_i \alpha_i\) 是对所有样本约束收益的累加,鼓励街道更宽。
    ∑iαi\sum_i \alpha_i
  2. 二次项\(\sum_{i,j}\alpha_i \alpha_j y_i y_j \mathbf{x}_i\cdot \mathbf{x}_j\) 来自样本之间的内积,是对偶问题中的主要计算量。
    ∑i,jαiαjyiyjxi⋅xj\sum_{i,j}\alpha_i \alpha_j y_i y_j \mathbf{x}_i\cdot \mathbf{x}_j
  3. 约束条件\(\alpha_i\ge0\) 和 \(\sum_i\alpha_i y_i=0\) 是 KKT 的可行性要求,保证街道两边不过度偏向。
    αi≥0,  ∑iαiyi=0\alpha_i \ge 0,\; \sum_i \alpha_i y_i = 0

AI 应用场景

支持向量机的最大间隔分类

阶段:模型训练与优化

解决的问题:传统分类模型容易过拟合,直接用梯度下降处理带约束的间隔最大化不稳定;拉格朗日乘子把“街道宽度最大化”变成对偶问题,让约束的贡献变成样本权重。

具体案例:银行风控中,用 SVM 判断贷款申请是否违约。训练完成后,大部分样本的 α 为 0,只有少数违约边界附近的样本 α>0。这些支持向量构成决策边界,模型部署时只需保存它们。

L2 正则化的超参选择

阶段:模型调优与正则化

解决的问题:人工网格搜索正则化系数 λ 既慢又难解释;从拉格朗日视角看,λ 是“权重预算的影子价格”,调 λ 的本质是在偏差与方差之间购买平衡。

具体案例:点击率预测模型的逻辑回归中加入 L2 惩罚。离线验证时,把 λ 从 0.01 增大到 1,模型权重范数下降,线上 AUC 先升后降;工程师用“约束价格”的语言向业务方解释为何不能无限增大 λ。

Python 演示

python49 行
import numpy as np # 目标函数:让登山者远离山峰中心 (1, -1),所以取负距离平方def f(x, y):    return -((x - 1.0) ** 2 + (y + 1.0) ** 2) # 目标函数的梯度:指向最陡上升方向def gradf(x, y):    return np.array([-2.0 * (x - 1.0), -2.0 * (y + 1.0)]) # 约束:必须走在半径 sqrt(2) 的圆环栅栏上def g(x, y):    return x * x + y * y # 约束函数的梯度:栅栏法向def gradg(x, y):    return np.array([2.0 * x, 2.0 * y]) # 拉格朗日驻点方程组:nabla f - lambda * nabla g = 0, g = 2def F(vec):    x, y, lam = vec    ag = gradf(x, y) - lam * gradg(x, y)    return np.array([ag[0], ag[1], g(x, y) - 2.0]) # 驻点方程组的雅可比矩阵,用于牛顿迭代def J(vec):    x, y, lam = vec    return np.array([        [-2.0 - 2.0 * lam, 0.0, -2.0 * x],        [0.0, -2.0 - 2.0 * lam, -2.0 * y],        [2.0 * x, 2.0 * y, 0.0]    ]) def solve_lagrange():    # 初始猜测:一个可行的起始点    vec = np.array([1.0, 0.0, 1.0], dtype=float)    for _ in range(20):        delta = np.linalg.solve(J(vec), -F(vec))        vec = vec + delta        if np.linalg.norm(delta) < 1e-12:            break    x, y, lam = vec    print("最优解 x = %.6f, y = %.6f" % (x, y))    print("拉格朗日乘子 lambda = %.6f" % lam)    print("目标函数值 = %.6f" % f(x, y))    return vec if __name__ == "__main__":    solve_lagrange()
目的:用牛顿法求解一个二维等式约束优化问题,直接演示“∇f=λ∇g”的驻点方程组在计算机上是怎样被解出来的。
  1. def gradf(x, y):解析计算目标函数的梯度,对应山坡最陡上升箭头。
  2. ag = gradf(x, y) - lam * gradg(x, y)核心方程:目标梯度与约束梯度共线。
  3. return np.array([ag[0], ag[1], g(x, y) - 2.0])前两行是梯度平衡,第三行强制回到栅栏上。
  4. delta = np.linalg.solve(J(vec), -F(vec))用牛顿法同时更新位置和乘子。
  5. if __name__ == "__main__":提供可执行入口,方便直接运行验证。

常见误区

误区我看到等高线和栅栏路是相切的,直觉上觉得目标梯度和约束梯度应该互相垂直。

正解相切的两条曲线共用一条切线,因此各自法向在同一条直线上。∇f 垂直于等高线,∇g 垂直于约束面;两个梯度不是互相垂直,而是相互共线。若把约束路想象成栅栏,红箭头和绿箭头最终指向同一条直线。

为何常见:生活中“相切”常让人联想到两个圆错开,只注意到切线方向一致,却忘了法线也一致。

误区λ 既然是“价格”,那价格不应该是正数吗?所以拉格朗日乘子一定大于零。

正解等式约束的 λ 可正可负,符号取决于约束写法和目标方向。真正必须非负的是不等式约束下的 KKT 乘子。以 Python 演示为例,等式约束的 λ=-2 仍然正确,因为它描述的是两个梯度方向相反。

为何常见:经济学里的“影子价格”容易让人直接联想正价格,忽略数学中符号只是方向编码。

误区只要找到满足 KKT 的点,就一定是全局最优。

正解KKT 在常规条件下是必要条件,但不一定是充分条件。若问题非凸,KKT 点可能是鞍点或局部最优;只有凸问题加上可行域正则条件,KKT 才常常成为充分条件。

为何常见:教材通常先用凸例子讲 KKT,学生容易把“例题成立”误当成“定理恒成立”。

误区既然强对偶听起来很厉害,那是不是任何优化问题都能随便换成对偶并得到相同答案?

正解弱对偶只保证“对偶最优 ≤ 原始最优”,两者之差就是对偶间隙。只有满足凸性、约束规范和 Slater 条件时,强对偶才成立,间隙才为零。

为何常见:SVM、岭回归等经典机器学习问题都满足强对偶,导致很多人以为这是默认事实。

误区支持向量机里每个样本都有一个 α,所以 α 代表样本的位置或者类别。

正解α 是样本对应不等式约束的拉格朗日乘子,不是坐标。KKT 互补松弛让远离边界的样本 α=0,只有贴边界的支持向量 α>0;位置信息仍然由原始特征 \(x_i\) 提供。

为何常见:对偶公式中 α 和 \(x_i\) 一起出现,初看容易把两者都当成“数据的一部分”。

面试题

Q1. 拉格朗日乘子法主要用来求解哪类优化问题?

单选题 · easy

  • A.无约束最优化问题
  • B.等式约束最优化问题← 正确答案
  • C.纯线性代数方程组
  • D.数值积分近似计算

答案:B。拉格朗日乘子法的标志性场景是带等式约束的优化;它把约束写进拉格朗日函数后转化为驻点条件。无约束问题不需要乘子;线性方程组和数值积分不是它的直接目标。

Q2. 在约束最优点处,目标函数梯度 ∇f 与约束梯度 ∇g 的几何关系是?

单选题 · mid

  • A.一定互相垂直
  • B.一定共线或平行← 正确答案
  • C.大小一定相等
  • D.方向一定相反

答案:B。最优点处目标函数的梯度沿约束切线没有分量,所以 ∇f 垂直于切平面;约束梯度 ∇g 也垂直于切平面,因此两者共线。方向可以相同也可以相反,长度不一定相等。

Q3. 拉格朗日乘子 λ 的绝对值大小主要反映什么?

单选题 · mid

  • A.约束曲面的弯曲程度
  • B.最优值对约束松紧的敏感度← 正确答案
  • C.目标函数梯度的总长度
  • D.初始点到最优点的距离

答案:B。λ 可看作约束的影子价格,\(\lambda = df^*/dc\)。约束往外松一点,最优值变化越快,|λ| 越大。它不是几何曲率,也不是初始点距离。

Q4. 关于 KKT 条件,下列说法正确的有?

多选题 · hard

  • A.它是等式约束必要条件的自然推广← 正确答案
  • B.不等式约束的乘子必须严格大于零
  • C.互补松弛要求乘子与约束函数值乘积为零← 正确答案
  • D.KKT 在任意非凸问题中都是充分条件

答案:AC。KKT 把等式约束推广到不等式约束,互补松弛 \(\mu_j h_j(x^*)=0\) 表示“约束不激活则乘子为 0,乘子非零则约束贴着边界”。乘子可以等于 0,所以不必须严格大于零;KKT 在非凸问题中通常只是必要条件。

Q5. 对偶函数 \(d(\lambda)=\inf_x \mathcal{L}(x,\lambda)\) 通常具有什么性质?

单选题 · easy

  • A.关于 λ 是凹函数← 正确答案
  • B.关于 λ 是凸函数
  • C.与原始目标完全无关
  • D.只能取整数数值

答案:A。拉格朗日函数关于 λ 是仿射函数,仿射函数逐点取最小后得到凹函数。这是对偶理论的重要几何性质,也是它能被高效最大化的原因。

Q6. 强对偶成立的常见充分条件是什么?

单选题 · mid

  • A.原问题凸且满足 Slater 条件← 正确答案
  • B.目标函数处处非凸
  • C.约束条件数量越多越好
  • D.对偶函数必须恒等于零

答案:A。凸性保证局部最优即全局最优,Slater 条件保证存在严格可行点,两者合起来消除对偶间隙。非凸问题通常只有弱对偶;约束数量与对偶间隙没有直接因果关系。

Q7. 关于弱对偶与原对偶间隙,下列说法正确的有?

多选题 · mid

  • A.对偶最优值通常小于等于原始最优值← 正确答案
  • B.原始最优值减去对偶最优值得到对偶间隙← 正确答案
  • C.对偶间隙为零时称为强对偶← 正确答案
  • D.弱对偶只在凸问题中成立

答案:ABC。弱对偶 \(d^\le p^\) 是普适不等式,不需要凸性;差值即对偶间隙,间隙为零就是强对偶。因此 D 不正确,弱对偶并非只在凸问题中成立。

Q8. 在 SVM 的拉格朗日对偶中,乘子 α 对应什么?

单选题 · hard

  • A.每个样本的特征坐标
  • B.每个样本的间隔约束← 正确答案
  • C.支持向量的数量
  • D.正则化强度参数

答案:B。每个样本的不等式约束 \(y_i(w\cdot x_i+b)\ge1\) 都有一个 α。KKT 互补松弛让非支持向量的 α=0,只有贴边界的支持向量 α>0。它不是坐标、数量或正则化强度。

Q9. 从拉格朗日视角看 L2 正则化,正确的理解有?

多选题 · hard

  • A.可看成对权重范数施加预算约束← 正确答案
  • B.λ 是约束的影子价格← 正确答案
  • C.λ 等于训练样本的条数
  • D.λ 控制偏差与方差的权衡← 正确答案

答案:ABD。L2 正则化可写成“损失最小化同时 \(\|w\|^2\le t\)”,拉格朗日乘子 λ 就是预算的影子价格。λ 越大权重越被压缩,权衡偏差与方差;它与样本条数无关。

Q10. 若某个不等式约束在最优点处并没有拦住可行解,其 KKT 乘子通常为?

单选题 · easy

  • A.等于 0← 正确答案
  • B.等于无穷大
  • C.等于 1
  • D.小于负一

答案:A。互补松弛说“约束不起作用则乘子为 0”。这符合直觉:没有被激活的围墙不会产生力,也就没有影子价格。只有贴着边界的约束才会获得非零乘子。