4. 硬间隔SVM:优化目标推导、拉格朗日乘子法、对偶问题转换

各位同学,今天我们来啃硬间隔SVM最核心的一块骨头——优化目标推导、拉格朗日乘子法,以及对偶问题转换。

说实话,这部分是SVM的“灵魂”。我当年刚学的时候,也被一堆数学符号绕得头晕。但后来在实际项目中做环境数据分类时,才真正体会到:搞懂这些推导,你才能理解SVM为什么这么强

4.1 从几何直观到数学表达

我们先回顾一下核心思想:硬间隔SVM要找一条“最宽”的马路,把两类样本隔开

这条马路的“宽度”,在数学上叫间隔(margin)。我们的目标就是最大化这个间隔。

假设我们有训练样本集:

(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)
其中 xᵢ ∈ Rᵈ, yᵢ ∈ {+1, -1}

分类超平面方程为:

wᵀx + b = 0

对于硬间隔SVM,所有样本必须被正确分类,且距离超平面至少为1:

yᵢ(wᵀxᵢ + b) ≥ 1,  ∀i

嗯,这里要注意:为什么是“≥1”而不是“≥0”?

因为“1”是一个归一化的尺度。你可以想象成:我们把支持向量所在的平面定义为 wᵀx + b = ±1。这样间隔宽度就是 2/||w||。

核心优化目标:

最大化间隔 → 最小化 ||w||²

最终形式:

min  ½||w||²
s.t.  yᵢ(wᵀxᵢ + b) ≥ 1,  ∀i

我个人习惯把这个问题叫做“原始问题”。它是一个凸二次规划问题,理论上可以直接求解。但为什么我们不直接解?

因为——维度灾难。当特征维度很高时(比如环境数据中有几百个传感器指标),直接求解 w 的计算量会爆炸。

4.2 拉格朗日乘子法:引入“惩罚”

这时候,拉格朗日乘子法就派上用场了。

它的核心思想是:把带约束的优化问题,转化为无约束的优化问题

具体做法是:为每个约束条件 yᵢ(wᵀxᵢ + b) ≥ 1 引入一个拉格朗日乘子 αᵢ ≥ 0。

构造拉格朗日函数:

L(w, b, α) = ½||w||² - Σᵢ αᵢ [yᵢ(wᵀxᵢ + b) - 1]

这里 α = (α₁, α₂, ..., αₙ)ᵀ 是拉格朗日乘子向量。

我刚开始做这个推导时,总搞不清楚为什么是“减号”。后来想明白了:因为约束条件是“≥”,所以拉格朗日项前面是负号。如果是“≤”约束,前面就是正号。

避坑指南:

我曾经在写代码时,把拉格朗日函数的符号搞反了,结果优化出来的分类器完全不对。调试了两天才发现是符号问题。所以大家一定要记住:约束是“≥”时,拉格朗日项前面是负号

4.3 对偶问题转换:化繁为简

有了拉格朗日函数,我们就可以进行对偶转换了。

原始问题是:

min_{w,b} max_{α≥0} L(w, b, α)

对偶问题是:

max_{α≥0} min_{w,b} L(w, b, α)

在凸优化中,当满足KKT条件时,原始问题和对偶问题的最优解相等。这就是强对偶性

我们先求 min_{w,b} L(w, b, α):

对 w 求偏导并令为0:

∂L/∂w = w - Σᵢ αᵢ yᵢ xᵢ = 0
→ w = Σᵢ αᵢ yᵢ xᵢ

对 b 求偏导并令为0:

∂L/∂b = - Σᵢ αᵢ yᵢ = 0
→ Σᵢ αᵢ yᵢ = 0

把这两个结果代回拉格朗日函数,经过化简(这里省略中间步骤,大家课后可以自己推一遍),得到对偶问题:

max_α  Σᵢ αᵢ - ½ Σᵢ Σⱼ αᵢ αⱼ yᵢ yⱼ xᵢᵀxⱼ
s.t.   αᵢ ≥ 0,  ∀i
       Σᵢ αᵢ yᵢ = 0

