上一讲结尾留了一个问题:Logistic 回归为什么用交叉熵而不用更常见的平方误差。先给结论。对平方误差求梯度,链式法则里会多出 Sigmoid 函数的导数,梯度中带有因子 f(1−f)f(1-f)f(1−f),fff 是模型当前的输出。输出靠近 0 或 1 时这个因子趋近于 0,错得越厉害,梯度反而越小,参数几乎不更新。
逐个情形看更清楚。真实标签是 1,模型预测接近 1,梯度接近 0,这是合理的,本来就已经逼近目标。真实标签是 1,模型预测接近 0,梯度同样接近 0,这不合理,离目标最远的时候最需要大步更新。真实标签是 0 的一侧对称地有同样的情形。平方误差的梯度在两端同时消失,与期望的行为正好相反。
对这一点有过一次讨论:梯度小可以把学习率选大来补吗。问题在于学习率是固定值,而模型远离最优值时的梯度小,大步长迈不出去;等迭代到接近最优值,梯度同样小,大步长又会一步迈到另一侧,在谷底两侧来回震荡,甚至发散出去。迭代过程并不知道当前离最优值还有多远,固定的大步长补不上梯度消失的缺陷。交叉熵与平方误差的损失曲面也显示了同一点:交叉熵的曲面陡,平方误差的曲面平。
推导在上一讲,这里只取结论。顺带看一个容易混淆的问题:Logistic 回归的决策边界是直线还是曲线。模型把线性函数的输出压到 0 到 1 之间,判定类别等价于拿输出与 0.5 比较,也就是拿线性函数与 0 比较。Sigmoid 只改变输出的尺度,不改变边界的位置,所以边界是线性的。判别函数是线性还是非线性,才是决定边界形状的东西。后面要讲的 Softmax 形式同样如此。
一、两类分类器扩展到多类
二分类器处理多类问题,直观的做法有两种。第一种是一对其余:先分第一类与非第一类,再分第二类与非第二类,依次做下去,ccc 类需要 ccc 个二分类器。第二种是两两分:每一对类训练一个分类器,ccc 类需要 c(c−1)/2c(c-1)/2c(c−1)/2 个,判定时投票。
两种做法都会留下歧义区域。一对其余的情形下,先分蓝色与非蓝色,再分绿色与非绿色。某个区域在第一个分类器处被判为第一类,在第二个分类器处又被判为第二类,它到底属于哪一类,没有答案。两两分的情形下,先分第一类与第二类,再分第一类与第三类,最后分第二类与第三类,中间交叉出来的那块区域在三对分类器处得到三个不同的答案,三类各执一词。
Softmax 是另一种思路,把二分类的 Logistic 回归自然推广到多类,没有投票式的歧义。类别标签先扩写成 one-hot 形式:三类问题的标签是三维列向量,第一类写作 (1,0,0)T(1,0,0)^T(1,0,0)T,第二类 (0,1,0)T(0,1,0)^T(0,1,0)T,第三类 (0,0,1)T(0,0,1)^T(0,0,1)T。模型对每一类各算一个线性函数 zk=wkTxz_k=\boldsymbol w_k^T\boldsymbol xzk=wkTx,再用指数变换把它们归一化为概率:
P(y=k∣x)=ezk∑j=1Kezj(1-1)P(y=k|\boldsymbol{x})=\dfrac{e^{z_k}}{\sum_{j=1}^{K}e^{z_j}}\tag{1-1}P(y=k∣x)=∑j=1Kezjezk(1-1)
三类的线性值算出来之后,各自取指数,再除以三个指数之和,得到的就是样本属于每一类的概率。输出的概率都在 0 到 1 之间,总和为 1,判定时取概率最大的一类,每个样本都有确定归属。参数仍由最大似然估计,似然取对数后得到多类的交叉熵损失,梯度下降求解,过程与二分类一致。它的决策边界也是线性的:比较两个类的概率大小,等价于比较 zkz_kzk 与 zjz_jzj,而两者都是线性函数。
| 做法 | 分类器个数 | 判定方式 | 歧义区域 |
|---|---|---|---|
| 一对其余 | ccc 个 | 依次判定 | 有 |
| 两两分 | c(c−1)/2c(c-1)/2c(c−1)/2 个 | 投票 | 有 |
| Softmax | 1 组线性函数 | 取概率最大 | 无 |
这套模型有一个能说明问题的应用。电动汽车发展十几年,早期报废的电池按行业惯例在容量跌到额定值八成时退役,但退役电池的剩余容量相差很大:表观容量相同的两块电池,内部老化衰减的机理不同,剩余可用寿命可能相差数倍。用简单的分类模型对少量充放电测量数据做快速筛选,把还能循环上千次的电池和只能用几个循环的分开,报废电池就能进入要求不同的储能场景。这样的工作发在能源领域的顶刊,还是封面论文。方法简单不是问题,把机理从第一性原理讲清楚,简单的模型也能支撑好的结果。
二、判别式与生成式
到目前为止学过的方法可以分成两类。生成式方法为每一类建立概率模型:估计先验概率与类条件概率密度,用贝叶斯公式算后验,再按后验分类。判别式方法不经过密度,直接从数据学输入到输出的关系,Logistic 回归学后验概率的形式,感知器学决策边界。
生成式的做法有一个具体样子。按体温判断前来看病的人是普通感冒还是流感:两类都会发烧,单看体温分不开,于是给每类建模型。先验概率按季节取,每年十月十一月流感高发,先验就大一些,上半年小一些,比如按历年统计取 0.8 与 0.2;类条件概率密度也按历年数据统计,流感除了高烧还常伴咳嗽等特征。先验与类条件密度都有了,用贝叶斯公式算出后验再推理。同一个发烧病人在流感季更容易被判为流感,这是先验在起作用。
判别式不建这些模型,拿到两类的样本直接学边界。
同样的训练数据,两种方法学到的分类器并不相同。在高斯假设、两类先验相等、各类协方差矩阵相等的条件下,贝叶斯决策推出的分类器是线性的;Logistic 回归学到的也是线性的。形式相同,权重不同。差别在假设:生成式一路加了正态、等先验、等协方差三个条件才推出线性,判别式一路没有这些假设。假设成立时,生成式把结构信息用上了;假设不成立时,这些信息反而是负担。
一个数值例子能把这一点看清楚。训练集共 13 个样本,每个样本两个特征。第一类只有 1 个样本,取值为 (1,1)(1,1)(1,1);第二类有 12 个,(1,0)(1,0)(1,0)、(0,1)(0,1)(0,1)、(0,0)(0,0)(0,0) 各 4 个。测试样本取 (1,1)(1,1)(1,1),直觉上它与第一类那个样本完全重合,应判第一类。
用朴素贝叶斯分类器来算。该方法假设同一类样本内两个特征相互独立。先验概率为 1/131/131/13 与 12/1312/1312/13;第一类中两个特征取 1 的频率都是 1,第二类中都是 4/12=1/34/12=1/34/12=1/3。代入贝叶斯公式:
P(ω1∣x)=(1/13)⋅1⋅1(1/13)⋅1⋅1+(12/13)⋅(1/3)⋅(1/3)=37(2-1)P(\omega_1|\boldsymbol{x})=\dfrac{(1/13)\cdot 1\cdot 1}{(1/13)\cdot 1\cdot 1+(12/13)\cdot(1/3)\cdot(1/3)}=\dfrac{3}{7}\tag{2-1}P(ω1∣x)=(1/13)⋅1⋅1+(12/13)⋅(1/3)⋅(1/3)(1/13)⋅1⋅1=73(2-1)
第一类的后验概率约为 0.43,不到一半,样本被划入第二类。原因有两个:第一类只有 1 个样本,频率估计不可靠;独立性假设把 (1,1)(1,1)(1,1) 的概率算成两个边缘概率的乘积,特征之间的结构被丢掉了。
两类方法的取舍随样本量变化。样本少时,判别式不估计密度,参数直接对着分类目标,简单直接;样本多时,生成式能学出数据背后的分布,还能生成新样本、处理缺失数据,解释性也更好。生成式模型对数据背后的每一类生成机制都有刻画,学到的不只是一条边界,还有数据是怎么产生的。判别式模型只建立输入与输出之间的关系,数据有缺失时很难处理。
这个取舍直接引出支持向量机。分类是比概率密度估计更具体的问题:估计密度要回答整个特征空间上的分布,分类只要回答边界在哪里。样本少、信息有限时,绕道估计密度再分类,是把力气花在更一般的问题上。从图片分辨香蕉和苹果,判别式学到足够区分两类的特征即可,颜色和形状就够用;生成式要先学会把香蕉和苹果各画出来,要求高得多。支持向量机取前一条路:不碰概率密度,直接在特征空间里找边界。
三、从感知器到最大间隔
支持向量机在 20 世纪 90 年代的地位,大致相当于深度学习在今天的位置,当时几乎是全民投入研究的方向。它解决的问题并不新,二分类而已;新在给出的答案与之前都不同。
回顾感知器。对线性可分的数据,感知器有限步收敛,但解有无穷多个:初始权重、学习率、样本出现顺序都会改变收敛到哪一条边界。这些边界都能把训练集完全分对,性能上却有差别。
一个自然的答案是看样本点到分类面的距离。距离大意味着泛化性能好,对噪声更鲁棒。这个直觉是对的。采样带随机性,测试样本可以看作训练样本叠加了噪声。训练集上分得对的边界,遇到加了噪的测试点就可能出错:绝大多数候选边界只要噪声稍大,就会有测试点落到错误的一侧;离两边样本都最远的那条边界,能容忍的噪声最大,泛化性能最好。

