模式识别系列实验指导书_第1页
模式识别系列实验指导书_第2页
模式识别系列实验指导书_第3页
模式识别系列实验指导书_第4页
模式识别系列实验指导书_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模式识别系列实验实验指导书授课教师:曹晓光、李露单位:北京航空航天大学 宇航学院图像中心2015-4-10课程名称:模式识别系列实验(Pattern Recognition Experiments)实验总学时数:16实验室地点:北京航空航天大学宇航学院图像中心 新主楼D408实验要求与目的: 模式识别系列实验是自动化一级学科模式识别与智能系统专业硕士研究生所必修的实验课。在学习完成模式识别理论课的基础上,模式识别系列实验引导学生重温模式识别各分支和方法的基本概念和原理,并在计算机上进行验证实验,实际操作和观察图像模式识别的过程、运行结果,提倡学生对现有程序的修改和完善。通过实验使学生掌握应用模

2、式识别基本原理和基本方法解决实际问题的基本技巧,培养学生应用理论知识解决实际问题的能力。模式识别系列实验要求学生有一定计算机软硬件、概率论、数理统计以及矩阵理论基础,并选修了模式识别学科专业基础课程。本实验课程的基本要求如下:1 通过实验加深对模式识别理论课堂所学知识的理解;2 上机前应按照要求把实验内容准备好,观察实验结果,得出结论; 3实验结束后提交实验报告实验项目与内容提要序号实验性质实验内容实验形式要求学时备注必做选做1基础感知器学习与分类实验按指导书要求完成实验1人/组22BP网络学习与分类实验按指导书要求完成实验1人/组33分级聚类实验按指导书要求完成实验1人/组34提高基于非参数

3、核密度估计的行人分割查阅文献,编程实现1人/组45基于贝叶斯理论的显著性目标检测查阅文献,编程实现1人/组4实验考核:采用实验操作与实验报告综合评分实验一 感知器学习与分类实验实验目的:理解感知器的原理和网络结构掌握感知器的学习规则熟悉Matlab软件环境和神经网络工具模块锻炼算法设计编程与上机调试能力实验要求: 一、对实验过程的要求:编程实现w1,w2类以及w2,w3类的分类w1=.1 6.8 -3.5 2.0 4.1 3.1 -0.8 0.9 5.0 3.9; 1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4 4.0; w2=7.1 -1.4 4.5 6.3 4.

4、2 1.4 2.4 2.5 8.4 4.1;4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2; w3=-3.0 0.5 2.9 -0.1 -0.4 -1.3 -3.4 1 -5.1 1.9; -2.9 8.7 2.1 5.2 2.2 3.7 6.2 3.4 1.6 5.1;w4=-2.0 -8.9 -4.2 -8.5 -6.7 -0.5 -6.7 -8.7 -7.1 -9.0;-8.4 0.2 -7.7 -3.2 -4.0 -9.2 -6.7 -6.4 -9.7 -6.3 二、回答以下问题:1)从a=0开始,将你的程序应用在1和2的训练数据上。记下收敛的

5、步数。 2)将你的程序应用在2和3类上,同样记下收敛的步数。3)试解释它们收敛步数的差别。 4)提高部分:3和4的前5个点不是线性可分的,请手工构造非线性映射,使这些点在映射后的特征空间中是线性可分的,并对它们训练一个感知器分类器。分析这个分类器对剩下的(变换后的)点分类效果如何?实验环境: PC机、Windows XP操作系统、Matlab软件,利用Matlab自带的神经网络工具包,实现用感知器对二维样本的分类。实验原理: 感知器是由美国计算机科学家Rosenblatt于1957年提出的。感知器可谓是最早的人工神经网络。单层感知器是一个具有一层神经元、采用阈值激活函数的前向网络。通过对网络权

