BP神经网络工具箱.docx

上传人:王** 文档编号:1334106 上传时间:2024-06-19 格式:DOCX 页数:6 大小:34.07KB
下载 相关 举报
BP神经网络工具箱.docx_第1页
第1页 / 共6页
BP神经网络工具箱.docx_第2页
第2页 / 共6页
BP神经网络工具箱.docx_第3页
第3页 / 共6页
BP神经网络工具箱.docx_第4页
第4页 / 共6页
BP神经网络工具箱.docx_第5页
第5页 / 共6页
BP神经网络工具箱.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
资源描述

《BP神经网络工具箱.docx》由会员分享,可在线阅读,更多相关《BP神经网络工具箱.docx(6页珍藏版)》请在优知文库上搜索。

1、1 .神经网络神经网络是单个并行处理元素的集合,我们从生物学神经系统得到启发。在自然界,网络功能主要由神经节决定,我们可以通过改变连接点的权重来训练神经网络完成特定的功能。一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。如下图所示。这里,网络根据输出和目标的比较而调整,直到网络输出和目标匹配。作为典型,许多输入/目标对应的方法已被用在有监督模式中来训练神经网络。神经网络己经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、鉴定、分类、语音、翻译和控制系统。如今神经网络能够用来解决常规计算机和人难以解决的问题。我们主要通过这个工具箱来建立示范的神经

2、网络系统,并应用到工程、金融和其他实际项目中去。一般普遍使用有监督训练方法,但是也能够通过无监督的训练方法或者直接设计得到其他的神经网络。无监督网络可以被应用在数据组的辨别上。一些线形网络和Hopfield网络是直接设计的。总的来说,有各种各样的设计和学习方法来增强用户的选择。神经网络领域己经有50年的历史了,但是实际的应用却是在最近15年里,如今神经网络仍快速发展着。因此,它显然不同与控制系统和最优化系统领域,它们的术语、数学理论和设计过程都己牢固的建立和应用了好多年。我们没有把神经网络工具箱仅看作一个能正常运行的建好的处理轮廓。我们宁愿希望它能成为一个有用的工业、教育和研究工具,一个能够帮

3、助用户找到什么能够做什么不能做的工具,一个能够帮助发展和拓宽神经网络领域的工具。因为这个领域和它的材料是如此新,这个工具箱将给我们解释处理过程,讲述怎样运用它们,并且举例说明它们的成功和失败。我们相信要成功和满意的使用这个工具箱,对范例和它们的应用的理解是很重要的,并且如果没有这些说明那么用户的埋怨和质询就会把我们淹没。所以如果我们包括了大量的说明性材料,请保持耐心。我们希望这些材料能对你有帮助。这个章节在开始使用神经网络工具箱时包括了一些注释,它也描述了新的图形用户接口和新的运算法则和体系结构,并且它解释了工具箱为了使用模块化网络对象描述而增强的机动性。最后这一章给出了一个神经网络实际应用的

4、列表并增加了一个新的文本-神经网络设计。这本书介绍了神经网络的理论和它们的设计和应用,并给出了相当可观的MAT1.AB和神经网络工具箱的使用。2 .反向传播网络(BP网络)1 .概述前面介绍了神经网络的结构和模型,在实际应用中,我们用的最广泛的是反向传播网络(BP网络)。下面就介绍一下BP网络的结构和应用。BP网络是采用WidrOW-HOff学习算法和非线性可微转移函数的多层网络。一个典型的BP网络采用的是梯度下降算法,也就是WidrOW-HOff算法所规定的。backpropagation就是指的为非线性多层网络计算梯度的方法。现在有许多基本的优化算法,例如变尺度算法和牛顿算法。神经网络工具

5、箱提供了许多这样的算法。这一章我们将讨论使用这些规则和这些算法的优缺点。一个经过训练的BP网络能够根据输入给出合适的结果,虽然这个输入并没有被训练过。这个特性使得BP网络很适合采用输入/目标对进行训练,而且并不需要把所有可能的输入/目标对都训练过。为了提高网络的适用性,神经网络工具箱提供了两个特性-规则化和早期停止0这两个特性和用途我们将在这一章的后面讨论。这一章还将讨论网络的预处理和后处理技术以提高网络训练效率。2 .基础网络结构神经网络的结构前一章已详细讨论过,前馈型BP网络的结构结构和它基本相同,这里就不再详细论述了,这里着重说明以下几点:1 .常用的前馈型BP网络的转移函数有IOgSi

6、g,tansig,有时也会用到线性函数PUrelin。当网络的最后一层采用曲线函数时,输出被限制在一个很小的范围内,如果采用线性函数则输出可为任意值。以上三个函数是BP网络中最常用到的函数,但是如果需要的话你也可以创建其他可微的转移函数。2 .在BP网络中,转移函数可求导是非常重要的,tansig、IogSig和purelin都有对应的导函数dtansig.dlogsig和dpurelin。为了得到更多转移函数的导函数,你可以带字符”deriv”的转移函数:tansig(deriv)ans=dtansig网络构建和初始化训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络

7、。这需要4个输入参数。第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。第二个参数是一个颗预每层神经元个数的数组。第三个参数是包含每层用到的转移函数名称的细胞数组。最后一个参数是用到的训练函数的名称。举个例子,下面命令将创建一个二层网络,其网络模型如下图所示。输入隐层输出层m=tana电+bvPSUB+蚓它的输入是两个元素的向量,第一层有三个神经元,第二层有一个神经元。第一层的转移函数是tan-sigmoid,输出层的转移函数是Iinear。输入向量的第一个元素的范围是-1到2,输入向量的第二个元素的范围是0到5,训练函数是traingdonet=newff(-l2;05,3,1

8、,(tansig,purelin)traingd);这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。我们可能要多次重新初始化权重或者进行自定义的初始化。下面就是初始化的详细步骤。在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。下面就是网络如何初始化的:net=init(net);我们可以通过设定网络参数net.initFcn和net.layeri).initFcn这一技巧来初始化一个给定的网络。net.initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initl