把几何直观翻译成数学语言,用的是间隔:最近样本到分类面距离的 2 倍,也等于分类器可以容忍的最大噪声的 2 倍。离分类面最近的样本叫支持向量,这个名字的由来稍后解释。最大间隔分类器,就是所有能把训练集完全分对的分类面中间隔最大的那一个。
先看几何直观,再数学化,再找优化算法,是这类问题的一般路径。
四、线性可分:最大间隔的建模
4.1 约束的归一化
线性可分意味着存在一个线性分类面把两类完全分开,每一类样本到分类面至少有一段大于 0 的距离。取一个很小的正数 ρ\rhoρ,第一类样本满足 wTxi+b≥ρ/2\boldsymbol w^T\boldsymbol x_i+b\geq\rho/2wTxi+b≥ρ/2,第二类样本满足 wTxi+b≤−ρ/2\boldsymbol w^T\boldsymbol x_i+b\leq-\rho/2wTxi+b≤−ρ/2。ρ/2\rho/2ρ/2 表示对两类样本都分类正确的额外要求:不光判别函数值符号对,还要各留出一段间隙。
给两类样本统一标签,第一类 yi=+1y_i=+1yi=+1,第二类 yi=−1y_i=-1yi=−1,两个不等式合成一个:
yi(wTxi+b)≥ρ/2,1≤i≤n(4-1)y_i(\boldsymbol w^T\boldsymbol x_i+b)\geq\rho/2,\quad 1\leq i\leq n\tag{4-1}yi(wTxi+b)≥ρ/2,1≤i≤n(4-1)
把 w\boldsymbol ww 和 bbb 同时除以 ρ/2\rho/2ρ/2,决策函数只改变数值尺度,分类面本身不变,约束右端归一化为 1:
yi(wTxi+b)≥1,1≤i≤n(4-2)y_i(\boldsymbol w^T\boldsymbol x_i+b)\geq 1,\quad 1\leq i\leq n\tag{4-2}yi(wTxi+b)≥1,1≤i≤n(4-2)
这一步纯粹为了后面推导方便,不改变问题本身。想保留 ρ/2\rho/2ρ/2 也能推,只是系数里多处一个因子,后面每步都带着它。
4.2 间隔的量化
上一讲给过一个结论:点到超平面的距离等于判别函数值的绝对值除以权向量的模。设点 x0\boldsymbol x_0x0,分类面的法向量为 w\boldsymbol ww、截距为 bbb,则距离为:
∣wTx0+b∣∥w∥(4-3)\dfrac{|\boldsymbol w^T\boldsymbol x_0+b|}{\lVert\boldsymbol w\rVert}\tag{4-3}∥w∥∣wTx0+b∣(4-3)
推导靠的是投影。从平面上任取一点 x\boldsymbol xx,向 x0\boldsymbol x_0x0 作向量 x0−x\boldsymbol x_0-\boldsymbol xx0−x,把它投影到法向量 w\boldsymbol ww 上,投影长就是距离。投影的分子是 wT(x0−x)\boldsymbol w^T(\boldsymbol x_0-\boldsymbol x)wT(x0−x),而平面上的点满足 wTx+b=0\boldsymbol w^T\boldsymbol x+b=0wTx+b=0,中间项消掉之后剩下 wTx0+b\boldsymbol w^T\boldsymbol x_0+bwTx0+b,再除以 ∥w∥\lVert\boldsymbol w\rVert∥w∥ 归一化。
满足式(4-2)取等号的样本就是离分类面最近的样本,判别函数值等于 1,到分类面的距离等于 1/∥w∥1/\lVert\boldsymbol w\rVert1/∥w∥。两类等间隔时,间隔是它的 2 倍:
d=2∥w∥(4-4)d=\dfrac{2}{\lVert\boldsymbol w\rVert}\tag{4-4}d=∥w∥2(4-4)


