ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:65.51KB ,
资源ID:8538468      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8538468.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(BP神经网络算法原理.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

BP神经网络算法原理.doc

1、BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每个样本包括输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wij和隐层节点与输出节点之间的联接强度Tjk以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。 一 BP神经网络模型 BP网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。 (

2、1)节点输出模型 隐节点输出模型:Oj=f(∑Wij×Xi-q j)    (1) 输出节点输出模型:Yk=f(∑Tjk×Oj-q k) (2) f-非线形作用函数;q -神经单元阈值。 (2)作用函数模型 作用函数是反映下层输入对上层节点刺激脉冲强度的函数又称刺激函数,一般取为(0,1)内连续取值Sigmoid函数:                        f(x)=1/(1+e-x)                   (3) (3)误差计算模型 误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数:                     Ep=1/2×∑

3、tpi-Opi)2                (4) tpi- i节点的期望输出值;Opi-i节点计算输出值。 (4)自学习模型 神经网络的学习过程,即连接下层节点和上层节点之间的权重拒阵Wij的设定和误差修正过程。BP网络有师学习方式-需要设定期望值和无师学习方式-只需输入模式之分。自学习模型为                        △Wij(n+1)= h ×Фi×Oj+a×△Wij(n) (5) h -学习因子;Фi-输出节点i的计算误差;Oj-输出节点j的计算输出;a-动量因子。 二 BP网络模型的缺陷分析及优化策略 (1)学习因子h 的优化 采用变步长法

4、根据输出误差大小自动调整学习因子,来减少迭代次数和加快收敛速度。 h =h +a×(Ep(n)- Ep(n-1))/ Ep(n) a为调整步长,0~1之间取值 (6) (2)隐层节点数的优化      隐 节点数的多少对网络性能的影响较大,当隐节点数太多时,会导致网络学习时间过长,甚至不能收敛;而当隐节点数过小时,网络的容错能力差。利用逐步回归分析 法并进行参数的显著性检验来动态删除一些线形相关的隐节点,节点删除标准:当由该节点出发指向下一层节点的所有权值和阈值均落于死区(通常取±0.1、±0.05等区间)之中,则该节点可删除。最佳隐节点数L可参考下面公式计算: L=(m+n)1/2+

5、c (7) m-输入节点数;n-输出节点数;c-介于1~10的常数。 (3)输入和输出神经元的确定 利用多元回归分析法对神经网络的输入参数进行处理,删除相关性强的输入参数,来减少输入节点数。 (4)算法优化 由于BP算法采用的是剃度下降法,因而易陷于局部最小并且训练时间较长。用基于生物免疫机制地既能全局搜索又能避免未成熟收敛的免疫遗传算法IGA取代传统BP算法来克服此缺点。 该程序实现神经网络的BP算法,输入节点数,输出节点数,隐层数,隐层节点数任意,由用户决定。其中隐层数指的是总共曾数包含输出层,比如说异或算法为2层,第一层节点数为2,第二层也即输出层节点数为1,输入点数为2 。

6、但是该程序对异或算法实现并不理想,对多层多节点的神经网络有较好的结果。#include "iostream.h" #include #include #include #include #include "stdio.h " #define MAXCOUNT 1e5 //迭代训练次数上限 // 精度0.001的随机浮点数,范围在-0.5——0.5 float randf() { return (float)((rand() % 1001) * 0.001f-0.5); } //高斯随机数产生

7、函数 double gaussrand() {   static double V1, V2, S;      static int phase = 0;      double X;      if(phase == 0) {    do {       double U1 = (double)rand() / RAND_MAX;       double U2 = (double)rand() / RAND_MAX;       V1 = 2 * U1 - 1;       V2 = 2 * U2 - 1;       S = V1 * V1 + V2 * V2;

8、   } while(S >= 1 || S == 0);    X = V1 * sqrt(-2 * log(S) / S);      } else    X = V2 * sqrt(-2 * log(S) / S);      phase = 1 - phase;      return X; } //定义一个多层前向BP网络 class BP {public: double ***p;//记录所有的权值 double ***ddp;//记录所有的权值增量 int *pnode;//记录每一层的节点数 double **pnodey;//记录每组每一层的节点的输

9、出值 double **ddlj;//记录每组每一层的节点的ddlj double **pX;//记录输入样本 double **pY;//记录输入理想输出值 int Sidenum; int Inputnodenum; int outputnodenum; int yangbenzushu; BP() { Sidenum=0; Inputnodenum=0; outputnodenum=0; yangbenzushu=0;} ~BP() { for(int m=0;m

