SVM 基本型
想法:找到位于两类训练样本“正中间”的超平面,其面对样本的扰动时最稳健,如何找呢?有以下要求:
- 正确分类:定义 y i ∈ { − 1 , 1 } y_i \in \{-1,1\} yi∈{−1,1},则
( w T x i + b ) y i ≥ 1 (\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i \geq 1 (wTxi+b)yi≥1
- 最大间隔:“间隔”是超平面的方向向量穿过距离超平面最近的样本点而构成的超平面,表示为 2 ∣ ∣ w ∣ ∣ \frac{2}{||\boldsymbol{w}||} ∣∣w∣∣2,于是
m a x 2 ∣ ∣ w ∣ ∣ ⟹ m i n 1 2 ∣ ∣ w ∣ ∣ 2 \begin{aligned} & {\rm max} \;\; \frac{2}{||\boldsymbol{w}||} \\[2mm] \implies & {\rm min} \;\; \frac{1}{2}||\boldsymbol{w}||^2 \end{aligned} ⟹max∣∣w∣∣2min21∣∣w∣∣2
这是支持向量机的基本型.
对偶问题
写出支持向量机基本型的拉格朗日函数:
L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i m λ i [ 1 − ( w T x i + b ) y i ] L(\boldsymbol{w},b,\boldsymbol{\lambda}) = \frac{1}{2}||\boldsymbol{w}||^2 + \sum_{i}^{m} \lambda_i[1-(\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i] L(w,b,λ)=21∣∣w∣∣2+i∑mλi[1−(wTxi+b)yi]
这个不等式约束优化问题的 KKT 条件是:
w = ∑ i = 1 m λ i y i x i 0 = ∑ i = 1 m λ i y i λ i ≥ 0 ( w T x i + b ) y i − 1 ≥ 0 [ 1 − ( w T x i + b ) y i ] λ i = 0 \begin{aligned} \boldsymbol{w} &= \sum_{i=1}^{m}\lambda_iy_i\boldsymbol{x}_i\\[2mm] 0 &= \sum_{i=1}^{m} \lambda_iy_i\\[2mm] \lambda_i & \geq 0 \\[2mm] (\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i - 1 &\geq 0 \\[2mm] [1-(\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i]\lambda_i &= 0 \end{aligned} w0λi(wTxi+b)yi−1[1−(wTxi+b)yi]λi=i=1∑mλiyixi=i=1∑mλiyi≥0≥0=0
将第一个式子代入原式,其余作为新的约束,得到对偶式
m a x ∑ i = 1 m λ i − 1 2 ∑ i = 1 m ∑ j = 1 m λ i λ j y i y j x i T x j (*) {\rm max} \;\; \sum_{i=1}^{m} \lambda_i - \frac{1}{2} \sum_{i=1}^m\sum_{j=1}^m \lambda_i \lambda_jy_iy_j \boldsymbol{x}_i^T\boldsymbol{x}_j \tag{*} maxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxiTxj(*)
发现:
- 对这个式子做优化比原来简单,只需处理一些等式约束和一些简单的不等式约束,原式则需要处理线性的不等式约束
- 由 KKT 条件的后三个式子,若某个样本出现在求和式中,则必有该样本在间隔上
- 也就是说,最终的训练过程只与支持向量有关
如何求解这个二次规划问题呢?可以采用 SMO 算法,SMO 算法的基本思路是先固定除了 λ i \lambda_i λi 的所有参数,再求关于 λ i \lambda_i λi 的极值点,直至目标函数收敛,步骤是:
- 选取一对需要更新的变量 λ i , λ j \lambda_i,\lambda_j λi,λj
- 固定除此之外的所有参数,求解目标式 ( ∗ ) (*) (∗) ,以更新 λ i , λ j \lambda_i,\lambda_j λi,λj
- 选取时,需要使选取的两变量所对应样本之间的问隔最大
核函数
SVM 基本型采用超平面作为分割,这是训练样本线性可分。如果要处理非线性可分问题(如“异或”问题),需要将样本从原始平面映射到一个高维空间(特征空间):
x ⟼ ϕ ( x ) x \longmapsto \phi(x) x⟼ϕ(x)
此时,新的分类模型可表示为:
f ( x ) = w T ϕ ( x ) + b f(\boldsymbol{x}) = \boldsymbol{w}^T \phi(\boldsymbol{x}) + b f(x)=wTϕ(x)+b
将这个模型代入 SVM 基本型中求解即可.
然而,在求解中,涉及到计算特征空间中的内积 ϕ ( x i ) T ϕ ( x j ) \phi(\boldsymbol{x_i})^T\phi(\boldsymbol{x_j}) ϕ(xi)Tϕ(xj),比较困难,希望找到这样一个函数,满足:
κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(\boldsymbol{x_i},\boldsymbol{x_j}) = \phi(\boldsymbol{x_i})^T\phi(\boldsymbol{x_j}) κ(xi,xj)=ϕ(xi)Tϕ(xj)
这样,就将高维空间的内积计算转换为原空间的某个函数 κ ( ⋅ , ⋅ ) \kappa(\cdot,\cdot) κ(⋅,⋅) 的计算结果,这样的函数称为核函数,常用的核函数有:
- 线性核: x i T x j x_i^Tx_j xiTxj
- 多项式核: ( x i T x j ) d (x_i^Tx_j)^d (xiTxj)d
- 高斯核: e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) {\rm exp}(-\frac{||x_i-x_j||^2}{2\sigma^2}) exp(−2σ2∣∣xi−xj∣∣2)
等等。
软间隔与正则化
以上内容假定样本在特征空间中是线性可分的,然而,在现实情况中:
- 往往难以确定合适的核函数使得训练样本在特征空间中线性可分
- 即使找到了核函数,也难以确定结果是否由过拟合造成的
处理办法是:允许某些样本不满足约束
( w T x i + b ) y i ≥ 1 (\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i \geq 1 (wTxi+b)yi≥1
这样做称为“软间隔”,将间隔放入某个损失函数 L ( ⋅ ) \mathcal{L}(\cdot) L(⋅) 中,构成了一个正则化项,加入目标函数中:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 + λ ∑ i = 1 m L ( ( w T x i + b ) y i − 1 ) {\rm min} \;\; \frac{1}{2}||\boldsymbol{w}||^2 + \lambda\sum_{i=1}^{m} \mathcal{L}\big((\boldsymbol{w}^T \boldsymbol{x}_i +b)y_i - 1\big) min21∣∣w∣∣2+λi=1∑mL((wTxi+b)yi−1)
直观地看, λ \lambda λ 越大,最小化上式越接近最小化正则项式,就要求间隔越“硬”,取一个有限值 λ \lambda λ,允许一些样本不满足约束。这样,就能适当缓解过拟合的问题。类似基本 SVM 的解法,可以用拉格朗日乘子法构造对偶问题,再用迭代方法求解。
常用的损失函数 L ( ⋅ ) \mathcal{L}(\cdot) L(⋅) 有:
- 0-1 损失: I ( ⋅ ) \mathbb{I}(\cdot) I(⋅)
- Hinge 损失: m a x ( 0 , 1 − z ) {\rm max} (0,1-z) max(0,1−z)
- 指数损失: e x p ( − z ) {\rm exp} (-z) exp(−z)
- 对率损失: log ( 1 + e x p ( − z ) ) \log (1+{\rm exp} (-z)) log(1+exp(−z))