今天想写一下感知机算法的详解。感知机算法由Rosenblatt在1957年提出,是一类简单的线性判别算法,通过扩展又可以与许多其他算法密切相关。如逻辑回归模型、支持向量机、前馈神经网络(多层感知机)、线性判别分析等。因此感知机算法尽管很少单独使用,但它对于理解其他模型和算法非常有用,很适合作为开始机器学习的一个切入点,同时也是建立知识体系的一个枢纽。
本文首先简要介绍感知机,然后讲解感知机的模型、策略、算法,最后分析感知机算法与各个算法之间的联系并做出总结。
感知机能做什么
感知机是一种二分类模型,其输入为样本的特征向量,输出为样本的类别,取+1和-1二值。要得到正确的模型,感知机要求数据集本身线性可分:
在二维平面上,线性可分意味着能用一条直线将正、负样本分开;
在三维空间中,线性可分意味着能用一个平面将正、负样本分开;
在n维空间中,线性可分意味着能用n-1维超平面将正、负样本分开。
为了便于应用感知机算法,我们有时会使用一些技巧,使得线性不可分的样本在某些变换下成为线性可分。这些技巧包括将样本分离到更高维空间(图2)或投影到特定的方向(图3)等,这是另一大类方法,本文主要讲解一般的感知机,此处不详细展开讨论。
![]() |
![]() |
感知机模型
- 定义
设输入空间(特征空间)为 X⊆RnX\subseteq\R^nX⊆Rn,输出空间为Y={ −1,+1}Y=\{-1,+1\}Y={ −1,+1}
输入 x∈Xx\in Xx∈X 为实例的特征向量 输出 y∈Yy\in Yy∈Y 为实例的类别
由输入空间到输出空间的如下函数称为感知机
f(x)=sign(wx+b)f(x) = sign(wx+b)f(x)=sign(wx+b)其中www和bbb为模型参数,w∈Rnw\in\R^nw∈Rn称为权值,b∈Rb\in\Rb∈R称为偏置。signsignsign是符号函数。
感知机模型有直观的几何解释:线性方程 wx+b=0wx+b=0wx+b=0 对应于分离超平面SSS,其中www为SSS的法向量,bbb为SSS的截距。求解感知机,就是要解出www和bbb,得到能正确分离所有正负样本的超平面SSS(见图1).
感知机策略
为找出正确的分离超平面、确定感知机模型参数,需要确定一个学习策略。在监督学习中,使用某种策略即是选用相应的损失函数。
考虑以在S划分下误分类点的总数作为损失函数,该函数可以自然地监督感知机的分类性能,但它不是参数www和bbb的连续可导函数,不易优化。如图4,当超平面在空间中由S1S1S1连续变化至S3S3S3时,相应的法向量www也连续变化,而误分类点数量则是不连续的。
为此感知机采用的损失函数为:误分类点到超平面 SSS的总距离,该函数对 www和 bbb连续可导。
单个点 xix_ixi到超平面 SSS的距离为 −1∥w∥∣wxi+b∣-\frac{1}{\Vert w \Vert}\vert wx_i+b \vert−∥w∥1∣wxi+b∣,
对于误分类点数据(xi,yi)(x_i,y_i)(xi,yi),有−yi(wxi+b)>0-y_i(wx_i+b)>0−yi(wxi+b)>0,因为 yiy_iyi 与 wxi+bwx_i+bwxi+b 异号
设超平面SSS的误分类集合为MMM,则所有误分类点到超平面SSS的总距离为 −1∥w∥∑xi∈Myi(wxi+b)-\frac{1}{\Vert w \Vert}\sum_{x_i\in M}y_i(wx_i+b)−∥w∥1xi∈M∑yi(wxi+b) 不考虑式中的−1∥w∥-\frac{1}{\Vert w \Vert}−∥w∥1,即得到感知机学习的损失函数。
- 损失函数
给定训练集T={ (x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={ (x1,y1),(x2,y2),...,(xN,yN)},其中xi∈X=Rnx_i\in X=\R^n