6、值的训练,可以使感知器对一组输入向量的响应达到元素为0或1的目标输出。从而实现对输入向量分类的目的。图1给出了单层感知器神经元模型图。(本实验输入为二维向量) 图1 感知器神经元模型其中,每一个输入分量通过一个权值分量进行加权求和,并作为阈值函数的输入。偏差的加入使得网络多了一个可调参数,为使网络输出达到期望的目标向量提供了方便。感知器特别适合解决简单的模式分类问题。由感知器的网络结构,我们可以看出感知器的基本功能是将输入向量转化成0或l的输出。这一功能可以通过在输入向量空间里的作图来加以解释。感知器权值的调整目的,就是根据学习法则设计一条轨迹,使所有的输入向量都能达到期望位置的划分。对于一个

7、n维的输入向量来说,这个轨迹为一个n-1维的超平面,在这个超平面以上的输入向量将产生一个值为1的输出,而在这个超平面以下的输入向量将产生一个值为0的输出。在MATLAB中,感知器的训练及学习法则都已经被编成了一个子程序并被集成在神经网络工具箱中。首先用newp函数创建感知器神经网络,再利用train函数创建神经网络,最后可以使用sim函数对训练后的网络进行仿真。在Matlab神经网络工具箱中,可以用plotpc函数绘制R=3感知器神经网络的分类线。实验设计:对于线性可分问题:分类1P = -0.5 1 2 3;2 1 1 2;T = 1 1 0 0;net = newp(-1 3;-1 3);

8、%建立网络handle = plotpc(net.iw1,net.b1);net.trainParam.epochs = 10;net = train(net,P,T);%网络训练figure;plotpv(P,T);handle = plotpc(net.iw1,net.b1,handle);%画出分界线分类2P = 1 1.5 2 3 4 6;1 2 0.5 2 1 0;T = 1 1 0 1 0 0;net = newp(0 6;0 6);%建立网络handle = plotpc(net.iw1,net.b1);net.trainParam.epochs = 30;net = train

9、(net,P,T);%网络训练figure;plotpv(P,T);handle = plotpc(net.iw1,net.b1,handle);%画出分界线分类3P = -2 -1 1 2;1.5 1 0.5 -1;T = 0 0 1 1;net = newp(-2 2;-2 2);%建立网络handle = plotpc(net.iw1,net.b1);net.trainParam.epochs = 30;net = train(net,P,T);%网络训练figure;plotpv(P,T);handle = plotpc(net.iw1,net.b1,handle);%画出分界线对于线

10、性不可分问题:分类1 P = 0.5 1 2 3;2 1 1 2;T = 0 1 0 1;net = newp(-1 3;-1 3); 建立网络handle = plotpc(net.iw1,net.b1);net.trainParam.epochs = 100;net = train(net,P,T);figure;plotpv(P,T);handle = plotpc(net.iw1,net.b1,handle); 画出分界线分类2P = 1 1 2 2;1 2 1 2;T = 0 1 1 0;net = newp(1 2;1 2); %建立网络handle = plotpc(net.iw

11、1,net.b1);net.trainParam.epochs = 100;net = train(net,P,T);figure;plotpv(P,T);handle = plotpc(net.iw1,net.b1,handle); %画出分界线分类3P = -1 0 1 2;2 1 2 1;T = 1 0 0 1;net = newp(1 2;1 2); %建立网络handle = plotpc(net.iw1,net.b1);net.trainParam.epochs = 100;net = train(net,P,T);figure;plotpv(P,T);handle = plotp

12、c(net.iw1,net.b1,handle); %画出分界线感知器的训练流程: 否,计算权值调整值dW并调整权值W用hardlim计算网络输出AA=T样本矩阵P和目标矩阵T赋给训练函数并初始化权值W和最大循环次数max_epoch训练开始是训练结束实验结果:线性可分问题结果:线性不可分问题结果:表2 实验结果统计线性可分问题线性不可分问题分类1分类2分类3分类1分类2分类3P-0.5 1 2 3;2 1 1 21 1.5 2 3 4 6;1 2 0.5 2 1 0-2 -1 1 2;1.5 1 0.5 -10.5 1 2 3;2 1 1 21 1 2 2;1 2 1 2-1 0 1 2;2

