本文根据西瓜书内容整理而成,并参考了以下资料: Datawhale南瓜书https://www.datawhale.cn/learn/content/2/68
6.1 间隔与支持向量
问题情景:分类学习
直观目标:找到两类样本正中间的超平面
数学语言:假设超平面 \((\boldsymbol{w}, b)\) 能将训练样本正确分类, 即对于 \((\boldsymbol{x}_i, y_i) \in D\), 若 \(y_i = +1\), 则有 \(\boldsymbol{w}^\text{T}\boldsymbol{x}_i + b > 0\); 若 \(y_i = -1\), 则有 \(\boldsymbol{w}^\text{T}\boldsymbol{x}_i + b < 0\). 并且要求
\[\begin{cases} \boldsymbol{w}^\text{T}\boldsymbol{x}_i + b \geqslant +1, & y_i = +1 \ ; \\ \boldsymbol{w}^\text{T}\boldsymbol{x}_i + b \leqslant -1, & y_i = -1 \ . \end{cases}
\]
优化模型:我们希望这个间隔是最大的
\[\begin{align*} \max_{\boldsymbol{w}, b} &\quad \frac{2}{\|\boldsymbol{w}\|} \\ \text{s.t.} &\quad y_i(\boldsymbol{w}^\text{T}\boldsymbol{x}_i + b) \geqslant 1, \quad i = 1, 2, \ldots, m. \end{align*}
\]
等价于
\[\begin{align*} \min_{\boldsymbol{w}, b} &\quad \|\boldsymbol{w}\|^2 \\ \text{s.t.} &\quad y_i(\boldsymbol{w}^\text{T}\boldsymbol{x}_i + b) \geqslant 1, \quad i = 1, 2, \ldots, m. \end{align*}
\]
上式即为支持向量机的基本型
6.2 对偶问题
根据最优化理论中的对偶问题相关的知识,可以得到支持向量机基本型的对偶问题
\[\begin{align*} \max_{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_i - &\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j \\ \text{s.t. } \sum_{i=1}^{m} &\alpha_i y_i = 0 \, \\ \alpha_i \geqslant 0, &\quad i = 1, 2, \ldots, m \,\end{align*}
\]
分析:二次规划问题,开销很大,使用SMO算法
SMO算法
- 基本思路:固定\(\alpha_i\)之外的所有参数,然后去求\(\alpha_i\)上的极值
- 大致流程:
选择两个变量,固定其他参数
- 选取一对需要更新的变量\(\alpha_i\)与\(\alpha_j\)
- 固定\(\alpha_i\)与\(\alpha_j\)以外的参数,求解优化问题,获得更新后的\(\alpha_i\)与\(\alpha_j\)
不断重复,直至收敛
- 计算细节:
\(\alpha_i\)与\(\alpha_j\)选择时有多种选择,只要求其中有一个不满足KKT条件即可
计算策略:
- 先选取KKT条件程度最大的变量
- 第二个选取使得目标函数减小最快的变量
- 同时还有一个启发式:使得选取的两变量所对应样本之间的间隔最大(这样会有更大的变化)
6.3 核函数
之前讨论的样本都是线性可分的,对于划分不是超平面的,我们该怎么办呢?
将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间中线性可分
Remark:有理论证明:如果原始空间是有限维,那么一定存在一个高维特征空间使得样本可分
建立新的数学模型
新的划分模型$$f(\boldsymbol{x}) = \boldsymbol{w}^\text{T}\phi(\boldsymbol{x}) + b$$ 优化问题
\[\begin{align*} \min_{\boldsymbol{w}, b} &\quad \frac{1}{2} \|\boldsymbol{w}\|^2 \\ \text{s.t.} &\quad y_i \left( \boldsymbol{w}^\text{T}\phi(\boldsymbol{x}_i) + b \right) \geqslant 1, \quad i = 1, 2, \ldots, m. \end{align*}
\]
其对偶问题
\[\begin{align*} \max_{\boldsymbol{\alpha}} &\quad \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j \phi(\boldsymbol{x}_i)^\text{T} \phi(\boldsymbol{x}_j) \\ \text{s.t.} &\quad \sum_{i=1}^{m} \alpha_i y_i = 0 \,, \\ &\quad \alpha_i \geqslant 0, \quad i = 1, 2, \ldots, m \,. \end{align*}
\]
为了避免\(\phi(\boldsymbol{x}_i)^\text{T} \phi(\boldsymbol{x}_j)\)直接的计算,我们定义一个函数\(\kappa(\cdot, \cdot)\) ,就把高维的转化为了原来维度的计算
\[\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \langle \phi(\boldsymbol{x}_i), \phi(\boldsymbol{x}_j) \rangle = \phi(\boldsymbol{x}_i)^\text{T} \phi(\boldsymbol{x}_j)
\]
有了这样的函数,我们就不必直接去计算高维甚至无穷维特征的内积,优化问题重写为:
\[\begin{align*} \max_{\boldsymbol{\alpha}} &\quad \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j \kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) \\ \text{s.t.} &\quad \sum_{i=1}^{m} \alpha_i y_i = 0 \,, \\ &\quad \alpha_i \geqslant 0, \quad i = 1, 2, \ldots, m \,. \end{align*}
\]
求解后即可得到:
\[\begin{align*} f(\boldsymbol{x}) &= \boldsymbol{w}^\text{T} \phi(\boldsymbol{x}) + b \\ &= \sum_{i=1}^{m} \alpha_i y_i \phi(\boldsymbol{x}_i)^\text{T} \phi(\boldsymbol{x}) + b \\ &= \sum_{i=1}^{m} \alpha_i y_i \kappa(\boldsymbol{x}, \boldsymbol{x}_i) + b \,. \end{align*}
\]
定理 令 \(\mathcal{X}\) 为输入空间,\(\kappa(\cdot, \cdot)\) 是定义在 \(\mathcal{X} \times \mathcal{X}\) 上的对称函数,则有
\(\kappa\) 是核函数\(\Leftrightarrow\)对于任意数据 \(D = \{\boldsymbol{x}_1, \boldsymbol{x}_2, \ldots, \boldsymbol{x}_m\}\),“核矩阵”(kernel matrix) \(\mathbf{K}\) 总是半正定的
\[\mathbf{K} = \begin{bmatrix} \kappa(\boldsymbol{x}_1, \boldsymbol{x}_1) & \cdots & \kappa(\boldsymbol{x}_1, \boldsymbol{x}_j) & \cdots & \kappa(\boldsymbol{x}_1, \boldsymbol{x}_m) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa(\boldsymbol{x}_i, \boldsymbol{x}_1) & \cdots & \kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) & \cdots & \kappa(\boldsymbol{x}_i, \boldsymbol{x}_m) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa(\boldsymbol{x}_m, \boldsymbol{x}_1) & \cdots & \kappa(\boldsymbol{x}_m, \boldsymbol{x}_j) & \cdots & \kappa(\boldsymbol{x}_m, \boldsymbol{x}_m) \end{bmatrix}
\]
Remark:
- 定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。
- 事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射 \(\phi\)。
- 换言之,任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space, 简称 RKHS)的特征空间。
核函数的选择是关键所在,下面给出几种常用核函数
- 线性核
- 公式:\(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j\)
- 无额外参数,计算原始样本空间内积
- 多项式核
- 公式:\(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \left( \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j \right)^d\)
- 参数:\(d \geqslant 1\)(多项式次数,控制特征空间复杂度 )
- 高斯核
- 公式:\(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \exp\left( -\frac{\|\boldsymbol{x}_i - \boldsymbol{x}_j\|^2}{2\sigma^2} \right)\)
- 参数:\(\sigma > 0\)(带宽,决定样本相似性衰减范围 )
- 拉普拉斯核
- 公式:\(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \exp\left( -\frac{\|\boldsymbol{x}_i - \boldsymbol{x}_j\|}{\sigma} \right)\)
- 参数:\(\sigma > 0\)(类似高斯核,计算更简单 )
- Sigmoid 核
- 公式:\(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \tanh\left( \beta \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j + \theta \right)\)
- 说明:\(\tanh\) 是双曲正切函数,参数需满足 \(\beta > 0, \theta < 0\)
此外,还可以核函数与核函数之间组合也可得到核函数
- 线性组合$$\gamma_1\kappa_1+\gamma_2\kappa_2$$
- 直积$$\kappa_1 \otimes \kappa_2(\boldsymbol{x}, \boldsymbol{z}) = \kappa_1(\boldsymbol{x}, \boldsymbol{z}) \kappa_2(\boldsymbol{x}, \boldsymbol{z})$$
- \(\kappa_1\) 核函数,则对于任意函数 \(g(\boldsymbol{x})\)$$\kappa(\boldsymbol{x}, \boldsymbol{z}) = g(\boldsymbol{x}) \kappa_1(\boldsymbol{x}, \boldsymbol{z}) g(\boldsymbol{z})$$
6.4 软间隔与正则化
我们一直假定确实是有一个超平面可以划分,但是现实中很难确定合适的核函数使得训练样本在特征空间中线性可分,即使找到了,也很难说是不是因为出现了过拟合
解决办法:软间隔,即允许支持向量机在一些样本上出错
当下的优化问题改为
\[\min_{\boldsymbol{w}, b} \frac{1}{2} \|\boldsymbol{w}\|^2 + C \sum_{i=1}^{m} \ell_{0/1} \left( y_i \left( \boldsymbol{w}^\text{T} \boldsymbol{x}_i + b \right) - 1 \right), $$ 其中 $C > 0$ 是一个常数,$\ell_{0/1}$ 是 “0/1 损失函数” $$ \ell_{0/1}(z) = \begin{cases} 1, & \text{if } z < 0; \\ 0, & \text{otherwise}. \end{cases}
\]
Remark:
- \(C\)取无穷大时,迫使\(y_i \left( \boldsymbol{w}^\text{T} \boldsymbol{x}_i + b \right) - 1<0\),等价于最初的优化问题
- \(C\)有限时,允许一些样本不满足约束
\(\ell_{0/1}\) 是不连续的,我们同样找一些其他的性质更好的函数来替代,这些函数称为替代损失函数,以下是三种常用函数:
- hinge 损失: \(\ell_{\text{hinge}}(z) = \max(0, 1 - z)\)
- 指数损失(exponential loss): \(\ell_{\text{exp}}(z) = \exp(-z)\)
- 对率损失(logistic loss): \(\ell_{\text{log}}(z) = \log(1 + \exp(-z))\)
以其中的hinge损失为例子,现在最优化问题进化为:
\[\min_{\boldsymbol{w}, b} \frac{1}{2} \|\boldsymbol{w}\|^2 + C \sum_{i=1}^{m} \max\left(0, 1 - y_i \left( \boldsymbol{w}^\text{T} \boldsymbol{x}_i + b \right) \right)
\]
引入松弛变量\(\xi\),则最优化问题转化为
\[ \begin{align*} \min_{\boldsymbol{w}, b} &\quad \frac{1}{2} \|\boldsymbol{w}\|^2 + C\sum_{i=1}^{m}\xi_i\\ \text{s.t.} &\quad y_i \left( \boldsymbol{w}^\text{T}\phi(\boldsymbol{x}_i) + b \right) \geqslant 1-\xi_i,\\
& \quad \xi_i \geqslant 0,\quad i = 1, 2, \ldots, m.\end{align*}\]
这就是常用的软间隔支持向量机
类似地,得到该问题的对偶问题
\[\begin{align*} \max_{\boldsymbol{\alpha}}& \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j\\\text{s.t.} &\quad \sum_{i=1}^{m} \alpha_i y_i = 0, \\ &\quad 0 \leqslant \alpha_i \leqslant C, \quad i = 1, 2, \ldots, m. \end{align*}
\]
以对数损失函数为例,最终几乎得到对率回归模型
6.5 支持向量回归
使用这种想法来解决回归问题
key:容忍\(f(x)\)与\(y\)之间有\(\epsilon\)的误差
优化模型为
\[\min_{\boldsymbol{w}, b} \frac{1}{2} \|\boldsymbol{w}\|^2 + C \sum_{i=1}^{m} \ell_{\epsilon} \big( f(\boldsymbol{x}_i) - y_i \big)
\]
其中 \(C\) 为正则化常数,\(\ell_{\epsilon}\) 是 \(\epsilon\)-不敏感损失(\(\epsilon\)-insensitive loss)函数 $$ \ell_{\epsilon}(z) = \begin{cases} 0, & \text{if } |z| \leqslant \epsilon \ ; \ |z| - \epsilon, & \text{otherwise}. \end{cases} $$ 引入松弛变量 \(\xi_i\) 和 \(\hat{\xi}_i\),可将原模型重写为
\[\begin{align*} \min_{\boldsymbol{w}, b, \xi_i, \hat{\xi}_i} & \frac{1}{2} \|\boldsymbol{w}\|^2 + C \sum_{i=1}^{m} (\xi_i + \hat{\xi}_i)\\\text{s.t.} &\quad f(\boldsymbol{x}_i) - y_i \leqslant \epsilon + \xi_i, \\ &\quad y_i - f(\boldsymbol{x}_i) \leqslant \epsilon + \hat{\xi}_i, \\ &\quad \xi_i \geqslant 0, \, \hat{\xi}_i \geqslant 0, \quad i = 1, 2, \ldots, m. \end{align*}
\]
同理,得到相应的对偶问题
\[\begin{align*} \max_{\boldsymbol{\alpha}, \hat{\boldsymbol{\alpha}}} &\quad \sum_{i=1}^{m} y_i (\hat{\alpha}_i - \alpha_i) - \epsilon (\hat{\alpha}_i + \alpha_i) \\ &\quad - \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} (\hat{\alpha}_i - \alpha_i)(\hat{\alpha}_j - \alpha_j) \boldsymbol{x}_i^\text{T} \boldsymbol{x}_j \\ \text{s.t.} &\quad \sum_{i=1}^{m} (\hat{\alpha}_i - \alpha_i) = 0, \\ &\quad 0 \leqslant \alpha_i, \hat{\alpha}_i \leqslant C. \end{align*}
\]
根据最优化理论一通炫酷操作,得到最终解形式$$ f(\boldsymbol{x}) = \sum_{i=1}^{m} (\hat{\alpha}_i - \alpha_i) \kappa(\boldsymbol{x}, \boldsymbol{x}_i) + b, $$ 其中 \(\kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \phi(\boldsymbol{x}_i)^\text{T} \phi(\boldsymbol{x}_j)\) 为核函数。
6.6 核方法
我们发现SVM和SVR学得的模型总能表示成核函数的线性组合,同时,更有以下公理
定理 (表示定理) 令 \(\mathbb{H}\) 为核函数 \(\kappa\) 对应的再生核希尔伯特空间,\(\| h \|_{\mathbb{H}}\) 表示 \(\mathbb{H}\) 空间中关于 \(h\) 的范数。 对于任意单调递增函数 \(\Omega : [0, \infty] \mapsto \mathbb{R}\) 和任意非负损失函数 \(\ell : \mathbb{R}^m \mapsto [0, \infty]\),优化问题
\[ \min_{h \in \mathbb{H}} F(h) \;=\; \Omega\bigl(\| h \|_{\mathbb{H}}\bigr) \;+\; \ell\bigl(h(\boldsymbol{x}_1), h(\boldsymbol{x}_2), \ldots, h(\boldsymbol{x}_m)\bigr)$$ 的解总可写为
$$ h^*\bigl(\boldsymbol{x}\bigr) \;=\; \sum_{i=1}^{m} \alpha_i \, \kappa\bigl(\boldsymbol{x},\boldsymbol{x}_i\bigr)\]
我们可以基于核函数发展学习方法,这一类方法统称为核方法。