4.3 优化形式
最大化间隔等价于最小化权向量的模:
minw,b 12∥w∥2(4-5)\min_{\boldsymbol w,b}\ \dfrac{1}{2}\lVert\boldsymbol w\rVert^2\tag{4-5}w,bmin 21∥w∥2(4-5)
约束为式(4-2)。目标函数是二次的,约束是线性的,这是一个凸二次规划问题,MATLAB 与 Python 里都有现成的求解器,把矩阵扔进去就能解。
这里不满足于直接扔给求解器,还想对解做更深入的分析。原因是一个规模上的隐患。一幅 1024×10241024\times 10241024×1024 的图像展开成特征向量约有一百万维,未知参数 w\boldsymbol ww 也有上百万个;而在 90 年代,一个分类问题有上千个样本就已经算大规模。用上千个样本去定上百万个参数,撞上的是维数灾难。要绕开它,先把约束优化问题的解法理清楚。

五、拉格朗日乘子法与 KKT 条件
5.1 KKT 条件
高维空间中的约束优化问题,通常用拉格朗日乘子法处理。考虑约束优化问题 minxf(x)\min_{\boldsymbol x}f(\boldsymbol x)minxf(x),约束 gi(x)≥0g_i(\boldsymbol x)\geq 0gi(x)≥0,i=1,...,ni=1,\dots,ni=1,...,n。有几个约束就引入几个乘子,构造拉格朗日函数:
J(x,α)=f(x)−∑i=1nαigi(x)(5-1)J(\boldsymbol x,\boldsymbol\alpha)=f(\boldsymbol x)-\sum_{i=1}^{n}\alpha_ig_i(\boldsymbol x)\tag{5-1}J(x,α)=f(x)−i=1∑nαigi(x)(5-1)
最优解满足 KKT 条件,共三条。拉格朗日函数对 x\boldsymbol xx 的梯度为零,这是通常求极值的做法:
∇xJ(x,α)=0(5-2)\nabla_{\boldsymbol x}J(\boldsymbol x,\boldsymbol\alpha)=0\tag{5-2}∇xJ(x,α)=0(5-2)
乘子非负,且乘子与对应约束的乘积为零:
αi≥0,αigi(x)=0,1≤i≤n(5-3)\alpha_i\geq 0,\qquad \alpha_ig_i(\boldsymbol x)=0,\quad 1\leq i\leq n\tag{5-3}αi≥0,αigi(x)=0,1≤i≤n(5-3)
另有原问题可行 gi(x)≥0g_i(\boldsymbol x)\geq 0gi(x)≥0,这是原问题自身的可行性要求。乘子非负还有一层身份:对偶问题的可行条件,讲到对偶时再回来讨论。
5.2 互补松弛的几何意义
式(5-3)的第二条叫互补松弛条件:要么乘子为零,要么约束取等号。约束不起作用时 gi>0g_i>0gi>0,αi\alpha_iαi 必须为零;约束起作用时 gi=0g_i=0gi=0,αi\alpha_iαi 可以不为零。
一维例子最直观。minx2\min x^2minx2 无约束,解在 x∗=0x^{\ast}=0x∗=0;加约束 x≥−1x\geq -1x≥−1,解还是 x∗=0x^{\ast}=0x∗=0,约束没有起作用;加约束 x≥1x\geq 1x≥1,解移到边界 x∗=1x^{\ast}=1x∗=1,约束起作用了。高维空间中的约束优化没有图可看,靠的就是这套条件。

