第07章:支持向量机 (SVM)
“Nothing is more practical than a good theory.” —— Vladimir Vapnik
重要提示:如果说感知机是神经网络的始祖,那么支持向量机 (SVM) 就是统计学习理论的皇冠。
在深度学习爆发之前的二十年里,SVM 统治着机器学习的世界。它的强大不仅仅在于分类效果,更在于其背后坚如磐石的数学理论——VC 维理论和结构风险最小化。
本章我们将见证一个算法如何将几何直觉(最大间隔)转化为一个凸优化问题,并通过对偶性(Duality)巧妙地通过"支持向量"来稀疏化模型。这不仅是一个算法,这是数学美学的典范。
目录
- 一、引言:感知机的遗憾
- 二、几何间隔 (Margin):最宽的分界线
- 2.1 函数间隔 vs 几何间隔
- 2.2 最大化间隔的数学表达
- 2.3 为什么最大化间隔等价于最小化
1
2
∥
w
∥
2
\\frac{1}{2}\\|\\mathbf{w}\\|^2
21∥w∥2?
- 三、对偶问题 (Duality):优雅的转换
- 3.1 为何要对偶?
- 3.2 Lagrange 函数构建
- 3.3 对偶问题推导
- 3.4 KKT 条件与支持向量
- 3.5 对偶问题的物理意义
- 四、软间隔 (Soft Margin):拥抱不完美
- 4.1 现实世界并不完美
- 4.2 引入松弛变量
ξ
\\xi
ξ - 4.3 软间隔的对偶问题
- 4.4 Hinge Loss:打通优化视角
- 4.5 SVM = Hinge Loss + L2 正则化
- 五、SMO 算法:高效求解对偶问题
- 六、本章小结
- 七、推荐阅读
一、引言:感知机的遗憾
在第6章中,我们学习了感知机算法。Novikoff 定理保证了只要数据线性可分,感知机就一定能找到一个分离超平面。但这个定理也暴露了一个致命的问题:
感知机的解不唯一!
对于同一个数据集,根据样本访问顺序和初始化的不同,感知机可能收敛到完全不同的超平面。这些超平面虽然都能正确分类训练数据,但它们的泛化能力可能天差地别。

核心洞见:我们不仅要找一个"能分开"的超平面,更要找"分得最宽"的那个!
这就是 最大间隔 (Maximum Margin) 的思想——SVM 的灵魂。
二、几何间隔 (Margin):最宽的分界线
2.1 函数间隔 vs 几何间隔
给定训练样本
(
x
i
,
y
i
)
(\\mathbf{x}_i, y_i)
(xi,yi) 和超平面
(
w
,
b
)
(\\mathbf{w}, b)
(w,b),我们定义:
函数间隔 (Functional Margin):
γ
^
i
=
y
i
(
w
T
x
i
+
b
)
\\hat{\\gamma}_i = y_i (\\mathbf{w}^T \\mathbf{x}_i + b)
γ^i=yi(wTxi+b)
物理意义:
- 如果
y
i
=
+
1
y_i = +1
yi=+1 且w
T
x
i
+
b
>
0
\\mathbf{w}^T \\mathbf{x}_i + b > 0
wTxi+b>0,则γ
^
i
>
0
\\hat{\\gamma}_i > 0
γ^i>0(分类正确) - 如果
y
i
=
−
1
y_i = -1
yi=−1 且w
T
x
i
+
b
<
0
\\mathbf{w}^T \\mathbf{x}_i + b < 0
wTxi+b<0,则γ
^
i
>
0
\\hat{\\gamma}_i > 0
γ^i>0(分类正确) -
γ
^
i
\\hat{\\gamma}_i
γ^i 越大,分类越"自信"
但函数间隔有个致命问题:它不具有尺度不变性。如果我们把
(
w
,
b
)
(\\mathbf{w}, b)
(w,b) 同时放大 2 倍,超平面没有变化,但函数间隔翻倍了!
几何间隔 (Geometric Margin):
γ
i
=
y
i
(
w
T
x
i
+
b
)
∥
w
∥
=
γ
^
i
∥
w
∥
\\gamma_i = \\frac{y_i (\\mathbf{w}^T \\mathbf{x}_i + b)}{\\|\\mathbf{w}\\|} = \\frac{\\hat{\\gamma}_i}{\\|\\mathbf{w}\\|}
γi=∥w∥yi(wTxi+b)=∥w∥γ^i
这正是样本点
x
i
\\mathbf{x}_i
xi 到超平面的带符号距离 (Signed Distance)。
关键:几何间隔具有尺度不变性——
(
w
,
b
)
(\\mathbf{w}, b)
(w,b) 放大
k
k
k 倍,
γ
i
\\gamma_i
γi 不变。
对于整个数据集,定义间隔 (Margin) 为所有样本中的最小几何间隔:
γ
=
min
i
=
1
,
…
,
N
γ
i
=
min
i
=
1
,
…
,
N
y
i
(
w
T
x
i
+
b
)
∥
w
∥
\\gamma = \\min_{i=1,\\dots,N} \\gamma_i = \\min_{i=1,\\dots,N} \\frac{y_i (\\mathbf{w}^T \\mathbf{x}_i + b)}{\\|\\mathbf{w}\\|}
γ=i=1,…,Nminγi=i=1,…,Nmin∥w∥yi(wTxi+b)
2.2 最大化间隔的数学表达
SVM 的核心思想是:找到使间隔最大的超平面。
max
w
,
b
γ
s.t.
y
i
(
w
T
x
i
+
b
)
∥
w
∥
≥
γ
,
i
=
1
,
…
,
N
\\begin{aligned} \\max_{\\mathbf{w}, b} \\quad & \\gamma \\\\ \\text{s.t.} \\quad & \\frac{y_i (\\mathbf{w}^T \\mathbf{x}_i + b)}{\\|\\mathbf{w}\\|} \\geq \\gamma, \\quad i = 1, \\dots, N \\end{aligned}
w,bmaxs.t.γ∥w∥yi(wTxi+b)≥γ,i=1,…,N
等价于:
max
w
,
b
γ
∥
w
∥
s.t.
y
i
(
w
T
x
i
+
b
)
≥
γ
^
,
i
=
1
,
…
,
N
\\begin{aligned} \\max_{\\mathbf{w}, b} \\quad & \\frac{\\gamma}{\\|\\mathbf{w}\\|} \\\\ \\text{s.t.} \\quad & y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq \\hat{\\gamma}, \\quad i = 1, \\dots, N \\end{aligned}
w,bmaxs.t.∥w∥γyi(wTxi+b)≥γ^,i=1,…,N
这里
γ
^
=
γ
∥
w
∥
\\hat{\\gamma} = \\gamma \\|\\mathbf{w}\\|
γ^=γ∥w∥ 是函数间隔。
2.3 为什么最大化间隔等价于最小化
1
2
∥
w
∥
2
\\frac{1}{2}\\|\\mathbf{w}\\|^2
21∥w∥2?
核心问题:如何把上面的优化问题转化为标准形式?
Step 1:利用尺度不变性
由于
(
w
,
b
)
(\\mathbf{w}, b)
(w,b) 放大
k
k
k 倍不改变超平面,我们可以固定函数间隔
γ
^
=
1
\\hat{\\gamma} = 1
γ^=1。这是一个技巧性的约定,但不失一般性。
关键洞见:此时几何间隔变为
γ
=
γ
^
∥
w
∥
=
1
∥
w
∥
\\gamma = \\frac{\\hat{\\gamma}}{\\|\\mathbf{w}\\|} = \\frac{1}{\\|\\mathbf{w}\\|}
γ=∥w∥γ^=∥w∥1 因此,最大化间隔
γ
\\gamma
γ 就等价于最大化
1
∥
w
∥
\\frac{1}{\\|\\mathbf{w}\\|}
∥w∥1,也就是最小化
∥
w
∥
\\|\\mathbf{w}\\|
∥w∥!
此时问题变为:
max
w
,
b
1
∥
w
∥
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
N
\\begin{aligned} \\max_{\\mathbf{w}, b} \\quad & \\frac{1}{\\|\\mathbf{w}\\|} \\\\ \\text{s.t.} \\quad & y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1, \\quad i = 1, \\dots, N \\end{aligned}
w,bmaxs.t.∥w∥1yi(wTxi+b)≥1,i=1,…,N
Step 2:转化为最小化问题
最大化
1
∥
w
∥
\\frac{1}{\\|\\mathbf{w}\\|}
∥w∥1 等价于最小化
∥
w
∥
\\|\\mathbf{w}\\|
∥w∥,进一步等价于最小化
∥
w
∥
2
\\|\\mathbf{w}\\|^2
∥w∥2(平方不改变单调性,但使问题可微):
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
N
\\begin{aligned} \\min_{\\mathbf{w}, b} \\quad & \\frac{1}{2} \\|\\mathbf{w}\\|^2 \\\\ \\text{s.t.} \\quad & y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1, \\quad i = 1, \\dots, N \\end{aligned}
w,bmins.t.21∥w∥2yi(wTxi+b)≥1,i=1,…,N
为什么加系数
1
2
\\frac{1}{2}
21?
纯粹是为了求导方便:
d
d
w
1
2
∥
w
∥
2
=
w
\\frac{d}{dw} \\frac{1}{2}\\|\\mathbf{w}\\|^2 = \\mathbf{w}
dwd21∥w∥2=w,不需要系数 2。
推导小结:
最大化间隔
⇔
max
1
∥
w
∥
⇔
min
∥
w
∥
⇔
min
1
2
∥
w
∥
2
\\boxed{ \\begin{aligned} \\text{最大化间隔} \\quad & \\Leftrightarrow \\quad \\max \\frac{1}{\\|\\mathbf{w}\\|} \\\\ & \\Leftrightarrow \\quad \\min \\|\\mathbf{w}\\| \\\\ & \\Leftrightarrow \\quad \\min \\frac{1}{2} \\|\\mathbf{w}\\|^2 \\end{aligned} }
最大化间隔⇔max∥w∥1⇔min∥w∥⇔min21∥w∥2
这个优化问题称为 硬间隔 SVM (Hard-Margin SVM) 的原始问题 (Primal Problem)。

