感知机模型是一个非常基础的模型,是神经网络的根基。
感知机模型
感知机模型是一个二分类的线性分类模型,输入是样本的特征向量,输出是样本的类别,取值+1和-1。
模型定义
假设输入空间(特征空间)是⊆Rn,输出空间是={+1,−1}。输入x∈表示样本的特征向量,对应于输入空间(特征空间)的点,输出y∈对应样本的类别。有输入空间到输出空间的映射函数如下:
f(x)=sign(w⋅x+b)
就是感知机的形式。其中w和 b是感知机的模型参数,w∈Rn是系数或叫权重、权值,b∈R叫偏置, w⋅x表示w 和 x的内积。sign是符号函数:
sign(x)={+1, x≥0−1, x<0
感知机是一种线性分类模型,感知机模型的假设空间是定义在特征空间中所有的线性分类模型或线性分类器。函数的集合{f∣f(x)=w⋅x+b}。
感知机的几何解释
线性方程:w⋅x+b=0对应特征空间Rn的一个超平面S,其中w是超平面的法向量,b 是超平面的截距。这个超平面把特征空间划分成两个部分,位于两个部分的点(特征向量)被划分为正、负两类。超平面S被称作分离超平面。

如上图所示,假设在二维特征空间,w⋅x+b=0表示分离超平面,∘ 表示正类取值+1,即w⋅xi+b>0。× 表示负类取值-1,即w⋅xi+b<0。
总结一句话:感知机需要找到一个能够将训练数据集的正样本和负样本完全正确分开的分离超平面。
学习策略
感知机学习的前提是数据集线性可分,也就是说存在一个分离超平面S能够正确将正类和负类划分到超平面的两侧,即对所有的yi=+1的样本,有w⋅xi+b>0;对所有yi=−1的样本,有w⋅xi+b<0。说明数据集线性可分。
感知机想要找到这个分离超平面,就需要确定模型的参数 w和b,需要制定一个学习的策略,即定义损失函数并最小化损失函数。
由于直接定义样本分类错误的个数,这个函数不是连续可导函数不易于优化求最优值。另一个想法是计算分类错误点到分离超平面的距离和,这就是感知机所采用的损失函数。
一个点到超平面的距离公式:1||w|||w∗x+b|,||w||是w的L2范数。
其中
-
L0范数,指的是向量中非零元素的个数。向量{1,0,-3,0,1,2}的L0范数为4。
-
L1范数,指的是向量中元素绝对值之和。向量{1,0,-3,0,1,2}的L1范数为|1|+|0|+|−3|+|0|+|1|+|2|=7。
-
L2范数,指的是向量中元素平方和的正平方根。向量{1,0,-3,0,1,2}的L1范数为12+02+(−3)2+02+12+22‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√=15‾‾‾√。
其中对误分类点(xi,yi)来说 −yi(w⋅xi+b)>0成立。因为如果 yi=−1,那么w⋅xi+b>0,如果yi=+1,那么w⋅xi+b<0,所以分类错误的点到分离超平面的距离 −1||w||yi(w⋅xi+b)。
假设误分类点的集合为M,所有误分类的点到分离超平面距离的和为−1||w||∑xi∈Myi(w⋅xi+b),对于一个固定的w来说,1||w||是常数值可以不考虑。
所以感知机的损失函数,对于给定的数据集
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中xi∈=Rn, yi∈={−1,+1}, i=1,2,3,⋯,N。感知机的损失函数定义为:
L(w,b)=−∑xi∈Myi(w⋅xi+b)
其中M是误分类点的集合,这是感知机的经验风险函数。
算法
确定了感知机的损失函数,之后就要最小化损失函数,即:
minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b)
最优化的求解使用随机梯度下降法。先随机选一个初始参数w0,b0,确定一个分离超平面,然后使用随机梯度下降法,从误分类的集合点中随机选一个点优化损失函数。
损失函数L(w,b)的梯度:
∇wL(w,b)=−∑xi∈Myixi
∇bL(w,b)=−∑xi∈Myi
随机选一个误分类的点对w和b更新:
w←w+ηyixi
b←b+ηyi
公式中的η表示步长,又称作学习率,表示在梯度方向一次前进多少。在不断优化的过程中L(w,b)不断减少,一直到0。
总结
训练数据集 T=(x1,y1),(x2,y2),⋯,(xN,yN),其中xi∈=Rn, yi∈={+1,−1}, i=1,2,⋯,N;学习率 η(0≤η≤1);
感知机的模型:f(x)=sign(w⋅x+b)
随机选一个值w0,b0,然后在训练数据集中选出 yi(w⋅xi+b)≤0的点,用(xi,yi)更新w和b:
w←w+ηyixi
b←b+ηyi
然后再用新的w和b在训练数据集中选出 yi(w⋅xi+b)≤0的点,直到找不到这样的点。
直观的理解:当选择的分离超平面存在错误的时候,使用错误的点调整分离超平面,使错误变正确。不断调整分离超平面,直至所有的点都正确。