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