感知机(perceptron)

                                   感知机(perceptron)

   学习到这里渐渐要与深度学习接轨了,有点激动。传统分类战斗机SVM以及当下流行CNN、RNN、BP神经网络、LSTM的基础与感知机有关系,从感知机开始就有不同了,虽然多了很多其他的感念,但是形式上都有感知机这一简单分类器的影子。

   感知机是二分类的线性模型,输入为样本特征向量,输出为样本的类别(假设类别标签为-1和+1,负样本和正样本)。感知机模型则是输入样本特征空间中划分样本为正样本和负样本的超平面,属于判别模型。感知机的学习旨在学习一个超平面将正样本与负样本区分开来。学习策略为建立基于误分类的损失函数,学习算法采用随机梯度下降法学习最优参数,从而求得超平面。

一、感知机模型

   假设X是训练样本特征向量的集合,Y是样本对应标签的集合, 

      

   其中,,特征向量有k维;

       

   其中,,总共有2类,-1负样本,+1正样本。则训练本集为

       

    感知机模型为

        

其中w和b是感知机模型参数,具体为w是模型权值,b是感知机模型偏置。sign是符号函数

        

   从模型函数形式上看,感知机模型是一个线性模型,判别模型。模型空间是基于输入样本特征空间维度的所有线性分类函数的集合。感知机模型的几何意义比较简单,令

                   

   可以知道感知机模型在几何上是一个与特征空间维数一致的超平面,在二维中则是直线,三维则是平面…

二、感知机学习策略

   通过上面的分析,感知机模型学习过程其实是求得一个分类的超平面,使得正负样本严格的位于超平面两侧,这个目标建立在训练样本严格线性可分的基础上。要求超平面就是要求模型的权值w和偏置b,这个时候需要确定一个可微的损失函数,即确定学习策略。求得使得损失函数极小的w和b。定义误分类点到感知机超平面的距离作为损失函数,对于任意一个样本特征点x到超平面S的距离定义如下

               

显然该函数可微,是权值向量w的2范数。误分类样本会满足如下条件

              

则误分类的样本到超平面距离定义如下

             

设误分类点的集合为M,则所有误分类点到超平面S的距离总和为    

     
            

不考虑前面常数项,感知机损失函数定义为

             

易知,感知机模型的损失函数非负且可微。如果没有误分类点则损失函数为0,感知机模型学习就是要求得使得损失函数极小(0)的w和b。

三、算法

   既然感知机模型求解w和b使得损失函数极小化,那么问题就变成了求解使得损失函数极小化的目标优化问题了。优化算法采用的是经典的随机梯度下降法,这个并不陌生,随机梯度下降几乎贯穿整个深度学习领域。感知机麻雀虽小,五脏俱全。

   再来看看这个损失函数

          

   采用随机梯度下降法更新权值与偏置(即求损失函数关于权值与偏置的偏导数(梯度),并用偏导更新参数),损失函数偏导

   
           

           

   感知机采用随机梯度下降法更新参数的方式和一般我们所理解的随机批梯度下降法有所不同,另外感知机中只有误分类样本参与随机梯度下降,并且采用的是单个误分类样本进行计算。所谓随机就是随机选取一个误分类样本,计算梯度权值和偏置的梯度,然后采用梯度更新参数w和b。

   对于随及选取的误分类样本,更新权值w和b

            

             

   其中是学习率,在严格线性可分的训练样本集中不断采用此计算则可使得损失函数不断减小直至收敛(损失函数为0)。

算法流程简述如下

 1)选取模型权值和偏置的初始值

2)在训练样本中随机选取单个样本,如果

              

       则更新参数

             

3)重复2)直至没有误分类样本存在,迭代终止条件应该是用模型循环计算所有训练样本预测值,直至所有样本均正确预测。

   思考:这样貌似不能保证所有样本都参与模型的计算,可不可以以epoch的方式进行,在一个迭代前计算所有样本预测值,将所有预测错误的样本进行迭代计算,在计算过程中做循环终止条件判断,如此不断遍历样本计算,可以不? 求指正。

四、Python实现demo

       就以《统计学习方法》中的例子编写python程序。

 

 

你可能感兴趣的:(机器学习)