9、ay,它允许每一层用单独的初始化函数。设定了netinitFcn,那么参数net.layeri.initFcn也要设定用来决定每一层的初始化函数。对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw0initwb函数根据每一层自己的初始化参数(net.inputWeightsi,j.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands,它使权重在-1至打之间随机取值。这种方式经常用在转换函数是线性函数时。initnw通常用于转换函数是曲线函数。它根据NgUyen和WidrOWNgWi90为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦

10、的分布在输入空间。它比起单纯的给权重和偏置随机赋值有以下优点:(I)减少神经元的浪费(因为所有神经元的活动区域都在输入空间内)。(2)有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。初始化函数被newff所调用。因此当网络创建时,它根据缺省的参数自动初始化。init不需要单独的调用。可是我们可能要重新初始化权重和偏置或者进行自定义的初始化。例如,我们用newff创建的网络,它缺省用initnw来初始化第一层。如果我们想要用rands重新初始化第一层的权重和偏置,我们用以下命令:net.layersI).initFcn=initwb;net.inputWeights1,1J.i

11、nitFcn=rands;net.biases1,1J.initFcn=rands;net.biases2,l).initFcn=rands;net=init(net);网络模拟(SlM)函数sim模拟一个网络。sim接收网络输入p,网络对象net,返回网络输出a,这里是SimUff用来模拟上面建立的带一个输入向量的网络。P=1;2;a=sim(net,p)a=-0.1011(用这段代码得到的输出是不一样的,这是因为网络初始化是随机的。)下面调用Sim来计算一个同步输入3向量网络的输出:p=132;241;a=sim(net,p)a=-0.1011-0.23080.4955网络训练一旦网络加权

12、和偏差被初始化,网络就可以开始训练了。我们能够训练网络来做函数近似(非线性后退),模式结合,或者模式分类。训练处理需要一套适当的网络操作的例子-网络输入p和目标输出to在训练期间网络的加权和偏差不断的把网络性能函数net.performFcn减少到最小。前馈网络的缺省性能函数是均方误差mse-网络输出和目标输出t之间的均方误差。这章的余项将描述几个对前馈网络来说不同的训练算法。所有这些算法都用性能函数的梯度来决定怎样把权重调整到最佳。梯度由叫做反向传播的技术决定,它要通过网络实现反向计算。反向传播计算源自使用微积分的链规则。基本的反向传播算法的权重沿着梯度的负方向移动,这将在下一节讲述。以后的

13、章节将讲述更复杂的算法以提高收敛速度。反向传播算法反向传播算法中有许多变量,这一章将讨论其中的一些。反向传播学习算法最简单的应用是沿着性能函数最速增加的方向-梯度的负方向更新权重和偏置。这种递归算法可以写成:xk+1=xk-akgk这里Xk是当前权重和偏置向量,gk是当前梯度,ak是学习速率。有两种不同的办法实现梯度下降算法:增加模式和批处理模式。在增加模式中,网络输入每提交一次,梯度计算一次并更新权重。在批处理模式中,当所有的输入都被提交后网络才被更新。下面两节将讨论增加模式和批处理模式。增加模式训练法(ADAPT)函数adapt用来训练增加模式的网络,它从训练设置中接受网络对象、网络输入和

14、目标输入,返回训练过的网络对象、用最后的权重和偏置得到的输出和误差。这里有几个网络参数必须被设置,第一个是net.adaptFcn,它决定使用哪一种增加模式函数,缺省值为adaptwb,这个值允许每一个权重和偏置都指定它自己的函数,这些单个的学习函数由参数net.biasesi,j).IearnFcn、net.inputWeightsi,j).IearnFcn、net.layerWeightsi,j).learnFcn和GradientDeSCent(1.EARDGD)来决定。对于基本的梯度最速下降算法,权重和偏置沿着性能函数的梯度的负方向移动。在这种算法中,单个的权重和偏置的学习函数设定为I

15、earngdZ下面的命令演示了怎样设置前面建立的前馈函数参数:net.biases1,1JJearnFcn=learngd;net.biases2,l(.IearnFcn=learngd;net.layerVeights2,1).IearnFcn=learngd;net.inputWeights1,1).IearnFcn=,learngd,;函数Ieamgd有一个相关的参数-学习速率k权重和偏置的变化通过梯度的负数乘上学习速率倍数得到。学习速率越大,步进越大。如果学习速率太大算法就会变得不稳定。如果学习速率太小,算法就需要很长的时间才能收敛。当IeamFCn设置为Ieamgd时,就为每一个权重和偏置设置了学习速率参数的缺省值,如上面的代码所示,当然你也可以自己按照意愿改变它。下面的代码演示了把层权重的学习速率设置为0.2。我们也可以为权重和偏置单独的设置学习速率。net.layerVeights2,1).IearnParam.Ir=0.2;为有序训练设置的最后一个参数是net.adaptParam.passes,它决定在训练过程中训练值重复的次数。这里设置重复次数为200net.adaptParam.passes=200;现在我们就可以开始训练网络了。当然我们要指定输入值和目标值如下所示:p=-l-122;0505;t=-l-111;如果我们要在每一次提交输入后都更新权重,那么我

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!