模式识别作业马忠彧.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式识别作业马忠彧.doc

作业1:线性分类器设计 1、问题描述 将4个输入矢量分为两类,其中两个矢量对应的目标值为1,另两个矢量对应的目标值为0。输入矢量为P=[-0.5 -0.5 0.3 0 -0.5 0.5 -0.3 1] 目标分类矢量为T=[1 1 0 0] 2、算法描述 采用单一感知器神经元来解决这个简单的分类问题。感知器(perceptron)是由美国学者F.Rosenblatt于1957年提出的,它是一个具有单层计算神经元的神经网络,并由线性阈值单元组成。当它用于两类模式的分类时,相当于在高维样本空间中,用一个超平面将两类样本分开。 两类样本线性情况下,线性判别函数可描述为,其中是权向量,是阈值。假设两类样本线性可分,则一定存在一个由定义的超平面,满足,其中。 定义感知器代价函数为,其中Y是训练向量的子集,是权向量w定义的超平面错误分类的部分。变量;。为了计算出代价函数的最小迭代值,利用梯度下降法设计迭代方案,即 其中,代入得 这种算法称为感知器算法。这个算法从任意权向量w(0)开始初始化,通过错误分类特征形成修正向量。如此重复到算法收敛于解,即所有的特征向量都正确的分类。可以证明,如果两类模式是线性可分的,则算法一定收敛。感知器特别适合用于简单的模式分类问题。 3、算法的实现 Matlab源程序如下: 0.5 0.3 0;-0.5 0.5 -0.5 1]; t=[1 1 0 0]; [w,b]=initp(p,t) %初始化感知器 plotpv(p,t) %绘制输入矢量 plotpc(w,b) %绘制分类线 pause [w,b,epochs,errors]=trainp(w,b,p,t,-1) %训练感知器 pause ploterr(errors); %绘制误差图 4、分类结果和讨论 图1为分类结果,图中的实线将两类分开。经过6步达到误差要求,训练结束。误差变化曲线如图2所示。 图1 图2 经过训练后,网络的权值和阈值分别为 w =-2.9871 -0.4630 b=-0.3572 训练结束后,验证 p=[-0.5;-0.2]; a=simup(p,w,b) 运行结果为a=1属1类 可见,单层感知器算法可用于简单的线性分类问题。 作业2:非线性分类器设计 1、问题描述 设计分类器实现同或运算。同或问题的真值表为 X1 X2 同或运算结果 类 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 用一条直线是不能将这两类分开的,可考虑非线性分类算法设计分类器。 2、算法描述 (1)双层感知器算法 单层感知器神经网络不能解决线性不可分的输入矢量的分类问题,解决这一问题的办法是输入的线性不可分矢量进行预处理。双层感知器算法就是采用两层感知器神经元,先将线性不可分问题转化为线性可分问题,再进行分类的。 算法分为两个阶段,第一阶段的映射将非线性可分问题转换为线性可分问题,通过第一层的神经元完成第一阶段的计算,它们构成隐层(hidden layer),将输入向量x映射到新向量y,即 第二阶段是基于转换数据实现分类,通过第二层神经元实现运算,构成输出层(output layer),得出决策方程。即 (2)径向基函数算法 若定义函数变量为从中心点ci与输入向量的欧式距离,即,则称该函数为径向基函数(Radial Basis Function,RBF)。函数f可有多种形式,例如 高斯形式被广泛使用。 径向基函数网络的结构包括两层,即隐层和输出层,隐层为径向基层(radbas),利用径向基函数将非线性问题转换为线性问题,输出层为线性层(pureline),将转换后的样本用线性分类方法进行分类。 3、算法的实现与分类结果 (1)双层感知器算法 Matlab源程序为: p=[0 0 1 1;0 1 0 1]; t=[1 0 0 1]; s1=2; [w1,b1]=initp(p,s1) [w2,b2]=initp(s1,t) plotpv(p,t) plotpc(w1,b1) pause a1=simup(p,w1,b1); [w2,b2,epochs,errors]=trainp(w2,b2,a1,t,[-1]); ploterr(errors); 运行结果: 图3为分类结果,误差变化曲线如图4所示。 图3 图4 训练结束后,,两层网络的权值和阈值分别为 w1=[1 1;1 1];b1=[-0.5;-1.5] w2=[1 -1] ;b2=-0.5; (2)径

文档评论(0)

cjlfjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档