人工神经网络BP算法及其改进在DELPHI下的实现.doc_第1页
人工神经网络BP算法及其改进在DELPHI下的实现.doc_第2页
人工神经网络BP算法及其改进在DELPHI下的实现.doc_第3页
人工神经网络BP算法及其改进在DELPHI下的实现.doc_第4页
人工神经网络BP算法及其改进在DELPHI下的实现.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

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

文档简介

人工神经网络BP算法及其改进在Delphi下的实现指导老师:武妍 学号:0520080227 姓名:何斌摘要 :人工神经元网络的学习算法在小规模相似模式的识别中得到了广泛的应用 ,本文给出了一种算法在Delphi 7.0环境下的实现方法。关键词 :人工神经元网络 ;算法 ;Delphi 7.01引言人工神经元网络是由大量简单单元以及这些单元的分层组织大规模并行联结而成的一种网络 ,它力图象生物神经系统一样处理事物 ,实现人脑的某些功能1 半个世纪以来 ,它在非线性系统、优化组合、模式识别等领域得到了广泛的应用,特别是 80年代以来 ,人们应用前馈网络的误差反算法()对小规模相似模式的识别进行了大量的研究.2算法权值及阈值调整公式误差反传算法 ()是在 1986年提出的一种前馈阶层网络的学习算法 前馈阶层网络包含输入层、隐含层和输出层 ,各层之间实行全连接 ,层内神经元之间无连接 ,网络的拓扑结构如图 1所示: 为输入层神经元的数目 ,为隐含层层神经元的数目 ,为输出层神经元的数目 ,对于一个输入样本 ,经过权值、阈值和作用函数运算后 ,得到一个输出 ,然后让它与期望的样本进行比较 ,若有偏差 ,则从输出开始反向传播该偏差 ,进行权值、阈值调整 ,使网络输出逐渐与希望输出一致.设网络输入层共有个神经元 ,序号为,=1,2,隐含层共有个神经元,序号为,=1,2,输出层有个神经元,序号,=1,2, 输入层中第个神经元与隐含层中第个神经元之间的连接权为,隐含层中第个神经元的阈值为,隐含层中第个神经元与输出层中第个神经元之间的连接权为,输出层中第个神经元的阈值为,为隐含层中第个神经元的输出,为输出层中第个神经元的输出。2 训练算法流程的描述 3 在delphi 7.0环境下实现BP改进算法的关键步骤 31 对于各初始变量赋值 各初始变量的声明如下:(以下变量全部声明为全局变量)feature:array of real; /输入层各单元的输出值 th1:array of real; /隐含层各神经元的阈值 th2:array of real; /输出层各神经元的阈值 w1:array of array of real; /输入层于隐含层之间的权值 w2:array of array of real; /输出层与隐含层之间的权值 Y1,Y2:array of real; /隐含层、输出层各神经元的输出 D1,D2:array of real; /隐含层、输出层各神经元的一般化误差 在对变量赋初始值时,考虑过两种方案: a 人工赋值 给出特定输入控件,逐个进行赋值。部分输入算法如下: /以下对输入层神经元初始赋值(一维) feature0=feature1= j := 1; if edit1.Text then begin str := edit8.Text; str1:=; for i:=0 to inputnum-1 do begin str3 := str; str1 := copy(str3,length(str1)+1,Pos(,str3)-1);/获取字符串然后获取长度 if AnsiContainsText(str3,) then /返回字符串AText是否包含子串ASubText begin str2 := copy(str3,1,Pos(,str3)-1);/获取自己想要的值 j := j + 1; if jinputnum+1 then Exit; /这里变量的值根据你数组的大小定 end else begin str2 := copy(str3,1,Length(str3); end; str3 := copy(str3,Pos(,str3)+1,length(str3)-length(str1)-1);/对剩余的字符串进行处理。 str := str3; featurei := strtofloat(str2); end; end else begin showmessage(数组赋值不能为空); edit8.SetFocus; exit; end; if jinputnum then /这里变量的值根据你数组的大小定 begin showmessage(你输入的数字只有+inttostr(j)+个数字); end;此方法的的缺点在于只能对极少数的值赋值,一旦神经元个数有所增加,将使输入过程极为繁琐。故而采用第二种输入方法随机数方法。b.随机数方法部分算法如下: randomize; for i:=0 to inputnum-1 do begin featurei:=-0.5+random(1001)/1000; end;完成各初始值的输入。32 BP算法描述function tform1.oneinput(teacher:integer;a:array of real):real; /主体函数完成计算的全过var i,j,imax:integer;begin ret:=0.0; max:=-2.0; calcul(a); /调用calcul,计算隐含层和输出层各神经元的输出 /以下计算输出层单元的一般化误差 for i:=0 to outnum-1 do begin if iteacher then begin D2i:=-1*(Y2i-LOW)*(1-Y2i*Y2i)/2.0; end else begin D2i:=-1*(Y2i-HIGH)*(1-Y2i*Y2i)/2.0; end; end; /以下计算隐含层各神经元的一般化误差 for i:=0 to hidnum-1 do begin D1i:=0; for j:=0 to outnum-1 do begin D1i:=D1i+(1-Y1i*Y1i)*D2j*w2ij/2.0; end; end; /以下调整隐含层与输出层之间各连接权与输出层各神经元的阈值 for i:=0 to outnum do begin for j:=0 to hidnum do begin DW2ji:=bili*D2i*Y1j-xuexi*DW2ji; w2ji:=w2ji+DW2ji; end; Dth2i:=-1*bili*D2i-xuexi*Dth2i; th2i:=th2i+ Dth2i; end; /以下调整输入层与隐含层的连接权值和隐含层各神经元的阈值 for i:=0 to hidnum do begin for j:=0 to inputnum do begin DW1ji:=bili*D1i*featurej-xuexi*DW1ji; w1ji:=w1ji+DW1ji; end; Dth1i:=-1*bili*D1i-xuexi*Dth1i; th1i:=th1i+Dth1i; end; /以下计算输出层的均方误差 for i:=0 to outnum do begin if maxY2i then begin max:=Y2i; imax:=i; end; if iteacher then begin ret:=ret+(LOW-Y2i)*(LOW-Y2i); end else begin ret:=ret+(HIGH-Y2i)*(HIGH-Y2i); end; if imax=teacher then begin oneinput:=ret; end; end;end;其中calcul函数描述如下:procedure tform1.calcul(a:array of real); /计算隐含层和输出层各神经元的输出var i,j:integer; x:real;begin for i:=0 to hidnum-1 do begin x:=th1i; for j:=0 to inputnum-1 do begin x:=x+w1ji*aj; Y1i:=(1.0/(1.0+exp(-x); end; end; for i:=0 to outnum-1 do begin x:=th2i; for j:=0 to hidnum-1 do begin x:=x+w2ji*Y1j; Y2i:=(1.0/(1.0+exp(-x); end; end;end;4. 结果输出与分析例:一次正确稳定运行后,在jilu.txt文件下输出的前9条误差如下: 第1次均方误差为: 1.07420212640185E-0001第2次均方误差为: 9.97728953568864E-0002第3次均方误差为: 9.38535833998982E-0002第4次均方误差为: 8.79126589224403E-0002第5次均方误差

温馨提示

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

评论

0/150

提交评论