logo资料库

基于MATLAB神经网络工具箱的BP网络实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
  第 21 卷  第 5 期 计  算  机  仿  真 2004 年 5 月    文章编号 :1006 - 9348 (2004) 05 - 0109 - 03 基于 MATLAB 神经网络工具箱的 BP 网络实现 罗成汉 (集美大学信息工程学院 ,福建 厦门 361021) 摘要 :简要介绍 BP 神经网络结构和算法以及 MATLAB 语言的特点。利用 MATLAB 的神经网络工具箱提供的许多有关神经 网络设计、训练以及仿真的函数实现 BP 网络将非常容易 ,用户只要根据自己的需要调用相关程序 ,从而免除了编写复杂而 庞大的算法程序的困扰。并详细论述利用 MATLAB 神经网络工具箱设计 BP 网络的方法及步骤 ,给出具体应用实例 ,从而验 证该方法的可行性。 关键词 :神经网络 ;工具箱 ;仿真 中图分类号 :TP311. 52   文献标识码 :A 1  引言 人工神经网络是近年来发展起来的模拟人脑生物过程 的人工智能技术 。它由大量的 、同时也是很简单的神经元广 泛互连形成复杂的非线性系统[1 ] 。具有自学习 、自组织 、自 适应和很强的非线性映射能力 ,特别适合于因果关系复杂的 非确定性推理 、判断 、识别和分类等问题 。在人工神经网络 的实际应用中 ,常采用 BP 神经网络或它的变化形式 。BP 神 经网络是一种多层神经网络 ,因采用 BP 算法而得名 。通常 采用软件来实现 ,主要应用于模式识别和分类 、函数逼近 、数 据压缩等领域 。 MATLAB 是 Math works 公司开发的一种高性能的数值 计算和可视化软件 ,在学术界和工业界都得到了广泛的应 用 。与 Basic 、Fortran 和 C 等编程语言相比 ,它具有程序可 读性强 、调试简单等特点 ,尤其是在编写含矩阵运算的复 杂程序时 ,能给用户提供极大的方便[2 ] 。它将数学计算 、 算法开发 、建模与仿真 、数据处理 、可视化和应用开发集成 于一个非常友好的环境中 ,尤其是它提供了各种专业性较 强的工具箱 ,在此环境下 ,用户不需要再编写自己学科范 围内的基础程序 ,如在神经网络工具箱中 ,MATLAB 提供了 许多有关神经网络设计 、训练和仿真的函数 。用户只要根 据自己的需要调用相关程序 ,从而免除了编写复杂而庞大 的算法程序的困扰[3 ] 。 本文将以 MATLAB6. 1 为开发环境 ,介绍神经网络工具 箱及其相关函数 ,论述利用其神经网络工具箱开发 BP 网络 的方法及设计步骤 ,给出应用实例 。 2  BP 网络模型 BP 网络是一种多层前馈神经网络 ,由输入层 、隐层和输 出层组成 。层与层之间采用全互连方式 ,同一层之间不存在 相互连接 ,隐层可以有一个或多个 。构造一个 BP 网络需要 收稿日期 :2003 - 03 - 06 确定其处理单元 ————神经元的特性和网络的拓扑结构 。 神经元是神经网络最基本的处理单元 ,隐层中的神经元采用 S 型变换函数 ,输出层的神经元可采用 S 型或线性型变换函 数 。图 1 为一个典型的三层 BP 网络的拓扑结构 。 图 1  网络结构示意图 神经网络学习采用改进 BP 算法 ,学习过程由前向计算 过程和误差反向传播过程组成 。在前向计算过程中 ,输入信 息从输入层经隐层逐层计算 ,并传向输出层 ,每层神经元的 状态只影响下一层神经元的状态 。如输出层不能得到期望 的输出 ,则转入误差反向传播过程 ,误差信号沿原来的连接 通路返回 ,通过修改各层的神经元的权值 ,使得网络系统误 差最小 。最终网络的实际输出与各自所对应的期望输出逼 近 。 3  MATLAB6. 1 神经网络工具箱及其相关函数简 介 BP 神经网络设计时 ,需要确定网络的拓扑结构 (隐层 的层数及各层的神经元的数目) 及其神经元的变换函数 , 网络的初始化 ,误差计算 ,学习规则及网络训练 ,训练参数 及训练样本的归一化处理等方面的工作 ,在 MATLAB6. 1 神 经网络工具箱中 ,有对应的函数完成所涉及到的全部计算 任务 。 —901— © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
