您的位置:首页 > 其它

感知机

2016-03-12 12:03 225 查看
概论:

感知机(perceptron)是二分类的线性分类模型 ——1957年Rosenlatt提出,神经网络与支持向量机的基础

感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,

导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化

算法分为原始形式和对偶形式

感知机预测是用学习得到的感知机模型对新的输入实例进行分类

感知机模型

f(x)=sign(w*x+b) ——w:权值、权值向量;b:偏置

sign(x)={+1,x>=0;

-1, x< 0;}



感知机的学习策略:

数据集的线性可分性:

对所有yi=+1的实例i,有w*xi+b>0;

对所有yi= -1的实例,有w*xi+b<0;

那么数据集T为线性可分数据集,否则线性不可分

感知机学习策略:

损失函数

i)损失函数的一个自然选择是误分类点的总数—但参数不是w,b的连续可导函数,不易优化

ii)误分类点到超平面S的总距离(被采用)

任一点到S的距离:

(l w*x0+b l) / ll w ll

ll w ll是w的L2范数.

其次:

对于误分类的数据(xi,yi)

-yi(w*xi+b)>0成立

所有误分类点总损失距离:

- ∑ yi(w*x1+b) / ll w ll

损失函数定义:

L(w,b)= [b]- ∑ yi(w*x1+b) ——经验风险函数[/b]

感知机学习算法:

min L(w,b)= - ∑ yi(w*x1+b)






<strong>输入训练集T
定义学习率n(0<n<=1)
选取初值w0,b0
在训练集中选取数据(xi,yi)
如果yi(w*xi+b)<=0
</strong><span style="font-size:14px;">w+n*yi*xi→w
b+n*yi→b</span><strong>
迭代,直至没有误分类点
</strong>


算法的收敛性

novikoff定理

令S是一个非平凡的训练集,并且令:

R=max1≤i≤l||xi||

假定存在向量wopt,满足||xi||=1
并且有:

yi(wopt
*xi)=yi(wopt
*xi + b
opt)>=γ

[b]w
optγwopt[/b]

wopt

则S上在线性感知机算法的误分次数最大为:

(.Rγ)2

感知机学习算法有无穷多个解,其解由于不同的初值或不同的迭代顺序而可能有所不同

wopt

感知机对偶形式:

以下引自:wwopt
http://www.crocro.cn/post/268.html
wopthttp://www.crocro.cn/post/268.html

前面已经解释了感知机学习的原始形式,但是由于其在多维空间中运算量较大,因此退出了对偶形式,通过提前计算Gram矩阵,因此我们先解释如何推导出感知机的对偶形式推导。

在原始形式,对于误分类点

,感知机的更新形式是





我们通过逐步迭代,修改w,b,修改n次后,关于

的迭代增量为

,其中

,其中最终模式识别的w,b参数如下所示





因此在α表示误分次数,随着更新次数更多,以为它距离分离超平面越近,意味着越难正确分类。

下面总结一下感知机算法的对偶形式

输入:线性可分的数据集

,学习率



输出:a,b;感知机模型


算法:

(1)


(2)在训练集中选取数据


(3)如果







(4) 转至(2),知道所有样本都没有误分类

下面用个实际的例子来解释一下如何进行感知机对偶形式,正样本依然是

, 负样本点是


(1)按照上面的说法,我们取

,i=1,2,3,b=0,


(2)为了简化计算,我们先求取gram矩阵,就是先计算出各个样本的点积,然后列到矩阵内,就可以减少重复计算了。



(3) 计算误分点并且进行更新,误分条件为


对于x1,

,它为误分类,我们对其进行更新可得


然后对于x2,没有误分类,然后对于x3,

然后可以更新得

下面我们列出迭代过程如下
迭代01234567
误分x1x3x3x3x1x3x3
a101111222
a200000000
a300123345
b010-1-2-1-2-3
感知机模型为所以




wopt
wopt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: