欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    感知器算法实验-1.doc

    • 资源ID:1119659       资源大小:315.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    感知器算法实验-1.doc

    word一.实验目的1. 理解线性分类器的分类原理。2. 掌握感知器算法,利用它对输入的数据进展分类。3. 理解BP算法,使用BP算法对输入数据进展分类。二. 实验原理1.感知器算法感知器算法是通过训练模式的迭代和学习算法,产生线性可分的模式判别函数。感知器算法就是通过对训练模式样本集的“学习得出判别函数的系数解。在本次实验中,我们主要是采用硬限幅函数进展分类。感知器的训练算法如下:设输入矢量其中每一个模式类别,它们分别属于1类和2类。1置步数k=1,令增量为某正的常数,分别赋给初始增广权矢量w(1)的各分量较小的任意值。2输入训练模式,计算判别函数值(k)。3调整增广权矢量,规如此是:1和(k)0,如此w(k+1)=w(k)+;2和(k)0,如此w(k+1)=w(k)-;1和(k)0,或2和(k)0,如此w(k+1)=w(k)4如果k,令k=k+1,返回至2。如果k=N,检验判别函数(k)对是否正确分类。如果是,完毕;如果不是,令k=1,返回至2。如果训练模式已经符号规化,即2已经乘以-1包括增广分量1,如此校正权矢量的规如此可统一为如果(k)0分类正确,如此为第一个表达式,如果(k)0错误分类如此为第二个表达式。在全部模式训练完一轮之后只要还有模式分类错误,如此需要进展第二轮迭代,再用全部训练模式训练一次,建立新的权矢量。如果对训练模式还有错分,如此进展第三轮迭代依此类推,直至对所有驯良模式均能正确分类为止,此时的w即为所求的权矢量。2BP算法BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、隐层、输出层组成的阶层型神经网络,隐层可扩展为多层。相邻层之间各神经元进展全连接,而每层各神经元之间无连接,网络按有教师示教的方式进展学习,当一对学习模式提供应网络后,各神经元获得网络的输入响应产生连接权值Weight。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进展,直至网络的全局误差趋向给定的极小值,即完成学习的过程。算法描述:输入层:单元i的输入:;单元数量:d;单元i的输出:;单元i的激活函数:线性函数;隐层:单元j的输入:netj;单元数量:nH; 单元j的输出:; 单元j的激活函数:非线性函数;输出层:单元k的输入: ;单元数量:c ;单元k的输出:单元k的激活函数:非线性函数两层神经网络图如下:分析:1给定隐层单元与输出层单元的激活函数,一个神经网络就可以实现一个对输入特征向量x的非线性映射。因此,神经网络本质上是一个非线性函数。2给定隐层单元与输出层单元的激活函数,该非线性函数所对应的映射关系完全由权系数决定。不同的权系数对应不同的非线性映射。3神经网络学习的目的,就是根据的训练样本,确定神经网络的权系数。这一过程称为训练过程。在训练过程完毕后,对于新样本x,根据神经网络的输出进展判决。4对于C类分类问题,神经网络的输出为。神经网络的判决规如此为:如果,如此判x属于wk。5令,可以看出神经网络实际上实现了C个非线性的鉴别函数,并根据鉴别函数的取值进展分类。6神经网络的训练目标:调整权系数w,即所有的wkj与wij,使得对于训练集中的每一个训练样本(x,t),网络的输出尽可能满足:7优化准如此:对于样本集D,使下述误差函数取得最小值:权系数的调整:BP算法描述:对于给定的样本集D=(x,t),初始化网络结构d*nH*c。初始化权系数w,学习效率、阈值。随机从D中取出一个样本(x,t),根据该样本更新权系数w:计算,如果完毕训练,并认为此时的w为最优。否如此转第2步继续进展循环。三实验容1. 感知器算法实验本实验利用感知器算法的原理,随机抽取两类的局部数据,然后,用这两类的其他数据来验证分类是否正确。这里是利用感知器两两分类的原理。实验可得结果如下表。其中r1是输入x1所得的分类正确率,r2是输入x2所得的分类正确率,r3是输入x3所得的分类正确率。当训练样本数m取20时,x1和x2数据分类正确率都是100%,x1和x3数据分类正确率是100%,而x2和x3的分类正确率分别为86% 和93%。当训练样本数m取30时,x1和x2数据分类正确率都是100%,x1和x3数据分类正确率是100%,而x2和x3的分类正确率分别为92% 和88%。由实验结果可以看出,x1和x2、x1和x3之间是线性可分的,而x2和x3如此达到了与预设的迭代次数的上限,且分类效果不明显。说明感知器算法对于现行可分的数据有比拟好的性能与速度,但对于线性不可分的数据如此效果较差。2BP算法实验1异或问题实验利用前向两层神经网络来完成异或分类,输入的样本为x1=0 1 1,x2=1 0 1,x3=0 0 1,x4=1 1 1将这四个样本分成两类。其中,x1和x2是属于w1类,x3和x4属于w2类。第一层输入层采用三个神经元,两个输入神经元和一个恒等于1的神经元,第二层输出层设置一个神经元,第二层输出的值假如小于0.5就表示为w1类,大于0.5就表示w2类。这里采用负梯度法调整参数。在本实验中,我们记录训练次数和做不同次实验的分类正确率。取实验次数为1,训练次数为3686,分类正确率为100%;取实验次数为25,最后一次训练次数为2970,分类正确率100%;取实验次数为50,最后一次训练次数2942,分类正确率100%。由实验可以看出,分别做1次、25次和50次实验,所得到的分类正确率都是100,所以说利用前向两层神经网络来完成异或分类问题可以得到很好的分类效果。2BP算法实验采用前向两层神经网络来实现x1、x2和x3两两之间的分类。分别选取不同个数m的样本进展训练,得到相应的权系数,然后再将全部数据代入进展分类,记录训练次数和分类正确率。可得如下结果:训练样本数输入不同组数据后的训练次数和分类正确率x1和x2x1和x3x2和x3 正确率迭代系数正确率迭代次数正确率迭代次数m=5r1=100%r2=100%1334r1=100%r3=100%1336r2=92%r3=86%4452m=15r1=100%r2=100%915r1=100%r3=100%1276r2=92%r3=98%2213m=25r1=100%r2=100%989r1=100%r3=100%1131r2=92%r3=96%1970m=35r1=100%r2=100%961r1=100%r3=100%1044r2=92%r3=98%1410m=45r1=100%r2=100%867r1=100%r3=100%1039r2=90%r3=100%2006x1和x2之间分别选取训练样本数为5和45时的分类效果:x1和x3之间分别选取训练样本数为5和45时的分类效果:x2和x3之间分别选取训练样本数为5和45时的分类效果:下面是分别进展不同屡次实验所得的正确率的统计结果:x1和x3之间实验次数训练样本个数分类正确次数正确率p=20m=5r1=19,r2=2097.5m=15r1=20,r2=20100m=25r1=20,r2=20100m=35r1=19,r2=2097.5m=45r1=20,r2=20100p=50m=5r1=50,r2=50100m=15r1=50,r2=50100m=25r1=49,r2=5099m=35r1=50,r2=50100m=45r1=50,r2=50100p=100m=5r1=98,r2=10099m=15r1=97,r2=10098.5m=25r1=100,r2=100100m=35r1=97,r2=10098.5m=45r1=99,r2=10099.5x1和x2之间实验次数训练样本个数分类正确次数正确率p=20m=5r1=20,r2=20100m=15r1=19,r2=20m=25r1=19,r2=20m=35r1=20,r2=20100m=45r1=20,r2=20100p=50m=5r1=48,r2=5098m=15r1=49,r2=5099m=25r1=49,r2=5099m=35r1=50,r2=50100m=45r1=50,r2=50100p=100m=5r1=95,r2=10097.5m=15r1=99,r2=10099.5m=25r1=97,r2=10098.5m=35r1=99,r2=10099.5m=45r1=98,r2=10099x2和x3之间实验次数训练样本个数分类正确次数正确率p=20m=5r1=4,r2=420m=15r1=0,r2=2050m=25r1=4,r2=1137.5m=35r1=4,r2=2037.5m=45r1=0,r2=1127.5p=50m=5r1=3,r2=25m=15r1=0,r2=4343m=25r1=13,r2=2134m=35r1=1,r2=1314m=45r1=0,r2=4040分析实验结果可以得出:无论从一次实验所得结果还是从做屡次实验所得的统计结果上来看,利用前向二层神经网络实现x1、x2和x3两两之间的分类,对于x1和x2之间、x1和x3之间的分类效果是比拟明显的,可以很好的将两类分开。而对于x2和x3之间却很难用此种方法达到很好的分类效果。四. 实验小结本次实验主要是进展线性可分类问题的实验,实验中分别运用感知器算法和BP算法进展x1、x2和x3两两之间的分类,结果得出,只有x1和x2之间与x1和x3之间是线性可分的,而x2和x3之间是无法用这两种方法分开的。本次实验中,在运用BP算法进展x1、x2和x3之间的分类之前,还进展了异或问题的实验,实验中采用两层前向神经网络达到了很好的分类效果,为进展后面的实验打好了根底。通过本次实验,使我对感知器算法和BP算法有了更加深入的认识,以前在神经网络这门课程中所学的理论问题,在本次实验过具体动手进展编程,使得对当时所学知识有了更加深入的认识。在实验中也遇到了各种各样的问题,通过思考解决后,对我以后的学习很有帮助。五. 代码11 / 11clear all;close all;clc;k=load('iris.txt');k1=zeros(50,4);k2=zeros(50,4);k3=zeros(50,4);for i=1:1:50 k1(i,:)=k(i,:); k2(i,:)=k(i+50,:); k3(i,:)=k(i+100,:);endm=input('训练样本数m='); T1=zeros(m,4);T2=zeros(m,4);T3=zeros(m,4);index=randperm(50); for i=1:1:m T1(i,:)=k1(index(i),:); T2(i,:)=k2(index(i),:); T3(i,:)=k3(index(i),:); end W=0.1,0.1,0.1,0.1; count=0; k=0.02; cc=0; while(count<m&&cc<100) i=1; count=0; while(i<=m) if(W*T1(i,:)'<0) W=W+k*T1(i,:); count=0; end if(W*T2(i,:)'>0) W=W-k*T2(i,:); count=0; end if(W*T1(i,:)'>0)&&(W*T2(i,:)'<0) count=count+1; end i=i+1; end cc=cc+1; end cc k=k1;k2; for i=1:1:100 if(W*k(i,:)'>0) if(0<i&&i<51) fprintf('第%d个数据被分为第一类,分类正确n',i); else fprintf('第%d个数据被分为第一类,分类错误n',i); end end if(W*k(i,:)'<0) if(50<i&&i<101) fprintf('第%d个数据被分为第二类,分类正确n',i); else fprintf('第%d个数据被分为第二类,分类错误n',i); end end endclear all;close all;clc;p=0;x1=0 0 -1;1 1 -1;x2=0 1 -1;1 0 -1;r11=0;r22=0;while p<25a=0.5;pf=1;w1=rand(3,2);w2=rand(3,1);k=1;if mod(k,4)=1 g1=x1(1,:); d=0.1;endif mod(k,4)=2 g1=x2(1,:); d=0.9;endif mod(k,4)=3 g1=x1(2,:); d=0.1;endif mod(k,4)=0 g1=x2(2,:); d=0.9;endg2=g1*w1;o1=1./(1+exp(-g2);o1_y=o1 -1;g3=o1_y*w2;o2=1./(1+exp(-g3);% 输出层的权系数调整det2=a*2*(d-o2)*o2*(1-o2)*o1_y;w2=w2+det2's=2*(d-o2)*o2*(1-o2);%第一层的权系数调整w22=w2'det1=a*g1'*(s*w22(:,1:2).*o1.*(1-o1);w1=w1+det1;err=d-o2;pf=err2;k=k+1;endr1=0;for j=1:1:2 t1=x1(j,:)*w1; y1=1./(1+exp(-t1); y1_y=y1 -1; I2=y1_y*w2; y2(j)=1./(1+exp(-I2); r1=r1+1; endendif r1=2 r11=r11+1;endr2=0;for j=1:1:2 t2=x2(j,:)*w1; y11=1./(1+exp(-t2); y11_y=y11 -1; I21=y11_y*w2; y21(j)=1./(1+exp(-I21); r2=r2+1; endendif r2=2 r22=r22+1;end p=p+1endlv=p/25;3.BP算法实现x1、x2和x3两两之间分类clear all;close all;clc;load('data.mat');m=input('训练样本数m='); %输入训练样本数T1=zeros(m,4);T2=zeros(m,4);T3=zeros(m,4);%随机抽取m个训练样本index=randperm(50); for i=1:1:m %得到随机的训练样本 x1(i,:)=k1(index(i),:); x2(i,:)=k2(index(i),:); x3(i,:)=k3(index(i),:);endp=0;r11=0;r22=0;while p<50a=0.5;pf=1;w1=rand(4,5);w2=rand(6,1);k=1;tt=1; if k>m k=1; endif mod(k,2)=1 g1=x2(k,:); d=0.1;endif mod(k,2)=0 g1=x3(k,:); d=0.9;endg2=g1*w1;o1=1./(1+exp(-g2);o1_y=o1 -1;g3=o1_y*w2;o2=1./(1+exp(-g3);% 输出层的权系数调整det2=a*2*(d-o2)*o2*(1-o2)*o1_y;w2=w2+det2's=2*(d-o2)*o2*(1-o2);%第一层的权系数调整w22=w2'det1=a*g1'*(s*w22(:,1:5).*o1.*(1-o1);w1=w1+det1;err=d-o2;pf=err2;k=k+1; tt=tt+1; %训练次数endr1=0;r2=0;for j=1:1:50 t1=k2(j,:)*w1; y1=1./(1+exp(-t1); y1_y=y1 -1; I2=y1_y*w2; y2(j)=1./(1+exp(-I2); r1=r1+1; endendlv1=r1/50 if r1=50 r11=r11+1; endfor j=1:1:50 t1=k3(j,:)*w1; y1=1./(1+exp(-t1); y1_y=y1 -1; I2=y1_y*w2; y22(j)=1./(1+exp(-I2); r2=r2+1; endendlv2=r2/50 if r2=50 r22=r22+1; end p=p+1endr11/50r22/50plot(1:50,y2,'r');axis(0,50,0,1);title('m=',num2str(m);hold onplot(1:50,y22);grid onlv=(r11+r22)/100

    注意事项

    本文(感知器算法实验-1.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开