bp神经网络通用4篇
【引言】阿拉题库漂亮网友为您分享整理的“bp神经网络通用4篇”范文资料,以供参考学习,希望这篇文档资料对您有所帮助,喜欢就下载分享给朋友吧!
bp神经网络【第一篇】
关键词:BP神经网络;气水识别;预测效果
中图分类号:TP21 文献标识码:A
人工神经网络是人类通过模拟脑神经系统的记忆存储与再现、联想思维、目的行为以及更为不易捉摸的情感和灵感等信息活动,揭示脑物理平面与认知平面的相互联系的作用机理,通过计算机实现学习 、训练、修正、确认和计算的一种计算机信息处理系统。自50年代以来,神经网络技术经历了萌芽、探索、学科的诞生和茁壮成长,成为当今全世界关注的高科技热点,显示出了广阔的应用前景。
BP人工神经网络(Back Propagation Network)是由大量的神经元相互连接而成的自适应非线性动态系统。人工神经网络作为生物控制论的一个成果,其触角已延伸到各个工程领域,吸引着不同专业领域放入专家从事这方面的研究和开发工作,并且在这些领域中形成了新的生长点。人工神经网络从理论探索进入大规模工程实用阶段,到现在也只有短短十几年的时间。它的工作原理和功能特点接近于人脑,不是按给定的程序一步一步地机械执行,而是能够自身适应环境,总结规律,完成运算、识别和控制工作。一般人工神经网络的主要特征为:大规模的并行处理和分布式的信息储存;极强的自学、联想和容错能力;良好的自适应性和自组织性;多输入、多输出的非线性系统。这些特征使它基本符合工程的要求。
神经网络的基本原理
神经网络系统由大量的神经元广泛连接形成。每一个神经元都是一个基本处理单元, 将从其它众多神经元中接收到的信息, 经过非线性计算,输出给另一些神经元。简单的人工神经元如图4-1所示:X1,X2,...,Xi,...,Xn是第j个神经元接收到的信息ω1j,ω2j,...,ωij,...,ωnj为该神经元与提供信息神经元之间的连接权;θj为单元激活值,为该神经元计算处理后输出的信息,神经元的计算处理函数可选阶跃函数、分段线性函数、函数、 S函数,通常人们选S函数。
对于算法BP网络对神经网络的训练过程,实质上是通过计算输出值与期望值的误差(E),求解输出层单元的一般化误差(dj),再将dj逆传播,求出隐层单元的一般化误差(ei)。通过调整输出层和隐含层及输入层间连接权与隐层、输出层的阀值,直到系统误差降到可接受为止。这时,网络间的连接权和阀值不再改动,以此预测出与训练信息相类似条件的未知信息。
图1给出一个基本的BP神经元模型,它有R个输入,每一个输入都通过一个适当的权值W和下一层相连,网络输出可表示为:
图1 BP神经元模型
2.子洲气藏山西组产层分类
本文以子洲气田山2段储层为研究对象,根据储层产流体性质及其典型井的测井响应综合特征,考虑到生产井的动态生产特征和出水特点,将子洲气藏生产井划分为气井、水井、气水同产井和干井四类,相应的储集层为气层、水层、气水同层和干层。将试气产量大于1×104m3/d,含水率小于10%的储集层归为1类气层;将产气量×104m3/d-1×104m3/d,产水量小于4m3/d的储集层归为2类气层;若储集层仅含残余气和少量可动水,砂层分类中作为干层对待,产气量小于×104m3/d,产水量小于4m3/d;试气产量大于×104m3/d而小于1×104m3/d,产水量大于4m3/d;试气产量大于1×104m3/d,含水率大于10%的储集层归为气水层;试气产量产气小于×104m3/d,产水大于4m3/d,或含水率高于90%的储集层为水层。
依据上述原则选择具有代表性的各类产层:
气层:榆10、榆11、榆12、榆13、洲06、洲07、洲08、洲09、洲10、洲11、洲12、洲13、洲14、洲15、洲16、洲17、洲18、洲19、洲20、洲22、洲23、洲24;
干层:榆14、榆15;
气水层:榆09、榆07、榆08、洲05、洲02、洲03、洲04;
水层:榆01,榆02、榆03;榆04、榆05、洲01。
神经网络模型的建立和预测
BP神经网络流程图
在进行BP神经网络的建立和运用时,实际流程如图2。
BP神经网络的建立
(1)根据试气结果,从24口井,挑选出气层,气水层,水层,干层共24组样本,以补偿中子(CNL),密度(DEN),声波时差(AC),自然伽马(GR),深浅侧向电阻率差(Rt-Rs),5条测井曲线作为样本输入参数。
(2)BP神经网络输入层设为5个节点,分别代表补偿中子(CNL),密度(DEN),声波时差(AC),自然伽马(GR),深浅侧向电阻率差(Rt-Rs),5条测井曲线。含一个隐层,隐层为8个节点,隐层采用S型神经元函数logsig()。输出层为4个节点,分别代表气层,气水层,水层,干层。建立程序,输入样本参数,对样本学习,训练,修正权值和阀值。在对样本进行训练和学习过程中的网络结构如图3。
(3)在训练过程中,取网络动量因子α=,学习因子η=,误差精度ξ=。开始训练,经过260次训练,误差达到万分之一以下,停止学习,气水识别模型已经建立,此时得到储层类型识别模型。其中输入层到隐层的连接权值和阀值为:
隐层到输出层的连接权值和阀值为:
[-,-,-,,-,-,,-,];
[-,-,-,,-,-,,,];
[,-,,,,-,,,-];
[-,,-,,,-,,,]
BP神经网络模型预测效果
根据试气结果,我们从30口井选取43个样本,以补偿中子(CNL),密度(DEN),声波时差(AC),自然伽马(GR),深浅侧向电阻率差(Rt-Rs),5条测井曲线数据作为输入数据,利用已经建立的BP神经网络模型进行预测,预测效果如下表:
从上表可以看出,利用该BP神经网络模型在对43个样本进行预测中,其中40个正确,3个错误(与试气结果不符合),符合率达到%,所以该识别模型的预测效果较比较理想,可以弥补交会图只能定性识别储层的缺陷,因此该BP神经网络气水识别模型可以较为精确划分该区域的气水层,可以达到定量识别气层、水层、气水层、干层的目的。
结论
利用该BP神经网络模型预测气水层,符合率达到%,弥补了传统测井解释气水层的弊端,通过网络学习建立模型,避免了大量杂乱信息对分析的影响,预测效果真实可靠。
参考文献
[1],, of a neural network to the problem of mineral identification from well logs,3rd Geophys,for Mineral, Geotech&Groundwater Log Anslyst,30,2002:121-235.
[2]Kukal G C. A Systematic Approach for the Log Analysis of Tight Gas Sands. SPE 11857:21-30.
[3]Kasko B. Neural networks and fuzzy ,1991:15-25.
bp神经网络【第二篇】
关键词:BP神经网络;LabVIEW;图形化;Matlab
中图分类号:TP183 文献标识码:B 文章编号:1004-373X(2009)04-072-04
BP Neural Network′s Realization and Application in LabVIEW
LIAO Shenqin1,PENG Liangyu1,JIANG Yong2
( of Phycics and Information,Hunan Normal University,Changsha,410081,China;
Prof-tek Technology (Shenzhen) ,Shenzhen,518000,China)
Abstract:BP neural network is a widely used feedforward neural network,LabVIEW is a graphical programming language,which provids a convenient and easy design environment,so it′s normally accepted by industrial sector and research calculation methods of realizing BP neural network in LabVIEW are introduced,those are Matlab Script node and graphical programming,Matlab Script node imports the Matlab program and running it,graphical programming realizes the algorithm with the method of graphical programming,and takes the apply of BP neural network in function approach and distinguishing between categories as examples to explain the realization process of the two methods,and the results are precise and intuitive,fully reflect the feathures of LabVIEW as a graphical programming language.
Keywords:BP neural network;LabVIEW;graphical;Matlab
0 引 言
LabVIEW是美国 NI公司开发的高效图形化虚拟仪器开发平台,它的图形化编程具有直观、简便、快速、易于开发和维护等优点,在虚拟仪器设计和测控系统开发等相关领域得到了日益广泛的应用,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。BP神经网络属于前馈神经网络,它广泛应用函数逼近、模式识别、分类和数据压缩等领域,若将神经网络与虚拟仪器有机结合,则可以为提高虚拟仪器测控系统的性能提供重要的依据。
1 BP神经网络学习算法
BP模型是一种应用最广泛的多层前向拓扑结构,以三层BP神经网络作为理论依据进行编程,它由输入层、隐层和输出层构成。设输入层神经元个数为I,隐层神经元个数为J,输出层神经元个数为K,学习样本有N个(X,Y)向量,表示为:输入向量X{x1,x2,…,xI},输出向量Y{y1,y2,…,yK},理想输出向量为T{t1,t2,…,tK}。
(1) 输入层节点i,其输出等于xi(i=1,2,…,I),将控制变量值传输到隐含层,则隐层第jЦ錾窬元的输入:
Иsj=∑Ii=1wjixi-θj=∑I+1i=1wjixi, j=1,2,…,J(1)И
其中:wji是隐层第j个神经元到输入层第i个神经元的连接权值。
(2) 隐层第jЦ錾窬元的输出:
Иhj=g(sj)=21+e-2sj-1, j=1,2,…,J(2)И
(3) 神经网络输出层,第kЦ錾窬元的输入为:
Иrk=∑Jj=1vkjhj, k=1,2,…,K(3)И
其中:vkj是输出层第k个神经元到隐层第j个神经元的连接权值。
(4)神经网络输出层,第kЦ錾窬元的输出为:
Иyk=g(rk)=11+e-rk, k=1,2,…,K(4)И
(5) 设定网络误差函数E:
ИE=1N∑Nk=1EkИ
其中:
ИEk=12∑j(tj-yj)2(5)И
(6) 输出层到隐层的连接权值调整量Еvkj:
ИЕvkj=Evkj=(tk-yk)hj,
j=1,2,…,J;k=1,2,…,K(6)И
(7) 隐层到输入层的连接权值调整量Еwji:
Еwji=Ewji=
∑Kk=1(tk-yk)•vkj[hj(1-hj)]xi,
j=1,2,…,J;i=1,2,…,I(7)
2 用LabVIEW实现BP神经网络的两种方法
用LabVIEW实现BP神经网络的两种方法为:
(1) 由于 Matlab具有强大的数学运算能力以及在测控领域的广泛应用。在 LabVIEW中提供了Matlab Script节点,用户可在节点中编辑Matlab程序,并在LabVIEW中运行;也可以在LabVIEW程序运行时直接调用已经存在的 Matlab程序,如使用节点则必须在系统中安装 Matlab5以上版本,在写入 Matlab节点前要将程序先调试通过,并确保其中变量的数据类型匹配。
(2) 由于LabVIEW的图形程序是独立于运行平台的,而且是一种数据驱动的语言,可以方便地实现算法且易修改,结合其 SubVI技术可以增加程序的利用率,因此可以采用图形编程的方法实现前向网络的算法。
利用Matlab Script节点实现
在此以对一个非线性函数的逼近作为例子来说明实现流程,其中输入矢量p=[-1∶∶1];目标矢量t=sin(2*pi*p)+(size(p))。利用Matlab Script节点实现BP 算法的过程如下:
(1) 新建一个LabVIEW vi,在框图程序中添加Matlab Script 节点。
(2) 在节点内添加Matlab的动量BP算法实现代码,并分别在节点左右边框分别添加对应的输入/输出参数,如图 1 所示。
(3) 在vi的前面板添加相应的控件,设置输入参数,连接输出控件。执行程序, 结果如图 2、图3 所示。
图1 Matlab Script实现改进的BP算法
图2 误差曲线图
图3 逼近曲线图
此方法能够直接利用Matlab强大的神经网络工具箱,程序运行时会自动调用系统中已安装的Matlab进行计算,不用进行复杂的编程,开发效率很高。
利用图形编程实现
LabVIEW是美国NI公司推出的基于图形化编程的虚拟仪器软件开发工具,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。在此以一个设备状态分类器设计作为例子来说明实现流程输入,该设备有8个输入分量,即温度、湿度等外部条件;而输出状态则有3种,分别为正常、偏小、偏大。这里采用12个训练样本,每个样本有8个分量,3类输出分别编码为(0 1),(1 0),(1 1),以下即为输入样本及标准输出数据(见图4、图5)。
BP神经网络隐层输入在LabVIEW中的实现。根据BP学习算法中式(1)编写相应的程序。其中x为输入样本;w为隐层输入权值,主要应用 LabVIEW中的函数-数学-线性代数-矩阵A×B实现权值与输入样本的矩阵相乘,并通过 For循环计算得到 BP神经网络的隐层输入 H (见图6)。
(2)BP神经网络隐层输出H的图形化程序。根据算法中的式(2)编写,由于在很多测试实践中参数间的关系是非线性的,这里主要应用Sigmoid型tansig函数作为隐层的传递函数,主要应用程序面板中函数-数学-数值及基本与特殊函数等数学控件实现(见图7)。
图4 输入样本
图5 标准输出
图6 隐层输入的程序框图
图7 隐层输出的程序框图
(3)BP神经网络输出层的输入及输出程序框图与隐层的类似,分别根据式(3)、式(4)编程即可实现,在此不再重复。
(4) 网络误差函数E的图形化程序。根据算法中式(5)编写程序,其中:t为理想输出,y为网络输出。其中应用函数-数学-基本与特殊函数中的指数函数控件来实现 (见图8)。
(5) BP神经网络各参数调整量的图形化程序根据上述学习算法中的式(6)和式(7),其中:x为网络输入样本;y,t分别为网络实际输出和期望输出;h为隐层输出;v为隐层输出权值。通过调用 LabVIEW软件中数学计算控件,经过一系列数学计算,分别得到网络隐层输出权值调整量Δv以及隐层输入权值调整量Δw,如图9、图10所示。
图8 网络误差函数程序框图
图9 Δv的图形化程序
图10 Δw的图形化程序
(6) 完整的学习算法的图形化程序。将以上各个程序模块综合在一起,可以得到完整的学习算法实现程序,如图 11所示。
图11 完整的图形化程序
通过设定网络的输入样本x、输出期望t、 隐层输入权值w,输出v的初始值,经过一系列的矩阵运算,获得调整后隐层权值w,v参数值。
运行结果如图12所示,由图可以非常直观看出,网络输出与网络理想输出相当接近,说明网络训练的结果是满意的。
3 结 语
在利用LabVIEW实现BP神经网络的计算,方法一通过直接调用Matlab程序,简单易行,只是事先需要装有以上的版本。方法二运用图形化编程对BP神经网络进行仿真,具有形象、直观、便于使用和理解的优于传统文本编程语言的特点。
图12 运行结果
参 考 文 献
[1]Allerhand A,Galuska A of LabVIEW forComputer Controlled Experiments in General Chemistry Laboratory Instruction [J].,2000,5(2):71-76.
[2]飞思科技产品研发中心。神经网络理论与Matlab7实现[M].北京:电子工业出版社,2005.
[3]常晓丽。基于Matlab的BP神经网络的设计[J].机械工程与自动化,2006(4):36-37.
[4]郭红梅,于佐军。LabVIEW与Matlab混合编程的过程控制应用 [J].控制工程,2007(14):131-132.
[5]蔡清华,杨世锡,罗锡梁。基于虚拟仪器编程的BP神经网络学习算法仿真 [J].现代机械,2006(2):6-8.
[6]周丽霞,熊瑞平,杨荣松。LabVIEW在BP神经网络故障诊断系统中的应用 [J].机床与液压,2007,35(4):215-216.
[7]昝涛,王民,费仁元,等。LabVIEW中人工神经网络计算的实现及应用[J].微计算机信息,2006,22(6):122-124.
[8]粟钧,吴拓。基于虚拟仪器编程的BP神经网络算法学习算法仿真[J].广东轻工职业学院学报,2005,4(1):26-28.
[9]殷莹。BP网络在设备故障诊断中的应用与实现 [J].微计算机信息,2007,23(10):31-34.
[10]张雅丽,王宝光,赵海文,等。虚拟仪器在故障诊断中的应用 [J].机床与液压,2005(1):124-126.
[11] 曾祥学,罗卫华,张斌。基于LabWindows/CVI的人工神经网络BP算法的实现\.现代电子技术,2005(2):21-23.
作者简介 廖慎勤 女,1984年出生,湖南醴陵人,湖南师范大学硕士研究生。主要研究方向为模拟电路故障诊断。
彭良玉 女,1965年出生,湖南湘乡人,湖南师范大学教授,硕士生导师,北京航空航天大学博士后。主要研究方向为源滤波器的设计,模拟电路故障诊断,已80余篇。
江 勇 男,1985年出生,湖南醴陵人,凌阳科技公司通信部工程师。主要研究方向为通信终端设备开发,已1篇。
bp神经网络【第三篇】
关键词 BP神经网络 数据挖掘 最速下降法 函数逼近 模式识别
中图分类号:TP391 文献标识码:A
1研究背景
BP神经网络是一种多层的前馈网络而且它的学习算法是一种误差逆向传播算法。BP神经网络是目前研究最为成熟、应用最为广泛的人工神经网络模型之一。由于其结构简单、可操作性强、具有较好的自学习能力、能够有效地解决非线性目标函数的逼近问题等优点,因此被广泛应用于自动控制、模式识别、图像识别、信号处理、预测、函数拟合、系统仿真等学科和领域中。
2 BP神经网络原理
概述
BP神经网络是一种反向传播误差算法然后训练的一个多层前馈网络,简称为BP算法,它应用在已被开发出来的神经网络中,到目前为止是应用最为广泛的网络模型之一。BP神经网络可以学习并且存储非常多的输入模式与输出模式之间的映射关系,却无需在学习和存储前事先揭示并描述输入输出间的映射关系的一种数学方程。它使用最速下降法,通过对输出误差的反向传播,获得不断调整网络连接权系数和阈值的信息,最终使神经网络的平方误差最小,达到期望要求。
BP神经网络结构
BP神经网络模型是一个三层网络,它的拓扑结构可被划分为:输入层、输出层、隐含层。其中输入层与输出层具有更重要的意义,因此它也可以为两层网络结构(把隐含层划入输入层或者把隐含层去掉)。每层都由许多简单的能够执行并行运算的神经元组成,这些神经元与生物系统中的那些神经元非常类似,但其并行性并没有生物神经元的并行性高。BP神经网络是一个前馈网络,因此它具有前馈网络所具有的特性:相邻两层之间的全部神经元进行互相连接,而处于同一层的神经元不能进行联接。
BP算法原理
BP神经网络的基本原理是把一个输入矢量经过隐含层的一系列变换,然后得到一个输出矢量,从而实现输入数据与输出数据间的一个映射关系。输入信息的正向传播,以及输出误差的反向传播,构成了 BP网络的信息循环。BP算法根据输出误差来修改各神经元连接的连接权系数,其目的是使输出误差达到预计范围内。BP网络需要实际输出与期望输出之间的误差来确定是否要修改神经元连接的连接权系数。其中,期望输出便是该网络意义上的“导师”。BP网络具有对称性的网络结构,在输出端的每一个处理单元基本上都具有一个相同的激励函数。
BP算法由正向传播和反向传播两部分组成。在正向传播过程中,输入信息从输入层经隐层单元处理后,传至输出层。每一层神经元的状态只影响下一层神经元的状态。如果在输出层得不到期望输出,就转为反向传播,即:把误差信号沿连接路径返回,并通过修改各层神经元之间的连接权值,使误差信号最小。
具体的算法步骤可概括如下:
第一步,选取初始权值、阈值。
第二步,重复下述过程直至满足性能要求为止:
(1)对于学习样本P=1到N
①计算每层各节点j的输出yj,netj和的值(正向过程);
②对各层从M层到第二层,对每层各节点反向计算%]j(反向过程);
(2)修改权值
具体推导过程见参考文献4。
3基于BP神经网络设计的实例
函数逼近
我们设计一个简单的BP网络,实现对非线性函数的逼近。通过改变该函数的参数以及BP网络隐层神经元的数目,来观察训练时间以及训练误差的变化时间。将要逼近的非线性函数设为正弦函数,其频率参数k可以调节。假设频率参数k=2,绘制此函数的曲线。如图1。
(1)网络建立:用MATLAB编程建立BP网络结构,为二层BP神经网络。隐层神经元数目n 可以改变,暂时设为n=10,输出层有一个神经元。网络训练采用Levenberg-Marquardt算法trainlm。
分析:因为建立网络时,权值和阈值的初始化是随机的,所以网络输出结果很差,根本达不到函数逼近的目的,并且每次运行的结果也有所不同。
(2)网络训练:在MATLAB里应用train()函数对网络进行训练之前,需要预先设置训练参数。将训练时间设置为50,训练精度设置为,其余参数用默认值。
(3)网络测试:对于训练好的网络进行仿真,绘制网络输出曲线,并与原始非线性函数曲线相比较,结果如下图2。
由此可看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果非常好。
(4)讨论分析:改变非线性函数的频率和BP网络隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对BP网络的要求越高,则相同的网络逼近效果要差一些;隐性神经元的数目对于网络逼近效果也有一定的影响,一般来说隐形神经元数目越多,则BP网络逼近非线性函数的能力越强,同时网络训练所用的时间相对来说也要长一些。
参考文献
[1] 闫志忠。BP神经网络模型的改进及其应用研究[D].吉林大学,2003.
[2] 李友坤。BP神经网络的研究分析及改进应用[D].安徽理工大学,2012.
[3] 吴昌友。神经网络的研究及应用[D].东北农业大学, 2007.
[4] 贺清碧。BP神经网络及应用研究[D].重庆交通学院 重庆交通大学,2004.
bp神经网络【第四篇】
关键字神经网络,BP模型,预测
1引言
在系统建模、辨识和预测中,对于线性系统,在频域,传递函数矩阵可以很好地表达系统的黑箱式输入输出模型;在时域,Box-Jenkins方法、回归分析方法、ARMA模型等,通过各种参数估计方法也可以给出描述。对于非线性时间序列预测系统,双线性模型、门限自回归模型、ARCH模型都需要在对数据的内在规律知道不多的情况下对序列间关系进行假定。可以说传统的非线性系统预测,在理论研究和实际应用方面,都存在极大的困难。相比之下,神经网络可以在不了解输入或输出变量间关系的前提下完成非线性建模[4,6]。神经元、神经网络都有非线性、非局域性、非定常性、非凸性和混沌等特性,与各种预测方法有机结合具有很好的发展前景,也给预测系统带来了新的方向与突破。建模算法和预测系统的稳定性、动态性等研究成为当今热点问题。目前在系统建模与预测中,应用最多的是静态的多层前向神经网络,这主要是因为这种网络具有通过学习逼近任意非线性映射的能力。利用静态的多层前向神经网络建立系统的输入/输出模型,本质上就是基于网络逼近能力,通过学习获知系统差分方程中的非线性函数。但在实际应用中,需要建模和预测的多为非线性动态系统,利用静态的多层前向神经网络必须事先给定模型的阶次,即预先确定系统的模型,这一点非常难做到。近来,有关基于动态网络的建模和预测的研究,代表了神经网络建模和预测新的发展方向。
2BP神经网络模型
BP网络是采用Widrow-Hoff学习算法和非线性可微转移函数的多层网络。典型的BP算法采用梯度下降法,也就是Widrow-Hoff算法。现在有许多基本的优化算法,例如变尺度算法和牛顿算法。如图1所示,BP神经网络包括以下单元:①处理单元(神经元)(图中用圆圈表示),即神经网络的基本组成部分。输入层的处理单元只是将输入值转入相邻的联接权重,隐层和输出层的处理单元将它们的输入值求和并根据转移函数计算输出值。②联接权重(图中如V,W)。它将神经网络中的处理单元联系起来,其值随各处理单元的联接程度而变化。③层。神经网络一般具有输入层x、隐层y和输出层o。④阈值。其值可为恒值或可变值,它可使网络能更自由地获取所要描述的函数关系。⑤转移函数F。它是将输入的数据转化为输出的处理单元,通常为非线性函数。
基本算法
BP算法主要包含4步,分为向前传播和向后传播两个阶段:
1)向前传播阶段
(1)从样本集中取一个样本(Xp,Yp),将Xp输入网络;
(2)计算相应的实际输出Op
在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时的执行过程。
2)向后传播阶段
(1)计算实际输出Op与相应的理想输出Yp的差;
(2)按极小化误差的方式调整权矩阵。
这两个阶段的工作受到精度要求的控制,在这里取作为网络关于第p个样本的误差测度,而将网络关于整个样本集的误差测度定义为。图2是基本BP算法的流程图。
动态BP神经网络预测算法
在经典的BP算法以及其他的训练算法中都有很多变量,这些训练算法可以确定一个ANN结构,它们只训练固定结构的ANN权值(包括联接权值和结点转换函数)。在自动设计ANN结构方面,也已有较多的尝试,比如构造性算法和剪枝算法。前一种是先随机化网络,然后在训练过程中有必要地增加新的层和结点;而剪枝法则正好相反。文献[2]中提出了演化神经网络的理念,并把EP算法与BP进行了组合演化;也有很多学者把遗传算法和BP进行结合,但这些算法都以时间复杂度以及空间复杂度的增加为代价。根据Kolmogorov定理,对于任意给定的L2型连续函数f:[0,1]nRm,f可以精确地用一个三层前向神经网络来实现,因而可以只考虑演化网络的权值和结点数而不影响演化结果。基于此,在BP原有算法的基础上,增加结点数演化因子,然后记录每层因子各异时演化出的结构,最后选取最优的因子及其网络结构,这样就可以避免由于增加或剪枝得到的局部最优。根据实验得知,不同的预测精度也影响网络层神经元的结点数,所以可根据要求动态地建立预测系统。具体步骤如下:
(1)将输入向量和目标向量进行归一化处理。
(2)读取输入向量、目标向量,记录输入维数m、输出层结点数n。
(3)当训练集确定之后,输入层结点数和输出层结点数随之而确定,首先遇到的一个十分重要而又困难的问题是如何优化隐层结点数和隐层数。实验表明,如果隐层结点数过少,网络不能具有必要的学习能力和信息处理能力。反之,若过多,不仅会大大增加网络结构的复杂性(这一点对硬件实现的网络尤其重要),网络在学习过程中更易陷入局部极小点,而且会使网络的学习速度变得很慢。隐层结点数的选择问题一直受到神经网络研究工作者的高度重视。Gorman指出隐层结点数s与模式数N的关系是:s=log2N;Kolmogorov定理表明,隐层结点数s=2n+1(n为输入层结点数);而根据文献[7]:s=sqrt(++++)+[7]。
(4)设置结点数演化因子a。为了快速建立网络,可以对其向量初始化,并从小到大排序[4,7]。
(5)建立BP神经网络。隐含层传递函数用tansig,输出层用logsig,训练函数采用动态自适应BP算法,并制订停止准则:目标误差精度以及训练代数。
(6)初始化网络。
(7)训练网络直到满足停止判断准则。
(8)用测试向量对网络进行预测,并记录误差和逼近曲线,评估其网络的适应性。其适应度函数采取规则化均方误差函数。
(9)转到(5),选取下一个演化因子,动态增加隐含层结点数,直到最后得到最佳预测网络。
3基于神经网络的预测原理[4]
正向建模
正向建模是指训练一个神经网络表达系统正向动态的过程,这一过程建立的神经网络模型称为正向模型,其结构如图3所示。其中,神经网络与待辨识的系统并联,两者的输出误差用做网络的训练信号。显然,这是一个典型的有导师学习问题,实际系统作为教师,向神经网络提供算法所需要的期望输出。当系统是被控对象或传统控制器时,神经网络多采用多层前向网络的形式,可直接选用BP网络或它的各种变形。而当系统为性能评价器时,则可选择再励学习算法,这时网络既可以采用具有全局逼近能力的网络(如多层感知器),也可选用具有局部逼近能力的网络(如小脑模型控制器等)。逆向建模
建立动态系统的逆模型,在神经网络中起着关键作用,并且得到了广泛的应用。其中,比较简单的是直接逆建模法,也称为广义逆学习。其结构如图4所示,拟预报的系统输出作为网络的输入,网络输出与系统输入比较,相应的输入误差用于训练,因而网络将通过学习建立系统的逆模型。但是,如果所辨识的非线性系统是不可逆的,利用上述方法将得到一个不正确的逆模型。因此,在建立系统时,可逆性应该先有所保证。
4应用实例分析
以我国西南某地震常发地区的地震资料作为样本来源,实现基于动态神经网络的地震预报。根据资料,提取出7个预报因子和实际发生的震级M作为输入和目标向量。预报因子为半年内M>=3的地震累计频度、半年内能量释放积累值、b值、异常地震群个数、地震条带个数、是否处于活动期内以及相关地震区地震级。在训练前,对数据进行归一化处理。由于输入样本为7维的输入向量,一般情况下输入层设7个神经元。根据实际情况,输出层神经元个数为1。隐含层神经元的传递函数为S型正切函数,输出层也可以动态选择传递函数。实例数据来自文献[4],将数据集分为训练集、测试集和确定集。表1中的7×7数组表示归一化后的训练向量,第一个7表示预报因子数,第二个7表示样本数。
表1归一化后的训练向量
在不同神经元数情况下,对网络进行训练和仿真,得到如图5所示的一组预测误差曲线。其中,曲线A表示隐层结点数为6时的预测误差曲线,曲线B表示隐含层结点数为3时的预测误差曲线,曲线C表示隐含层结点数为5时的预测误差曲线,曲线D表示隐含层结点数为4时的预测误差曲线。将五种情况下的误差进行对比,曲线C表示的网络预测性能最好,其隐含层神经元数为5,图中曲线E表示的是隐含层结点数为15时的预测误差曲线(文献[4]中的最好结果)。同时也证明,在设计BP网络时,不能无限制地增加层神经元的个数。若过多,不仅会大大增加网络结构的复杂性,网络在学习过程中更易陷入局部极小点,而且会使网络的学习速度、预测速度变得很慢。
5结论
本文针对基本的BP神经网络,提出了可动态改变神经元数(与精度相关)的BP神经网络预测方法,可以根据实际情况建立预测系统。用此种方法可以建立最好的神经网络,不会有多余的神经元,也不会让网络在学习过程中过早陷于局部极小点。
参考文献
[1]YaoX,Ⅴ,,äck,,MA:MITPress,1996,451-460
[2]XinYao,YongLiu,ANewEvolutionarySystemforEvolvingArtificialNeuralNetworksIEEETRANSACTIONSONNEURALNETWORKS,VOL8,,694-714
[3]潘正君,康立山,陈毓屏。演化计算[M].北京:清华大学出版社,1998
[4]飞思科技产品研发中心。神经网络理论与实现。北京:电子工业出版社,2005
[5]蔡晓芬,方建斌。演化神经网络算法。江汉大学学报,第33卷第3期,
[6]蒋宗礼。人工神经网络导论。北京:高等教育出版社,2001