10、m+1];n++)    {delete[] p[m][n];    delete[] ddp[m][n];}    delete[] p[m];       delete[] ddp[m]; }         delete[] p;       delete[] ddp;          p=NULL;       ddp=NULL; if(p==NULL) delete [] pnode; for(int M=0;M

11、nodey; delete[] ddlj; pnodey=NULL; ddlj=NULL; } //完成所有权值的初始化 void getW(int sidenum,int inputnodenum,int outputnodenum1,int yangbenzu) {   Sidenum=sidenum;      yangbenzushu= yangbenzu;     Inputnodenum=inputnodenum; outputnodenum=outputnodenum1; p=new double **[sidenum]; ddp=new double *

12、[sidenum]; pnode=new int [sidenum+1];//包含输入层输出层每一层的节点数 for(int i=0;i>data;     pnode[i]=data; } for (int j=0;j

13、k

14、randf();//每一层的权值初始化     }         } } //为记录每一层的节点的输出值和ddlj的指针开辟内存 pnodey=new double *[Sidenum]; ddlj=new double *[Sidenum]; for(int p=0;p

15、 } /**********************/ //每个节点输出函数 double fas(double s) { double t; t=1.0/(exp(-s)+1); return t; } /************************************************/ //该函数用来记录样本值和理想输出值 void INPUT(int yangbenzushu1 ) {   pY=new double*[yangbenzushu1]; pX=new double*[yangbenzushu1]; for(int yu=0;yu

16、angbenzushu1;yu++) { pX[yu]=new double[Inputnodenum+1];     pY[yu]=new double[outputnodenum+1]; } //每组样本的首值赋为1    for(int yu1=0;yu1

17、um;yy++) { if(yy==Inputnodenum) cout<

18、y1<<"]="<<' ';    cin>>pY[yuy1][yy1]; } } /****************************************************************************/ //计算每个节点的输出值函数 double computeYl(int KK)//KK代表第几组组号 { double sum1=0; //把所有的层的每一个节点的输出值算出来并记录在 pnodey里,不包含输入点值    for(int y=0;y

19、r

20、enum;j++) sum1+=pow(pY[KK][j]-pnodey[Sidenum-1][j],2); return sum1; } /**********************************************************/ //Compute Back-Propagation-Errors void ComputeBackPropagationErrors(int gf)//gf代表组号 {//计算所有的ddlj[][] //for(int gf=0;gf

21、1;q>=0;q--)//从最后一层开始 {    if (q==Sidenum-1)//如果是最外一层的话    {   for(int rt=0;rt