几何直觉:
- 约束条件
y
i
(
w
T
x
i
+
b
)
≥
1
y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1
yi(wTxi+b)≥1 确保所有点都被正确分类,且至少有距离1
∥
w
∥
\\frac{1}{\\|\\mathbf{w}\\|}
∥w∥1 - 最小化
∥
w
∥
2
\\|\\mathbf{w}\\|^2
∥w∥2 就是最大化间隔1
∥
w
∥
\\frac{1}{\\|\\mathbf{w}\\|}
∥w∥1 - 图中绿色圆圈标记的点是支持向量,它们恰好落在间隔边界上
三、对偶问题 (Duality):优雅的转换
3.1 为何要对偶?
原始问题已经是一个凸二次规划 (Convex QP),可以直接求解。那为什么还要转换到对偶问题呢?
两大理由:
约束优化更容易解:
- 原始问题有
N
N
N 个不等式约束(每个样本一个),优化变量是d
+
1
d+1
d+1 维的(
w
,
b
)
(\\mathbf{w}, b)
(w,b) - 对偶问题虽然有
N
N
N 个变量(每个样本一个 Lagrange 乘子α
i
\\alpha_i
αi),但约束更简单(箱约束α
i
≥
0
\\alpha_i \\geq 0
αi≥0) - 现有的 QP Solver(如 SMO 算法)对对偶问题更高效
自然引入核函数:
- 对偶问题的解只依赖于样本间的内积
x
i
T
x
j
\\mathbf{x}_i^T \\mathbf{x}_j
xiTxj - 这为核技巧 (Kernel Trick) 打开了大门——我们可以把
x
i
T
x
j
\\mathbf{x}_i^T \\mathbf{x}_j
xiTxj 替换为K
(
x
i
,
x
j
)
K(\\mathbf{x}_i, \\mathbf{x}_j)
K(xi,xj),从而在高维甚至无限维空间中工作,而无需显式计算特征映射
3.2 Lagrange 函数构建
对于带不等式约束的优化问题:
min
w
,
b
1
2
∥
w
∥
2
s.t.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
,
i
=
1
,
…
,
N
\\begin{aligned} \\min_{\\mathbf{w}, b} \\quad & \\frac{1}{2} \\|\\mathbf{w}\\|^2 \\\\ \\text{s.t.} \\quad & 1 – y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\leq 0, \\quad i = 1, \\dots, N \\end{aligned}
w,bmins.t.21∥w∥21−yi(wTxi+b)≤0,i=1,…,N
引入 Lagrange 乘子
α
i
≥
0
\\alpha_i \\geq 0
αi≥0,构造 Lagrange 函数:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
N
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
L(\\mathbf{w}, b, \\alpha) = \\frac{1}{2} \\|\\mathbf{w}\\|^2 – \\sum_{i=1}^N \\alpha_i \\left[ y_i (\\mathbf{w}^T \\mathbf{x}_i + b) – 1 \\right]
L(w,b,α)=21∥w∥2−i=1∑Nαi[yi(wTxi+b)−1]
物理意义:
-
1
2
∥
w
∥
2
\\frac{1}{2}\\|\\mathbf{w}\\|^2
21∥w∥2 是目标函数(要最小化) -
−
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
-\\alpha_i [y_i(\\mathbf{w}^T \\mathbf{x}_i + b) – 1]
−αi[yi(wTxi+b)−1] 是约束的惩罚项- 当约束满足时
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1
yi(wTxi+b)≥1,这一项≤
0
\\leq 0
≤0 - 当约束违反时,
α
i
\\alpha_i
αi 增大,惩罚增大
- 当约束满足时
3.3 对偶问题推导
根据 Lagrange 对偶理论,原始问题等价于:
min
w
,
b
max
α
i
≥
0
L
(
w
,
b
,
α
)
\\min_{\\mathbf{w}, b} \\max_{\\alpha_i \\geq 0} L(\\mathbf{w}, b, \\alpha)
w,bminαi≥0maxL(w,b,α)
对偶问题是:
max
α
i
≥
0
min
w
,
b
L
(
w
,
b
,
α
)
\\max_{\\alpha_i \\geq 0} \\min_{\\mathbf{w}, b} L(\\mathbf{w}, b, \\alpha)
αi≥0maxw,bminL(w,b,α)
强对偶性:对于凸优化问题且满足 Slater 条件(存在严格可行解),强对偶性成立,即两者最优值相等。SVM 满足这些条件。
Step 1:对
w
\\mathbf{w}
w 和
b
b
b 求偏导
∂
L
∂
w
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
∂
L
∂
b
=
−
∑
i
=
1
N
α
i
y
i
=
0
\\begin{aligned} \\frac{\\partial L}{\\partial \\mathbf{w}} &= \\mathbf{w} – \\sum_{i=1}^N \\alpha_i y_i \\mathbf{x}_i = 0 \\\\ \\frac{\\partial L}{\\partial b} &= -\\sum_{i=1}^N \\alpha_i y_i = 0 \\end{aligned}
∂w∂L∂b∂L=w−i=1∑Nαiyixi=0=−i=1∑Nαiyi=0
得到:
w
=
∑
i
=
1
N
α
i
y
i
x
i
∑
i
=
1
N
α
i
y
i
=
0
\\boxed{ \\begin{aligned} \\mathbf{w} &= \\sum_{i=1}^N \\alpha_i y_i \\mathbf{x}_i \\\\ \\sum_{i=1}^N \\alpha_i y_i &= 0 \\end{aligned} }
wi=1∑Nαiyi=i=1∑Nαiyixi=0
核心洞见:最优权重
w
\\mathbf{w}
w 是训练样本的线性组合!系数
α
i
\\alpha_i
αi 衡量样本
i
i
i 的"重要性"。
Step 2:代入 Lagrange 函数
将
w
=
∑
i
=
1
N
α
i
y
i
x
i
\\mathbf{w} = \\sum_{i=1}^N \\alpha_i y_i \\mathbf{x}_i
w=∑i=1Nαiyixi 代入
L
(
w
,
b
,
α
)
L(\\mathbf{w}, b, \\alpha)
L(w,b,α):
L
=
1
2
∥
∑
i
=
1
N
α
i
y
i
x
i
∥
2
−
∑
i
=
1
N
α
i
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
T
x
i
+
b
)
+
∑
i
=
1
N
α
i
\\begin{aligned} L &= \\frac{1}{2} \\left\\| \\sum_{i=1}^N \\alpha_i y_i \\mathbf{x}_i \\right\\|^2 – \\sum_{i=1}^N \\alpha_i y_i \\left( \\sum_{j=1}^N \\alpha_j y_j \\mathbf{x}_j^T \\mathbf{x}_i + b \\right) + \\sum_{i=1}^N \\alpha_i \\end{aligned}
L=21
i=1∑Nαiyixi
2−i=1∑Nαiyi(j=1∑NαjyjxjTxi+b)+i=1∑Nαi
展开第一项:
∥
∑
i
=
1
N
α
i
y
i
x
i
∥
2
=
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
\\left\\| \\sum_{i=1}^N \\alpha_i y_i \\mathbf{x}_i \\right\\|^2 = \\sum_{i=1}^N \\sum_{j=1}^N \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j)
i=1∑Nαiyixi
2=i=1∑Nj=1∑Nαiαjyiyj(xiTxj)
展开第二项:
∑
i
=
1
N
α
i
y
i
∑
j
=
1
N
α
j
y
j
x
j
T
x
i
=
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
\\sum_{i=1}^N \\alpha_i y_i \\sum_{j=1}^N \\alpha_j y_j \\mathbf{x}_j^T \\mathbf{x}_i = \\sum_{i=1}^N \\sum_{j=1}^N \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j)
i=1∑Nαiyij=1∑NαjyjxjTxi=i=1∑Nj=1∑Nαiαjyiyj(xiTxj)
第二项中的
b
b
b 项:
∑
i
=
1
N
α
i
y
i
b
=
b
∑
i
=
1
N
α
i
y
i
=
0
(由约束
∑
i
α
i
y
i
=
0
)
\\sum_{i=1}^N \\alpha_i y_i b = b \\sum_{i=1}^N \\alpha_i y_i = 0 \\quad \\text{(由约束 $\\sum_i \\alpha_i y_i = 0$)}
i=1∑Nαiyib=bi=1∑Nαiyi=0(由约束 ∑iαiyi=0)
因此:
L
=
1
2
∑
i
,
j
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
−
∑
i
,
j
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
+
∑
i
α
i
L = \\frac{1}{2} \\sum_{i,j} \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j) – \\sum_{i,j} \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j) + \\sum_i \\alpha_i
L=21i,j∑αiαjyiyj(xiTxj)−i,j∑αiαjyiyj(xiTxj)+i∑αi
=
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
= \\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 (\\mathbf{x}_i^T \\mathbf{x}_j)
=i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xiTxj)
对偶问题 (Dual Problem):
max
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
s.t.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
…
,
N
\\boxed{ \\begin{aligned} \\max_{\\alpha} \\quad & \\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 (\\mathbf{x}_i^T \\mathbf{x}_j) \\\\ \\text{s.t.} \\quad & \\sum_{i=1}^N \\alpha_i y_i = 0 \\\\ & \\alpha_i \\geq 0, \\quad i = 1, \\dots, N \\end{aligned} }
αmaxs.t.i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xiTxj)i=1∑Nαiyi=0αi≥0,i=1,…,N
或者写成最小化形式:
min
α
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
−
∑
i
=
1
N
α
i
s.t.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
…
,
N
\\boxed{ \\begin{aligned} \\min_{\\alpha} \\quad & \\frac{1}{2} \\sum_{i=1}^N \\sum_{j=1}^N \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j) – \\sum_{i=1}^N \\alpha_i \\\\ \\text{s.t.} \\quad & \\sum_{i=1}^N \\alpha_i y_i = 0 \\\\ & \\alpha_i \\geq 0, \\quad i = 1, \\dots, N \\end{aligned} }
αmins.t.21i=1∑Nj=1∑Nαiαjyiyj(xiTxj)−i=1∑Nαii=1∑Nαiyi=0αi≥0,i=1,…,N
3.4 KKT 条件与支持向量
对于最优解
(
w
∗
,
b
∗
,
α
∗
)
(\\mathbf{w}^*, b^*, \\alpha^*)
(w∗,b∗,α∗),必须满足 KKT (Karush-Kuhn-Tucker) 条件:
梯度条件:
∇
w
L
=
0
⇒
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
∂
L
∂
b
=
0
⇒
∑
i
=
1
N
α
i
∗
y
i
=
0
\\begin{aligned} \\nabla_\\mathbf{w} L &= 0 \\quad \\Rightarrow \\quad \\mathbf{w}^* = \\sum_{i=1}^N \\alpha_i^* y_i \\mathbf{x}_i \\\\ \\frac{\\partial L}{\\partial b} &= 0 \\quad \\Rightarrow \\quad \\sum_{i=1}^N \\alpha_i^* y_i = 0 \\end{aligned}
∇wL∂b∂L=0⇒w∗=i=1∑Nαi∗yixi=0⇒i=1∑Nαi∗yi=0
原始可行性:
y
i
(
w
∗
T
x
i
+
b
∗
)
≥
1
,
∀
i
y_i (\\mathbf{w}^{*T} \\mathbf{x}_i + b^*) \\geq 1, \\quad \\forall i
yi(w∗Txi+b∗)≥1,∀i
对偶可行性:
α
i
∗
≥
0
,
∀
i
\\alpha_i^* \\geq 0, \\quad \\forall i
αi∗≥0,∀i
互补松弛性 (Complementary Slackness):
α
i
∗
[
y
i
(
w
∗
T
x
i
+
b
∗
)
−
1
]
=
0
,
∀
i
\\boxed{\\alpha_i^* \\left[ y_i (\\mathbf{w}^{*T} \\mathbf{x}_i + b^*) – 1 \\right] = 0, \\quad \\forall i}
αi∗[yi(w∗Txi+b∗)−1]=0,∀i
互补松弛性的物理意义:

