感知机(perceptron)是一个二类分类的线性分类模型。输入某个对象的特征向量,判断该对象是属于A类还是属于B类。
感知机是1957年由Rosenblatt提出,是神经网络与支持向量机的基础。
一、感知机模型
假设特征向量(输入空间)为X⊆Rn,类别(输出空间)为Y={-1, +1}。输入x∈X表示对象的特征向量,对应于输入空间的点;输出y∈Y表示示例的类别。由输入空间到输出空间的函数为
称为感知机。其中,参数w为权值向量,b称为偏置 。w⋅x表示w和x的点积;w⋅x+b>0, f(x)=1;w⋅x+b<0 f(x)=-1.
线性方程w⋅x+b=0对应特征向量空间的超平面S(w为超平面的法向量,b是超平面的截距)。它将平面分为两部分,即正类(+1)和负类(-1)(如下图)
感知机学习的目标就是通过训练数据集获得一个能够将其正负类完全分开的分离超平面S,也就是确定权重参数w和偏置b
二、策略
核心:极小化损失函数。
损失函数的选择:错误分类点的总数最小。但是这样的损失函数不可导,我们发现
对于误分类点:
误分类点到超平面的距离:
所有误分类点到超平面的距离之和:
M为误分类点的几何。如果不考虑法向量的长度,那么就得到感知机的经验风险函数:
显然L(w,b)是非负的,且如果没有误分类点,则损失函数的值为0,而且误分类点越少,误分类点距离超平面就越近,损失函数值就越小。同时,损失函数L(w,b)是连续可导函数。
感知机学习转变成求解损失函数L(w,b)的最优化问题
三、算法
随机梯度下降法
(1)任选一个超平面,然后使用梯度下降法不断地极小化目标函数
(2)计算梯度:
随机选取一个误分类点,根据上面的规则,计算新的w,b,
其中η是步长,大于0小于1,在统计学习中称之为学习率(learning rate)。这样,通过迭代可以期待损失函数L(w,b)不断减小,直至为0.
小结:当一个实例点被误分类时,调整w,b,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超越该点被正确分类。
算法描述(原始形式):
输入:T={(x1,y1),(x2,y2)...(xN,yN)}(其中xi∈X=Rn,yi∈Y={-1, +1},i=1,2...N,学习速率为η)
输出:w, b;感知机模型f(x)=sign(w·x+b)
(1) 初始化w0,b0,权值可以初始化为0或一个很小的随机数
(2) 在训练数据集中选取(x_i, y_i)
(3) 如果yi(w xi+b)≤0
w = w + ηy_ix_i
b = b + ηy_i
(4) 转至(2),直至训练集中没有误分类点
例1
对于训练数据集,其中正例点是x1=(3,3)T,x2=(4,3)T,负例点为x3=(1,1)T,用感知机学习算法的原始形式求感知机模型f(x)=w·x+b。这里w=(w(1),w(2))T,x=(x(1),x(2))T
解:构建最优化问题:
按照算法求解w, b。η=1
(1)取初值w0=0, b0=0
(2)对于(3,3):-(0+0)+0=0未被正确分类。更新w,b
w1=w0+1*y1·x1 = (0,0)T+1(3,3)T=(3,3)T
b1=b0+y1=1
得到线性模型w1x+b1 = 3x(1)+3x(2)+1
(3)返回(2)继续寻找yi(w·xi+b)≤0的点,更新w,b。直到对于所有的点yi(w·xi+b)>0,没有误分类点,损失函数达到最小。
分离超平面为x(1)+x(2)-3=0
感知机模型为 f(x)=sign(x(1)+x(2)-3)
在迭代过程中,出现w·xi+b=-2,此时,取任意一个点,都会是其小于0,不同的取值顺序会导致最终的结果不同,因此解并不是唯一的。为了得到唯一的超平面,需要对分离超平面增加约束条件,这就是支持向量机的想法。
算法描述(对偶形式):
对偶形式的基本想法是,将w,b表示成为实例xi和标记yi的线性组合的形式,通过求解其系数而得到w和b。
不失一般性,将初始值w0,b0设为0.对误分类点(xi,yi)通过
w = w + ηyixi b = b + ηyi
的转换逐步修该w,b,设修改了n次,则w,b关于(xi,yi)的增量分别为aiyixi和aiyi,这里ai=niη最终学习到的w,b可以表示为
实例点更新次数越多,意味着它距离分离超平面越近,也就越难正确分类。换句话说,这样的实例对学习结果影响很大。
算法描述(感知机学习算法的对偶形式)
输入:T={(x1,y1),(x2,y2)...(xN,yN)}(其中xi∈X=Rn,yi∈Y={-1, +1},i=1,2...N,学习速率为η) 输出:a,b;感知机模型f(x)=sign(w·x+b) (1) 初始化w0,b0 (2) 在训练数据集中选取(xi, yi) (3) 如果
![](http://images0.cnblogs.com/blog/408927/201402/230936182654105.png)
ai = ai + η
b = b + ηyi (4) 转至(2)