感知器算法实验--1_第1页
感知器算法实验--1_第2页
感知器算法实验--1_第3页
感知器算法实验--1_第4页
感知器算法实验--1_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、感知器算法实验 -1一.实验目的1. 理解线性分类器的分类原理。2. 掌握感知器算法, 利用它对输入的数据进行 分类。3. 理解 BP 算法,使用 BP 算法对输入数据进 行分类。二 . 实验原理1.感知器算法 感知器算法是通过训练模式的迭代和学习 算法,产生线性可分的模式判别函数。 感知器算 法就是通过对训练模式样本集的 “学习” 得出判 别函数的系数解。 在本次实验中, 我们主要是采 用硬限幅函数进行分类。感知器的训练算法如下: 设输入矢量 x1,x2,xn 其中每一个模式 类别已知,它们分别属于 1类和2 类。(1)置步数 k=1 ,令增量 为某正的常数, 分别赋给初始增广权矢量 w(1

2、) 的各分量较小的 任意值。(2)输入训练模式 xk ,计算判别函数值 wT(k) xk 。(3)调整增广权矢量,规则是:a. 如果 xk 1 和wT(k) xk 0,则 w(k+1)=w(k)+ xk ;b. 如果xk 2 和wT(k) xk 0,则 w(k+1)=w(k)- xk ;c. 如果xk 1 和wT(k) xk 0,或xk 2 和wT(k) xk 0,则 w(k+1)=w(k)(4) 如果 k0 分类正确,则为第一个表 达式,如果 wT(k) xk 0 错误分类则为第二个表 达式。在全部模式训练完一轮之后只要还有模式 分类错误, 则需要进行第二轮迭代, 再用全部训 练模式训练一次

3、, 建立新的权矢量。 如果对训练 模式还有错分, 则进行第三轮迭代依此类推, 直至对所有驯良模式均能正确分类为止, 此时的 即为所求的权矢量。2 BP 算法BP (Back Propagation) 神经网络是一种神经网络学习算法。其由输入层、隐层、 输出层组成的阶层型神经网络,隐层可扩展为多层。相邻层之间各神经元进行 全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当 一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值( Weight )。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层 逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全

4、局误差 趋向给定的极小值,即完成学习的过程。算法描述: 输入层: 单元 i的输入: xi; 单元数量: d; 单元 i 的输出: xi ;单元 i 的激活函数:线性函数 隐层:单元 j 的输入: netj ;单元数量: nH ;dj0netjji xii1(x0,x1,xd ) ,x0( j0,j1jd)t单元 j 的输出: yjf (netj );单元 j 的激活函数:非线性函数; 输出层: 单元 k 的输入: net ; 单元数量: c ;nHnetkkjyjk0kt yj1y ( y0 , y1, ynH )t,y0 1, , ,)tk0 k1knH单元 k 的输出:zkf (netk

5、)单元 k 的激活函数:非线性函数 两层神经网络图如下:分析:(1)给定隐层单元及输出层单元的激活函数,一个神经网络就可以实现一个对 输入特征向量 x 的非线性映射。因此,神经网络本质上是一个非线性函数。(2)给定隐层单元及输出层单元的激活函数,该非线性函数所对应的映射关系 完全由权系数决定。不同的权系数对应不同的非线性映射。( 3)神经网络学习的目的, 就是根据已知的训练样本, 确定神经网络的权系数。 这一过程称为训练过程。在训练过程结束后,对于新样本 x,根据神经网络的输 出进行判决。4)对于 C 类分类问题,神经网络的输出为 z ( x), k1,.,c神经网络的判k ,则判 x 属于

6、wk决规则为:如果 zk (x) zl ( x),l 1,., c, l(5)令g (x) z (x),k 1,.,c,可以看出神经网络实际上实现了 C个非线性 的鉴别函数,并根据鉴别函数的取值进行分类。( 6)神经网络的训练目标:调整权系数 w,即所有的 wkj 及 wij ,使得对于训 练集中的每一个训练样本 (x,t) ,网络的输出尽可能满足:z1 (x)t1z( x).tzc (x)tc( 7)优化准则:对于样本集 D,使下述误差函数取得最小值:J( )Jx( )xD1 c 2Jx( ) 1tk zk (x)2k1权系数的调整:kj kjkyj,tk zk f (netk )ji ji

