基于BP算法的异或运算的实现_第1页
基于BP算法的异或运算的实现_第2页
基于BP算法的异或运算的实现_第3页
基于BP算法的异或运算的实现_第4页
基于BP算法的异或运算的实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业基于BP算法的异或运算的实现刘政宇 摘 要:在人工神经网络理论的基础上,利用多层感知器对异或问题进行解决。分析了BP算法的学习过程,采取BP算法编制一个C+语言的程序,实现基于BP算法的异或运算,并描述了使用BP算法实现异或问题的具体学习过程,给出了程序运行后的结果,验证了BP网络通过若干简单非线性处理单元的复合映射,可获得复杂的非线性处理能力。关键词:人工神经网络 多层感知器 BP算法 异或运算 作为一门活跃的边缘性交叉学科,神经网络的研究与应用正成为人工智能、认识科

2、学、神经生理学、非线性动力学等相关专业的热点。近十几年来,针对神经网络的学术研究大量涌现,上百种神经网络模型被提出,其应用涉及模式识别、联想记忆、信号处理、自动控制、组合优化、故障诊断及计算机视觉等众多方面,取得了令人瞩目的进展。经过近半个世纪的发展,神经网络理论在模式识别、自动控制、信号处理、辅助决策、人工智能等众多研究领域取得了广泛的成功。关于学习、联想和记忆等具有智能特点过程的机理及其模拟方面的研究正受到越来越多的重视。学习功能是神经网络最主要的特征之一。各种学习算法的研究,在人工神经网络理论与实践发展过程中起着重要作用。当前,人工神经网络研究的许多课题都致力于学习算法的改进、更新和应用

3、。1958年,美国学者Frank Rosenblatt首次定义了一个具有单层计算单元的神经网络结构,取名为感知器(Perceptron)。经过论证,单层感知器只能进行线性分类,对非线性样本的划分无法实现,例如异或问题在二维空间中就是一个非线性的样本空间分类的问题,就需要用到多层感知器,即网络应具有隐层,但对隐层神经元的学习规则尚无所知。就感知器学习规则来说,其权值的调整取决于网络期望输出与实际输出之差,而对各隐层节点来说,不存在期望输出,因而该学习规则对隐层权值调整不适用。此时需要用到误差反向传播的BP学习规则。BP(Back Propagation)网络是1986年由Rumelhart和Mc

4、Celland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。BP算法由数据流的前向计算(正向传播)和误差信号的反向传播两个过程构成。正向传播时,传播方向为输入层隐层输出层,每层神经元的状态只影响下一层神经元。若在输出层得不到期望的输出,则转向误

5、差信号的反向传播流程。通过这两个过程的交替进行,在权向量空间执行误差函数梯度下降策略,动态迭代搜索一组权向量,使网络误差函数达到最小值,从而完成信息提取和记忆过程。BP算法的学习目的是对网络的连接权值进行调整,使得调整后的网络对任一输入都能达到所期望的输出。学习过程由正向传播与反向传播组成。正向传播用于对前向网络进行计算,即对某一输入信息,经过网络计算后得出它的输出结果;反向传播用于逐层传递误差,修改神经元间的连接权值,以使网络对于输入信息经过计算后得到的输出能达到期望的误差要求。学习的方法是使用一组训练样例对网络的连接权值进行训练,每一个样例中,都包括输入及期望的输出两部分。在正向传播算法中

6、,首先将训练样例的输入信息输入到网络中,输入信息从输入层经过隐层节点逐层计算处理后,传至输出层。在计算处理过程中,每一层神经元的状态只影响下一层神经元的状态,如果在输出层得到的结果不是所期望的输出,那么就转为反向传播。反向传播把误差信号沿路径方向传回,并按一定的原则对各层神经元的权值进行修正,直到第一个隐层,这时再开始进行正向传播,利用刚才的输入信息进行正向网络计算,如果网络的输出达到了误差要求,则学习过程结束,如果达不到要求,则再进行反向传播的连接权值调整。这一过程不断反复,直到网络正向计算的输出结果达到误差要求的结果为止,这时学习过程结束。具体算法过程见右图。一旦网络进行训练后,在用于求解

7、实际问题时就只需要使用正向传播,而不需要使用反向传播了。使用BP算法实现异或问题的具体学习过程按以下步骤顺序进行:(1)网络状态初始化:用较小的随机数对网络的权值(Wji)和(Vkj)以及偏置值(j)和(k)赋初值。(2)输入第一个模式。(3)把学习模式的值作为输入层单元i的输出(Ii),用输入层到中间层的权值(Wji)和中间层单元的偏置值(j),求出对中间单元j的输入Uj以及相应的输出Hj:Uj=Ii +j,Hj= f(Uj)。上式中的f()是Sigmoid函数。(4)用中间层的输出(Hj),中间层到输入层的连接权值(Vkj)以及输出层单元的偏置值(k)求出对输出层单元k的输入Sk以及相应的

8、输出Ok:Sk=Hj +k,Ok= f(Sk)。(5)根据学习模式的教师信号Tk和输出层的输出Ok的差,求出有关输入层单元k的偏置值以及连接到其上权值的误差(k):k=(Ok-Tk) Ok(1- Ok)。(6)根据误差k,从中间层到输入层的权值(Wkj)以及中间层的输出(Hj),求出有关中间层j的偏置值以及连接到其上的权值的误差(j):j =Vkj Hj(1- Hj)。(7)根据由第(5)步求出的k以及Hj和常数,对从中间层单元j到输出层单元k的权值(Vkj)加以调整。另外,根据k和常数对输出层单元k的偏置值k加以调整:Vkj= Vkj+k Hj,k=k+k。(8)根据误差j,输入单元i的输出

9、(Ii)以及常数对从输入单元i到中间层单元j的连接权值(Wji)加以调整。根据误差(j)和常数对中间层单元j的偏置值(j)加以调整:Wji = Wji +j Ii,j =j +j。(9)输入下一个模式。(10)若有学习模式,则返回(3)。(11)更新学习次数。(12)若学习次数小于规定的次数,则返回(2)。程序运行过程及结果:程序运行后,在提示下输入“学习率”为0.999,输入“误差控制精度”为0.0001,输入“循环的最大次数”为20000,程序执行后,可以看到在result.txt中结果如下:网络学习20000次结束,误差为:0.,各层的权值如下:网络学习20000次结束,误差为:0.,各

10、层的权值如下:隐藏层到输出层权值:W00 = 10.9247,W10 = 10.8454,输入层到隐藏层权值:V00 = 6.2442,V01 = -6.7187,V10 = -6.46219,V11 = 6.56169,对应着样本实际输出为:000.010.100.110.通过这个程序实例,使用多层感知器解决了单层感知器不能解决的异或问题,也从侧面验证了BP网络通过若干简单非线性处理单元的复合映射,可获得复杂的非线性处理能力。但是从给入不同的学习率、误差控制精度和学习次数得到了不同的结果,从中也暴露了BP算法的一些局限性。第一,该学习算法的收敛速度慢,常常需要成千上万次的迭代,而且随着训练样

11、例的增多,网络性能会变差;第二,网络中隐节点个数的选取上无理论上的指导;第三,从数学角度上看,BP算法是一种梯度最速下降法,这就有可能出现局部最小的问题。当出现局部最小时,从表面上看,符合误差的要求,但这时所得到的解并不一定是问题的真正解。所以BP算法是不完备的。参考文献1 徐丽娜. 神经网络控制(第三版).电子工业出版社.2009.72 王伟. 人工神经网络原理入门与应用.北京航空航天大学出版社.1995.103 杨建刚. 人工神经网络实用教程. 浙江大学出版社.2001.14 朱大奇. 人工神经网络研究现状及其展望. 江南大学学报,2004,3(1):103110 5 宋宜斌,王培进. 多

12、层前馈神经网络改进算法及其应用.计算机工程.2003.86Bulsari A. Some Analytical Solutions to the General Approximation Problem for Feedback Neural Networks. Neural networks,1993,28(6):9919967Aibara K. Chaotic Neural Networks. Physical letter A,1991,158(8):3733768Inoue M,Nagayoshi A. A Chaos Neural-computer. Physical Letter

13、 A,1991,158(8):3733769Inoue M,Nakamoto K. Epilepsy in a Chaos Neural -computer Model,Chaos in Biology and Medicine,SPIE 1993,236:778410Kosko B. Bidirectional Associative Memories. IEEE Transactions On Man,System and Cybernetics. 1988,26(18):4959开始输入学习率开始输入学习率输入误差控制精度输入循环的最大次数打开sample.txt文件读取样本数据学习次数

14、最大次数?计算中间层单元的输出计算输出层单元的输出计算输出层单元的误差计算中间层单元的误差学习次数+1结束在result.txt写入相应结果调整中间层到输出层的连接权值,调整输出层单元的偏置值调整输入层到中间层的连接权值,调整中间层单元的偏置值否是附件二:源程序清单#include#include#include#includeusing namespace std;#define n 2#define H 2#define m 1#define T 4 /样本个数double WHm; /输出层的权矩阵double sita_hH; /隐藏层阈值double sita_om; /输出层阈值d

15、ouble VnH; /输出(隐藏)层的权矩阵double delta_om; /输出层各连接权的修改量组成的向量double delta_hH; /隐藏层各连接权的修改量组成的向量double hide_sH; /隐藏层的输入值double hide_oH; /隐藏层的输出值double output_sm; /输出层的输入值double output_om; /输出层的输出值double inputTn; /输入层的输入向量double outputTm; /期望的输出值double E; /误差double jingdu; /精度控制参数double xuexilv; /学习率int M

16、; /循环最大次数/*初始化函数*/void initialize()int i,j;for(i = 0; i H; i+)hide_si = 0;hide_oi = 0;delta_hi = 0;sita_hi = rand() / ( RAND_MAX + 1.0 );for(i = 0; i m; i+)sita_oi = rand() / ( RAND_MAX + 1.0 );output_si = 0;output_oi = 0;delta_oi = 0;for(i = 0; i H; i+)for(j = 0; j m; j+)Wij = rand() / ( RAND_MAX +

17、 1.0 );for(i = 0; i n; i+)for(j = 0; j H; j+)Vij = rand() / ( RAND_MAX + 1.0 );int main()int i,j,t,N;double error;ofstream fout( result.txt );if( !fout )cout cant create bp.txtn ;cout 计算机科学与技术学院2009级工程硕士,学号:S,刘政宇 endl;cout xuexilv;cout endl jingdu;cout endl M;ifstream fin( sample.txt );if( !fin )cou

18、t cant open sample.txtn;for(i = 0; i inputi0 inputi1 outputi0;fin.close();E = jingdu + 1;N = 0; initialize();while( E jingdu & N M )N+;for(t = 0; t T; t+)for(i = 0; i H; i+)hide_si = 0;for(j = 0; j n; j+)hide_si += Vji * inputtj;hide_si -= sita_hi;hide_oi = 1.0 / ( 1.0 + exp(-hide_si) );for(i = 0; i

19、 m; i+)output_si = 0;for(j = 0; j H; j+)output_si += Wji * hide_oj;output_si -= sita_oi;output_oi = 1.0 / ( 1.0 + exp(-output_si) );for(i = 0; i m; i+)delta_oi = output_oi * ( 1 - output_oi ) * ( outputti - output_oi );sita_oi -= xuexilv * delta_oi;for(i = 0; i H; i+)double Z = 0;for(j = 0; j m; j+)

20、Z += Wij * delta_oj;delta_hi = Z * hide_oi * ( 1 - hide_oi );sita_hi -= xuexilv * delta_hi;for(i = 0; i H; i+)for(j = 0; j m; j+)Wij += xuexilv * hide_oi * delta_oj;for(i = 0; i n; i+)for(j = 0; j H; j+)Vij += xuexilv * inputti * delta_hj;E = 0;for(t = 0; t T; t+)for(i = 0; i H; i+)hide_si = 0;for(j = 0; j n; j+)hide_si += Vji * inputtj;hide_si -= sita_hi;hide_oi = 1.0 / ( 1.0 + exp(-hide_si) );for(i = 0; i m; i+)output_si = 0;for(j = 0; j H; j+)output_si += Wji * hide_oj;output_si -= sita_oi;output_oi = 1.0 / ( 1.0 + exp(-output_si) );error =

温馨提示

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

评论

0/150

提交评论