异或运算的BP算法解决_第1页
异或运算的BP算法解决_第2页
异或运算的BP算法解决_第3页
异或运算的BP算法解决_第4页
异或运算的BP算法解决_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、智能优化方法技术报告题目:基于BP算法的异或运算的解决班 级: 信科13-01班 学 号: 08133367 姓 名: 张谊坤 任课教师: 姚 睿 目 录一、 摘 要-3二、 技术路线及实现方法2.1输入层和输出层神经元数目的选择-32.2隐层层数和神经元数目选择-32.3 BP算法学习的四个阶段-4三、 实验结果及分析-5四、 总 结-5五、 参考文献-5六、 附录附录1:代 码-6附录2:个人工作-8摘要利用BP函数训练计算机使其可以输出满足精度的逻辑异或运算结果。结合本课题的特点和网络训练的思想,通过深入分析选择合适的参数;接着构建BP网络,产生训练样本;选取最优结果作为本文的最终结果,

2、并对输出结果和仿真结果进行分析。一、问题描述异或问题本质上是分类问题,要求将输入的样本组分为两类,一类样本经异或运算后结果为1,另一类经异或运算后结果为0。研究表明,BP网络特别是具有单隐层的BP网络具有较强的分类能力,能够解异或问题。二、技术路线及实现方法2.1输入层和输出层神经元数目的选择输入层神经元个数与输入样本维数相同,本实验输入样本为2维向量,所以输入层包含2个神经元。输出层神经元个数设计可根据设计者的需求设计,由于本文要解决的异或问题是单输出的0或1,所以输出层选择1个神经元。2.2隐层层数和神经元数目选择参考其他专家和学者的经验,了解到含有单隐层的BP网路能很好的解决异或问题。对

3、于隐层神经元数目的选择前人总结出了一些经验规则,本文在借鉴前人经验的基础上,依靠测试得出较适合本课题的隐层神经元数是1至3个。由于隐层神经元越多,网络越复杂,每一步训练的计算量增大,时间增长,经测试发现1至3个隐层神经元都可以达到较高精度,为简化网络,最终确定隐层神经元数为2。根据以上分析,建立出的BP网络的结构示意图如图2-1所示:AB0.0579-0.02910.05430.0999P=-0.0703Q=-0.0939C=-0.07030.08010.0605C图2-1 BP网络结构示意图图2-1中,输入层神经元编号A、B,隐藏层神经元编号P、Q,输出层神经元编号为C。对异或问题进行非线性

4、划分的BP神经网络采用3层网络结构,其中输入层和隐藏层各有2个处理单元,输出层有一个处理单元。对表2-1中的4个学习模式对轮流提供给网络,按照BP算法进行学习和训练,直至BP神经网络输出的全局误差满足要求为止。学习速率为0.6。首先给BP神经网络的各个连接权值及阈值赋予-0.1,0.1之间的随机值(具体如图2-1所示),此时,BP神经网络对应的4个输出模式产生的实际输出均为0.5左右,网络全局误差约为0.5。表 2-1 学习模式对输入期望输出实际输出全局误差A B0 000.500 110.50.51 010.501 100.50 2.3 BP算法学习的四个阶段BP神经网络采用BP算法进行学习

5、,其学习过程分为四个阶段:1 输入模式是由输入层经过隐藏层向输出层逐层传播的“模式顺传播”过程;2 网络的期望输出与实际输出之差,即误差信号,是由输出层经隐藏层向输入层逐层修正连接权值的“误差逆传播”过程。3 由“模式顺传播”过程和“误差逆传播”过称反复交替进行的网络“记忆训练”过成。4 网络趋向收敛,即网络的全局误差趋向极小值的“学习收敛”过程。调整隐含层到输出层之间的连接权值及输出层各个单元的阈调整隐含层到输出层之间的连接权值及输出层各个单元的阈调整隐含层到输出层之间的连接权值及输出层各个单元的阈值。开始连接权值及阈值初始化将学习模式对提供给网络计算隐藏层各单元的净输入与输出计算输出层各单

