感知机(perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型,解决的问题是分类问题。
目标/目的:求出将训练数据进行线性划分的分类超平面,为此导入误分类的损失函数,利用梯度下降法对损失函数进行最小化,求的感知机模型。
感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的输入实例进行分类。
总的来说:
模型:符号函数(判别模型)
策略:损失函数:误分点到超平面距离之和
算法:利用梯度下降算法进行优化
假设输入空间(特征空间)是,输出空间是Y={+1,-1}。输入表示实例的特征向量,对应于输入空间(特征空间)的点;输出表示实例的类别。由输入空间到输出空间的如下函数
称为感知机。其中,w和b为感知机的模型参数,叫作权值(weight)货值权值向量(weight vector),叫做偏置(bias),表示w和x的内积,sign()是符号函数:
感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或者线性分类器,即函数集合:{f|f(x)=w.x+b}。
线性方程对应于特征空间中的一个超平面S,其中w是超平面的法向量,b是超平面的截距(不理解的可以百度一下,法向量与直线方程的关系)。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)被分为正负两类,因为超平面S称为分类超平面(separating hyperplane)。
感知机的学习:由训练数据集(实例的特征向量以及类别),其中,,求得感知机模型,也就是求出参数w和b。
感知机的预测:通过学习得到的感知机模型,对于新的输入实例给出其对应的输出类别。
给定一个数据集,
假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面,为了找出这样的超平面,即确定感知机模型的参数w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数最小化。
损失函数的一个自然选择是误分类点的总数,但是这样的损失函数不是参数w,b的连续可导函数,不宜优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。
为此,首先,写出输入空间中任意一点x,到超平面S的距离(点到直线的距离):
其次,对于误分类点(xi,yi)来说,有,因此误分点xi到超平面S的距离可以写成如下公式:
这样,假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离为:
1、1/||w||恒为正,不影响-y(w*x+b)正负的判断,也就是不影响学习算法的中间过程。因为感知机学习算法是误分类驱动的(只有当出现误分类时才去调整模型,或者说损失函数只与误分类点有关),这里需要注意的是,所谓的“误分类驱动”指的是我们只需要判断-y(w*x+b)的正负来判断分类的正确与否,而1/||w||并不影响正负值的判断,所以1/||w||对感知机学习算法的中间过程可有可无。
2、1/||w||不影响感知机学习算法的最终结果,因为感知机学习算法最终的终止条件是所有的输入都被正确的分类,即不存在误分类点,则此时的损失函数为0,对应于-y(w*x+b)/||w||,即分子为0.则可以看出1/||w||对最终结果也无影响。
综上所述,即使忽略1/||w||,也不会对感知机学习算法的执行过程产生任何影响,反而还能简化运算,提高算法执行效率。
给定一个训练数据集,
其中,M为误分类点的集合,这个损失函数就是感知机学习的经验风险函数。
显然,损失函数L(w,b)是非负的。如果没有误分类点,损失函数值就是0。而且误分类点越少,误分类点离超平面越近,都会使得损失函数值越小。一个特定的样本点的损失函数:在误分类时是参数w,b的线性函数,在正确分类的时候是0,因此,给定训练数据集T,损失函数L(w,b)是w,b的连续可导函数。
总之,感知机学习的策略是在假设 空间中选取使得损失函数式(2.4)最小的模型参数w,b,即感知机模型。
在感知机优化问题中,最优化方法选择的是随机梯度下降法。
给定一个训练数据集,
感知机学习算法是误分类驱动的,具体采用随机梯度下降算法。首先,任意选择一个超平面w0,b0,然后用梯度下降算法不断极小化目标函数(2.5)式。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
假设误分类点集合M时固定的,那么损失函数L(w,b)的梯度由
随机选取一个误分类点(xi,yi),对w,b进行更新:
其中,是步长,在统计学习中又称为学习率(learning rate)。这样,通过迭代,可以期待损失函数L(w,b)不断缩小,直到为0,综上所述,得到如下算法:
再次提醒,注意第二步中,是随机选择数据
这种学习算法直观上有如下解释,当一个实例点被误分类,即位于分离超平面错误的一侧时,则调整w,b的值,使分离超平面向该误分类点的一侧移动,以减少误分类点与超平面之间的距离,直到超平面越过该误分类点,使其被正确分类。
感知机学习算法由于采不同的初始值(w0,b0)或者选取不同的误分类点(因为在选取误分类点的时候是随机选取的),最终解可以不同。
现在证明,对于线性可分的数据集感知机算法的原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。
记,则有,
定理2.1(novikoff) 设训练数据集,
(2)令 ,则感知计算法2.1在训练数据集的误分次数k满足不等式
(证明过程还是比较简单的,比较容易理解的,在此就不再多加描述。)
我对收敛性的理解:因为感知机算法是误分类驱动的,每次迭代,误分类点的总间隔(损失函数值)都会下降(梯度下降),而总间隔又是大于等于0的,所以,具有下确界0,根据单调有界函数必收敛的性质可得,感知机学习算法的原始形式是收敛的。
对偶形式的基本想法是,将w和b表示为实例xi和标记yi的线性组合的形式,通过求解其系数而求得w和b。假设设初始值w0,b0均为0,。对误分类点(xi,yi)通过
逐步修改w,b,设修改n次,则w,b关于(xi,yi)的增量分别是和,这里,这样从学习过程中,不难看出,最后学习得到的w,b可以分别表示为
这里。
我的解释:对于意思是,实例点(xi,yi)误分的次数为ni,每误分一次,就改变步长。注意,存在的情况,例如实例点(xi,yi)从来没有被误分过。
当时,表示第i个实例点由于误分而进行更新的次数。实例点更新次数越多,就意味着它离分离超平面越近,也就越男正确分类。换句话说,这样的实例对学习结果影响最大。
对偶形式中训练实例仅以内积的形式出现,为了方便,可以预先将训练集中实例间的内积计算出来,并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵
注意,最后再强调一下,感知机解决的问题的是分类问题,不要和后面要学习到的逻辑斯谛回归混淆。
《完》
人生如棋,落子无悔。
----------By Ada