感知机
2.1 感知机模型
感知机模型属于一种判别模型,感知机的定义如下:
(定义2.1)感知机:假设输入空间(特征空间)为,输出空间为y={+1,-1},那么函数:
被称为感知机,可见感知机的本质就是一个符号化函数,其中:
显然,感知机是一种线性分类器。
2.2 数据集的线性可分特性,感知器学习方法
(定义2.2)数据集的线性可分性:对一个数据集 ,其中,,, 如果存在某一个超平面S,使能够把数据的正实例与负实例完全正确划分,那么我们就说这个数据集是线性可分的。
在数据集可以被线性区分的前提下,我们开始设计感知机的损失函数。一个非常直观的想法是用区分错误的点来作为感知机损失函数的依据。如果使用区分错误的点的总数作为损失函数的话,的确可以优化感知机,但是无法微分,很难快速进行优化。目前的感知机采用误分类的点到超平面S的距离作为损失函数,它的表达式很容易推导,首先,对输入的样本中任意一点,根据距离公式得:
也就是它到超平面的距离等于它代入平面方程计算出的绝对值,除以超平面法向量的内积(范数 norms)。对于误分类的数据来说,如果它是+,错误的分到了-,那么有
同理,上式对-分为+也有效,之所以求这个是为了说明绝对值的微分情况,于是对点,(2.3)式脱绝对值有:
误分类的点(集合M)的总距离就为
由于为常数,所以在偏导数运算中可以忽略。故有最终的Loss 函数:
其实损失函数也可以为负数,不过优化方向就有点诡异(不断增大),这样还不如设定为正方便。
2.3 感知机的学习算法
感知机的学习算法其实就是要达成一个目标,使
通用的感知器学习算法是误分类驱动的(误分类调整损失函数),并使用随机梯度下降方法(stochastic gradient descent)。算法初始条件是超平面。对于固定的误分类点集合M, 损失函数的梯度为(对上面的w,b进行微分):
之所以叫随机梯度下降算法,是因为它每次随机选取一个误分类点,对w,b进行更新,如下:
你可能会疑惑是什么,它是学习率(learning rate),调整内部参数更新的速度,属于超参数。
感知机算法将会运行直到误分类集合M清空。(也可能提前被炼丹师终止)。感知机所得到的解不一定相同(求一个试试,比如.
感知机算法是收敛的(经过有限次迭代在线性可分数据集可以得到解),记,,则(线性代数的一种方法)。在此基础上,有定理2.1 (Novikoff)。它说明,存在,可以正确区分T中所有数据,(满足)使得对所有的i=1,2,...,N,点,有
令,则感知机的误分类次数应该满足。证明如下:
对于线性可分的数据集,显然是存在的,但怎么理解时候却有(2.12)成立呢?其实我们由之前的定义知道,,这样只要调整b,使=1,那么对于有限的i=1,2,...,N,显然
因为数据都被正确分类,所以自然标签和分类结果的符号一致,所以必定>0,这样,只要取,那么就可以确保(2.12)式子成立。
(2)对于第k-1次误分类,由(2.4)有
这样,w,b的权值更新为:
综合上面两个式子为向量,也就是
假设 存在,那么由(2.14),(2.12)有
由,数学归纳法有
由(2.13)和(2.14),可以得到另一个不等式
结合(2.15)和(2.16),我们可以发现,
2.4 感知机学习的对偶形式
所谓对偶形式,其实是这样的:由之前的随机梯度下降方法,我们发现感知机根据误分类点修正超平面的方法是根据它的标签来达成的,假设修改n次,那么w,b关于的增量分别为和,这里,这样,从学习过程可以发现,经过n次学习以后,w,b可以表示为:
在等于1的时候,也就是时,表示误分类的更新次数。如果这个更新次数越多,这就表明它距离分离超平面越近?这句话怎么理解?
总之,对偶形式就是要把感知机的w与b表示为的线性组合,下面是它的定义。
(算法2.2)感知机学习算法对偶形式
输入:线性可分的数据集T(1-N),其中数据,(正负分类),i=1,2,...,N,学习率
输出: ;感知机模型,其中
(1)
(2) 在训练集合中选取数据
(3)如果
那么有
(4)到2直到没有任何误分类现象出现。
对偶形式的训练实例以内积的形式给出,为了加速计算,可以计算Gram矩阵来存储,即。Gram矩阵为矩阵分析中重要的一种矩阵,它是内积矩阵。
一个例子:给定正样本,负样本,那么有: