支持向量机(Support Vector Machine, SVM)是机器学习领域中最经典的算法之一。它的理论大厦建立在凸优化、拉格朗日对偶理论以及再生核希尔伯特空间之上。
要真正理解 SVM,不能只停留在“最大化间隔”的直观层面,必须深入其背后的数学引擎。本文将分为两大部分:
- 优化理论基础:拉格朗日乘子法与 KKT 条件。
- SVM 推导实战:从硬间隔到软间隔,再到核函数。
第一部分:优化理论基础
在介绍 SVM 之前,我们需要掌握处理带约束优化问题的通用方法。
1. 拉格朗日乘子法与 KKT 条件
我们要解决的是如下通用的优化问题(原始问题):
为了处理这些约束,我们构造广义拉格朗日函数,将约束“吸收”到目标函数中:
其中 $\lambda$ 是等式约束乘子(无符号限制),$\mu$ 是不等式约束乘子(必须非负)。
KKT 条件 (Karush-Kuhn-Tucker Conditions)
对于含不等式约束的优化问题,如果 $x^*$ 是局部最优解,它必须满足以下四个核心条件(统称 KKT 条件):
站定性 (Stationarity):
拉格朗日函数的梯度为零。这意味着在最优点,目标函数的梯度方向由各个约束函数的梯度线性组合而成。
原始可行性 (Primal Feasibility):
解必须满足原始的约束条件。对偶可行性 (Dual Feasibility):
不等式约束的乘子必须非负。几何解释:$\mu \ge 0$ 保证了目标函数梯度的反方向(下降方向)是被约束边界“挡住”指向可行域内部的,而不是指向外部。
互补松弛性 (Complementary Slackness) —— SVM 的灵魂
这个条件揭示了一个深刻的二元关系:
- 要么约束无效($g_j < 0$),此时点在可行域内部,乘子 $\mu_j$ 必须为 0。
- 要么约束有效($g_j = 0$),此时点在边界上,乘子 $\mu_j$ 可以大于 0。
- 这对理解 SVM 的“支持向量”至关重要。
这是为您补充的“拉格朗日对偶原理”部分,请将其插入到原博客的“1. 拉格朗日乘子法与 KKT 条件”和“KKT 条件”这两个小节之间,作为一个独立的理论支撑环节。
2. 拉格朗日对偶原理 (Lagrange Duality)
构造出广义拉格朗日函数 $\mathcal{L}(x, \lambda, \mu)$ 后,我们并不是直接对其求导,而是利用对偶性将原始问题转换为一个更容易求解的新问题。
(1) 原始问题的无约束形式
我们可以将原始的带约束优化问题,等价地写成一个“极小极大”问题:
为什么这样等价? 让我们看看内部的 $\max$ 操作:
- 如果 $x$ 违反了约束(例如 $g_j(x) > 0$):
我们可以取 $\mu_j \to +\infty$,使得 $\mathcal{L} \to +\infty$。 - 如果 $x$ 满足约束($g_j(x) \le 0$ 且 $h_i(x)=0$):
为了最大化 $\mathcal{L}$,最优的 $\mu_j$ 只能取 0(或者当 $g_j(x)=0$ 时取任意值,结果仍为0),此时 $\max \mathcal{L} = f(x)$。
因此,$\minx \max{\lambda, \mu} \mathcal{L}$ 本质上就是在满足约束的区域内寻找 $f(x)$ 的最小值。如果违反约束,目标函数值为无穷大,自然会被 $\min$ 操作排除。
(2) 对偶问题 (Dual Problem)
对偶问题则是将“极小”和“极大”的顺序互换:
这个过程通常分为两步:
- 求对偶函数:先固定 $\lambda, \mu$,求 $x$ 使得 $\mathcal{L}$ 最小,得到 $g(\lambda, \mu) = \min_x \mathcal{L}(x, \lambda, \mu)$。
- 求对偶最大值:在满足 $\mu \ge 0$ 的条件下,最大化 $g(\lambda, \mu)$。
(3) 强对偶性 (Strong Duality)
原始问题 $p^$ 和对偶问题 $d^$ 之间存在如下关系:
- 弱对偶性 (Weak Duality):$d^ \le p^$ 恒成立。即对偶问题的解是原始问题解的下界。
- 强对偶性 (Strong Duality):$d^ = p^$。
为什么 SVM 能够使用对偶方法求解?
因为 SVM 的优化目标是凸二次规划问题,且满足 Slater 条件(即存在一个 $x$ 严格满足所有不等式约束)。在这些条件下,强对偶性成立。这意味着我们可以放心地去求解对偶问题,其结果等价于原始问题的最优解。
总结:通过对偶原理,我们将一个关于 $x$ 的复杂约束优化问题,转化为了一个关于 $\lambda, \mu$ 的新问题。这不仅简化了求解难度,更重要的是自然地引入了内积形式,为后续的核技巧铺平了道路。
第二部分:硬间隔 SVM (Hard Margin)
前提假设:数据是线性可分的(不存在噪声,两类可以被完美分开)。
1. 几何建模
我们需要找到一个超平面 $w^T x + b = 0$ 来分割正负样本($y_i \in {+1, -1}$)。
为了让分类更稳健,我们希望最大化几何间隔(Geometric Margin),即最近的点到超平面的距离。
约束条件:所有点必须分类正确,且位于间隔边界之外。
(这里我们将函数间隔固定为 1,以消除缩放带来的不确定性)
优化目标:最大化距离 $\frac{1}{||w||}$,等价于最小化 $\frac{1}{2}||w||^2$。
原始优化问题 (Primal Problem):
2. 拉格朗日对偶性
构造拉格朗日函数(引入乘子 $\alpha_i \ge 0$):
根据强对偶性,我们将“极小化极大”问题转化为对偶问题(Dual Problem):$\max{\alpha} \min{w, b} \mathcal{L}$。
步骤 A:对 $w, b$ 求偏导并令为 0
关键发现:最优的法向量 $w$ 仅仅是样本向量的线性组合。
步骤 B:代回函数,消去 $w, b$
将上述结果代回 $\mathcal{L}$,经过化简得到只关于 $\alpha$ 的函数:
步骤 C:最终对偶问题
3. 支持向量的诞生
求解出 $\alpha$ 后,根据 KKT 的互补松弛性:$\alpha_i (1 - y_i (w^T x_i + b)) = 0$。
- 如果 $\alpha_i > 0$,则必然有 $1 - y_i (w^T x_i + b) = 0$。
- 这说明该样本点严格位于间隔边界上。这些点就是支持向量(Support Vectors)。
- 其余 $\alpha_i = 0$ 的非支持向量对模型完全没有影响。
第三部分:软间隔 SVM (Soft Margin)
现实问题:数据往往存在噪声,或者线性不可分。硬间隔会导致过拟合或无法求解。
1. 引入松弛变量
我们允许部分样本“犯错”(进入间隔内部甚至跑到对面),为此引入松弛变量 $\xi_i \ge 0$。
约束变为:
2. 新的目标函数
我们需要在“最大化间隔”和“最小化错误”之间权衡。引入惩罚系数 $C$:
- $C$ 较大:对错误零容忍,容易过拟合(逼近硬间隔)。
- $C$ 较小:容忍更多错误,间隔更宽,容易欠拟合。
3. 软间隔的对偶形式
推导过程与硬间隔几乎完全一致,唯一的区别在于拉格朗日乘子 $\alpha_i$ 的约束范围。
硬间隔约束:$\alpha_i \ge 0$
软间隔约束:$0 \le \alpha_i \le C$
这限制了单个样本对模型的最大影响权重,增强了鲁棒性。
第四部分:核函数 (Kernel Function)
现实问题:数据呈非线性分布(如环形数据),在低维空间无法用线性超平面分开。
1. 核心思想:升维
根据 Cover 定理,低维空间线性不可分的数据,映射到高维空间后往往变得线性可分。
设映射函数为 $\phi(x)$,则对偶问题变为:
2. 核技巧 (Kernel Trick)
直接计算高维向量 $\phi(x)$ 再做内积,计算量极其巨大(甚至无穷维)。
如果存在函数 $K(x, z)$ 满足:
我们就可以不用显式知道 $\phi(x)$ 是什么,直接在低维空间计算 $K(x, z)$ 来等效高维内积。
3. 常用核函数
- 线性核 (Linear Kernel):$K(x, z) = x^T z$
- 适用于特征维数高、线性可分的情况。
- 多项式核 (Polynomial Kernel):$K(x, z) = (x^T z + 1)^d$
- 高斯核 / RBF 核:$K(x, z) = \exp(-\gamma ||x - z||^2)$
- 最常用。相当于映射到无穷维空间。
- $\gamma$ 控制高斯的宽度:$\gamma$ 越大,模型越关注局部,易过拟合;$\gamma$ 越小,模型越平滑。
参考
https://avanti1980.github.io/course-ml/pages/svm.html
那么,什么是支持向量?
支持向量机(SVM)中“支持向量”的数学推导
在支持向量机(SVM)中,“支持向量”(Support Vectors)是训练集中最靠近决策超平面的那些样本点。它们是最难分类的点,也是唯一决定超平面位置的点。
我们可以通过从线性分类器的定义出发,利用拉格朗日乘子法来揭示其数学本质。
1. 问题的数学描述
假设我们有一组数据 ${ (xi, y_i) }{i=1}^n$,其中 $x_i \in \mathbb{R}^d$,$y_i \in {+1, -1}$。线性超平面可以定义为:
为保证分类的鲁棒性,SVM 要求所有样本点不仅要分类正确,还要距离超平面有一定的间隔(Margin)。通过缩放 $w$ 和 $b$,我们可以令距离超平面最近的点满足:
由此得到所有样本必须满足的约束条件:
2. 优化目标与拉格朗日函数
SVM 的目标是最大化间隔 $\frac{2}{|w|}$,等价于最小化 $\frac{1}{2} |w|^2$。这是一个带约束的凸优化问题,我们引入拉格朗日乘子 $\alpha_i \geq 0$ 来构建拉格朗日函数:
3. KKT 条件:支持向量的数学定义
根据优化理论,该问题的解必须满足 KKT(Karush-Kuhn-Tucker)条件。其中最关键的一条是对合互补条件(Complementary Slackness):
这个等式意味着,对于每一个样本 $i$,只有两种情况:
- $\alpha_i = 0$:此时 $y_i (w^T x_i + b) > 1$,这些点处于“间隔之外”,它们对损失函数没有贡献。如果删除这些点,最终生成的超平面不会有任何变化。
- $\alpha_i > 0$:为了满足等式,必须有 $y_i (w^T x_i + b) - 1 = 0$,即 $y_i (w^T x_i + b) = 1$。这些点恰好落在间隔边界上。
结论:这些对应的 $\alpha_i > 0$ 的样本点 $x_i$ 就被称为支持向量。
4. 权重 $w$ 是如何构成的?
对 $\mathcal{L}(w, b, \alpha)$ 关于 $w$ 求偏导并令其为 0,我们可以得到:
由上式可见:
- 超平面的法向量 $w$ 是样本点的线性组合。
- 由于大部分样本的 $\alpha_i = 0$,所以实际上 $w$ 仅由支持向量($\alpha_i > 0$ 的点)决定。
5. 总结:支持向量的特性
- 稀疏性:在一个庞大的数据集中,支持向量通常只占极少一部分。这意味着 SVM 具有极高的模型压缩能力,训练完成后,你只需要保存这些支持向量即可。
- 决定性:超平面的位置完全由支持向量“支撑”起来。移动非支持向量不会改变模型;但移动任何一个支持向量,超平面都会随之改变。
总结
SVM 的推导逻辑环环相扣,展现了数学的对称美:
- 几何直观:将分类问题转化为最大化间隔的凸二次规划问题。
- 拉格朗日对偶:将复杂的原始问题转化为易于求解的对偶问题,并自然引入了内积形式。
- 软间隔:通过 $C$ 和 $\xi$ 处理噪声,实现偏差与方差的权衡。
- 核技巧:通过 $K(x, z)$ 巧妙解决非线性问题,实现从低维到高维的“降维打击”。
理解了 KKT 条件和对偶性,你就真正掌握了 SVM 的灵魂。