这个条件将样本分为两类:
-
α
i
∗
=
0
\\alpha_i^* = 0
αi∗=0:样本
i
i
i 的约束不起作用,
y
i
(
w
∗
T
x
i
+
b
∗
)
>
1
y_i (\\mathbf{w}^{*T} \\mathbf{x}_i + b^*) > 1
yi(w∗Txi+b∗)>1(点在间隔边界外侧)
- 这些点对模型没有贡献(
w
∗
=
∑
α
i
y
i
x
i
\\mathbf{w}^* = \\sum \\alpha_i y_i \\mathbf{x}_i
w∗=∑αiyixi 中α
i
=
0
\\alpha_i = 0
αi=0) - 可以删除这些样本,模型不变
- 这些点对模型没有贡献(
-
α
i
∗
>
0
\\alpha_i^* > 0
αi∗>0:必须
y
i
(
w
∗
T
x
i
+
b
∗
)
=
1
y_i (\\mathbf{w}^{*T} \\mathbf{x}_i + b^*) = 1
yi(w∗Txi+b∗)=1(点恰好在间隔边界上)
- 这些点称为 支持向量 (Support Vectors)
- 它们"支撑"着分离超平面,决定了间隔的大小
- 移动支持向量会改变超平面,移动其他点则不会
支持向量的稀疏性:
在实践中,通常只有很少一部分样本是支持向量(
α
i
>
0
\\alpha_i > 0
αi>0)。这带来两大好处:
w
=
∑
i
∈
S
V
α
i
y
i
x
i
\\mathbf{w} = \\sum_{i \\in SV} \\alpha_i y_i \\mathbf{x}_i
w=∑i∈SVαiyixi,只需要存储支持向量
f
(
x
)
=
∑
i
∈
S
V
α
i
y
i
(
x
i
T
x
)
+
b
f(x) = \\sum_{i \\in SV} \\alpha_i y_i (\\mathbf{x}_i^T \\mathbf{x}) + b
f(x)=∑i∈SVαiyi(xiTx)+b,只需计算与支持向量的内积
比喻:在一群人中选代表投票,只有站在边界上的人(支持向量)有投票权,远离边界的人可以回家睡觉了。
3.5 对偶问题的物理意义
让我们重新审视对偶问题的目标函数:
max
α
∑
i
=
1
N
α
i
−
1
2
∑
i
,
j
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
\\max_{\\alpha} \\quad \\sum_{i=1}^N \\alpha_i – \\frac{1}{2} \\sum_{i,j} \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j)
αmaxi=1∑Nαi−21i,j∑αiαjyiyj(xiTxj) 第一项
∑
i
α
i
\\sum_i \\alpha_i
∑iαi:
- 鼓励
α
i
\\alpha_i
αi 变大 - 物理意义:每个样本都"想要"贡献更多权重
第二项
−
1
2
∑
i
,
j
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
-\\frac{1}{2} \\sum_{i,j} \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j)
−21∑i,jαiαjyiyj(xiTxj):
- 惩罚同类样本之间的权重组合(
y
i
=
y
j
y_i = y_j
yi=yj 时,y
i
y
j
=
+
1
y_i y_j = +1
yiyj=+1,内积越大惩罚越大) - 鼓励异类样本之间的权重组合(
y
i
≠
y
j
y_i \\neq y_j
yi=yj 时,y
i
y
j
=
−
1
y_i y_j = -1
yiyj=−1) - 物理意义:模型倾向于选择"有代表性"的样本(不重复、分散)
约束
∑
i
α
i
y
i
=
0
\\sum_i \\alpha_i y_i = 0
∑iαiyi=0:
- 正负样本的权重必须平衡
- 防止模型偏向某一类
计算
b
∗
b^*
b∗:
对于任意支持向量
x
s
\\mathbf{x}_s
xs(满足
α
s
>
0
\\alpha_s > 0
αs>0),有:
y
s
(
w
∗
T
x
s
+
b
∗
)
=
1
y_s (\\mathbf{w}^{*T} \\mathbf{x}_s + b^*) = 1
ys(w∗Txs+b∗)=1
因此:
b
∗
=
y
s
−
w
∗
T
x
s
=
y
s
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
T
x
s
)
b^* = y_s – \\mathbf{w}^{*T} \\mathbf{x}_s = y_s – \\sum_{i=1}^N \\alpha_i^* y_i (\\mathbf{x}_i^T \\mathbf{x}_s)
b∗=ys−w∗Txs=ys−i=1∑Nαi∗yi(xiTxs)
实践中通常对所有支持向量取平均以提高数值稳定性:
b
∗
=
1
∣
S
V
∣
∑
s
∈
S
V
[
y
s
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
T
x
s
)
]
b^* = \\frac{1}{|SV|} \\sum_{s \\in SV} \\left[ y_s – \\sum_{i=1}^N \\alpha_i^* y_i (\\mathbf{x}_i^T \\mathbf{x}_s) \\right]
b∗=∣SV∣1s∈SV∑[ys−i=1∑Nαi∗yi(xiTxs)]
四、软间隔 (Soft Margin):拥抱不完美
4.1 现实世界并不完美
硬间隔 SVM 要求数据完全线性可分,即存在超平面将两类数据完美分开。但现实世界往往存在:
如果强行使用硬间隔 SVM:
- 可能无解(约束不可行)
- 或者得到间隔极小的超平面(过拟合)