3. 1  设计 BP 网络的相关函数 1) 神经元变换函数 :线性变换函数 purelin、对数 S 型变换 函数 logsin、双曲线正切 S 型变换函数 tansig。 2) BP 网络生成函数 newff : 它是用来生成 BP 神经网络并 进行初始化 ,可以确定网络层数 、每层中的神经元数和变换 函数 。这个函数有六个输入参数 ,分别是 :输入向量的范围 、 网络结构 、各层变换函数 、训练算法函数 、学习函数和性能函 数 。输出参数为所生成的 BP 神经网络名 net 。其语法为 :net = newff ( PR , [ S1 , S2 …, SN1 ] , [ TF1 , TF2 , …TFN1 ] ,BTF ,BLE , PF) 其中 :PR 是一个由每个输入向量的最大最小值构成的 Rx2 矩阵 ,R 为输入神经元数目 。 Si 是第 i 层网络的神经元个数 ,网络共有 N1 层 。 TFi 是第 i 层网络神经元的变换函数 ,缺省为 tansig. BTF 是 BP 训练算法函数 ,缺省为 trainlm. BLF 是学习函数 ,缺省为 learngdm. PF 是性能函数 ,缺省为 mse. newff 在确定网络结构后会自动调用初始化函数 init ,用 缺省参数来初始化网络中各个权值和阈值 ,产生一个可训练 的前馈网络 ,即该函数的返回值 net 。在 MATLAB 中 ,神经网 络 net 当做对象 (object) 处理 ,其属性用结构来定义 。 3) 初始化函数 init :它是对网络的连接权值和阈值进行 初始化 。newff 在创建网络对象的同时 ,自动调动初始化函 数 ,根据缺省的参数对网络进行连接权值和阈值初始化 。 量项 的 自 适 应 算 法 ; 用 共 轭 梯 度 法 进 行 训 练 的 函 数 有 : traincgf (采用 Fletcher - Reeves 搜索技术) 、traincgp (采用 Polak - Ribiers 搜索技术) 、traincgb (采用 Powell - Beale 搜索技术) ; trainbfg 是基于拟牛顿法的训练函数 ;trainlm 是用 Levenberg - Marquardt 数值优化法来实现误差反传算法的 。各算法的快 慢及内存要求依问题的复杂程度 、训练集大小 、网络的大小 及误差要求的不同而有所不同 。一般来讲 ,对于含有几百个 权重的网络 , Levenberg - Marquardt 算法有最快的收敛速度 。 该算法需要大的内存 ,可通过增大参数 mem - reduc 的值来 减少内存的使用量 。需要注意的是 :减少内存使用量实际是 通过将雅可比矩阵分解为一个个小的亚矩阵来实现的 ,每次 只计算其中一个亚矩阵 ,这势必增加计算时间 ,所以 ,如果有 足够的内存 ,应该将 mem - reduc 参数设为 1 ,即每次都计算 整个雅可比矩阵 。拟牛顿算法的速度仅次于 Levenberg - Marquardt 算法而比共轭梯度法的速度快 ,内存的需要量也介 于这二者之间 。在共轭梯度法中 ,traincgb 需要的内存数量最 多 ,但通常也能最快收敛 。总地来讲 ,基于共轭梯度法 、拟牛 顿算法和 Levenberg - Marquardt 法等数值优化算法的训练函 数的效率比基于启发式算法的 traingd、traingdm、traingdx 的效 率高 。以上的训练算法函数均在网络生成函数 newff 中预先 设置 。 8) 仿真函数 sim :可以用来计算网络在给定输入下的输 出 。 9) 绘图函数 poltperf :可以用来计算网络性能曲线[4 - 5 ] 。 4) 学习函数 :提供多种学习函数 ,用来修正权值和阈值 。 3. 2  数据预处理 基本的学习函数有 :learngd、learngdm。 5) 性能函数 :它是用来计算网络的输出误差 。为训练提 供判据 , 包括 : 函数 mae , 计算网络的平均绝对误差 ; 函数 mse ,计算网络的均方误差 ;函数 msereg ,计算均方误差和权/ 阈值的加权 ;函数 sse ,计算网络的均方误差和 。 6) 训练函数 train : BP 网络的训练初始化后 ,可对它进行训练 。在 MATLAB 中训练网络有两类模式 :逐变模式和批处理模式 。在逐变模 式中 ,每输入一个学习样本就根据网络性能指标函数对连接 权值和阈值更新一次 。在批处理模式中 ,所有的学习样本都 学习完成后 ,连接权值和阈值才被更新一次 。使用批处理模 式不需要为每一层的连接权值和阈值设定训练函数 ,而只需 为整个网络指定一个训练函数 ,使用起来相对方便 ,而且许 多改进的快速训练算法只能采用批处理模式 。 训练网络的函数是 train 按设置的 net. trainFcn 和 net. trainParam 参数来训练网络 ,采用批处理方式进行网络的权值 和阈值修正 ,最终达到设定的网络性能指标的要求 。 7) BP 训练算法函数 :它是根据网络的输入 、目标期望输 出 ,对由函数 newff 生成的 BP 网络进行计算 ,修正其权值和 阈值 ,最终达到设定的网络性能指标的要求 。不同的训练算 法函数对应不同的训练算法 ,如 traingd 对应最基本梯度下降 法 ;traingdm 带有动量项的梯度下降法 ; traingdx 带有采用动 —011— 如果对神经网络的输入和输出数据进行一定的预处理 , 可以加快网络的训练速度 。MATLAB 提供的预处理方法有 : 归一化处理 (将每组数据都变为 - 1 至 1 之间数 ,所涉及的函 数有 premnmx、postmnmx、tramnmx) 、标准化处理 (将每组数据 都为均值为 0 ,方差为 1 的一组数据 ,所涉及的函数有 prestd、 poststd、trastd) 和主成分分析 (进行正交处理 ,减少输入数据的 维数 ,所涉及的函数有 prepca 、trapca) 。 下面以归一化处理为例说明其用法 ,对于输入矩阵 p 和 输出矩阵 t 进行归一化处理的语句为 : [ pn ,minp ,maxp ,tn , mint ,maxt ] = premnmx (p ,t) ;训练时应该用归一化之后的数 据 ,即 :net = train(net ,pn ,tn) ;训练结束后还应对网络的输出 an = sim(net ,pn) 作如下处理 :a = postmnmx (an ,mint ,maxt) ;当 用训练好的网络对新数据 pnew 进行预测时 ,也应作相应的 处理 :pnewn = tramnmx (pnew , minp , maxp) ; anewn = sim (net , pnewn) ;anew = postmnmx(anew ,mint ,maxt) 。 3. 3  训练数据的导入方法 要对 BP 网络进行训练 ,必须准备训练样本 。对样本数 据的获取 ,有以下几种方法供选择 ,具体采用那种方法 ,取决 于数据的多少 ,数据文件的格式等 。 用元素列表方式直接输入数据 。 创建数据文件 ,通过 MATLAB 提供的装载数据函数 ,从 数据文件中读取 。 © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
3 函数 load 适 合 从 MAT 文 件 、ASCII 文 件 中 读 取 数 据 ; MATLABI/ O 函数适合从其它应用中的数据文件中读取数据 ; 还可以通过数据输入向导 ( Import Wizard) 从文件或剪贴板中 读取数据 ,单击 File 菜单下的“Import Data. . . ”将出现“Import Wizard”窗口 ,通过该窗口进行设置 ,该方法不适合从 M 文件 中读取数据 。 4  BP 神经网络的 MATLAB 实现 4. 1  网络设计步骤 在进行 BP 神经网络设计时 ,需要考虑以下问题 :网络 的拓扑结构 (隐层的层数及各层的神经元的数目) ;神经元 的变换函数选取 ; 网络的初始化 ( 连接权值和阈值的初始 化) ;训练参数设置 ; 训练样本的归一化处理 ; 样本数据导 入方式等 。 根据以上分析可知 ,对于网络的实现有四个基本的步 骤 : ①网络建立 :通过函数 newff 实现 ,它根据样本数据自动 确定输入层 、输出层的神经元数目 ;隐层神经元数目以及隐 层的层数 、隐层和输出层的变换函数 、训练算法函数需由用 户确定 。 ②初始化 ;通过函数 init 实现 ,当 newff 在创建网络对象 的同时 ,自动调动初始化函数 init ,根据缺省的参数对网络进 行连接权值和阈值初始化 。 ③网络训练 :通过函数 train 实现 ,它根据样本的输入矢 量 P、目标矢量 T;和预先已设置好的训练函数的参数 ;对网 络进行训练 。 ④网络仿真 :通过函数 sim 实现 ,它根据已训练好的网 络 ,对测试数据进行仿真计算 。 4. 2  设计实例 为了验证 BP 网络的非线性映射功能 ,在实例中建立一 个只有一个隐层的 BP 网络来逼近正弦函数 。为此选取样本 数据为 :输入矢量 P = 0 :0. 1 :2. pi ,输出矢量 T = sin ( P) ;选 取隐层神经元数目为 5 ;隐层和输出层的变换函数分别为双 曲正切 S 函数和线性函数 ,训练函数为 trainlm。 在 MATLAB 指令窗口中 ,通过编写以下程序来实现 : %输入样本数据 P = 0 :0. 1 :2. pi ; T = sin(P) ; %建立网络 net = newff ( [ 0 , 2. pi ] , [ 5 , 1 ] , { ’tansig’,’purelin’} ,’ trainlm’) ; %初始化 net = init (net) ; %网络训练 net. trainParam. show = 100 ; %设置训练显示间隔次数 net. trainParam. epochs = 20000 ; %设置最大训练循环次数 net. trainParam. goal = 0. 0001 ; %设置性能目标值 net. trainParam. lr = 0. 01 ; %设置学习系数 [ net ,tr ] = train(net ,P ,T) ; %网络训练 %网络仿真 P1 = 0 :0. 01 :2. T1 = sim(net ,P1) ; %仿真计算 figure (1) ; plot (P ,T ,’ 可得到如图 2 所示的神经网络拟合曲线图 。 pi ; %选取测试的输入数据 ’,P1 ,T1) %画图 图 2  所示的神经网络拟合曲线图 从图 2 可以得知 ;训练后的 BP 网络能很好地逼近给定 的目标函数 。当然用户还可使用 MATLAB 提供的图形用户 界面开发工具 ( GUI) 设计基于图形用户界面的 BP 网络应用 系统 。 5  结束语 MATLAB 神经网络工具箱功能强大 ,它提供了许多有关 神经网络设计 、训练和仿真的函数 。用户只要根据自己的需 要调用相关函数 ,就能方便进行神经网络设计与仿真 ,从而 免除了编写复杂而庞大的算法程序的困扰 。 参考文献 : [1 ]  胡守仁. 神经网络导论[M] . 长沙 :国防科技大学出版社 ,1993. [2 ]  陈以新. MATLAB 的几则程序设计经验 [J ] . 计算机应用 ,1999 , 19 (9) :54 - 56. [3 ]  丛爽. 面向 MATLAB 工具箱的神经网络理论与应用[ M] . 合肥 : 中国科学技术大学出版社 ,1998. [4 ]  楼顺天 ,施阳. 基于 MATLAB 的系统分析与设计 ———神经网络 [M] . 西安 :西安电子科技大学出版社 ,1998. [5 ]  黄文梅 ,等. 系统仿真分析于设计 ———MATLAB 语言工程应用 [M] . 长沙 :国防科技大学出版社 ,2001. 299 - 312. [作者简介 ] 罗成汉 (1970. 4 - ) ,男 (汉族) ,湖南衡阳人 ,硕士 , 讲师 ,主要从事测控系统的设计和仿真的教学、科研 工作。 (下转第 115 页) —111— © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
进气孔”) ; RULE 2 的生成与运用充分证明了设计型专家系统开发平台 (SDP) 的 实用性 。 FACT  DistanceAdvice. 增程率 > 0. 1 AND DistanceAd vice. 增程率 < 0. 15 AND MISSION. 初速要求 = “小” 参考文献 : [1 ]  尹朝庆 ,尹皓. 人工智能与专家系统[M] . 北京 :中国水利水电出 THEN  WRITELN(“采用底凹弹结构”) ; 版社 ,2002. WRITELN(“采用浅底凹 ,底凹深为 0. 4~0. 6d”) ; 经过推理机的判断执行第二条规则的推理结果继续进 行下面的推理 。 5  结论 SDP 采用面向对象的知识表达方式 ,具有很强的知识表 达能力来表达设计对象的概念及设计知识 。其知识库具有 模块化 、系统化的结构 。系统的知识表达像是符合人类专家 对设计问题的认识模式 ,知识库容易维护 ,知识库采用散列 二叉树作为知识表达内部结构 ,具有结构简单 、表达能力强 、 冗余度小且搜索速度高等特点 ,榴弹总体方案设计专家系统 [2 ]  吴慧中 ,等. 机械设计专辑系统研究与实践[ M] . 中国铁道出版 社 ,1994. [3 ]  (美) Jon Bates ,Timpikins 著 ,何建辉等译. 实用 Visual C + + 6. 0 [M] . 清华大学出版社 ,2001 - 5. [作者简介 ] 袁志华 (1963 - ) ,男 (汉族) ,辽宁人 ,硕士 ,高级工 程师 ,主要研究方向为弹丸 CAD、CAM 快速制造 ,以 及虚拟现实技术及系统仿真理论 ,曾荣获过国家科 技进步一等奖 ; 王  曦 (1960 - ) ,男 (汉族) ,黑龙江人 ,学士 ,高级 工程师 ,主要研究方向为计算机图形处理和计算机科学 ; 郝  博(1963 - ) ,男 (汉族) ,辽宁人 ,博士 ,教授 ,主要研究方向为机 械 CAD、CAM ,系统仿真与实时控制。 Study and Application of High - Explosive Shell Expert System —Simulation Design Platform YUAN Zhi - hua ,Wang Xi ,HAO Bo (Shenyang Institute of Technology , Shenyang Liaoning 110168 ,China) ABSTRACT :A HE shell expert system , based on the expert system for designing HE shell , can implement a series of intelligent designs such as design of HE shell ,conceptual definition , emulation analysis , calculation etc. by microcomputer. It is the foundation of emulation analysis and simulated manufacturing of HE shell. It uses the method that the knowledge representation is combined with condition inference to carry out overall design and emulation and reference. The paper gives the construction of the SDP and the methods by which the functions can be achieved , gives the modularization of reference and the design methods of systematization , and also puts forward the method of knowledge rep resentation and working interface , and supplies a platform for similar products of HE shell which can be quickly designed. KEYWORDS :HE projectile ; Expert system ;Simulation ;Object - oriented ; Inference engine (上接第 111 页) Realization of BP Net work Based on Neual Net work Tool Kit in MATLAB ( Information engineering college , Jimei University , Xiamen Fujian 361021 ,China) LUO Cheng - han ABSTRACT :BP neural network configuration and algorithm , along with MATLAB language distinguishing feature are presented. To achieve BP network shall be very much convenient to utilize those functions relevant with neural net design , training and simulating , that are supplied with the neural network tool kit of MATLAB , If user transfers relevant with program on the basis of the necessaries of self . Thereby it can be avoided to compose complex and immense algorithm order. Moreover method using the MATLAB neural net tool kit to design BP network are introduced in detail. The application example is given out , it has proved the feasibility of the method. KEYWORDS :Neural network ; Tool kit ; Simulation —511— © 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
分享到:
收藏