6、元的净输入与输出计算输出层各单元的一般化误差计算输出层各单元的一般化误差调整隐含层到输出层之间的连接权值及输出层各个单元的阈值调整输入层到隐藏层之间的连接权值及隐藏层各个单元的阈值更新学习模式对更新学习次数误差Nmax?全部学习模式训练完毕?学习结束Y调整隐含层到输出层之间的连接权值及输出层各个单元的阈Y调整隐含层到输出层之间的连接权值及输出层各个单元的阈N调整隐含层到输出层之间的连接权值及输出层各个单元的阈N调整隐含层到输出层之间的连接权值及输出层各个单元的阈图2-2 BP学习算法流程图三、实验结果与分析输出实际输出层c学写了15000次后,结果如图3-1运行结果所示:图3-1 运行结果表3

7、-1 输出结果对比输入期望输出实际输出A B0 000.01187080 110.9874511 010.9874351 100.015573在精度满足之后,实际输出十分逼近期望输出,可以看到BP算法解决异或问题是成功的。四、总结BP网络具有很强的自学习、自组织、自适应能力,分类能力较强,收敛速度快,能较好的解决2个变量的异或问题,得到的结果较为理想。BP网络隐层和输出层激活函数(特别是输出层激活函数)的选择对具有规律性期望输出数据的问题的结果有显著影响,应结合网络训练思想对具体问题进行分析。本文在充分学习了解神经网络训练思想的基础上构建适合本课题的BP网络,通过大量次的训练,并在实验中修改参

8、数,得到较为理想的结果。五、参考文献1韦巍,何衍,智能控制基础,北京:清华大学出版社,2008.11.2张良军,曹晶,蒋世忠,神经网络实用教程,机械工业出版社,2008.2.3陈晓波仿生态神经网络算法研究及其在声信号车型识别中的应用D长春:东北师范大学,2008.5.4马锐,人工神经网络原理,机械工业出版社,2009.10 附录1:代码#include#includeusing namespace std;/用bp解决异或的问题 class BPprivate: double a4=0,0,1,1;/表中的A数据 double b4=0,1,0,1;/表中的B数据 double p4=0;/用

9、来存储p的值 double q4=0;/用来存储q的值 double Sp4;/f函数处理之前的p节点的值 double Sq4;/f函数处理之前的q节点的值 double l4;/f函数处理之前的c节点的值 double d4;/全局误差 double ep4;/隐藏层的误差 double eq4;/隐藏层的误差 double y4=0,1,1,0;/期望输出 /权值-0.1-0.1之间的值 double Wap=0.0543;/节点a到节点p的权值 double Waq=0.0579;/节点a到节点q的权值 double Wbp=-0.0291;/节点b到节点p的权值 double Wbq