核心思想:我们需要一种机制,允许少数样本违反间隔约束,但要为这种违反付出代价。
4.2 引入松弛变量
ξ
\\xi
ξ
对于每个样本
(
x
i
,
y
i
)
(\\mathbf{x}_i, y_i)
(xi,yi),引入松弛变量 (Slack Variable)
ξ
i
≥
0
\\xi_i \\geq 0
ξi≥0,放宽约束:
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1 – \\xi_i
yi(wTxi+b)≥1−ξi 物理意义:
-
ξ
i
=
0
\\xi_i = 0
ξi=0:样本正确分类且满足间隔(y
i
(
w
T
x
i
+
b
)
≥
1
y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1
yi(wTxi+b)≥1) -
0
<
ξ
i
≤
1
0 < \\xi_i \\leq 1
0<ξi≤1:样本正确分类但在间隔内(0
<
y
i
(
w
T
x
i
+
b
)
<
1
0 < y_i (\\mathbf{w}^T \\mathbf{x}_i + b) < 1
0<yi(wTxi+b)<1) -
ξ
i
>
1
\\xi_i > 1
ξi>1:样本被误分类(y
i
(
w
T
x
i
+
b
)
<
0
y_i (\\mathbf{w}^T \\mathbf{x}_i + b) < 0
yi(wTxi+b)<0)
上图直观展示了松弛变量
ξ
\\xi
ξ 的几何含义:
- 橙色边框的点:进入间隔但未跨越决策边界(
0
<
ξ
1
<
1
0 < \\xi_1 < 1
0<ξ1<1) - 深红色边框的点:跨越决策边界被误分类(
ξ
2
>
1
\\xi_2 > 1
ξ2>1) - 红色线段的长度正是松弛变量
ξ
\\xi
ξ 的大小,代表违规的程度
软间隔 SVM 的原始问题:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
,
i
=
1
,
…
,
N
ξ
i
≥
0
,
i
=
1
,
…
,
N
\\boxed{ \\begin{aligned} \\min_{\\mathbf{w}, b, \\xi} \\quad & \\frac{1}{2} \\|\\mathbf{w}\\|^2 + C \\sum_{i=1}^N \\xi_i \\\\ \\text{s.t.} \\quad & y_i (\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1 – \\xi_i, \\quad i = 1, \\dots, N \\\\ & \\xi_i \\geq 0, \\quad i = 1, \\dots, N \\end{aligned} }
w,b,ξmins.t.21∥w∥2+Ci=1∑Nξiyi(wTxi+b)≥1−ξi,i=1,…,Nξi≥0,i=1,…,N
目标函数解读:
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
\\frac{1}{2}\\|\\mathbf{w}\\|^2 + C \\sum_{i=1}^N \\xi_i
21∥w∥2+Ci=1∑Nξi
- 第一项
1
2
∥
w
∥
2
\\frac{1}{2}\\|\\mathbf{w}\\|^2
21∥w∥2:最大化间隔(结构风险) - 第二项
C
∑
i
ξ
i
C \\sum_i \\xi_i
C∑iξi:最小化违反间隔的总量(经验风险) -
C
>
0
C > 0
C>0:权衡参数-
C
C
C 很大:严惩违反,接近硬间隔(容易过拟合) -
C
C
C 很小:容忍违反,间隔更大(容易欠拟合)
-
连接到第1章:这正是结构风险最小化 (SRM) 的体现!
结构风险
=
∑
i
ξ
i
⏟
经验风险
+
1
2
C
∥
w
∥
2
⏟
正则化项
\\text{结构风险} = \\underbrace{\\sum_i \\xi_i}_{\\text{经验风险}} + \\underbrace{\\frac{1}{2C} \\|\\mathbf{w}\\|^2}_{\\text{正则化项}}
结构风险=经验风险
i∑ξi+正则化项
2C1∥w∥2
4.3 软间隔的对偶问题
构造 Lagrange 函数(引入乘子
α
i
≥
0
\\alpha_i \\geq 0
αi≥0 和
μ
i
≥
0
\\mu_i \\geq 0
μi≥0):
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
∥
w
∥
2
+
C
∑
i
ξ
i
−
∑
i
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ξ
i
]
−
∑
i
μ
i
ξ
i
L(\\mathbf{w}, b, \\xi, \\alpha, \\mu) = \\frac{1}{2}\\|\\mathbf{w}\\|^2 + C \\sum_i \\xi_i – \\sum_i \\alpha_i [y_i(\\mathbf{w}^T \\mathbf{x}_i + b) – 1 + \\xi_i] – \\sum_i \\mu_i \\xi_i
L(w,b,ξ,α,μ)=21∥w∥2+Ci∑ξi−i∑αi[yi(wTxi+b)−1+ξi]−i∑μiξi
对
w
,
b
,
ξ
\\mathbf{w}, b, \\xi
w,b,ξ 求偏导并令为零:
∂
L
∂
w
=
w
−
∑
i
α
i
y
i
x
i
=
0
⇒
w
=
∑
i
α
i
y
i
x
i
∂
L
∂
b
=
−
∑
i
α
i
y
i
=
0
⇒
∑
i
α
i
y
i
=
0
∂
L
∂
ξ
i
=
C
−
α
i
−
μ
i
=
0
⇒
α
i
+
μ
i
=
C
\\begin{aligned} \\frac{\\partial L}{\\partial \\mathbf{w}} &= \\mathbf{w} – \\sum_i \\alpha_i y_i \\mathbf{x}_i = 0 \\quad &\\Rightarrow \\quad \\mathbf{w} = \\sum_i \\alpha_i y_i \\mathbf{x}_i \\\\ \\frac{\\partial L}{\\partial b} &= -\\sum_i \\alpha_i y_i = 0 \\quad &\\Rightarrow \\quad \\sum_i \\alpha_i y_i = 0 \\\\ \\frac{\\partial L}{\\partial \\xi_i} &= C – \\alpha_i – \\mu_i = 0 \\quad &\\Rightarrow \\quad \\alpha_i + \\mu_i = C \\end{aligned}
∂w∂L∂b∂L∂ξi∂L=w−i∑αiyixi=0=−i∑αiyi=0=C−αi−μi=0⇒w=i∑αiyixi⇒i∑αiyi=0⇒αi+μi=C
关键推导:第三个等式
α
i
+
μ
i
=
C
\\alpha_i + \\mu_i = C
αi+μi=C 来自对松弛变量
ξ
i
\\xi_i
ξi 的求导:
- Lagrange 函数中,
ξ
i
\\xi_i
ξi 的系数为C
−
α
i
−
μ
i
C – \\alpha_i – \\mu_i
C−αi−μi - 令
∂
L
∂
ξ
i
=
0
\\frac{\\partial L}{\\partial \\xi_i} = 0
∂ξi∂L=0,得到α
i
+
μ
i
=
C
\\alpha_i + \\mu_i = C
αi+μi=C - 结合约束
α
i
≥
0
\\alpha_i \\geq 0
αi≥0 和μ
i
≥
0
\\mu_i \\geq 0
μi≥0,我们得到:
0
≤
α
i
≤
C
\\boxed{0 \\leq \\alpha_i \\leq C}
0≤αi≤C
物理意义:参数
C
C
C 为 Lagrange 乘子
α
i
\\alpha_i
αi 设定了上界!
-
α
i
=
0
\\alpha_i = 0
αi=0:μ
i
=
C
\\mu_i = C
μi=C(非支持向量) -
0
<
α
i
<
C
0 < \\alpha_i < C
0<αi<C:μ
i
>
0
\\mu_i > 0
μi>0,由μ
i
ξ
i
=
0
\\mu_i \\xi_i = 0
μiξi=0 得ξ
i
=
0
\\xi_i = 0
ξi=0(边界上的支持向量) -
α
i
=
C
\\alpha_i = C
αi=C:μ
i
=
0
\\mu_i = 0
μi=0,ξ
i
\\xi_i
ξi 可以>
0
> 0
>0(间隔内或误分类的支持向量)
代入 Lagrange 函数,得到与硬间隔相同的对偶目标函数,只是约束变为箱约束 (Box Constraint):
max
α
∑
i
=
1
N
α
i
−
1
2
∑
i
,
j
α
i
α
j
y
i
y
j
(
x
i
T
x
j
)
s.t.
∑
i
=
1
N
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
…
,
N
\\boxed{ \\begin{aligned} \\max_{\\alpha} \\quad & \\sum_{i=1}^N \\alpha_i – \\frac{1}{2} \\sum_{i,j} \\alpha_i \\alpha_j y_i y_j (\\mathbf{x}_i^T \\mathbf{x}_j) \\\\ \\text{s.t.} \\quad & \\sum_{i=1}^N \\alpha_i y_i = 0 \\\\ & 0 \\leq \\alpha_i \\leq C, \\quad i = 1, \\dots, N \\end{aligned} }
αmaxs.t.i=1∑Nαi−21i,j∑αiαjyiyj(xiTxj)i=1∑Nαiyi=00≤αi≤C,i=1,…,N
KKT 条件:
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ξ
i
]
=
0
μ
i
ξ
i
=
0
μ
i
=
C
−
α
i
\\begin{aligned} \\alpha_i [y_i(\\mathbf{w}^T \\mathbf{x}_i + b) – 1 + \\xi_i] &= 0 \\\\ \\mu_i \\xi_i &= 0 \\\\ \\mu_i &= C – \\alpha_i \\end{aligned}
αi[yi(wTxi+b)−1+ξi]μiξiμi=0=0=C−αi
样本分类(根据
α
i
\\alpha_i
αi 的值):
α
i
=
0
\\alpha_i = 0
αi=0:
-
y
i
(
w
T
x
i
+
b
)
>
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) > 1
yi(wTxi+b)>1,样本在间隔外侧,正确分类 - 不是支持向量
0
<
α
i
<
C
0 < \\alpha_i < C
0<αi<C:
-
μ
i
=
C
−
α
i
>
0
\\mu_i = C – \\alpha_i > 0
μi=C−αi>0,由μ
i
ξ
i
=
0
\\mu_i \\xi_i = 0
μiξi=0 得ξ
i
=
0
\\xi_i = 0
ξi=0 -
y
i
(
w
T
x
i
+
b
)
=
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) = 1
yi(wTxi+b)=1,样本在间隔边界上 - 支持向量(用于计算
b
b
b)
α
i
=
C
\\alpha_i = C
αi=C:
-
μ
i
=
0
\\mu_i = 0
μi=0,ξ
i
\\xi_i
ξi 可以大于 0 -
y
i
(
w
T
x
i
+
b
)
=
1
−
ξ
i
<
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) = 1 – \\xi_i < 1
yi(wTxi+b)=1−ξi<1 - 若
ξ
i
≤
1
\\xi_i \\leq 1
ξi≤1:样本在间隔内但正确分类 - 若
ξ
i
>
1
\\xi_i > 1
ξi>1:样本被误分类 - 支持向量(但不用于计算
b
b
b)
4.4 Hinge Loss:打通优化视角
现在我们从另一个角度理解 SVM——损失函数 + 正则化的框架。
Hinge Loss 定义:
ℓ
hinge
(
y
,
f
(
x
)
)
=
max
(
0
,
1
−
y
⋅
f
(
x
)
)
=
[
1
−
y
⋅
f
(
x
)
]
+
\\ell_{\\text{hinge}}(y, f(x)) = \\max(0, 1 – y \\cdot f(x)) = [1 – y \\cdot f(x)]_+
ℓhinge(y,f(x))=max(0,1−y⋅f(x))=[1−y⋅f(x)]+
其中
f
(
x
)
=
w
T
x
+
b
f(x) = \\mathbf{w}^T \\mathbf{x} + b
f(x)=wTx+b 是决策函数(未经 sign)。
物理意义:
- 如果
y
⋅
f
(
x
)
≥
1
y \\cdot f(x) \\geq 1
y⋅f(x)≥1(正确分类且满足间隔):损失为 0 - 如果
y
⋅
f
(
x
)
<
1
y \\cdot f(x) < 1
y⋅f(x)<1(违反间隔或误分类):损失为1
−
y
⋅
f
(
x
)
1 – y \\cdot f(x)
1−y⋅f(x)

