感知机详解

版权声明:博客文章都是作者辛苦整理撰写的,转载请注明出处,谢谢!https://blog.csdn.net/m0_37306360/article/details/79885858

感知机算法

感知机(Perceptron)在1957年由Rosenblatt提出,是神经网络和支持向量机的基础。

感知机是一种二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,+1代表正类,-1代表负类。感知机属于判别模型,它的目标是要将输入实例通过分离超平面将正负二类分离。

感知机模型

由一个例子引入:信用卡申请问题,对于顾客,决定是否给他信用卡。这是一个典型的二分类问题。

下表给定一个顾客的信息(用向量表示,比如第一个维度表示年龄,第二个维度表示年薪等等),每个维度对我们是否给他信用卡是有正面或者负面的影响,决定我们到底给不给他信用卡。我们把这些维度综合(加权叠加)算起来,如果综合分数超过某个标准,就给,没超过就不给。

这里写图片描述

我们用1表示给,用-1表示不给,即为二分类,类别为{1,-1}。上图可以写成h(x)=sign(wx+b)。
我们知道,x>=0,sign(x)=1;x<0,sign(x)=-1;
这样我们就可以通过sign()函数做这件事了。以上我们称之为感知机。

更普通化一下,即是下面形式:

这里写图片描述

这样就可以看成是二个向量的内积再套一个sign函数。

感知机的几何解释:线性方程wx+b=0对应于特征空间中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间分为了两个部分。位于两部分的点(即特征向量)分别被分为正、负两类。S也被称之为分离超平面(separating hyperplane)。

下图对应的平面,x的维度为2:

这里写图片描述

感知机学习是有监督学习过程,通过有label的训练数据集求的模型的参数w,b。
感知机预测过程:对于新输入实例的特征向量,输入到h(x)=sign(wx+b),输出对应类别

数据的线性可分性

给定一个数据集,如果存在某个超平面S(wx+b=0),能够将数据集的正实例点和负实例点完全正确的划分到超平面的两侧,即对y=+1的实例点,有wx+b>0,对y=-1的实例点,有wx+b<0=0,则称数据集线性可分,否则线性不可分。

感知机学习策略:

假设样本线性可分,感知机学习的目标就是求能将正负样本完全分开的分离超平面,即要寻找w,b(因为wx+b=0确定了分离超平面)。因此我们需要确定一个学习策略,即定义损失函数,并通过训练样本使其最小化。

损失函数的一个自然选择是误分类点的总数,但是,通过这种方式定义的损失函数对参数w,b来说不是连续可导函数,不易于优化。所有感知机采取的是误分类点到超平面S的总距离。损失函数的推到如下:

这里写图片描述

注意:为什么可以不考虑1/||w||?
我目前的理解是:
1. 确定分离超平面是通过法向量w和截距b来确定的,||w||的大小对w的方向没有任何影响,所以可以固定||w||为1或不考虑||w||。
2. 感知机是误分类驱动的,而判断样本点是否为误分类只需要判断-y(wx+b)的正负即可,而1/||w||不影响正负的判断,即它不影响算法学习的中间过程。
3.这样做反而还有好处,可以简化运算(分母为w求导会比较麻烦)。

感知机学习算法:

感知机学习问题转化为求解上述损失函数的最优化问题,这里可以通过随机梯度下降法来求解。下面详细解释其原始形式和对偶形式。

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面,然后用梯度下降法不断地极小化目标函数(损失函数)。极小化过程中一次随机选取一个误分类点使其梯度下降。

这里写图片描述

通过迭代期望损失函数L(w,b)不断减小,直到为0。这种学习算法直观解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类。

感知机学习算法的对偶形式:

这里写图片描述

对偶中的训练实例仅以内积形式出现。为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵。

关于如何理解感知机的对偶形式这里有一个回答感觉不错(https://www.zhihu.com/question/26526858)。

感知机的一些缺点:

感知机是线性的模型,其不能表达复杂的函数,不能出来线性不可分的问题,其连异或问题(XOR)都无法解决,因为异或问题是线性不可分的,怎样解决这个问题呢,通常可以:
1.用更多的感知机去进行学习,这也就是人工神经网络的由来。
2.用非线性模型,核技巧,如SVM进行处理。

以上,本人机器学习小学生一枚,不知道理解上有没有问题,欢迎大家交流指正。

参考:
1.<<统计学习方法>> 李航
2.机器学习基石 林轩田 (https://www.bilibili.com/video/av12463015/?p=6)

猜你喜欢

转载自blog.csdn.net/m0_37306360/article/details/79885858