5.3 SVM 的拉格朗日函数
把最大间隔问题写成标准形式,约束为 gi(w)=yi(wTxi+b)−1g_i(\boldsymbol w)=y_i(\boldsymbol w^T\boldsymbol x_i+b)-1gi(w)=yi(wTxi+b)−1,要求 gi≥0g_i\geq 0gi≥0。每个样本对应一个约束,也就对应一个乘子 αi\alpha_iαi。拉格朗日函数为:
J(w,b,α)=12∥w∥2−∑i=1nαiyi(wTxi+b)−1(5-4)J(\boldsymbol w,b,\boldsymbol\alpha)=\dfrac{1}{2}\lVert\boldsymbol w\rVert^2-\sum_{i=1}^{n}\alpha_i\lefty_i(\\boldsymbol w\^T\\boldsymbol x_i+b)-1\\right\tag{5-4}J(w,b,α)=21∥w∥2−i=1∑nαiyi(wTxi+b)−1(5-4)
现在函数里有两组参数:原来的 w\boldsymbol ww、bbb,与新引入的 α\boldsymbol\alphaα。它的解不再是普通的极值点,而是鞍点。要回答三件事:什么是鞍点,为什么它是解,鞍点是否存在。
六、鞍点为什么是解
6.1 定义
设 ϕ:D×E→R\phi:D\times E\to\mathbb{R}ϕ:D×E→R,点对 (w′,α′)(\boldsymbol w',\boldsymbol\alpha')(w′,α′) 是鞍点,如果对一切 w∈D\boldsymbol w\in Dw∈D、α∈E\boldsymbol\alpha\in Eα∈E:
ϕ(w′,α)≤ϕ(w′,α′)≤ϕ(w,α′)(6-1)\phi(\boldsymbol w',\boldsymbol\alpha)\leq\phi(\boldsymbol w',\boldsymbol\alpha')\leq\phi(\boldsymbol w,\boldsymbol\alpha')\tag{6-1}ϕ(w′,α)≤ϕ(w′,α′)≤ϕ(w,α′)(6-1)
沿 α\boldsymbol\alphaα 方向看,固定 w′\boldsymbol w'w′ 时 α′\boldsymbol\alpha'α′ 处取最大;沿 w\boldsymbol ww 方向看,固定 α′\boldsymbol\alpha'α′ 时 w′\boldsymbol w'w′ 处取最小。形状像马鞍,骑马时屁股与马鞍相抵的位置就是它。
几何上可以把求解过程走一遍。固定一个 w\boldsymbol ww,在 α\boldsymbol\alphaα 方向上最大化,在马鞍形的曲面上得到一串取最大值的点;换一个 w\boldsymbol ww 再最大化,得到另一串点。把这些最大值的点连起来,是曲面上的一道山脊。再沿 w\boldsymbol ww 方向在这道山脊上最小化,落点就是鞍点。先最大化 α\boldsymbol\alphaα 再最小化 w\boldsymbol ww,是原问题的途径;先最小化 w\boldsymbol ww 再最大化 α\boldsymbol\alphaα,是对偶问题的途径。两条路殊途同归。