10、=0.0999;/节点b到节点q的权值 double Vpc=0.0801;/节点p到节点c的权值 double Vqc=0.0605;/节点q到节点c的权值 /阈值 double Rp=-0.0703;/p节点的阈值 double Rq=-0.0939;/q节点的阈值 double Rc=-0.0109; /c节点的阈值 double m=0.6,n=0.6;/mn为学习速率 public:double c4=0; /用来存储c节点的值 BP();double f(double a);/函数f,数学上是1/(1+e(-x);double fl(double a);/fl是f的微分函数void

11、 bp();/bp算法函数;int main()BP b; b.bp();coutb.c0endl;coutb.c1endl;coutb.c2endl;coutb.c3endl;/输出c的值,因为c是实际输出return 0; void BP:bp() for(int j=0;j15000;j+)/运行多次之后才能训练完成for(int i=0;i4;i+)/4组数据Spi=ai*Wap+bi*Wbp+Rp;/节点p的净输入Sqi=ai*Waq+bi*Wbq+Rq;/节点q的经输入 pi=f(Spi);/节点p的输出qi=f(Sqi);/节点q的输出li=pi*Vpc+qi*Vqc+Rc;/节

12、点c的净输入 ci=f(li);/j节点c的输出,即bp的实际输出 di=(yi-ci)*fl(li);/输出层节点即c节点的校正误差 epi=(Vpc*di)*fl(Spi);/隐藏层的p节点的校正误差 eqi=(Vqc*di)*fl(Sqi);/隐藏层的q节点的校正误差 Vpc=Vpc+m*di*pi;/修正隐藏层至输出层的连接权值 Vqc=Vqc+m*di*qi/修正隐藏层至输出层的连接权值; Rc=Rc+m*di;/修正输出层的阈值 Wap=Wap+n*epi*ai;Waq=Waq+n*eqi*ai;/修正输入层至隐藏层的连接权值 Wbp=Wbp+n*epi*bi;Wbq=Wbq+n*

13、eqi*bi;/修正输入层至隐藏层的连接权值 Rp=Rp+n*epi;/修正隐藏层的阈值 Rq=Rq+n*eqi;/修正隐藏层的阈值 double BP:f(double a)return1/(1+exp(-a);double BP:fl(double a)return f(a)-f(a)*f(a);附录2:个人工作一、我个人的主要工作是负责技术报告的撰写,技术报告中共有摘要、技术路线和实现方法、实验结果与分析、总结和参考文献五个部分,其中摘要、技术路线和实现方法、总结和参考文献等四个部分主要由我撰写。二、负责一小部分代码,BP类中一些初始化的工作,参照图2-1,根据BP神经网络的初始状态,对

14、各节点的阈值,各节点之间的权值进行初始化。AB0.0579-0.02910.05430.0999P=-0.0703Q=-0.0939C=-0.07030.08010.0605C图2-1 BP网络结构示意图class BPprivate: double a4=0,0,1,1;/表中的A数据 double b4=0,1,0,1;/表中的B数据 double p4=0;/用来存储p的值 double q4=0;/用来存储q的值 double Sp4;/f函数处理之前的p节点的值 double Sq4;/f函数处理之前的q节点的值 double l4;/f函数处理之前的c节点的值 double d4;

15、/全局误差 double ep4;/隐藏层的误差 double eq4;/隐藏层的误差 double y4=0,1,1,0;/期望输出 /权值-0.10.1之间的值 double Wap=0.0543;/节点a到节点p的权值 double Waq=0.0579;/节点a到节点q的权值 double Wbp=-0.0291;/节点b到节点p的权值 double Wbq=0.0999;/节点b到节点q的权值 double Vpc=0.0801;/节点p到节点c的权值 double Vqc=0.0605;/节点q到节点c的权值 /阈值 double Rp=-0.0703;/p节点的阈值 double

16、 Rq=-0.0939;/q节点的阈值 double Rc=-0.0109; /c节点的阈值 double m=0.6,n=0.6;/mn为学习速率 public:double c4=0; /用来存储c节点的值 BP();double f(double a);/函数f,数学上是1/(1+e(-x);double fl(double a);/fl是f的微分函数void bp();/bp算法函数;三、根据老师在课堂上的点评,对程序做了一步改进,使其对学习后的权值和阈值也有一个输出。对程序的改进如下,首先把权值和阈值的变量改为公有,以便输出:class BPprivate: double a4=0,

17、0,1,1;/表中的A数据 double b4=0,1,0,1;/表中的B数据 double p4=0;/用来存储p的值 double q4=0;/用来存储q的值 double Sp4;/f函数处理之前的p节点的值 double Sq4;/f函数处理之前的q节点的值 double l4;/f函数处理之前的c节点的值 double d4;/全局误差 double ep4;/隐藏层的误差double eq4;/隐藏层的误差double y4=0,1,1,0;/期望输出double m=0.6,n=0.6;/mn为学习速率 double c4=0; /用来存储c节点的值public: /权值-0.1

18、0.1之间的值 double Wap=0.0543;/节点a到节点p的权值 double Waq=0.0579;/节点a到节点q的权值 double Wbp=-0.0291;/节点b到节点p的权值 double Wbq=0.0999;/节点b到节点q的权值 double Vpc=0.0801;/节点p到节点c的权值 double Vqc=0.0605;/节点q到节点c的权值 /阈值 double Rp=-0.0703;/p节点的阈值 double Rq=-0.0939;/q节点的阈值 double Rc=-0.0109; /c节点的阈值 BP();double f(double a);/函数f,数学上是1/(1+e(-x);double fl(double a);/fl是f的微分函数void bp();/bp算法函数;然后,主函数的输出增加:int main()BP b;b.bp();cout”实际输出”endl;coutb.c0endl;coutb.c1endl;coutb.c2endl;coutb.c3endl;/输出c的值,因为c是实际输出cout”权值”endl;cout”ap:”b.Wapendl;cout”aq:”b.Waqendl;cout”bp:”b.Wbpen

温馨提示

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

评论

0/150

提交评论