Hinge Loss vs Logistic Loss 对比:

关键观察:Hinge Loss 等价于松弛变量!
对于约束
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1 – \\xi_i
yi(wTxi+b)≥1−ξi 和
ξ
i
≥
0
\\xi_i \\geq 0
ξi≥0,有:
ξ
i
≥
max
(
0
,
1
−
y
i
(
w
T
x
i
+
b
)
)
=
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
\\xi_i \\geq \\max(0, 1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)) = [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+
ξi≥max(0,1−yi(wTxi+b))=[1−yi(wTxi+b)]+
当最小化
∑
i
ξ
i
\\sum_i \\xi_i
∑iξi 时,最优解必然是:
ξ
i
∗
=
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
\\xi_i^* = [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+
ξi∗=[1−yi(wTxi+b)]+
4.5 SVM = Hinge Loss + L2 正则化
将
ξ
i
=
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
\\xi_i = [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+
ξi=[1−yi(wTxi+b)]+ 代入软间隔 SVM 的目标函数:
min
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
\\min_{\\mathbf{w}, b} \\quad \\frac{1}{2}\\|\\mathbf{w}\\|^2 + C \\sum_{i=1}^N [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+
w,bmin21∥w∥2+Ci=1∑N[1−yi(wTxi+b)]+
改写为:
min
w
,
b
∑
i
=
1
N
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
⏟
经验风险:Hinge Loss
+
λ
2
∥
w
∥
2
⏟
正则化:L2
\\boxed{ \\min_{\\mathbf{w}, b} \\quad \\underbrace{\\sum_{i=1}^N [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+}_{\\text{经验风险:Hinge Loss}} + \\underbrace{\\frac{\\lambda}{2} \\|\\mathbf{w}\\|^2}_{\\text{正则化:L2}} }
w,bmin经验风险:Hinge Loss
i=1∑N[1−yi(wTxi+b)]++正则化:L2
2λ∥w∥2
其中
λ
=
1
C
\\lambda = \\frac{1}{C}
λ=C1。
惊人的结论:
SVM 的本质就是 Hinge Loss + L2 正则化!
这完全符合第1章的"统计学习三要素"框架:
- 模型:线性分类器
f
(
x
)
=
w
T
x
+
b
f(x) = \\mathbf{w}^T \\mathbf{x} + b
f(x)=wTx+b - 策略:Hinge Loss + 正则化
- 算法:通过对偶问题用 SMO 求解
与逻辑回归对比:
| 逻辑回归 | Cross-Entropy Loss | L2 (Ridge) | 梯度下降 |
| SVM | Hinge Loss | L2 | 对偶 QP (SMO) |
两者都是线性分类器,区别仅在于损失函数的选择!

为什么 SVM 能产生稀疏解(支持向量)?
关键在于 Hinge Loss 的零区域:
- 当
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) \\geq 1
yi(wTxi+b)≥1 时,ℓ
hinge
=
0
\\ell_{\\text{hinge}} = 0
ℓhinge=0,该样本对梯度没有贡献 - 对应地,对偶问题中
α
i
=
0
\\alpha_i = 0
αi=0(非支持向量) - 只有在间隔边界或违反间隔的样本(
y
i
(
w
T
x
i
+
b
)
≤
1
y_i(\\mathbf{w}^T \\mathbf{x}_i + b) \\leq 1
yi(wTxi+b)≤1)才是支持向量
相比之下,Cross-Entropy Loss 永远
>
0
> 0
>0,所有样本都有贡献,无法产生稀疏性。
五、SMO 算法:高效求解对偶问题
对偶问题是一个二次规划 (QP),理论上可以用通用 QP Solver 求解。但对于大规模数据,这些方法效率低下。
SMO (Sequential Minimal Optimization) 算法由 John Platt 于 1998 年提出,是求解 SVM 对偶问题的标准方法。
5.1 核心思想:在约束直线上跳舞
想象你要找到一个函数的最小值,但你的手脚被绳子绑住了(约束条件)。SMO 的聪明之处在于:
每次只松开两只手,在绳子允许的范围内调整位置,然后再绑上。
更正式地说:
- 每次只优化两个
α
i
\\alpha_i
αi 和α
j
\\alpha_j
αj,固定其他所有变量 - 由于约束
∑
i
α
i
y
i
=
0
\\sum_i \\alpha_i y_i = 0
∑iαiyi=0,固定其他变量后,这两个变量之间存在线性关系 - 优化路径被限制在一条直线上(见下图),问题变成了一维搜索,可以解析求解!

几何直观:
- 紫色椭圆:目标函数的等高线(越靠内侧,目标函数值越优)
- 红色直线:约束
α
1
y
1
+
α
2
y
2
=
ζ
\\alpha_1 y_1 + \\alpha_2 y_2 = \\zeta
α1y1+α2y2=ζ(常数) - 优化路径:只能沿着红色直线移动(黄色→绿色点)
- 最优解:直线与最内层等高线的切点(或在边界上)
5.2 为什么每次选两个?
约束的限制:
约束
∑
i
=
1
N
α
i
y
i
=
0
\\sum_{i=1}^N \\alpha_i y_i = 0
∑i=1Nαiyi=0 是等式约束,这意味着:
- 如果只改变一个
α
i
\\alpha_i
αi,会破坏和为零的平衡 - 改变两个变量是满足约束的最小可行单位
数学推导:
固定除
α
1
,
α
2
\\alpha_1, \\alpha_2
α1,α2 外的所有变量,约束变为:
α
1
y
1
+
α
2
y
2
=
−
∑
i
=
3
N
α
i
y
i
=
ζ
(常数)
\\alpha_1 y_1 + \\alpha_2 y_2 = -\\sum_{i=3}^N \\alpha_i y_i = \\zeta \\quad \\text{(常数)}
α1y1+α2y2=−i=3∑Nαiyi=ζ(常数)
这是一条直线!我们可以用
α
2
\\alpha_2
α2 表示
α
1
\\alpha_1
α1:
α
1
=
(
ζ
−
α
2
y
2
)
y
1
\\alpha_1 = (\\zeta – \\alpha_2 y_2) y_1
α1=(ζ−α2y2)y1
(因为
y
1
2
=
1
y_1^2 = 1
y12=1)
将其代入目标函数,就得到了一个关于
α
2
\\alpha_2
α2 的一元二次函数,求导即可得到解析解!
5.3 算法框架(简化版)
输入: 数据集 D = {(x_1, y_1), …, (x_N, y_N)}, 参数 C, 容忍度 tol
输出: α, b
1. 初始化 α = 0, b = 0
2. repeat:
(a) 选择两个违反 KKT 条件最严重的 α_i 和 α_j
– 外循环:遍历所有不满足 KKT 的样本
– 内循环:选择使目标函数下降最快的配对
(b) 固定其他 α,解析求解最优的 (α_i, α_j)
– 计算约束直线的端点(由箱约束 0 ≤ α ≤ C 决定)
– 求一元二次函数的极值点
– 截断到可行域内
(c) 更新 α_i, α_j
(d) 更新 b(使用支持向量)
until 所有 α 都满足 KKT 条件 (在容忍度 tol 内)
5.4 SMO 的优势
- ✅ 无需矩阵运算:避免存储和操作
N
×
N
N \\times N
N×N 的 Gram 矩阵(内积矩阵) - ✅ 解析解:每步子问题有闭式解,无需数值优化
- ✅ 内存高效:只需存储当前优化的两个变量
- ✅ 适合大规模数据:复杂度远低于通用 QP Solver 的
O
(
N
3
)
O(N^3)
O(N3)
5.5 直观类比
传统 QP Solver:像是同时调整一个乐队中所有乐器的音量,需要复杂的协调。
SMO 算法:像是一次只调整两个乐器,听听效果,再调下一对。虽然看起来慢,但每次调整都很快(解析解),而且不需要记住所有乐器的状态。
关键洞见:
把一个
N
N
N 维的复杂优化问题,分解成一系列二维平面上的简单问题(约束直线上的一维搜索)。这是"分而治之"思想在优化算法中的精彩应用。
5.6 SMO vs 梯度下降
| 更新方式 | 每次选两个变量,解析求解 | 每次沿负梯度方向小步移动 |
| 约束处理 | 自然满足约束(在约束直线上) | 需要投影回可行域 |
| 收敛速度 | 较快(大步跳跃) | 较慢(小步迭代) |
| 适用场景 | 中等规模 SVM | 大规模深度学习 |
历史趣闻:
John Platt 在微软研究院提出 SMO 时,SVM 的主要瓶颈是求解对偶问题的速度。SMO 的出现让 SVM 在工业界的大规模应用成为可能,是 SVM 从学术走向实用的关键一步。
延伸阅读:
完整的 SMO 算法还包括:
- 启发式选择策略:如何高效选择
α
i
,
α
j
\\alpha_i, \\alpha_j
αi,αj(Platt 的论文给出了两层循环策略) - 数值稳定性:处理边界情况(
α
=
0
\\alpha = 0
α=0 或α
=
C
\\alpha = C
α=C) - 缓存优化:避免重复计算核函数值
这些细节在实现 LIBSVM 等工业级库时至关重要,但核心思想就是上面的坐标下降在约束直线上的优化。
六、本章小结
本章我们完成了从感知机到 SVM 的华丽转身。让我们回顾这个数学与几何交织的旅程:
核心思想的演进:
#mermaid-svg-fPRf8MQUzjwEJm9f{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fPRf8MQUzjwEJm9f .error-icon{fill:#552222;}#mermaid-svg-fPRf8MQUzjwEJm9f .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fPRf8MQUzjwEJm9f .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fPRf8MQUzjwEJm9f .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fPRf8MQUzjwEJm9f .marker.cross{stroke:#333333;}#mermaid-svg-fPRf8MQUzjwEJm9f svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fPRf8MQUzjwEJm9f p{margin:0;}#mermaid-svg-fPRf8MQUzjwEJm9f .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster-label text{fill:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster-label span{color:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster-label span p{background-color:transparent;}#mermaid-svg-fPRf8MQUzjwEJm9f .label text,#mermaid-svg-fPRf8MQUzjwEJm9f span{fill:#333;color:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f .node rect,#mermaid-svg-fPRf8MQUzjwEJm9f .node circle,#mermaid-svg-fPRf8MQUzjwEJm9f .node ellipse,#mermaid-svg-fPRf8MQUzjwEJm9f .node polygon,#mermaid-svg-fPRf8MQUzjwEJm9f .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fPRf8MQUzjwEJm9f .rough-node .label text,#mermaid-svg-fPRf8MQUzjwEJm9f .node .label text,#mermaid-svg-fPRf8MQUzjwEJm9f .image-shape .label,#mermaid-svg-fPRf8MQUzjwEJm9f .icon-shape .label{text-anchor:middle;}#mermaid-svg-fPRf8MQUzjwEJm9f .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fPRf8MQUzjwEJm9f .rough-node .label,#mermaid-svg-fPRf8MQUzjwEJm9f .node .label,#mermaid-svg-fPRf8MQUzjwEJm9f .image-shape .label,#mermaid-svg-fPRf8MQUzjwEJm9f .icon-shape .label{text-align:center;}#mermaid-svg-fPRf8MQUzjwEJm9f .node.clickable{cursor:pointer;}#mermaid-svg-fPRf8MQUzjwEJm9f .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fPRf8MQUzjwEJm9f .arrowheadPath{fill:#333333;}#mermaid-svg-fPRf8MQUzjwEJm9f .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fPRf8MQUzjwEJm9f .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fPRf8MQUzjwEJm9f .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fPRf8MQUzjwEJm9f .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fPRf8MQUzjwEJm9f .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fPRf8MQUzjwEJm9f .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster text{fill:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f .cluster span{color:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fPRf8MQUzjwEJm9f .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fPRf8MQUzjwEJm9f rect.text{fill:none;stroke-width:0;}#mermaid-svg-fPRf8MQUzjwEJm9f .icon-shape,#mermaid-svg-fPRf8MQUzjwEJm9f .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fPRf8MQUzjwEJm9f .icon-shape p,#mermaid-svg-fPRf8MQUzjwEJm9f .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fPRf8MQUzjwEJm9f .icon-shape rect,#mermaid-svg-fPRf8MQUzjwEJm9f .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fPRf8MQUzjwEJm9f .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fPRf8MQUzjwEJm9f .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fPRf8MQUzjwEJm9f :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
感知机的遗憾:解不唯一
SVM 的洞见:最大间隔
几何间隔的数学化
原始问题:min 1/2‖w‖²约束:y_i·w·x_i+b ≥ 1
为何要对偶?
理由1:约束优化更高效
理由2:引入核函数
Lagrange 对偶
对偶问题:max Σα_i – 1/2 ΣΣα_i α_j y_i y_j x_i·x_j约束:Σα_i y_i = 0, α_i ≥ 0
KKT 条件:互补松弛性
支持向量的稀疏性α_i > 0 ⟺ y_i·w·x_i+b = 1
现实问题:数据不完美
软间隔:引入松弛变量 ξ_i
目标函数:min 1/2‖w‖² + C Σξ_i
等价形式:Hinge Loss + L2
SVM = 损失函数 + 正则化统一到统计学习框架
求解算法:SMO坐标下降的智慧
从三个视角理解 SVM:
几何视角:
- SVM 寻找使间隔最大的分离超平面
- 支持向量是决定间隔的关键样本
- 间隔 =
2
∥
w
∥
\\frac{2}{\\|\\mathbf{w}\\|}
∥w∥2,最大化间隔 = 最小化∥
w
∥
2
\\|\\mathbf{w}\\|^2
∥w∥2
优化视角:
- 原始问题:带约束的凸二次规划
- 对偶问题:将
N
N
N 个不等式约束转化为N
N
N 个变量 - KKT 条件揭示了支持向量的稀疏性
统计学习视角:
- SVM = Hinge Loss + L2 正则化
- 目标函数 = 经验风险(
∑
ξ
i
\\sum \\xi_i
∑ξi)+ 结构风险(1
2
∥
w
∥
2
\\frac{1}{2}\\|\\mathbf{w}\\|^2
21∥w∥2) - 参数
C
C
C 控制权衡,连接到第1章的 SRM 框架
关键数学技巧:
(
w
,
b
)
→
(
k
w
,
k
b
)
(\\mathbf{w}, b) \\to (kw, kb)
(w,b)→(kw,kb) 不改变超平面,固定函数间隔
γ
^
=
1
\\hat{\\gamma} = 1
γ^=1
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
]
=
0
\\alpha_i [y_i(\\mathbf{w}^T \\mathbf{x}_i + b) – 1] = 0
αi[yi(wTxi+b)−1]=0 揭示支持向量
ξ
i
=
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
\\xi_i = [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+
ξi=[1−yi(wTxi+b)]+ 连接到 Hinge Loss
SVM 的优势:
- ✅ 坚实的理论基础(VC 维、结构风险最小化)
- ✅ 凸优化问题,全局最优解
- ✅ 稀疏解(只依赖支持向量)
- ✅ 内积形式,自然支持核技巧(下一章)
- ✅ 对高维数据表现优异
SVM 的局限:
- ❌ 对大规模数据训练慢(
O
(
N
2
)
O(N^2)
O(N2) 到O
(
N
3
)
O(N^3)
O(N3)) - ❌ 对参数(
C
C
C、核参数)敏感 - ❌ 难以处理多分类(需要 OvR 或 OvO)
- ❌ 输出不是概率(与逻辑回归不同)
与第1章的连接:
回顾第1章的结构风险最小化公式:
min
f
∈
F
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
⏟
经验风险
+
λ
J
(
f
)
⏟
正则化
\\min_{f \\in \\mathcal{F}} \\underbrace{\\frac{1}{N} \\sum_{i=1}^N L(y_i, f(\\mathbf{x}_i))}_{\\text{经验风险}} + \\underbrace{\\lambda J(f)}_{\\text{正则化}}
f∈Fmin经验风险
N1i=1∑NL(yi,f(xi))+正则化
λJ(f)
SVM 完美实例化了这个框架:
min
w
,
b
∑
i
=
1
N
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
⏟
Hinge Loss(经验风险)
+
λ
2
∥
w
∥
2
⏟
L2 正则化(结构风险)
\\min_{\\mathbf{w}, b} \\underbrace{\\sum_{i=1}^N [1 – y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+}_{\\text{Hinge Loss(经验风险)}} + \\underbrace{\\frac{\\lambda}{2} \\|\\mathbf{w}\\|^2}_{\\text{L2 正则化(结构风险)}}
w,bminHinge Loss(经验风险)
i=1∑N[1−yi(wTxi+b)]++L2 正则化(结构风险)
2λ∥w∥2
而参数
C
=
1
λ
C = \\frac{1}{\\lambda}
C=λ1 正是权衡这两者的旋钮。
哲学启示:
SVM 的成功揭示了机器学习的一个深刻原则:
简单性优于复杂性(Occam’s Razor)
在满足数据的前提下,选择最"简单"的模型(最大间隔)。这种简单性不仅体现在几何上(间隔最大),也体现在代数上(
∥
w
∥
\\|\\mathbf{w}\\|
∥w∥ 最小),更体现在泛化能力上(支持向量的稀疏性)。
Vapnik 的名言 “Nothing is more practical than a good theory” 在 SVM 中得到了完美体现:从 VC 维理论出发,推导出最大间隔原则,最终落地为高效的算法(SMO)。这是理论指导实践的典范。
下章预告:
本章我们推导对偶问题时,发现最优解只依赖于样本间的内积
x
i
T
x
j
\\mathbf{x}_i^T \\mathbf{x}_j
xiTxj。这个看似不起眼的细节,却打开了一扇通往高维甚至无限维空间的大门。
下一章 第08章:核方法 (Kernel Methods) 将揭示核技巧 (Kernel Trick) 的魔力:我们将看到如何在不显式计算高维特征的情况下,让 SVM 在无限维空间中工作。这不仅适用于 SVM,更是一套通用的数学工具,将线性算法拓展到非线性世界。
同时,我们还会探讨经典的核函数(多项式核、RBF 核),理解 Mercer 定理(什么样的函数可以作为核),以及核方法的几何直观(特征空间的隐式映射)。准备好迎接这场"维度的魔法"吧!
七、推荐阅读
经典教材:
- 《统计学习方法》 – 第7章 支持向量机 (李航):清晰的推导,适合初学者
- 《Pattern Recognition and Machine Learning》 – Chapter 7 (Christopher Bishop):从概率视角理解 SVM
- 《The Elements of Statistical Learning》 – Chapter 12 (Hastie, Tibshirani, Friedman):SVM 与其他方法的对比
论文:
- Cortes & Vapnik (1995). “Support-Vector Networks”:SVM 的开创性论文
- Platt (1998). “Sequential Minimal Optimization”:SMO 算法原文
- Vapnik (1999). “The Nature of Statistical Learning Theory”:VC 维理论的系统阐述
视频:
- 白板推导系列 – P7~P9 支持向量机 (shuhuai008, B站):详细的板书推导,强烈推荐
- Stanford CS229 – Lecture 6 (Andrew Ng):SVM 的直观讲解
实践工具:
- scikit-learn SVM 文档:sklearn.svm.SVC 的使用与调参技巧
- LIBSVM:经典的 SVM 库,了解工程实现
练习题(检验理解):
几何理解:为什么间隔 =
2
∥
w
∥
\\frac{2}{\\|\\mathbf{w}\\|}
∥w∥2?画图推导。
对偶推导:手动推导软间隔 SVM 的对偶问题,特别注意约束
α
i
+
μ
i
=
C
\\alpha_i + \\mu_i = C
αi+μi=C 的来源。
KKT 条件:给定一个解
(
w
∗
,
b
∗
,
α
∗
)
(\\mathbf{w}^*, b^*, \\alpha^*)
(w∗,b∗,α∗),如何验证它满足 KKT 条件?
支持向量:在软间隔 SVM 中,
α
i
=
C
\\alpha_i = C
αi=C 的样本一定被误分类吗?为什么?
等价性证明:严格证明
min
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
ξ
i
\\min_{\\mathbf{w},b} \\frac{1}{2}\\|\\mathbf{w}\\|^2 + C\\sum_i \\xi_i
minw,b21∥w∥2+C∑iξi 等价于
min
w
,
b
∑
i
[
1
−
y
i
(
w
T
x
i
+
b
)
]
+
+
1
2
C
∥
w
∥
2
\\min_{\\mathbf{w},b} \\sum_i [1-y_i(\\mathbf{w}^T \\mathbf{x}_i + b)]_+ + \\frac{1}{2C}\\|\\mathbf{w}\\|^2
minw,b∑i[1−yi(wTxi+b)]++2C1∥w∥2。
编程实现:从零实现一个简化版的 SMO 算法(只需处理线性核、小规模数据)。
“In God we trust, all others bring data.” —— W. Edwards Deming
SVM 教会我们:当数据说话时,让数学倾听;当理论指引时,让算法践行。这种理论与实践的完美结合,正是机器学习之美。