13、 1 2 1T1 1 0 01 1 0 1 0 00 0 1 10 1 0 10 1 1 01 0 0 1分类结果正确分类正确分类正确分类错误分类错误分类错误分类实验二 BP网络学习与分类实验实验目的:理解BP网的网络结构;掌握BP网的学习规则;培养编程与上机调试能力;熟悉Matlab软件环境;实验要求: 一、对实验过程的要求使用matlab软件设计BP网对尿沉渣图像样本进行模式识别对待测尿沉渣图像进行分类对分类结果进行统计分析二、对实验报告的撰写要求(参见实验报告)1实验报告包含的内容有:实验题目实验环境(硬件环境、软件环境)实验内容实验中遇到的问题及解决方案实验环境: PC机、Window

14、s XP操作系统、Matlab软件,利用Matlab自带的神经网络工具包实验原理: 一个具有r个输入和一个隐含层的神经网络模型结构如图2所示。 图2 具有一个隐含层的神经网络模型结构图感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的。BP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。BP网络的激活函数必须是处处可微的,所以它就不能采用二值型的阈值函数1,0或符号函数(-1,1),BP网络经常使用的是S型的对数或正切激活函数和线性函数。对于多层网络,这种激活函数所划分的区域不再是线性划分,而是由一个非线性的超平面组

15、成的区域。它是比较柔和、光滑的任意界面,因而它的分类比线性划分精确、合理、这种网络的容错性较好。另外一个重要的特点是由于激活函数是连续可微的,它可以严格利用梯度法进行推算,它的权值修正的解析式十分明确,其算法被称为误差反向传播法,也简称BP算法,这种网络也因此而被称为BP网络。因为S型函数具有非线性放大系数功能,它可以把输人从负无穷大到正无穷大的信号,变换成-l到l之间输出,对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大,所以采用S型激活函数可以去处理和逼近非线性的输入输出关系。不过,如果在输出层采用S型函数,输出则被限制到一个很小的范围了,若采用线性激活函数,则可使网络输

16、出任何值。所以只有当希望对网络的输出进行限制,如限制在0和1之间,那么在输出层应当包含S型激活函数,在一般情况下,均是在隐含层采用S型激活函数,而输出层采用线性激活函数。在MATLAB工具箱中,上述计算均已编成函数的形式,通过简单的书写调用即可方便地获得结果。具体有: 1)对于隐含层输出若采用对数s型激活函数,则用函数logsig.m;若采用双曲正切S型激活函数,则用函数tansig.m; 2)对于输出层输出,若采用线性激活函数有purelin.m与之对应; 3)对于误差函数,可用函数sumsqr.m求出; 4)有learnbp.m函数专门求输出层以及隐含层中权值与偏差的变化量。实验设计:本次

17、实验中的样本从原图中所占比例较大的四类样本中获得,分别为:红细胞(red cell),白细胞(leucocyte),盐结晶(crystal),杆菌(bacillus)。将训练样本从尿沉渣图像中的红细胞(red cell),白细胞(leucocyte),盐结晶(crystal),杆菌(bacillus)手工分离出来并转化为灰度图像在图像的分割及分类阶段中,我们共获得样本图像103个,将其中的83个作为训练样本,其余的20个作为测试分类样本。训练样本及测试样本中的四类样本所占比例均大致相同。我们将所有的样本图像都依次送入MATLAB,转化成32*32的二维矩阵,再将矩阵的每一列首尾相连,变成一列1

