暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

详解感知器模型

Python爬虫和数据挖掘 2021-07-08
1323

文章目录


  • 文章目录

    • 1. 感知机模型

    • 2. 感知机学习策略

    • 3. 感知机学习算法

    • 4. 算法收敛性

    • 5. 感知机学习算法的对偶形式



感知机(Perceptron)于1957年由Rosenblatt提出,是神经网络与支持向量机算法的基础,事实上,感知机可以看做是单层神经网络,也是支持向量机的基础。感知机是二类分类的线性分类模型,属于监督学习 ,输入为特征向量,输出为实例类别,通常取二值。感知机通过学习获得一个分离超平面,用以划分训练数据。

1. 感知机模型


  • 定义

    假设输入空间(特征空间)是,输出空间是.输入表示实例的特征向量,对应于输入空间的点;输出 表示实例的类别,由输入空间到输出空间的如下函数

    称为「感知机」。其中为感知机模型参数,叫做权值或权值向量,叫做偏置 是符号函数


  • 几何意义

    感知机学习,通过训练数据集

    其中,得到感知机模型,即求得模型参数,从而实现对新输入实例的类型输出


    • 感知机是一种线性分类模型,属于判别模型,感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合

    • 线性方程

      对应于特征空间中的一个超平面,其中是超平面的法向量,是超平面的截距,这个超平面将特征空间划分为两个部分,位于两部分的点(特征向量)分别被分为正负两类。因此超平称为「分离超平面」,如下图所示


2. 感知机学习策略


  • 数据集的线性可分性

    给定一个数据集

    其中, 如果存在某个超平面


    能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有的实例,有,对所有的实例,有,则称数据集为线性可分数据集,否则数据集线性不可分。很显然「感知器只能处理数据集线性可分的情况」

  • 感知机损失函数

    假设数据集是线性可分的,感知机学习的目的是将数据集的正负实例完全正确的划分开来,因此其损失函数很容易想到使用误分类点的总数,但是这样的损失函数不是的连续可导函数,不方便优化,因此我们选择误分类点到超平面的总距离,作为损失函数,为此,首先写出输入空间中任一点到超平面的距离

    其次,对于误分类的数据来说,有

    成立,因为当时,对于误分类点有,而当时,,因此误分类点到超平面的距离是
     这一步成功将距离中的绝对值去掉,方便后续求导计算。这样,假设超平面的误分类点集合为,那么所有误分类点到超平面的总距离为
    不考虑 ,就得到了感知机学习的损失函数:


    给定一个数据集

    其中, ,感知机学习的损失函数定义为
    其中是误分类点的集合,这个损失函数就是感知机学习的经验风险函数。


    显然,损失函数是非负的,如果没有误分类点,损失函数值是0,而且误分类点越少,误分类点离超平面越近,损失函数值就越小。一个特定的样本点的损失函数:在误分类时是参数的线性函数,在正确分类时是0,因此给定训练数据集,损失函数的连续可导函数

  • 在确定损失函数时,为什么可以不考虑 ,目前我的解释如下:

    • 解释1,感知机要求数据要线性可分,且损失函数是误分类点驱动的,即只有有误分类点的情况下,损失函数才不为零,因此,我们只需要知道有没有误分类点即是否大于零即可,因此损失函数可以直接简化成

    • 解释2,我们虽然用点到平面的距离来引出损失函数,但是对于感知机来说,我们真正关心的是误分类点,我们并不关心这个距离的大小是多少,因此可以不考虑

    • 解释3,我们知道,平面和平面表示同一个平面,即平面和平面 表示同一平面,因此我们总是可以对平面参数进行缩放,使得 ,也能很直接的得到

3. 感知机学习算法


  • 感知机学习算法是对以下最优化问题的解法

    给定一个数据集

    其中, ,求参数,使其为以下损失函数极小化问题的解  
    ,其中是误分类点的集合。


  • 梯度下降法求解

    损失函数的梯度为

    随机选取一个误分类点,对进行更新:

    式中是步长,在统计学习中又称为「学习率」,这样通过迭代可以期待损失函数不断减小,直到为0,综上所述,得到以下算法:

  • 感知机学习算法的原始形式

    输入:训练数据集

    其中, ,学习率


    输出:;感知机模型

    选取初始值

    在训练集中选取数据

    如果

    转至,直至训练集中没有误分类点

  • 算法几何解释

    当一个实例点被误分类时,即位于分离超平面的错误一侧是,则调整的值,使得超平面往误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。

    为了方便理解,我们将模型方程中的也写进权值向量中,即 ,此时 模型函数可表示为

    对于误分类点,需要调整参数,使得超平面往误分类点方向移动,直至超平面越过该误分类点使其被正确分类

如上图所示,

  • 对于正实例被误分类的点,此时,但,此时我们可以通过的方式更新 ,通过这样的更新,超平面由变化至 ,很明显, 距离点 更近了,经过多次更新,即可使超平面越过点,使其被正确分类
  • 对于负实例被误分类点,即此时,但,此时我们可以通过的方式更新 ,通过这样的更新,超平面由变化至 ,很明显, 距离点 更近了,经过多次更新,即可使超平面越过点,使其被正确分类

结合图形分析,我们发现,在误分类点对 进行更新时,有

我们可以把上式合并,得到

 即
从这里也能看出来

4. 算法收敛性


  • 线性可分数据集感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面以及感知机模型,为了便于叙述和推导,将偏置并入权重向量 ,记做,同样也将输入向量加以扩充,加进常数,记做,这样,,显然,

  • 定理

    设训练数据集

    是线性可分的, 其中, ,则


    (1) 存在满足条件的超平面将训练数据集完全正确分开;且存在 对所有

    (2) 令 ,则感知机算法在训练数据集上的误分类次数满足不等式


    证明

    (1) 由于训练数据集是线性可分的,因此,存在超平面可以将训练数据集完全正确分开,取此超平面为, 使. 由于对于有限的,均有

    所以存在

    使得


    成立 (2) 感知机算法从开始,如果实例被误分类,则更新权重,令是第个误分类实例之前的扩充权值向量,即
    ,则第个误分类实例的条件是

    是被 误分类的数据,则更新

    式子可知

    由此递推可知

    式子可知

    式子可知

    因此

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


我们在进行算法学习是,设定 ,对于误分类点,通过

逐步调整的值,假设样本点在整个更新过程中被错误分类次,则关于的增量分别为 ,则最后学习到的分别为

越大,表明数该数据点距离分离超平面越近,也就越难分类,超平面只要稍微变动一下,该点就从正样本变成了负样本或者相反,这样的点往往对最终的超平面影响越大

将式带入感知器模型 中,得到:

此时模型中的参数由 变成了

  • 对偶问题描述

    输入:线性可分数据集


    学习率

    输出:;感知机模型

    1. 初始化

    2. 在训练数据集中,选取数据

    3. 如果

    4. 转至2直到没有误分类数据

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

文章参考李航老师的《统计学习方法》

文章转载自Python爬虫和数据挖掘,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论