22、       for(int fg=0;fg

23、for(int JJ=0;JJ

24、/ void UpdatetheWeightsusingBPAlgorithm() { for(int cent=0;cent

25、/ double xunlianErrors()//定义训练误差函数 { double error=0;    double sum=0;    double temp=0;    double temp1=0; for(int gf1=0;gf1

26、<

27、ouble sum=0;    double temp=0;    double temp1=0; for(int gf1=0;gf1

28、 cout<<"用校验集所得到的正确率:"<

29、um-1][jj]>0) pnodey[Sidenum-1][jj]=1;     else pnodey[Sidenum-1][jj]=0;    if(pY[KK][jj]==pnodey[Sidenum-1][jj])count++; }     av=(double)count/outputnodenum; return av; } /***********************************************************************/ void freeINput() { if(pX!=NULL) {for(int

30、 u=0;u

31、oid wputout() {   for (int j=0;j

32、<>inputnodenum>>outnodenum>>sidenu

33、m; cout<<"请输入样本组数"<>yangbenzunum; //第一步初始化所有的权值 bp.getW(sidenum,inputnodenum,outnodenum,yangbenzunum); //第二步输入样本组 bp.INPUT(yangbenzunum); for(;;count++) { double sum=0;     double temp=0; for(int fuzu=0;fuzu

34、ute Back-Propagation-Errors bp.ComputeBackPropagationErrors(fuzu); //第五步Update the Weights using BP Algorithm bp.UpdatetheWeightsusingBPAlgorithm();     sum+=temp; } //第六步判断是否收敛 error=sum/2*yangbenzunum; //freopen("debug\\out.txt","w",stdout); //fp=freopen( "out.txt", "w", stdout) ; /

35、/ cout<

36、t();//释放X Y空间    break; } } cout<<"权值为:"<>jiaoyannum; bp.INPUT(jiaoyannum); double jiaoyanER=bp.jiaoyanErrors(jiaoyann

37、um); cout<<"校验误差为:"<

38、层(output layer)   摘 要:BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。   关键词:固定权值;gauss消元法;BP算法   人工神经网络(artificial neural networks,ANN)系统是20世纪40年代后出现的,它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点,在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其

39、误差反向传播算法(Error Back-propagation Training,简称BP网络)可以逼近任意连续函数,具有很强的非线性映射能力,而且网络的中间层数、各层的处理单元数及网络的学习系数等参数可根据具体情况设定,灵活性很大,所以它在许多应用领域中起到重要作用。近年来,为了解决BP神经网络收敛速度慢、不能保证收敛到全局最小点,网络的中间层及它的单元数选取无理论指导及网络学习和记忆的不稳定性等缺陷,提出了许多改进算法。   1 传统的BP算法简述   BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望

40、向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下:   (1)初始化,随机给定各连接权[w],[v]及阀值θi,rt。   (2)由给定的输入输出模式对计算隐层、输出层各单元输出   bj=f(■wijai-θj) ct=f(■vjtbj-rt)   式中:bj为隐层第j个神经元实际输出;ct为输出层第t个神经元的实际输出;wij为输入层至隐层的连接权;vjt为隐层至输出层的连接权。   dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj)   式中:dtk为输出层的校正误差;ejk为隐层的校正误

41、差。   (3)计算新的连接权及阀值,计算公式如下:   vjt(n+1)=vjt(n)+?琢dtkbj wij(n+1)=wij(n)+?茁ejkaik   rt(n+1)=rt(n)+?琢dtk θj(n+1)=θj(n)+?茁ejk   式中:?琢,?茁为学习系数(0<?琢<1,0<?茁<1)。   (4)选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。   传统的BP算法,实质上是把一组样本输入/输出问题转化为一个非线性优化问题,并通过负梯度下降算法,利用迭代运算求解权值问题的一种学习方法,但其收敛速度慢且容易陷入局部极小,为此提出了一种新的算法,

42、即高斯消元法。   2 改进的BP网络算法   2.1 改进算法概述   此前有人提出:任意选定一组自由权,通过对传递函数建立线性方程组,解得待求权。本文在此基础上将给定的目标输出直接作为线性方程等式代数和来建立线性方程组,不再通过对传递函数求逆来计算神经元的净输出,简化了运算步骤。没有采用误差反馈原理,因此用此法训练出来的神经网络结果与传统算法是等效的。其基本思想是:由所给的输入、输出模式对通过作用于神经网络来建立线性方程组,运用高斯消元法解线性方程组来求得未知权值,而未采用传统BP网络的非线性函数误差反馈寻优的思想。   2.2 改进算法的具体步骤   对给定的样本模式对,随机选

43、定一组自由权,作为输出层和隐含层之间固定权值,通过传递函数计算隐层的实际输出,再将输出层与隐层间的权值作为待求量,直接将目标输出作为等式的右边建立方程组来求解。   现定义如下符号(见图1):x (p)输入层的输入矢量;y (p)输入层输入为x (p)时输出层的实际输出矢量;t (p)目标输出矢量;n,m,r分别为输入层、隐层和输出层神经元个数;W为隐层与输入层间的权矩阵;V为输出层与隐层间的权矩阵。具体步骤如下:   (1)随机给定隐层和输入层间神经元的初始权值wij。   (2)由给定的样本输入xi(p)计算出隐层的实际输出aj(p)。为方便起见将图1网络中的阀值写入连接权中去,令:

44、隐层阀值θj=wnj,x(n)=-1,则:   aj(p)=f(■wijxi(p)) (j=1,2…m-1)。   (3)计算输出层与隐层间的权值vjr。以输出层的第r个神经元为对象,由给定的输出目标值tr(p)作为等式的多项式值建立方程,用线性方程组表示为:   a0(1)v1r+a1(1)v2r+…+am(1)vmr=tr(1)a0(2)v1r+a1(2)v2r+…+am(2)vmr=tr(2) ……a0(p)v1r+a1(p)v2r+…+am(p)vmr=tr(p) 简写为: Av=T   为了使该方程组有唯一解,方程矩阵A为非奇异矩阵,其秩等于其增广矩阵的秩,即:r(A)=r(A┊B),且方程的个数等于未知数的个数,故取m=p,此时方程组的唯一解为: Vr=[v0r,v2r,…vmr](r=0,1,2…m-1)   (4)重复第三步就可以求出输出层m个神经元的权值,以求的输出层的权矩阵加上随机固定的隐层与输入层的权值就等于神经网络最后训练的权矩阵。   3 计算机运算实例   现以神经网络最简单的XOR问题用VC编程运算进行比较(取神经网络结构为2-4-1型),传统算法和改进BP算法的误差(取动量因子α=0.001 5,步长η=1.653)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服