线性分类BP神经网络.doc_第1页
线性分类BP神经网络.doc_第2页
线性分类BP神经网络.doc_第3页
线性分类BP神经网络.doc_第4页
线性分类BP神经网络.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

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

文档简介

模式识别实验报告 西安交通大学 感知器准则线性分类一、实验原理线性分类法的判别函数是的线性函数,即 (1)式中是维特征向量,是权向量,是个常数,称为阈值权,并定义如下决策规则:对于感知准则线性分类法,我们的工作就是用样本按感知准则算法去估计和,并按照决策规则将未知样本归入正确的类别中去。我们将式(1)定义的线性判别函数写成如下形式 (2)其中为增广样本向量,为增广权向量。w1yx1x2Xdw2WdW0Mi图-1 单层感知器模型假设期望输出为d,我们希望调整权系数,使得误差尽可能小。对于关于求导,有 (3)这样我们就得到权系数调整的梯度下降算法,即 (4)其中。通过迭代运算即可得到满足要求的。二、实验步骤1. 设置变量和参数。下式中n为迭代次数,则为输入向量,也即训练样本;为权值向量。2. 初始化,赋给一个较小的随机非零值,n=0。3. 对于一组输入样本,指定它的期望输出d。如果,则d=1,如果,则d=-1。4. 计算实际输出。5. 调整感知器的权值向量。下式中P为学习速率,则6. 判断是否满则条件(这里的条件可以使误差小于设定的值,或者权值变化很小,另外,在实现过程中还应设置最大迭代次数,以防算法不收敛程序进入死循环):若满足,算法结束,否则,将n加1,转第3步重新执行。三、实验结果及分析由于训练样本的输入顺序对学习的结果和收敛速度有一定影响,故一般情况下训练样本最好在各类样本中轮流进行,以防止权值调整的不均匀。因此我们首先将样本顺序打乱,然后开始训练。1. 分别用第一组和第二组的30个数据进行训练,剩下的各20个样本进行测试分类。结果如下:Columns 1 through 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20个为第一组,后20个为第二组,分类正确无误。某次实验误差绝对值收敛曲线如图2。图-2 1、2组误差绝对值收敛曲线2. 分别用第一组和第三组的30个数据进行训练,剩下的各20个样本进行测试分类。结果如下: Columns 1 through 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20个为第一组,后20个为第三组,分类正确无误。某次实验误差绝对值收敛曲线如图3。图-3 1、3组分类误差绝对值收敛曲线3. 分别用第二组和第三组的30个数据进行训练,剩下的各20个样本进行测试分类。结果如下: Columns 1 through 20 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1前20个为第一组,后20个为第三组,由上面结果可知,第二组一个样本被错误分到第三类中去。某次实验误差绝对值收敛曲线如图4。图-4 2、3组误差绝对值收敛曲线4. 如果我们用样本未被打乱的第二组和第三组的30个数据进行训练,剩下的各20个样本进行测试分类运行后结果如下,显然第二类测试样本分类基本错误,且误差不收敛。Columns 1 through 20 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1Columns 21 through 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1图-5 未将样本次序打乱时2、3组误差绝对值收敛曲线附1:感知器线性分类源程序11clear% 原始数据导入iris = load(C:MATLAB7work模式识别iris.txt);M=30;for k=1:2 for i = 1:M x1(i+(k-1)*M,1) =1; for j = 2:5 %第一组和第二组分类训练样本 %x1(i+(k-1)*M,j) = iris(i+(k-1)*50,j); %第一组和第三组分类训练样本 %x1(i+(k-1)*M,j) = iris(i+(k-1)*100,j); %第二组和第三组分类训练样本 x1(i+(k-1)*M,j) = iris(i+k*50,j); end d1(i+(k-1)*M,1)=2*(1.5-k); endendx2(:,1:5)=x1;x2(:,6)=d1;%将数据顺序打乱xd=x2(randperm(numel(x2)/6),:);%xd=x2;x=xd(:,1:5);d=xd(:,6);w=rand(5,1)*(1-0)%初始权系数p=0.2;%学习因子N=2*M;%最大迭代次数为60*N次for l=1:60 for i=1:N if(x(i,:)*w0) y(i)=1; else y(i)=-1; end e(i)=d(i)-y(i); w=w+p*e(i)*x(i,:); plot(i+N*(l-1),sum(abs(e),r.) hold on end if sum(abs(e)0)-0.5); %测试g Iris数据BP神经网络分类一、实验原理BP网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能,把输入空间变换到其隐层输出所张成的空间,在这个空间中分类问题变得比较容易。这使得它特别适合于求解内部机制复杂的问题,比如模式识别等。我们无需建立模型或了解其内部过程,只需输入样本,获得输出。只要BP网络结构优秀,一般20个输入函数以下的问题都能在50000次的学习以内收敛到最低误差附近。网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力,同时网络具有一定的推广、概括能力。BP网络的工作过程由正向计算输出和误差反向传播两部分组成。在正向计算输出过程中,从输入层向后逐层计算输出,直到输出层的最终输出值,之后计算实际输出与目标输出之间的误差。在误差反向传播中,从输出层开始反向逐层传播误差信号,修正各层权值。反复执行这两个过程,直到知道网络输出值和目标值之间的误差小于给定精度要求。BP算法通过学习来修正多层神经网络的权值,采用梯度下降法实现最小化,使得网络输出值和目标值之间误差平方最小。其学习算法有最速下降BP算法、动量BP算法、学习率可变的BP算法、弹性算法、变梯度算法和LM算法等。三层网络的BP网络结构如图-1所示。图-1 BP网络结构图二、实验步骤Matlab中有专门的神经网络工具箱,可以调用相关函数完成网络的训练和测试。下面的程序首先用样本训练BP网络权值,达到误差限,满足要求,然后将待识别样本输入到训练好的网络中,得到输出结果,根据判别规则,判断其类别。当网络用于分类时,样本的期望输出值为d = 0 或d=1 ,但由于 y 值在u = 时才为0 或1,这有可能将某些网络权值驱向无穷大。为了避免这种饱和现象,期望输出可适当放宽,如y0.9 为1,y0.5 & Y(2,i)0.5) n1=n1+1; end case 2 plot(Y(1,i+(k-1)*N),Y(2,i+(k-1)*N),gs) if(Y(1,i+N)0.5) n2=n2+1; end case 3 plot(Y(1,i+(k-1)*N),Y(2,i+(k-1)*N),b*) if(Y(1,i+2*N)0.5 & Y(2,i+2*N)0.5) n3=n3+1; end end hold on endendhold onplot(0:0.001:1,0.5,-b )hold onplot(0.5,0:0.001:1,-b)axis(-0.2 1.2 -0.2 1.2)xlabel(Y(1)ylabel(Y(2)title(分类结果)grid on模式识别实验报告 异或问题的BP网络分类法一、实验原理BP网络的非线性映射特性使得它可以实现线性不可分样本的模式分类。具体参见实验二Iris数据BP神经网络分类的实验原理部分。二、实验步骤1、生成训练样本和测试样本。在(1,0)(0,1)(0,0)(1,1)四个点附近各有随机生成服从高斯分布的30个样本,其中20个用作训练,剩下10个用作测试。根据异或问题要求,将(1,0)(0,1)附近的点归为第一组,(0,0)(1,1)附近的点归为第二组。由于有2个类别,对于目标结果,我们用0.9表示第一组,0.1表示第二组。2、样本数据处理。把数据重新打乱顺序进行输入,可以让数据更加具备典型性和更优良的泛化能力!3、建立神经网络,设置网络层数为3层,即输入层、隐层、输出层;输入层神经元数为2,隐层神经元数为5,,输出层神经元数为1,隐含层的传输函数为sigmoid函数,输出层传输函数亦为sigmoid函数(logsig),如图-2所示。4、确定训练函数进行训练。选择适用于模式识别分类时速度最快的弹性算法。5、完成训练后,调用训练结果,输入测试数据,进行测试。6、分析分类结果。三、实验结果及分析运行程序后得到样本(包括训练样本和测试样本),样本如图-1所示。图-1 训练样本点设定网络误差为0.001,样经过训练,经过30次迭代,得到的满足误差限的网络性能曲线如图-2所示。图-2 误差性能曲线 对于训练好的满足要求的网络测试剩下40个样本,第1-10个样本在以点(1,0)为中心的区域内,第11-20个样本在以点(0,1)为中心的区域内,第21-30个样本在以点(0,0)为中心的区域内,第31-40个样本在以点(1,1)为中心的区域内,按异或规则,我们希望得到的前20个值在0.9左右,后20个值在0.1左右。测试结果如下,显然与我们期望吻合,故分类正确。 如果我们以Y=0.5为阈值,当Y0.5时,将样本归为第一类,当Y0.5时,将样本归为第一类,则可得到某个满足要求的网络近似分界面,如图-3所示。图-3 网络近似分界面上图中,两条点线两侧的区域在此网络中分为第一类,中间所夹的区域为第二类,点线为大致的分界面。显然网络确实可以实现非线性样本特征的分类。附3:异或问题的BP网络分类法源程序15clear%生成样本n=30;a=1 0;0 1;0 0;1 1;for k=1:4 x(n*(k-1)+1):(n*k),1:2)=random(normal,a(k,1),0.05,n,1),random(normal,a(k,2),0.05,n,1); x(n*(k-1)+1):(n*k),3)=abs(floor(k/2-0.1)-0.9);endfigure;%画两类样本for i=1:2*n plot(x(i,1),x(i,2),r+) hold onendfor i=1:2*n plot(x(i+2*n,1),x(i+2*n,2),b+) hold onendxlabel(x(1)ylabel(x(2)title(训练样本)grid onaxis(-0.5 1.5 -0.5 1.5)M=20;%抽取样本训练for k=1:4 for i = 1:M xpt(i+(k-1)*M,:)=x(i+(k-1)*n,:); endend%训练网络xd=xpt(randperm(numel(xpt)/3),:);P=xd(:,1:2);T=xd(:,3);net=newff(minmax(P),6,1,logsig logsig,trainrp);net.trainparam.epochs=1000;net.trainparam.goal=0.0001;net=train(net,P,T);sim(net,P)figure %画网络

温馨提示

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

评论

0/150

提交评论