1.1.14. Perceptron
一、简介
感知机是一个十分经典的二分类线性模型(虽然它可以推广到多分类、非线性),它是神经网络和支持向量机的基础。
二、核心
《统计学习方法》中是这么说的:
感知机学习,旨在求出将训练数据进行线性划分的分类超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行最小化,求得感知机模型。
这里做进一步的解释:
- 处理二分类问题,我们的目标是找到线性划分的超平面 S S S
- 损失函数基于误分类,具体为误分类点到超平面 S S S的总距离
- 这里选择的梯度下降法为SGD随机梯度下降法
三、解读:
- 选择误分类点到超平面 S S S的总距离作为损失函数,而不是简单的用误分类点点数量是因为,我们希望损失函数是关于参数 ( ω , b ) (\omega,b) (ω,b)的连续可导函数。
- 如果数据集是线性可分的,那么损失函数最后一定可以优化为0(因为线性可分的数据集是存在完美划分数据集的线性超平面的);如果数据集线性不可分,那么感知机会选择到误分类点总距离最小的超平面 S S S
- 随机梯度下降可以大大减少计算量,尤其是当感知机模型的训练仅依赖于误分类点的情况
四、为什么称之为基础
- 作为三大线性模型最优准则来说,基于误分类点的感知机准则是很多主动学习、在线学习模型的基础
- 对于同一个数据集,我们可以视每个样本到多个不同超平面的距离为多个不同的新的特征。同时,对这些特征进行非线性到处理(比如用sigmoid函数压缩到0~1之间),然后作为新的特征输入下一个感知机,这就是神经网络的基础
- 因为选择随机梯度下降作为算法,会造成训练感知机模型的过程中,每次选择的样本点和选择的顺序不固定,从而造成最后会存在多解(感知机只负责求损失函数的极值,却没有限定必须达到损失函数的最小值)。支持向量机的最大间隔思想就是对这个问题的优化。
五、总结
skearn里是这么描述感知机的:
- 不需要学习率
- 不需要正则项
- 只根据误分类点更新模型
而且,感知机模型,在训练上,比带hinge(折页)损失函数的SGD模型更快,同时也更稀疏。