18、024维的列向量,最后将训练用的列向量组合在一起,成为训练所用的数据矩阵。并将该数据矩阵保存为matlab软件可以读取的.mat文件。建立目标库,目标库共由83个4位列向量组成,每个列向量对应一个学习样本。每一类样本所对应的目标向量是相同的,红细胞样本所对应的目标列向量为1 0 0 0T,白细胞样本所对应的目标列向量为0 1 0 0T,盐结晶样本所对应的目标列向量为0 0 1 0T,杆菌样本所对应的目标列向量为0 0 0 1T。网络参数的选择:由于系统是非线性的,初始值对于学习是否达到局部最小、是否能够收敛以及训练时间的长短的关系很大。如果初始权值太大,使得加权后的输入落在了s型激活函数的饱和

19、区,从而导致其导数非常小,使得调节过程几乎停顿下来。所以,一般总是希望经过初始加权后的每个神经元的输出值都接近于零,这样可以保证每个神经元的权值都能够在它们的s型激活函数变化最大之处进行调节。所以,一般取初始权值在(-1,1)之间的随机数。另外,为了防止上述现象的发生,威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出了一种选定初始权值的策略,利用他们的方法可以在较少的训练次数下得到满意的训练结果。在MATLAB新版本的工具箱中再初始化隐含层权值时将自动进行优化。其方法仅需要使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数。学习速率决定每一次循环训练中所产生的权值变化量

20、。大的学习速率可能导致系统的不稳定;但小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。所以在一般情况下倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间。BP网络训练:BP算法是由两部分组成,信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。在Matlab中用t

21、rainbp函数可实现这一过程。对待测样本进行分类并对结果进行统计分析BP网络的训练流程: 使用trainbp对网络进行训练设置函数参数变量TP样本矩阵P和目标矩阵T赋给训练函数并初始化权值W和最大循环次数max_epoch, lr,disp_freq训练开始训练结束图象样本转化方法和程序:图象转化方法同实验一。网络隐含层的选择: 1989年Robert Hecht-Nielson曾经证明了当各节点具有不同的阈值时,具有一个隐层的网络就可以用来逼近任意连续函数。然而由于其先决条件很难满足,很少被完整地使用。通常对大多数的实际问题,往往不考虑这个先决条件,而取用一个隐层,即三层网络,就能完成大多

22、数的非线性映射。而对于隐层节点数的个数选择,并没有一个明确的理论,大多是通过经验确定,有这么几个经验公式来计算隐层节点数:m:隐层节点数 n:输入节点数 o: 输出节点数 a: 1-10之间的常数m = sqrt(n + o) + a;m = log2nm = sqrt(n * o)在本次毕设实验中,样本为一个1024维的输入向量,输出为一个4维向量,由以上公式中求出隐层节点数,取其中最小的,将隐层节点数设为10个。程序:P = train2; T = T1; %将样本及目标矩阵赋给训练函数%初始化R,Q = size(P); S2,Q = size(T);S1=10;P=normc(P);%

23、归一化W1,B1=rands(S1,R);W2,B2=rands(S2,S1); %赋给权值矩阵以随机初始值disp_fqre=50; %设定显示频率err_goal=0.02; %设定希望误差最小值lr=0.01; %设定学习速率max_epoch=80000; %设定最大循环次数TP=disp_fqre max_epoch err_goal lr; %设定训练参数w1,B1,W2,B2,epochs,errors=trainbp(W1,B1,tansig,W2,B2,logsig,P,T,TP) %开始训练识别:A1=tansig(w1*train3);for i=1:20 A1(:,i)=A1(:,i)+B1;endA2=logsig(W2*A1)for i=1:20 A2(:,i)=A2(:,i)+B2;end实验结果: 根据本实验所提供的实验样本矩阵,BP网络识别的准确率应该达到35%以上,但是由于没有对样本的冗余信息进行处理,所以网络识别的准确率也不回超过50%。表4 BP网的分类实验结果条件一条件二条件三平均识别个数8998.7样本总数20202020正确率40%45%45%43.3%实验三 分级聚类实验实验目的:理解分级聚类的三种方法:均值聚类、最小距离聚类、最大距离聚类掌握这三种聚类方法的原理任选一种编程实现实验要求:为了研究世界各国森林、草原资源的分布规律,共

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论