感知器算法求判别函数
一、 实验目的
掌握判别函数的概念和性质,并熟悉判别函数的分类方法,通过实验更深入的了解判别函数及感知器算法用于多类的情况,为以后更好的学习模式识别打下基础。
二、 实验内容
学习判别函数及感知器算法原理,在MATLAB平台设计一个基于感知器算法进行训练
得到三类分布于二维空间的线性可分模式的样本判别函数的实验,并画出判决面,分析实验结果并做出总结。
三、 实验原理
3.1 判别函数概念
直接用来对模式进行分类的准则函数。若分属于ω1,ω2的两类模式可用一方程d(X) =0来划分,那么称d(X) 为判别函数,或称判决函数、决策函数。如,一个二维的两类判别问题,模式分布如图示,这些分属于ω1,ω2两类的模式可用一直线方程 d(X)=0来划分。其中
d(X)?w1x1?w2x2?w3?0 (1)
x1,x2 为坐标变量。
将某一未知模式 X 代入(1)中: 若d(X)?0,则X??1类; 若d(X)?0,则X??2类;
若d(X)?0,则X?ω1或X?ω2或拒绝 维数=3时:判别边界为一平面。 维数>3时:判别边界为一超平面[1]。
3.2 感知器算法
1958年,(美)F.Rosenblatt提出,适于简单的模式分类问题。感知器算法是对一种分
类学习机模型的称呼,属于有关机器学习的仿生学领域中的问题,由于无法实现非线性分类而下马。但“赏罚概念( reward-punishment concept)” 得到广泛应用,感知器算法就是一种赏罚过程[2]。
Td(X)?WX其中,W??w,w,?,w,w?T,两类线性可分的模式类 ?1,?2,设12nn?1TX??x1,x2,?,xn,1?应具有性质
??0,若X??1d(X)?WX???0,若X??2T(2)
对样本进行规范化处理,即ω2类样本全部乘以(-1),则有:
(3)
感知器算法通过对已知类别的训练样本集的学习,寻找一个满足上式的权向量。 感知器算法步骤:
(1)选择N个分属于ω1和 ω2类的模式样本构成训练样本集{ X1 ,…, XN }构成增广向量形式,并进行规范化处理。任取权向量初始值W(1),开始迭代。迭代次数k=1。
(2)用全部训练样本进行一轮迭代,计算WT(k)Xi 的值,并修正权向量。
分两种情况,更新权向量的值: 1.
分类器对第i个模式做了错误分类,权向量校正为:若WT?k?Xi≤0,W?k?1??W?k??cXi c:正的校正增量。
T?k?Xi?0,W2. 若分类正确,权向量不变:W?k?1??W?k?,统一写为:
(4)
(3)分析分类结果:只要有一个错误分类,回到(2),直至对所有样本正确分类。
感知器算法是一种赏罚过程:
分类正确时,对权向量“赏”——这里用“不罚”,即权向量不变; 分类错误时,对权向量“罚”——对其修改,向正确的方向转换[3]。
3.3 感知器算法的流程及框图
1、确1定样本:输入向量P、目标向量T。 2、网络大小:根据向量的维数来选择网络规模。 3、初始化:W、b取随机值,范围[-1, +1]。
4、 网络输出:根据P、W、b来计算网络的输出Y。 5、学习偏差:E=T-Y。 6、新的网络参数:
W? = W + E×PT 、 θ? = θ + E (5)
反复训练,直到达到目标,或达到最大的训练次数。
图1 感知器算法流程图
四、 实验结果与分析
本次实验先产生了三组服从正态分布的样本,通过感知器算法画出了他们的判别函数如图2所示: