感知机是二元分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为了基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的输入实例进行分类。
感知机包括感知机模型,感知机的学习策略,特别是损失函数;最后介绍感知机学习算法,包括原始形式和对偶形式,并证明算法的收敛性。
2.1感知机模型
感知机定义:假设输入空间(特征空间)是
X⊆Rn
,输出空间是
y={+1,−1}
。输入
x∈X
表示实例的特征向量,对应于输入空间(特征空间)的点;输出
y∈Y
表示实例的类别。由输入空间到输出空间的如下函数
f(x)=sign(wx+b)
称为感知机。其中,w和b为感知机模型参数,分别为权值和偏置。sign是符号函数,即
感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合
{f|f(x)=wx+b}
。
感知机有如下几何解释:线性方程
wx+b=0
对应于特征空间
Rn
中的一个超平面,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此超平面S称为分离超平面。
2.2感知机学习策略
2.2.1数据集的线性可分性
如果存在某个超平面S能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有yi为1的实例i,有w*xi+b>0,对所有yi=-1的实例i,有w*xi+b<0,则称数据集T为线性可分数据集;否则称数据集T不可分。
2.2.2感知机学习策略
假设数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面、为了找出这样的超平面,即确定感知机模型参数w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。
损失函数的一个自然选择是误分类点的总数,但是这样的损失函数不是参数w,b的连续可导函数,不易优化。因此选取误分类点到超平面S的总距离
−1∥w∥∑xi∈Myi(wxi+b)
。
不考虑
1∥w∥
,就得到感知机学习的损失函数。感知机
sign(wx+b)
学习的损失函数定义为
L(w,b)=−∑xi∈Myi(wxi+b)
。其中M为误分类点的集合。这个损失函数就是感知机学习的经验风险函数。
显然,损失函数L(w,b)是非负的,如果没有误分类点,损失函数值为0。而且。误分类点越少,误分类点越少。误分类点离超平面越近,损失函数值越小。一个特定的样本点的损失函数:在误分类时是参数w,b的线性函数,在正确分类时是0。因此,给定训练数据集T,损失函数L(w,b)是w,b的连续可导函数。
2.3感知机学习算法
2.3.1感知机学习算法的原始形式
求参数w,b,使其为以下损失函数极小化问题的解
minw,bL(w,b)=−∑xi∈Myi(wx1+b)
,M为误分类点的集合。
感知机学习算法是误分类驱动的,具体采用随机梯度下降算法。首先,任意选取一个超平面
w0
,
b0
,然后用梯度下降法不断极小化目标参数。极小化过程中不是一次使得M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度由
∇wL(w,b)=−∑xi∈Myixi
∇bL(w,b)=−∑xi∈Myi
给出。
随机选取一个误分类点
(xi,yi)
,对w,b进行更新:
w←w+ηyixi
b←b+ηyi
式中
η
(小于等于1大于0)是步长,在统计学习中又称为学习率。通过迭代可以期待损失函数
L(w,b)
不断减小,直到为0。综上所述,得到如下算法:
算法2.1(感知机学习算法的原始形式)
输入:训练数据集
T{(x1,y1),(x2,y2),...,(xN,yN)}
;学习率
η(0<η≤1);
输出:w,b;感知机模型
f(x)=sign(wx+b)
(1)选取初值
w0,b0
(2)在训练数据集中选取数据
(xi,yi)
(3)如果
yi(wxi+b)≤0
w←w+ηyixi
b←b+ηyi
(4)转至(2),直至训练集中没有误分类点。
这种学习算法直观上的如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。
2.3.2算法的收敛性
对于线性可分数据集感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。
定理表明,误分类的次数k是有界的,经过有限次搜索可以找到将训练数据完全正确分开的分离超平面。也就是说,当训练数据集线性可分时,感知机学习算法原始形式迭代是收敛的。但是,感知机学习算法存在许多解,这些解依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件。当训练集不可分时,感知机学习算法不收敛,迭代结果会发生震荡。
2.3.3感知机学习算法的对偶形式
对偶形式的基本想法是,将w和b表示为实例xi和标记yi的线性组合的形式,通过求解其系数而求得w和b。不失一般性,假设初始值w0,b0均为0,对误分类点
(xi,yi)
通过
w←w+ηyixi
b←b+ηyi
逐步修改w,b,设修改n次,则w,b关于
(xi,yi)
的增量分别为
αiyixi
和
αiyi
,这里
αi=nηi
。这样,从学习过程不难看出,最后学习到的w,b可以分别表示为
w=∑i=1Nαiyixi
b=∑i=1Nαiyi
实例点更新次数越多,意味着它距离分离超平面越近(负梯度方向),也就越难正确分类。换句话说,这样的实例对学习结果影响最大。
算法2.2(感知机学习算法的对偶形式)
输入:训练数据集
T{(x1,y1),(x2,y2),...,(xN,yN)}
;学习率
η(0<η≤1);
输出:a,b;感知机模型
f(x)=sign(∑j=1Nαjyjxj∗x+b)
,其中
α=(α1,α2,...,αN)T
(1)
α←0,b←0
(2)在训练集中选取数据
(xi,yi)
(3)如果
yi(∑j=1Nαjyjxj∗xi+b)≤0
αi←αi+η
b←b+ηyi
(4)转至(2)直到没有误分类数据。
对偶形式中训练实例仅以內积的形式出现,为了方便,可以预先将训练集中实例间的內积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵。
G=[xi∗xj]N∗N
与原始形式一样,感知机学习算法的对偶形式迭代也是收敛的,存在多个解。
感知机为什么不能表示异或?
XOR的训练集线性不可分,而感知机模型并不能学习线性不可分函数。