本文已参与「新人创作礼」活动,一起开启掘金创作之路。
感知机与SVM
1. 超平面
在介绍感知机与SVM之前,我们有必要补充一下超平面的概念。
超平面是具有下面形式的点的集合:
{x∣aTx=b}(1)
其中a∈Rn,a=0且b∈R。
解析意义:超平面是关于x的非齐次线性方程组的解空间(是一个仿射集合)。
几何意义:超平面是与给定向量a的内积为常数的点的集合;也可以看成法线方向为a的超平面,常数b∈R决定了这个平面相对原点的偏移,每个轴上偏移了aib。
超平面外任意一点y到超平面的距离计算过程:
在超平面上任取一点x,则y到超平面的距离可表示为:
d=∣∣a∣∣∣aT(y−x)∣=∣∣a∣∣∣aTy−b∣(2)
在感知机与SVM的相关理论推导中,我们一般将超平面写成如下形式:
{x∣wTx+b=0}(3)
2. 感知机(perception)
感知机 是二类分类问题的线性分类模型。其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机学习旨在求出将训练数据进行线性划分的分离超平面。
假设对所有y(i)=+1的点,有wTx(i)+b>0;对所有y(i)=−1的点,有wTxi+b<0。则对于给定数据集
T=(x(1),y(1)),⋯,(x(N),y(N))(4)
线性可分的定义是:∃某个超平面{x∣wTx+b=0}使得∀(x(i),y(i))有y(i)(wTx(i)+b)>0
也即对误分类的点有:
−y(i)(wTx(i)+b)>0(5)
我们假设感知机的训练数据都是线性可分的。
误分类点到超平面的总距离为:
−∥w∥1x(i)∈M∑y(i)(wTx+b)(6)
M为误分类点的集合。可以将(6)作为优化的损失函数。
我们可以 把∥w∥1扔掉而不影响优化结果,因为我们假设数据集是线性可分的,因此最后损失函数必然为零,即无误分类点。去掉后,我们得到的loss function如下:
−x(i)∈M∑y(i)(wTx(i)+b)(7)
(7)是关于w,b的连续可导线性函数,梯度为:
\nabla_wL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)}x^{(i)} \tag{8}
\nabla_bL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)} \tag{9}
可以利用随机梯度下降法轻松地进行优化:
(1) 选取初值w0,b0
(2) 在训练集中选取数据x(i),y(i)
(3) if −y(i)(wTx+b)≥0
w\leftarrow w+\eta y^{(i)}x^{(i)} \tag{10}
b\leftarrow b+\eta y^{(i)} \tag{11}
else 算法停止
(4) 转至(2),直至训练集中没有误分类点。
3. 支持向量机(SVM)
感知机模型得到的分离超平面不是唯一的,会随着初值不同而不同。而SVM试图寻找一个最佳的超平面来划分数据。所谓“最优的超平面”,就是指“最中间的”的超平面,也即“与数据点间隔最大”的超平面。
定义样本点(xi,yi)与超平面wTx+b=0的几何间隔为:
γ(i)=∥w∥y(i)(wTx(i)+b)(12)
几何间隔其实就是(1)中的距离。
定义超平面与整个数据集的几何间隔为:
γ=i=1,⋯,Nminγ(i)(13)
其物理含义为离超平面最近的点到超平面的几何距离。
定义样本点(xi,yi)与超平面wTx+b=0的函数间隔为:
γ^(i)=y(i)(wTx(i)+b)(14)
函数间隔可以相对地表示点x与超平面wTx(i)+b)的远近程度(在超平面确定的情况下)
定义超平面与整个数据集的函数间隔为:
γ^=i=1,⋯,Nminγ^(i)(15)
注意,当w和b同比例变化时,函数间隔也会同比例变化,但是超平面不变,这点性质对后面的推导很重要!!!
根据上面的铺垫,SVM模型可表示为:
w,bmaxs.t.γγ(i)≥γ,i=1,⋯,N(16)
考虑到几何间隔与函数间隔的比例关系,(16)可以写成:
w,bmaxs.t.∥w∥γ^γ^(i)≥γ^,i=1,⋯,N(17)
而根据前面的分析我们可以知道,我们总可以同比例缩放(w,b)使得
γ^=1,而超平面不变。因此(17)可以进一步写成:
w,bmaxs.t.∥w∥1γ^(i)≥1,i=1,⋯,N(18)
(18)可以再进一步写成:
w,bmins.t.21∥w∥2y(i)(wTx(i)+b)≥1,i=1,⋯,N(19)
这样SVM就转化为了一个凸二次规划问题,可以用一些软件包方便得求解。但是这种问题的直接求解比较低效,为此可以使用Lagrange乘子法得到其对偶问题,这样不仅能简化计算,还可以为后面引入kernel的概念做铺垫。
3. SVM的Lagrange对偶问题
对(19)的每一个不等式约束引进拉格朗日乘子(Lagrange multiplier)αi≥0,i=1,⋯,N,定义拉格朗日函数:
L(w,b,α)=21∥w∥2−i=1∑Nαiy(i)(wTx(i)+b)+i=1∑Nαi(20)
(19)的原问题(primer problem)是如下所示的极小极大问题:
αminw,bmaxL(w,b,α)(21)
(19)的对偶问题(dual problem)是如下所示的极大极小问题:
αmaxw,bminL(w,b,α)(22)
先求w,bminL(w,b,α)。将L(w,b,α)分别对w,b求导并令其等于0:
∇wL(w,b,α)∇bL(w,b,α)=w−i=1∑Nαiy(i)x(i)=0=−i=1∑Nαiy(i)=0(23)
可得:
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyjx(i)Tx(i)+i=1∑Nαi(24)
因此(22)可转化为:
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjx(i)Tx(i)+i=1∑Nαiαi≥0,i=1,⋯,Ni=1∑Nαiy(i)=0(25)
易证强对偶性成立。(原问题是凸问题且Slater条件成立)
求解出最优的αi∗后,就可以根据(23)进一步求出w∗(也可以根据下面的KKT条件得到w∗的公式)。那怎么求b∗呢?
根据KKT条件:
y(i)(wTx(i)+b)αiα(y(i)(wTx(i)+b)−1)∇wL(w,b,α)=w−i=1∑Nαiy(i)x(i)∇bL(w,b,α)=−i=1∑Nαiy(i)≥1,i=1,⋯,N≥0,i=1,⋯,N=0,i=1,⋯,N=0,i=1,⋯,N=0,i=1,⋯,N(25)
可以进一步求出b。
我们可以断定,∃αj∗>0(否则可推出w=0,违背超平面的定义)。注意到,当αj∗>0时,意味着y(i)(wTx(i)+b)−1=0,也即这时候样本点在最大间隔边界上(称为支持向量)。
这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
w∗的表达式为:
w∗=i∈S∑αiy(i)x(i)(26)
其中S表示支持向量的下标集合。
b∗的表达式为:
b∗=yj−i∈S∑αiy(i)x(i)x(j)(27)
于是,理论上可以选取任意支持向量求解b∗。注意到对任意支持向量(x(s),y(s)),都有:
y(s)(wTx(s)+b)−1=0(28)
通过(26)即可求出b∗。实际上可以采用一种更鲁棒的做法:使用所有支持向量求解的结果的平均值:
b∗=∥S∥1s∈S∑(y(s)−wTx(s))(29)