你看,对偶问题中只出现了 α 变量,而且约束条件变得非常简单(只有非负和线性等式约束)。

更重要的是:目标函数中出现了 xᵢᵀxⱼ 这个内积项。这为后续引入核函数埋下了伏笔。

对偶问题的优势:

  • 变量个数从 d+1(w和b)变为 n(α),当 n ≪ d 时优势明显
  • 约束条件更简单,容易求解
  • 自然引入核函数,可以处理非线性问题
  • 支持向量对应 αᵢ > 0 的样本,具有稀疏性

4.4 KKT条件:最优解的必要条件

对偶问题的最优解必须满足KKT条件:

1. 原始可行性:yᵢ(wᵀxᵢ + b) ≥ 1
2. 对偶可行性:αᵢ ≥ 0
3. 互补松弛:αᵢ [yᵢ(wᵀxᵢ + b) - 1] = 0
4. 梯度为0:w = Σᵢ αᵢ yᵢ xᵢ,  Σᵢ αᵢ yᵢ = 0

互补松弛条件特别有意思。它告诉我们:

  • 如果 αᵢ > 0,那么 yᵢ(wᵀxᵢ + b) = 1,即该样本在间隔边界上——这就是支持向量
  • 如果 yᵢ(wᵀxᵢ + b) > 1,那么 αᵢ = 0,即该样本对模型没有贡献

说白了,只有支持向量才决定最终的分类超平面。其他样本即使有再多,只要不是支持向量,对模型就没影响。

我在做空气质量分类项目时,采集了10万个样本,但最终支持向量只有几百个。这意味着模型非常“轻量”,推理速度极快。

4.5 知识体系总览

下面我用一张图来总结本章的核心逻辑:

硬间隔SVM优化目标推导流程 步骤1:原始问题 min ½||w||² s.t. yᵢ(wᵀxᵢ+b) ≥ 1 引入乘子 步骤2:拉格朗日函数 L(w,b,α) = ½||w||² - Σαᵢ[yᵢ(wᵀxᵢ+b)-1] 求偏导 步骤3:对偶问题 max Σαᵢ - ½ΣΣαᵢαⱼyᵢyⱼxᵢᵀxⱼ s.t. αᵢ≥0, Σαᵢyᵢ=0 关键结果 w = Σαᵢyᵢxᵢ Σαᵢyᵢ = 0 αᵢ[yᵢ(wᵀxᵢ+b)-1] = 0 权重向量由支持向量线性组合 正负类乘子和为零 互补松弛条件 核心优势总结 ✅ 变量从d+1降为n ✅ 约束更简单 ✅ 支持向量稀疏性 ✅ 自然引入核函数 ✅ 凸优化全局最优 ✅ 避免维度灾难

4.6 实际项目中的体会

最后分享一点实战经验。

我在做河流水质分类项目时,原始特征有50多个(pH值、溶解氧、氨氮等指标)。如果直接求解原始问题,需要优化51个变量(50个w + 1个b)。

但样本量只有200个左右。转换成对偶问题后,只需要优化200个α变量。而且最终只有30多个支持向量,模型非常简洁。

注意事项:

  • 硬间隔SVM要求数据完全线性可分——这在环境数据中很少见
  • 如果数据有噪声,硬间隔会导致过拟合
  • 实际项目中,我们通常使用软间隔SVM(下一章会讲)
  • 对偶问题虽然变量多,但可以用SMO算法高效求解

嗯,到这里,硬间隔SVM的优化目标推导、拉格朗日乘子法、对偶问题转换就讲完了。

你想想看,从几何直观的“找最宽马路”,到数学上的凸优化问题,再到拉格朗日对偶转换——每一步都有它存在的道理。搞懂这些,你才算真正入了SVM的门。


公众号:蓝海资料掘金营,微信deep3321