




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BP神经网络的学习算法H20714024陈宁轩07应用心理学摘要:本文主要探讨的人工神经网络中临P网络,它是前馈神经网络中的核心部分,也 是最精华的部分。本文详细介绍了BP网络学习算法的C语言实现过程,同时也对其局限 性进行了探讨。关键词:人工神经网络,BP学习算法,完备性可能没有哪个学科能如人工神经网络一样受到如此多学科的关注它的出现不仅对于 人工智能,而且对于心理学、语言、神经生理学、哲学都具有重要意义。目前,神经网络 模型有上百种,其中,误差反向传播神经网維rror BackPropagation NeuralNetwork), 简称BP神经网络,应用最为广泛和成功,它具有强大的非线性映
2、射能力,在处理非线性 复杂问题方面具有特殊的优势,在工程、金融、医学、语言学等众多领域都有重要应用, 众多认知科学都以它为模型进行探讨和分析其联结主义工作范式不仅推动了人工智能研 究的范式转换,而且具有重要的认知意义,为认知心理学、语言学等学科联结主义范式研 究。带来了现实的可操作模型。一人工神经网络的原理神经元是大脑中的细胞,它的主要功能是收集,处理和分发电信号。大脑的信息处理 能力被认为主要是从这种神经元构成的网络中涌现出来的由于这个原因,一些早期的人 工智能工作致力于创造人工神经网络。(这个领域的其它名称包括联结主义,并行分布处 理,以及神经计算。)一个最简单的神经元数学模型表现为:当输
3、入的线性组合超过一定 阈限时,它会“激发”。从1943年开始,人们开发了许多更精细的和更实际的模型,用 于模拟人脑中的神经元和更大的系统直到现在的计算机神经学领域。另一方面,人工智 能及统计学的学者开始对神经元网络中更抽象的属性感兴趣匕如它们执行分布式计算的 能力,对有噪声输入的容忍能力以及学习的能力等尽管我们现在了解到其它种类的系统 包括贝叶斯网络一一也有这样的特性但神经元网络仍然是学习系统中一个最流行和 有效的形式,而且它们自身也值得研究。1. 人工神经网络的组成人工神经网络模型如下图所示,主要有三个基本要素组成:一组连接,对应于生物 神经元的突触,其连接强度由各连接上的权值表示,权值为正
4、表示激活,为负表示抑制。 一个求和单元。用于求取各输入信号的加权和线性组合)。一个非线性激励函数。非 线性映射作用并将神经元输出幅度限制在一定范围之内一般限制在0,1】或【1,1】之 间)此外还有一个阈值bk。2. 激活函数激励函数一般有非线性特性。常用的激发函数有(a)阈值型,(b)分段线性型,(c) Sigmoid函数型,(d)双曲正切型,如下图所示:(t)(4*13. 人工神经网络的结构人工神经网络中,各神经元的连接方式一般有很多种不同的链接方式就构成了网络 的不同连接模型。常见的连接模型有前向网络,从输入层都输出层有反馈的网络层内有 互联的网络和网络内任意两个神经元都可以互联的互联网络
5、前向网络中,神经元分层排 列,有输入层,中间层(又称隐层,可有多层)和输出层,每一层神经元只接受来自前一 层神经元的输出;从输入层到输出层有反馈的网络与前向网络的区别仅在于输出层上的 某些输出信息又作为输出信息送到输入层的神经元上层内有互联的网络是指,除了像前 两种网络一样接受来自前一层神经元的信息外,网络中间一层上的神经元还可以相互作 用;而互联网络则是指网络中的任意两个神经元间都可以有连接。4. 人工神经网络的主要特征 能较大的模拟人的形象思维; 具有较大规模并行协同处理能力; 具有较强的学习能力; 具有较强的容错能力和联想能力; 是一个大规模自组织,自适应的非线性动力系统。二. BP神经
6、网络的建立BP神经网络是人工神经网络的一个典型模型,全称是反向传播算法,是一种多层感 知器结构,由若干层神经元组成,网络不仅有输入层节点,输出层节点,还可以有一层或 多层隐含层节点。由于BP算法过程包含从输出节点开始,反向地向第一隐含层(即最接 近输入层的隐含层)传播由总误差引起的权值修正,所以称为反向传播。三. BP网络的学习算法BP算法的学习目的是对网络的连接权值进行调整,使得调整后的网络对任一输入都 能达到所期望的输出。学习过程由正向传播与反向传播组成正向传播用于对前向网络进 行计算,即对某一输入信息,经过网络计算后得出它的输出结果反向传播用于逐层传递 误差,修改神经元间的连接权值,以使
7、网络对于输入信息经过计算后得到的输出能达到期 望的误差要求。学习的方法是使用一组训练样例对网络的连接权值进行训练每一个样例中,都包括 输入及期望的输出两部分在正向传播算法中首先将训练样例的输入信息输入到网络中, 输入信息从输入层经过隐层节点逐层计算处理后传至输出层。在计算处理过程中,每一 层神经元的状态只影响下一层神经元的状态,如果在输出层得到的结果不是所期望的输 出,那么就转为反向传播。反向传播把误差信号沿路径方向传回,并按一定的原则对各层神经元的权值进行修 正,直到第一个隐层,这时再开始进行正向传播利用刚才的输入信息进行正向网络计算, 如果网络的输出达到了误差要求,则学习过程结束,如果达不
8、到要求,则再进行反向传播 的连接权值调整。这一过程不断反复,直到网络正向计算的输出结果达到误差要求的结果为止这时学 习过程结束。一旦网络进行训练后,在用于求解实际问题时就只需要使用正向传播而不 需要使用反向传播了。具体算法见下图:求囱层输櫛出雇各牛元苗岀爭期餐轴也与出谒 H顽占于习修正三.BP网络学习算法模拟程序下面的程序是用C语言编制的。在该程序中设置了输入模式文件,输出模式文件;权 值文件和阈值文件。在进行学习之前,应首先对这四个文件赋值,输入模式文件、输出模 式文件应根据将要学习的模式成对的赋值给这两个文件,权值文件和阈值文件可以赋给 随机值,也可以按一定算法给出。对于比较大的网络,初始
9、值可以选小一点比较好,权值 和阈值都可以去正值或。根据经验可取1或-1做又的数值。程序如下:#i nclude<stdio.h>#in clude<math.h>#defi ne MAX_PATT 100#defi ne MAX_NODE 100#defi ne NUM_LAYER 3+1#defi ne ON 1#defi ne OFF 0double wtNUM_LAYER-1MAX_NODEMAX_NODE,delta_wtNUM_LAYER-1MAX_NODEMAX_NODE,bfaNUM_LAYERNUM_LAYER,bfbNUM_LAYERNUM_LAYER
10、,patt_i nM AX_NODE,patt_outMAX_NODE,gNUM_LAYERMAX_NODE,idiMAX_PATTMAX_NODE,idoMAX_PATTMAX_NODE,ita,alpha;int ni,mo,mi, no, nodeNUM_LAYER,cou nter;mai n()int i,j,k,stop_flag,pcou n,faMAX_PATT,cou nter,sfa,sfat;double jaMAX_NODE;/程序初始化stop_flag=OFF;pcoun=0; counter=0; for(i=1;i<NUM_LAYER;i+)printf(
11、"%d the larger node number=",i); scanf("%d",&nodei);/ 输入网络结构 printf("coustant value ita="); scanf("%d",&ita);/ 输入常数 printf("coustant value alpha="); scanf("%d",&alpha); / 输入常数 rwt_list(); / 读权值数据文件子程序 rg_list(); / 读阈值数据子程序 get_i
12、n(); / 输入模式子程序 get_out(); / 输出模式子程序 while(stop_flag!=ON) while(stop_flag!=ON)for(i=1;i<ni;i+) /ni: 模式对数 fai=0;for(j=1;j<=mi;j+) /mi: 输入模式长度 patt_inj=idikj;for(j=1;j<=mo;j+) /mo: 输出模式长度 patt_outj=idokj;/ 拷贝输入输出模式 for(i=1;i<=node1;i+) bfa1i=patt_ini;for(i=1;i<=node3;i+) bfa3i=patt_outi;
13、bfa_calculate(2); bfa_calculate(3); for(i=1;i<=node3;i+)ja2=bfa3i-patt_outi; if(jai<0.1&&jai>0.2) fak+=1;if(pcoun=10)&&(jai>0.1|jai<-0.1) printf("output patlern%d%d=%7.6fn",k,i,bfa3i); printf(" patt_out%d=%7.6fn",i,patt_outi); if(fak=node3)stop_flag
14、=ON;/ 根据误差反传递算法计算输出隐藏层误差 elsebfb2_calculate();bfb1_calculate(); / 修改权值update_weight(1); update_weight(2);counter+;pcoun+; if(pcoun=101) wt_list();g_list();pcoun=1; sfa=0;for(i=1;i<=ni;i+) sfat=fai;if(sfa=ni*node3) stop_flag=ON; printf(" counter=%d n",counter); wt_list(); g_list();int bf
15、a_calculate(int n_layer) /计算节点的输出int j,i;double sum,exp(); for(j=1;j<=noden_layer-1;j+)sum=0.0; for(i=1;i<=noden_layer-1;i+) sum-=wtn_layer-1ji*bfan_layer-1i;sum-=gn_layerj; bfan_layerj=1.0/(1.0+exp(sum); if(bfan_layerj<0.01) bfan_layerj=0.01; if(bfan_layerj>0.99) bfan_layerj=0.99; retur
16、n(0);int bfb2_calculate() / 计算输出层误差 int j;double a,b,c; for(j=1;j<=node3;j+)a=bfb3j-bfa3j; b=bfa3j;c=1.0-b; bfb2j=a*b*c;g3j=g3j+bfb2j; return(0);int bfb1_calculate() / 计算隐藏层误差 int j,k;double sum,val; for(j=1;j<=node2;j+)sum=0.0;for(k=1;k<=node3;k+) sum+=bfb2k*wt2kj;val=bfa2j;bfb1j=val*(1.0-
17、val)*sum; g2j=g2j+bfb1j;return(0);int update_weight(int n_layer) / 权值修改int i,j;double val;for(j=1;j<=noden_layer+1;j+) for(i=1;i<=noden_layer;i+) val=ita*bfbn_layerj*bfan_layeri; val+=alpha*delta_wtn_layerji; wtn_layerji+=val; delta_wtn_layerji=val;return 0;int get_in() / 取输入模式文件int x,y;FILE *
18、fp,*fopen(); fp=fopen("pintput.dat","r"); fscanf(fp,"%d %d",&ni,&mi); for(x=1;x<=ni;x+)for(y=1;y<=mi;y+)fscanf(fp,"%lf",&idixy); if(idixy=0) idixy=0.01;else idixy=0.9;fclose(fp);return(0);int get_out() / 取教师模式文件int x,y;FILE *fp,*fopen(); fp=f
19、open("output.dat","r"); fscanf(fp,"%d %d",&no,&mo); for(x=1;x<=no;x+)for(y=1;y<=mo;y+)fscanf(fp,"%lf",&idoxy); if(idixy=0) idoxy=0.01; else idoxy=0.9; fclose(fp); return(0); int wt_list() / 写权值数据文件 int x,y,j;FILE *fp,*fopen();fp=fopen("w
20、tl.dat","w"); for(x=1;x<3;x+)for(y=1;y<=nodex+1;y+) for(j=1;j<=nodex;j+) fprintf(fp,"%lfn",wtxyj); fclose(fp); return(0);int g_list() / 写阈值数据文件 int x,y;FILE *fp,*fopen();fp=fopen("gl.dat","w"); for(x=1;x<3;x+)for(y=1;y<=nodex;y+)fprintf(fp,"%lfn",gxy); fclose(fp); return(0);int rwt_list() / 读权值数据文件 int x,y,j;FILE *fp,*fopen();fp=fopen("wtl.dat","r"); for(x=1;x<3;x+)for(y=1;y<=nodex+1;y+) for(j=1;j<=nodex;j+) fprintf(fp,"%lfn",wtxyj); delta_wtxyj=0.0; fclose(fp);return(0);int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家公务员录用考试公共基础知识预测模拟试卷及答案(共六套)
- 高中主题班会 高二上学期异性交往的距离主题教育班会课件
- 交通安全教育课件小班
- DB34-T 3500.5-2024 气象灾害预警等级 第5部分:低温冰冻
- 国企生产安全培训
- 金融基础知识点
- 数学(理科)-江西省萍乡市高考理科数学押题试卷
- 防震减灾知识宣传教育
- 雾霾知识讲座
- 社保号码个人身份序列关联
- 6.1认识经济全球化(上课)公开课
- 无创神经调控技术辅助阿尔茨海默病治疗的中国专家共识(2023)要点
- 六宫数独题目
- 购买设备前的评估报告
- 韩愈简介完整
- 电梯主机轴承维修施工方案
- 三年级下册口算天天100题(A4打印版)
- 《学前儿童科学教育》第二章 幼儿科学教育的目标与内容课件
- 马克思主义与社会科学方法论习题与答案
- 幕墙开启扇维修施工方案
- 新人教版七年级上册英语单词默写-英译汉
评论
0/150
提交评论