6.2 鞍点给出的分类器可行
从式(6-1)的第一个不等式出发,两边消去 f(w′)f(\boldsymbol w')f(w′),得到:
∑i=1n(αi′−αi)gi(w′)≤0(6-2)\sum_{i=1}^{n}(\alpha_i'-\alpha_i)g_i(\boldsymbol w')\leq 0\tag{6-2}i=1∑n(αi′−αi)gi(w′)≤0(6-2)
乘子只要非负就可以任意取值。取 αi=αi′+1\alpha_i=\alpha_i'+1αi=αi′+1,其余 αj=αj′\alpha_j=\alpha_j'αj=αj′,式(6-2)化为 −gi(w′)≤0-g_i(\boldsymbol w')\leq 0−gi(w′)≤0,即 gi(w′)≥0g_i(\boldsymbol w')\geq 0gi(w′)≥0。加 1 而不是减 1,是因为 αi′\alpha_i'αi′ 本身可能是 0,减去就违反了乘子非负;哪怕只加一个很小的正值也行。对 i=1,...,ni=1,\dots,ni=1,...,n 逐个取一遍,全部约束在 w′\boldsymbol w'w′ 处成立,w′\boldsymbol w'w′ 是可行解,对应一个能把训练集完全分对的分类面。
这一步只说明鞍点给出的分类器是那些能把训练集分对的分类面中的一员,还不能说明它是间隔最大的那一个。最优性要靠第二个不等式。
再取 α=0\boldsymbol\alpha=0α=0 代入第一个不等式,得到 ∑iαi′gi(w′)≤0\sum_i\alpha_i'g_i(\boldsymbol w')\leq 0∑iαi′gi(w′)≤0;而刚推出每一项都非负,和也只能非负。两边夹出:
∑i=1nαi′gi(w′)=0(6-3)\sum_{i=1}^{n}\alpha_i'g_i(\boldsymbol w')=0\tag{6-3}i=1∑nαi′gi(w′)=0(6-3)
6.3 鞍点给出的分类器最优
看式(6-1)的第二个不等式。对任意可行解 w\boldsymbol ww,gi(w)≥0g_i(\boldsymbol w)\geq 0gi(w)≥0 且 αi′≥0\alpha_i'\geq 0αi′≥0,于是 ∑iαi′gi(w)≥0\sum_i\alpha_i'g_i(\boldsymbol w)\geq 0∑iαi′gi(w)≥0,结合式(6-3):
f(w′)≤f(w)−∑i=1nαi′gi(w)≤f(w)(6-4)f(\boldsymbol w')\leq f(\boldsymbol w)-\sum_{i=1}^{n}\alpha_i'g_i(\boldsymbol w)\leq f(\boldsymbol w)\tag{6-4}f(w′)≤f(w)−i=1∑nαi′gi(w)≤f(w)(6-4)
w′\boldsymbol w'w′ 的目标函数值不大于任何可行解,它在所有可行分类面中是最优的。至此,鞍点是约束优化问题的解。
6.4 存在性与最小最大对偶
还有一个问题:鞍点是否存在。对凸函数规划问题,有最小最大对偶性:
minwmaxαϕ(w,α)=maxαminwϕ(w,α)(6-5)\min_{\boldsymbol w}\max_{\boldsymbol\alpha}\phi(\boldsymbol w,\boldsymbol\alpha)=\max_{\boldsymbol\alpha}\min_{\boldsymbol w}\phi(\boldsymbol w,\boldsymbol\alpha)\tag{6-5}wminαmaxϕ(w,α)=αmaxwminϕ(w,α)(6-5)
SVM 的原问题是凸二次规划,条件满足,鞍点存在,两条途径取到同一个值。这条定理的证明这里不展开。
对偶性有一个直观的解释。设想两个选手 X 和 Y 玩游戏,X 选策略 xxx,Y 选策略 yyy,X 支付 ϕ(x,y)\phi(x,y)ϕ(x,y) 给 Y,值为负表示 X 获胜。X 是优秀选手,知道 Y 会针对自己的策略让支付最大,于是选 xxx 最小化最坏情况下的支付,即 minxmaxyϕ(x,y)\min_x\max_y\phi(x,y)minxmaxyϕ(x,y);Y 同样优秀,知道 X 会针对自己的策略让支付最小,于是选 yyy 最大化最坏情况下的所得,即 maxyminxϕ(x,y)\max_y\min_x\phi(x,y)maxyminxϕ(x,y)。前者是原问题,后者是对偶问题。对任意 xxx、yyy,先最大化再最小化总不弱于先最小化再最大化:
maxαminwϕ≤minwmaxαϕ(6-6)\max_{\alpha}\min_{\boldsymbol w}\phi\leq\min_{\boldsymbol w}\max_{\alpha}\phi\tag{6-6}αmaxwminϕ≤wminαmaxϕ(6-6)
等式在凸性等条件下成立,这正是式(6-5)。
七、对偶问题
7.1 原函数与对偶函数
固定 w\boldsymbol ww,把拉格朗日函数在 α≥0\boldsymbol\alpha\geq 0α≥0 上最大化,得到的结果只是 w\boldsymbol ww 的函数,称为原函数:
L(w)=maxα≥0ϕ(w,α)(7-1)L(\boldsymbol w)=\max_{\boldsymbol\alpha\geq 0}\phi(\boldsymbol w,\boldsymbol\alpha)\tag{7-1}L(w)=α≥0maxϕ(w,α)(7-1)
固定 α\boldsymbol\alphaα,把拉格朗日函数在 w\boldsymbol ww 上最小化,得到对偶函数:
Q(α)=minwϕ(w,α)(7-2)Q(\boldsymbol\alpha)=\min_{\boldsymbol w}\phi(\boldsymbol w,\boldsymbol\alpha)\tag{7-2}Q(α)=wminϕ(w,α)(7-2)
原问题是最小化原函数,即 minwL(w)\min_{\boldsymbol w}L(\boldsymbol w)minwL(w);对偶问题是在 α≥0\boldsymbol\alpha\geq 0α≥0 上最大化对偶函数 Q(α)Q(\boldsymbol\alpha)Q(α)。两条途径的差别就在先消掉哪一组参数。
7.2 为什么偏向对偶
SVM 通常解对偶,理由有两个。
第一个理由是 4.3 节末尾那个隐患的直接回答:对偶问题的未知参数是乘子 αi\alpha_iαi,乘子个数等于约束个数,约束对应样本分类正确,于是未知数个数等于样本数。上百万维的特征,上千个样本,原问题要定上百万个参数,对偶只解上千个。密度估计需要的样本数随维度指数增长,这里换成分类器参数,困境是同一个:样本量跟不上维数时,绕开大参数那一侧才是出路。
第二个理由更关键:对偶问题只依赖样本两两之间的内积,没有一个样本单独出现。这一性质在非线性情形下会发挥决定性作用。
7.3 对偶函数的推导
先沿 w\boldsymbol ww、bbb 最小化。对式(5-4)求偏导并令为零。关于 w\boldsymbol ww 的导数来自一个二次型和一个一次项,二次型求导有现成公式,一次项求导后 w\boldsymbol ww 被消掉:
∂J∂w=w−∑i=1nαiyixi=0(7-3)\dfrac{\partial J}{\partial\boldsymbol w}=\boldsymbol w-\sum_{i=1}^{n}\alpha_iy_i\boldsymbol x_i=0\tag{7-3}∂w∂J=w−i=1∑nαiyixi=0(7-3)
关于 bbb 的导数只来自中间那一项:
∂J∂b=−∑i=1nαiyi=0(7-4)\dfrac{\partial J}{\partial b}=-\sum_{i=1}^{n}\alpha_iy_i=0\tag{7-4}∂b∂J=−i=1∑nαiyi=0(7-4)
得到两个关系:w=∑iαiyixi\boldsymbol w=\sum_i\alpha_iy_i\boldsymbol x_iw=∑iαiyixi 与 ∑iαiyi=0\sum_i\alpha_iy_i=0∑iαiyi=0。代回拉格朗日函数,两个求和相乘展开成二重和:
wTw=∑i=1n∑j=1nαiαjyiyjxiTxj(7-5)\boldsymbol w^T\boldsymbol w=\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j\tag{7-5}wTw=i=1∑nj=1∑nαiαjyiyjxiTxj(7-5)
∑i=1nαiyiwTxi=∑i=1n∑j=1nαiαjyiyjxiTxj(7-6)\sum_{i=1}^{n}\alpha_iy_i\boldsymbol w^T\boldsymbol x_i=\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j\tag{7-6}i=1∑nαiyiwTxi=i=1∑nj=1∑nαiαjyiyjxiTxj(7-6)
式(7-5)与式(7-6)的右端完全相同,前者的二分之一与后者的负号相抵,含 bbb 的一项因式(7-4)为零,剩下的整理成对偶函数:
Q(α)=∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxiTxj(7-7)Q(\boldsymbol\alpha)=\sum_{i=1}^{n}\alpha_i-\dfrac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j\tag{7-7}Q(α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxiTxj(7-7)
对偶问题为最大化 Q(α)Q(\boldsymbol\alpha)Q(α),约束为 ∑iαiyi=0\sum_i\alpha_iy_i=0∑iαiyi=0 与 αi≥0\alpha_i\geq 0αi≥0。它也是一个二次规划问题,同样可以交给求解器,只是未知数从 w\boldsymbol ww 换成了一组乘子。
7.4 参数恢复
解出 α\boldsymbol\alphaα 后,w\boldsymbol ww 由式(7-3)直接给出:
w=∑i=1nαiyixi(7-8)\boldsymbol w=\sum_{i=1}^{n}\alpha_iy_i\boldsymbol x_i\tag{7-8}w=i=1∑nαiyixi(7-8)
bbb 由支持向量上的等式约束给出。支持向量满足 yi(wTxi+b)=1y_i(\boldsymbol w^T\boldsymbol x_i+b)=1yi(wTxi+b)=1,于是 b=yi−wTxib=y_i-\boldsymbol w^T\boldsymbol x_ib=yi−wTxi;数值上对所有支持向量取平均更稳。
7.5 一个算例
用二次规划求解器验证一遍。正例从均值 (−3,−3)(-3,-3)(−3,−3) 的二元正态分布取 100 个样本,负例从均值 (3,3)(3,3)(3,3) 的取 100 个,两类的协方差矩阵相同,对角线为 2,非对角线为 -1,惩罚系数取 C=1C=1C=1。解对偶问题,200 个样本中只有 3 个支持向量,w=(−0.386,−0.556)\boldsymbol w=(-0.386,-0.556)w=(−0.386,−0.556),b=−0.326b=-0.326b=−0.326,训练集全部分对,间隔 2/∥w∥=2.962/\lVert\boldsymbol w\rVert=2.962/∥w∥=2.96。支持向量上的等式残差在 10−810^{-8}10−8 量级,式(7-8)的代回残差在 10−910^{-9}10−9 量级。绝大多数乘子为零,分类面由 3 个样本定下来。
八、支持向量
互补松弛条件在 SVM 里写成 αiyi(wTxi+b)−1=0\alpha_iy_i(\\boldsymbol w\^T\\boldsymbol x_i+b)-1=0αiyi(wTxi+b)−1=0。不在间隔边界上的样本,括号内大于 0,αi\alpha_iαi 只能为 0;只有间隔边界上的样本,αi\alpha_iαi 可以不为零。再看式(7-8),w\boldsymbol ww 是全部样本的加权和,权重正是 αiyi\alpha_iy_iαiyi,远离分类面的样本对 w\boldsymbol ww 没有任何贡献:
w=∑s=1nsαisyisxis(8-1)\boldsymbol w=\sum_{s=1}^{n_s}\alpha_{i_s}y_{i_s}\boldsymbol x_{i_s}\tag{8-1}w=s=1∑nsαisyisxis(8-1)
其中 nsn_sns 为支持向量个数。支持向量之名由此而来:分类面的权重由它们算出来,其余样本不起作用。等价地说,只有支持向量对应的约束起作用,其余约束在解的地方都松着。
对偶函数里还有一个性质:样本只以两两内积 xiTxj\boldsymbol x_i^T\boldsymbol x_jxiTxj 的形式出现,没有一个样本单独出现。线性情形下这只是一个计算上的便利,非线性情形下它正是核方法的入口。
九、线性不可分:软间隔
9.1 松弛变量
严格线性可分在实际中很少见,两类样本往往有重叠。硬间隔 SVM 在重叠数据上找不到可行解;即便找到,过小的间隔会带来过拟合,边界跟着噪声走,反而不如允许少量错分的边界鲁棒。
重叠数据里只混进少量远离本类的点时,硬间隔为了照顾它们会把分类面掰出一个夸张的形状,噪声稍大就会有一批测试点分错。允许这些点被分错,换来的分类面对采样随机性更稳。

办法是给约束加松弛。对每个样本引入松弛变量 ξi≥0\xi_i\geq 0ξi≥0,允许约束右端小于 1:
minw,b 12∥w∥2+C∑i=1nξi(9-1)\min_{\boldsymbol w,b}\ \dfrac{1}{2}\lVert\boldsymbol w\rVert^2+C\sum_{i=1}^{n}\xi_i\tag{9-1}w,bmin 21∥w∥2+Ci=1∑nξi(9-1)
约束为 yi(wTxi+b)≥1−ξiy_i(\boldsymbol w^T\boldsymbol x_i+b)\geq 1-\xi_iyi(wTxi+b)≥1−ξi 与 ξi≥0\xi_i\geq 0ξi≥0。惩罚系数 CCC 在两项之间取平衡:CCC 大,看重少分错;CCC 小,看重大间隔。

ξi\xi_iξi 的取值把样本分成三种情况。分类正确且间隔不小于 1,ξi=0\xi_i=0ξi=0;落在间隔带内,0<ξi<10<\xi_i<10<ξi<1;被分到错误一侧,ξi>1\xi_i>1ξi>1。综合起来:
ξi=max(1−yi(wTxi+b),0)(9-2)\xi_i=\max(1-y_i(\boldsymbol w^T\boldsymbol x_i+b),0)\tag{9-2}ξi=max(1−yi(wTxi+b),0)(9-2)
目标函数里的 ∑iξi\sum_i\xi_i∑iξi 就是所有样本受惩罚的总距离。

9.2 铰链损失
式(9-2)右端正是铰链损失:
ℓhinge(t)=max(1−t,0)(9-3)\ell_{\mathrm{hinge}}(t)=\max(1-t,0)\tag{9-3}ℓhinge(t)=max(1−t,0)(9-3)
自变量 t=yi(wTxi+b)t=y_i(\boldsymbol w^T\boldsymbol x_i+b)t=yi(wTxi+b) 是加了标签的判别函数值。t≥1t\geq 1t≥1 时损失为零,t<1t<1t<1 时损失线性增长。于是软间隔 SVM 的目标函数可以写成最大间隔项加铰链损失的加权和,CCC 是两项之间的权重。铰链损失与 0-1 损失、Logistic 损失、指数损失的形状对比如图,四条曲线在 t≥1t\geq 1t≥1 之后都归零,在 t<1t<1t<1 之后以不同方式增长。

9.3 对偶问题与三类样本
软间隔 SVM 的拉格朗日函数要引入两组乘子:αi\alpha_iαi 对应分类约束,γi\gamma_iγi 对应 ξi≥0\xi_i\geq 0ξi≥0:
J=12∥w∥2+C∑i=1nξi−∑i=1nαiyi(wTxi+b)−1+ξi−∑i=1nγiξi(9-4)J=\dfrac{1}{2}\lVert\boldsymbol w\rVert^2+C\sum_{i=1}^{n}\xi_i-\sum_{i=1}^{n}\alpha_i\lefty_i(\\boldsymbol w\^T\\boldsymbol x_i+b)-1+\\xi_i\\right-\sum_{i=1}^{n}\gamma_i\xi_i\tag{9-4}J=21∥w∥2+Ci=1∑nξi−i=1∑nαiyi(wTxi+b)−1+ξi−i=1∑nγiξi(9-4)
对 w\boldsymbol ww、bbb、ξi\xi_iξi 分别求导令为零,前两个条件与线性可分时相同,第三个给出:
C−αi−γi=0(9-5)C-\alpha_i-\gamma_i=0\tag{9-5}C−αi−γi=0(9-5)
γi≥0\gamma_i\geq 0γi≥0 推出 αi≤C\alpha_i\leq Cαi≤C。对偶问题与线性可分时形式相同,只多一个上界:
maxα Q(α)=∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxiTxj(9-6)\max_{\boldsymbol\alpha}\ Q(\boldsymbol\alpha)=\sum_{i=1}^{n}\alpha_i-\dfrac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j\boldsymbol x_i^T\boldsymbol x_j\tag{9-6}αmax Q(α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxiTxj(9-6)
约束为 ∑iαiyi=0\sum_i\alpha_iy_i=0∑iαiyi=0 与 0≤αi≤C0\leq\alpha_i\leq C0≤αi≤C。
用互补松弛可以把样本分成三类。间隔带外的样本,ξi=0\xi_i=0ξi=0 且分类约束不起作用,括号内为正,αi\alpha_iαi 只能取 0,对 w\boldsymbol ww 无贡献。违反间隔的样本,ξi>0\xi_i>0ξi>0,而 γiξi=0\gamma_i\xi_i=0γiξi=0 要求 γi=0\gamma_i=0γi=0,代入式(9-5)得 αi=C\alpha_i=Cαi=C。间隔边界上的样本,ξi=0\xi_i=0ξi=0 且分类约束取等号,αi\alpha_iαi 可以取 0 到 CCC 之间的值。三类样本对应的乘子取值分别是 0、CCC 和两者之间。
9.4 C 的影响
CCC 的取舍可以用数值实验看。正例均值 (0,0)(0,0)(0,0),负例均值 (2,0)(2,0)(2,0),协方差都是单位阵,各 100 个样本,两类在中间有明显重叠,间隔按 2/∥w∥2/\lVert\boldsymbol w\rVert2/∥w∥ 计算。CCC 从 0.01 加到 100:
| CCC | 训练错分数 | 间隔 | αi=C\alpha_i=Cαi=C 的样本数 |
|---|---|---|---|
| 0.01 | 35 | 2.90 | 138 |
| 0.1 | 35 | 1.72 | 88 |
| 1 | 33 | 1.36 | 75 |
| 10 | 33 | 1.35 | 74 |
| 100 | 33 | 1.35 | 73 |
重叠严重时,错分数对 CCC 不敏感,从 35 到 33 只差两个;间隔和取上界的乘子数却变化明显。CCC 越小,越偏向大间隔,越多样本被允许落在间隔带内。极端地取 C→0C\to 0C→0,惩罚项可以忽略,分类错误不再被追究,此时解退化成几乎不分的常量。
这里有一个问法:CCC 非常小时,会发生分类错误,数据被正确分类,还是不确定。答案是前者。

十、小结与留下的问题
线性可分情形,SVM 在所有可行分类面中找间隔最大的一个,建模成带线性约束的二次规划;借助拉格朗日乘子法转到对偶问题,解出一组乘子;分类面的权重只由支持向量算出,对偶问题只依赖样本间的内积。线性不可分情形,引入松弛变量允许少量错分,目标函数加上铰链损失的加权和,对偶问题多一个 0≤αi≤C0\leq\alpha_i\leq C0≤αi≤C 的上界,样本按乘子取值分成三类:间隔带外为 0,违反间隔为 CCC,间隔边界上介于两者之间。
留下的问题是:非线性情形怎么办。线性 SVM 只能处理线性可分的数据,遇到环形、交错这类分布就无能为力。把数据映射到更高维的空间再求线性分类面,是一条路;但维度爆炸随之而来。有没有办法在不显式升维的前提下享受高维空间的好处,留到后面展开。