感知机算法原理及推导

感知机(Perceptron)是二分类问题的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。

感知机于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机于1957年由Rosenblatt提出,是神经网络和支持向量机的基础。

在这里,不用《统计学习方法》书中的变量表示方式,我们用技术分享表示数据集,一共技术分享个样本,技术分享个维度,用技术分享表示数据集中的第技术分享个样本,用技术分享表示标记(类别)向量,技术分享代表第技术分享个样本技术分享的标记。

我们将要学习的目标函数是:

技术分享

称为感知机。其中,技术分享技术分享为感知机模型参数,技术分享为权值向量,技术分享叫作偏置(bias),技术分享表示技术分享技术分享的内积。技术分享是符号函数,即:

技术分享

所以,在这里技术分享,根据上式可知技术分享时为分类的边界(超平面)。

对于数据集技术分享,如果能够将数据集的正负样例完全正确地划分到超平面的两侧,即对于所有技术分享的实例技术分享技术分享,对于所有技术分享的实例技术分享技术分享,则称这个数据集为线性可分的数据集,否则数据集线性不可分。

假设数据集是线性可分的,感知机的学习目标是求得一个能够将训练集正负样例能够完全分开的超平面。找出这样的超平面,其实就是要确定感知机的模型参数技术分享技术分享。所以我们首先要定义损失函数,再将其最小化。

感知机的损失函数是针对误分类的点,最小化误分类的点到超平面的距离,不断进行调整。

对于输入空间的任一一个样例技术分享,所要计算的距离就是这个点到技术分享的距离。

根据点到直线的距离公式:

技术分享

代入其中,可以得到:

技术分享

进一步,进行简化约等,可以得到如下式子:

技术分享

其中,技术分享技术分享技术分享范数。

对于误分类的样例技术分享来说,技术分享成立。所以误分类的点到超平面的距离为:

技术分享

假如对于所有的误分类点集合为技术分享,那么所有的误分类点到超平面的总距离为:

技术分享

不考虑技术分享,就得到了感知机的损失函数:

技术分享

显然,损失函数技术分享是非负的,如果没有误分类的点,损失函数的值为0。并且,误分类点越少,误分类点离超平面越近,损失函数越小。所以对于完全线性可分的数据集,当损失函数技术分享为0时,即达到了完全正确分类。

这个损失函数可以用梯度下降法来解,对于技术分享技术分享的梯度用偏导可以直接求出来,具体过程不再赘述。

感知机学习策略

给定一个线性可分的数据集

T={(x1,y1),(x2,y2),...(xN,yN)}
其中 xiX=Rn yiY={+1,1} i=1,2,3,...N
为了确定感知机模型的参数 w b,需要确定一个学习策略,即定义一个损失函数并将损失函数极小化。感知机采用的损失函数为误分类点到超平面的总距离。首先写出输入空间 Rn中任一点 x0到分离超平面的距离
1w|wx0+b|
这里 w w L2范数。
其次对于误分类的数据 (xi,yi)来说,
yi(wxi+b)>0
因为当 wxi+b>0 yi=1,而当 wxi+b<0 yi=+1。因此误分类点 xi到超平面的距离是
1wyi(wxi+b)
这样假设误分类点的集合为M,那么所有误分类点到超平面的总距离为
1wxiMyi(wxi+b)
不考虑 1w,就得到感知机学习的损失函数
L(w,b)=xiMyi(wxi+b)
显然,损失函数 L(w,b)是非负的。如果没有误分类点,损失函数值为0,而且,误分类点越少,误分类点离超平面越近,损失函数的值越小。
感知机学习的策略是在假设空间中选取使损失函数最小的模型参数 w,b

感知机学习算法

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面w0,b0,然后用梯度下降法不断地极小化损失函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。损失函数L(w,b)的梯度为

wL(w,b)=xiMyixi
bL(w,b)=xiMyi
随机选取一个误分类点 (xi,yi),对 w,b进行更新:
ww+ηyixi
bb+ηyi
式中 η(0<η1)是步长,在统计学习中又称为学习率。

综上所述,得到如下算法(感知机学习算法的原始形式)
输入:训练集T={(x1,y1),(x2,y2),...(xN,yN)},其中xiX=RnyiY={+1,1}i=1,2,3,...N ;学习率η(0<η1)
输出:wb;感知机模型f(x)=sign(wx+b)
(1)选取初值w0b0
(2)在训练集中选取数据(xi,yi)
(3)如果yi(wxi+b)0

ww+ηyixi
bb+ηyi
(4)转至(2),直至训练集中没有误分类点。

例子:如图所示,正实例点是x1=(3,3)T,x2=(4,3)T,负实例点是x3=(1,1)T,使用感知机算法求解感知机模型f(x)=sign(wx+b)

感知机示例


你可能感兴趣的:(python,算法)