zoukankan      html  css  js  c++  java
  • 感知机模型

    感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机旨在求出将训练数据进行线性划分的分离超平面。为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

    感知机模型

    定义1(感知机) 假设输入空间(特征空间)是,输出空间是。输入表示实例的特征向量,对应于输入空间(特征空间)的点,输出表示实例的类别。由输入空间到输出空间的如下函数

    称为感知机。其中,为感知机模型参数,叫做权值(weight)权值向量(weight vector)叫做偏置(bisa)1

    1此处的就是模型后面要学习的参数,一旦确定了,感知机模型也就学习完成了。

    表示的内积。是符号函数,即

    感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有 线性分类器模型(linear classification model)线性分类器(linear classifier),即函数集合2

    2因为是线性分类器,所以都是一次幂的,高次幂的情况不考虑。

    感知机有如下几何解释:线性方程

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

    感知机模型

    感知机学习策略

    数据集的线性可分

    定义(数据集的线性可分性)给定一个数据集

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

    能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有的实例,有,对所有的实例,有,则称数据集线性可分数据集(linearly separable data set),否则,称数据集线性不可分。

    感知机学习策略

    感知机的学习的目标是找到一个能够将训练正实例点和负实例点完全正确分离的超平面,即确定感知机模型参数,,我们需要确定一个学习策略,也即定义(经验)损失函数并将损失函数极小化。

    感知机所采用的损失函数是误分类点到超平面的总距离3

    3其实,关于损失函数最直接的想法是误分类点的总数,但是这样的损失函数不是参数,的连续可导函数,不易优化。

    。为此,首先写出输入空间中任一点到超平面S的距离:

    这里,范数4

    4范数其实就是欧几里得距离,

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

    成立,因为对误分点来说,是异号。因此,误分类点到超平面的距离是:

    这样假设超平面S的误分类点集合为,那么所有误分类点到超平面的总距离为

    不考虑,就得到感知机学习的损失函数。5

    5其实在这里我不太理解的是,为什么可以不考虑,网上查了一圈,暂时没发现什么合理的解释。先在在这里存疑吧,以后知道原因后再补上。

    给定训练数据集

    其中,。感知机学习的损失函数定义为:

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

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

    感知机学习的策略是在假设空间中选取使损失函数()最小的模型参数,即感知机模型。

    感知机学习算法

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

    感知机学习算法是对以下最优化问题的算法,给定一个训练数据集

    其中,,求参数,使其为以下损失函数极小化问题的解

    其中为误分类点的集合。

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

    假设误分类点集合是固定的,那么损失函数的梯度由

    给出。

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

    式中是步长,在统计学习中又称为学习率(learning rate)。这样,通过迭代可以期待损失函数不断减小,直到为0.

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

    输入:训练数据集,其中;学习率

    输出:;感知机模型

    (1) 选取初值

    (2) 在训练集中选取数据

    (3) 如果,则

    (4) 转至(2),直至训练集中没有误分类点。

    这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误的一侧时,则调整的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类。

    算法的收敛性

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

    定理(Novikoff):设训练数据集是线性可分的,其中,则

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

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

    证明 (1) 由于训练数据集是线性可分的,按照定义,存在超平面可将训练数据集完全分开,取此超平面为,使,由于对有限的,均有6

    6因为前提是能够将数据完全分开,所以永远是同号的。

    所以存在

    使

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

    则第k个误分类实例的条件是

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

    接下来进行两个不等式的推导

    (1)

    由式()及式()得

    由此递推即得不等式()

    (2)

    由式()及式()得

    结合不等式()及不等式()即得

    于是

    定理表明,误分类的次数是有上界的,经过有限次搜索可以找到将训练数据完全正确分开的分离超平面。也就是说,当训练数据集线性可分时,感知机学习算法原始形式迭代是收敛的。感知机学习算法存在许多解,这些解既依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件。当训练集线性不可分时,感知机算法不收敛,迭代结果会发生震荡。

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

    对偶形式的基本思想是,将表示为实例和标记的线性组合的形式,通过求解其系数而求得。不是一般性,在原始算法中,可假设初值均为0.对误分类点通过

    逐步修改,则关于的增量分别是。这里。这样,从学习过程不难看出,最后学习到的可以分别表示为7

    7误分类点经过次修改,最终被正确分类,此时

    8

    8公式()和()中的是训练样本的数量

    这里,当时,表示第个实例点由于误分而进行更新的次数。实例点更新次数越多,意味着它距离超平面越近,也就越难正确分类。

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

    输入:线性可分的数据集,其中学习率

    输出:;感知机模型。其中

    (1)

    (2)在训练集中选取数据

    (3)如果

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

    转载自:http://zhouyichu.com/machine-learning/Statical-Learning-Perceptron.html

  • 相关阅读:
    图片延迟加载
    JS 数组操作
    XML转成dataset
    Android的layout_weight使用方法
    Android五大布局学习笔记【转 有改动】
    JSONP
    Android中dip、dp、sp、pt和px的区别和使用
    捕鱼和分鱼
    Android中可能导致ActivityNotFoundException的一些问题总结
    一张图片引发的思考——Android图片加载
  • 原文地址:https://www.cnblogs.com/chenying99/p/4666132.html
Copyright © 2011-2022 走看看