7、kj kjJ,Jji jijxi,cf (netj ) k kjk1BP 算法描述:对于给定的样本集 D=(x,t) ,初始化网络结构 效率 、阈值 。d*nH*c 。初始化权系数 w,学习随机从 D 中取出一个样本 (x,t) ,根据该样本更新权系数 w: JkjkjkjJjijiji计算J J(优。否则转第 2 步继续进行循环。三实验内容) J( ) ,如果 J 结束训练,并认为此时的 w 为最1. 感知器算法实验 本实验利用感知器算法的原理, 随机抽取两类 的部分数据, 然后,用这两类的其他数据来验证 分类是否正确。这里是利用感知器两两分类的原理。实验可得结果如下表。 其中 r1 是输入

8、 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 则达到了与预设的迭 代次数的上限

9、, 且分类效果不明显。 说明感知器 算法对于现行可分的数据有比较好的性能与速 度,但对于线性不可分的数据则效果较差。 2 BP 算法实验(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 类。这里采用 负梯度法调整参数

10、。 在本实验中, 我们记录训练 次数和做不同次实验的分类正确率。 取实验次数 为 1,训练次数为 3686,分类正确率为 100% ; 取实验次数为 25,最后一次训练次数为 2970, 分类正确率 100% ;取实验次数为 50,最后一次 训练次数 2942,分类正确率 100% 。由实验可以 看出,分别做 1 次、25 次和 50次实验,所得到 的分类正确率都是 100,所以说利用前向两层 神经网络来完成异或分类问题可以得到很好的 分类效果。(2)BP 算法实验 采用前向两层神经网络来实现 x1、x2 和 x3 两两之间的分类。分别选取不同个数( m)的 样本进行训练, 得到相应的权系数,

11、 然后再将 全部数据代入进行分类, 记录训练次数和分类 正确率。可得如下结果:训练 样本 数输入不同组数据后的训练次数和分类正确率x1 和 x2x1 和 x3x2 和 x3正确率迭代 系数正确 率迭 代 次正确 率迭 代 次数数m=5r1=10r1=10r2=920%13340%13%445r2=10r3=1036r3=8620%0%m=15r1=10r1=10r2=920%9150%12%221r2=10r3=1076r3=9830%0%m=25r1=10r1=10r2=920%9890%11%197r2=10r3=1031r3=9600%0%m=35r1=10r1=10r2=920%961

12、0%10%141r2=10r3=1044r3=9800%0%m=45r1=10r1=10r2=900%8670%10%200r2=10r3=1039r3=1060%0%0%x1 和 x2 之间分别选取训练样本数为 5 和 45时的分类效果 :5 和 45x1 和 x3 之间分别选取训练样本数为 时的分类效果 :x2 和 x3 之间分别选取训练样本数为 5 和 45 时的分类效果 :下面是分别进行不同多次实验所得的正确率的统计结果:实验次数训练样本分类正确次数正确 率p=20个数x1 和 x3 之 间p=50p=100m=5m=15m=25m=35m=45m=5m=15m=25m=35m=45m

13、=5m=15m=25m=35m=45r1=19 , r2=20 r1=20 , r2=20 r1=20 , r2=20 r1=19,r2=20 r1=20 , r2=20 r1=50 , r2=50 r1=50 , r2=50 r1=49,r2=50 r1=50 , r2=50 r1=50 , r2=50 r1=98,r2=100 r1=97,r2=100 r1=100,r2=100 r1=97,r2=100 r1=99,r2=10097.510010097.5100100100991001009998.510098.599.5实验次 训 练 分 类 正 确 次 正确数 样本 数 率个数x1

14、和x2 之间p=20p=50p=100m=5m=15m=25m=35m=45m=5m=15m=25m=35m=45m=5m=15m=25r1=20 ,r2=20 r1=19 ,r2=20 r1=19,r2=20 r1=20,r2=20 r1=20,r2=20 r1=48 ,r2=50 r1=49,r2=50 r1=49 ,r2=50 r1=50 ,r2=50 r1=50,r2=50 r1=95 , r1=99 , r1=97,r2=10010097.597.510010098999910010097.59998.55m=45r1=98 ,99实验次 数训练样 本 个数分类正确 次数正确 率x2

15、 和x3 之间p=20m=5r1=4 ,20m=15m=25r1=0 ,50r1=4 ,37.5m=35r1=4 ,37.5p=50m=45r1=0 ,27.5m=5r1=3 ,5m=15r1=0 ,43m=25r1=13 ,34m=35r1=1 ,14分析实验结果可以得出: 无论从一次实验所得 结果还是从做多次实验所得的统计结果上来看, 利用前向二层神经网络实现 x1、x2 和 x3 两两之 间的分类,对于 x1 和 x2 之间、 x1 和 x3 之间的 分类效果是比较明显的,可以很好的将两类分 开。而对于 x2 和 x3 之间却很难用此种办法达到 很好的分类效果。四 . 实验小结 本次实验

16、主要是进行线性可分类问题的实验, 实验中分别运用感知器算法和 BP 算法进行 x1、 x2 和 x3 两两之间的分类,结果得出,只有 x1 和 x2 之间及 x1 和 x3 之间是线性可分的,而 x2和 x3 之间是无法用这两种办法分开的。本次实 验中,在运用 BP 算法进行 x1、x2 和 x3 之间的 分类之前, 还进行了异或问题的实验, 实验中采 用两层前向神经网络达到了很好的分类效果, 为 进行后面的实验打好了基础。通过本次实验, 使我对感知器算法和 BP 算法 有了更加深入的认识, 以前在神经网络这门课程 中所学的理论问题, 在本次实验中通过具体动手 进行编程,使得对当时所学知识有了

17、更加深入的 认识。在实验中也遇到了各种各样的问题, 通过 思考解决后,对我以后的学习很有帮助。 五 . 代码 1.感知器算法 clear all;k2(i,:)=k(i+50,:);close all;k3(i,:)=k(i+100,:);clc;k=load(iris.txt); k1=zeros(50,4); k2=zeros(50,4); k3=zeros(50,4); for i=1:1:50m=input( 训练样本数 m=);T1=zeros(m,4);T2=zeros(m,4);T3=zeros(m,4);k1(i,:)=k(i,:);index=randperm(50);end

18、for i=1:1:mT1(i,:)=k1(index(i),:);count=0;endif(W*T2(i,:)0)T2(i,:)=k2(index(i),:);W=W-k*T2(i,:);T3(i,:)=k3(index(i),:);count=0;endendW=0.1,0.1,0.1,0.1;count=0;if(W*T1(i,:)0)&(k=0.02;W*T2(i,:)0)cc=0;count=count+1;while(countm&ccend100)i=i+1;i=1;endcount=0;cc=cc+1;while(i=m)endccif(W*T1(i,:)0)if(0i&i5

19、1) fprintf( 第 %d 个数据被分为第2.BP 算法解决异或问 题clear all;一类,分类正确 n,i);close all;else fprintf(clc;第 %d 个数据被分为第p=0;一类,分类错误 n,i);x1=0 0 -1;1 1 -1;endx2=0 1 -1;1 0 -1;endr11=0;r22=0;if(W*k(i,:)0)while p25 a=0.5;if(50i&i0.001第 %d 个数据被分为第if mod(k,4)=1二类,分类错误 n,i);g1=x1(1,:);endd=0.1;endendendif mod(k,4)=2 g1=x2(1,

20、:);d=0.9; end if mod(k,4)=3整w22=w2;det1=a*g1*(s*w22(:,1g1=x1(2,:);:2).*o1.*(1-o1);d=0.1;w1=w1+det1;enderr=d-o2;if mod(k,4)=0pf=err2;g1=x2(2,:);k=k+1;d=0.9;endendr1=0;g2=g1*w1;for j=1:1:2o1=1./(1+exp(-g2);t1=x1(j,:)*w1;o1_y=o1 -1;g3=o1_y*w2;y1=1./(1+exp(-t1);o2=1./(1+exp(-g3);y1_y=y1 -1;% 输出层的权系数调I2=y1_y*w2;整det2=a*2*(d-o2)*o2*(1y2(j)=1./(1+exp(-I2);-o2)*o1_y;if y2(j)0.5T3=zeros(m,4);r2=r2+1;% 随机抽取 m 个训练end样本endindex=randperm(50);if r2=2forr22=r22+1;i=1:1:m % 得end到随机的训练样本p=p+1endx1(i,:)=k1(index(i),:);x2(i,:)=k2(index(i),:);d=0.9;endx3(i,:)=k3(index(i),:);

温馨提示

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

评论

0/150

提交评论