版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章BP神经网络分析与应用5.1BP神经网络原理BP网络(BackPropagation)是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。层与层之间有两种信号在流通。一种是工作信号(用实线表示),它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。另一种是误差信号(用虚线表示),网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。BP网络的学习过程由前向计算过程和误差反向传播过程组成。在前向计算过程中,输入量从输入层经隐藏层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复计算。这两个过程一次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。
BP算法因其简单、易地、计算量小、并行性强等优点,目前是神经网络训练采用最多也是最成熟的训练算法之一。其算法的实质是求解误差函数的最小值问题,由于它采用非线性规则中最速下降法,按误差函数的负梯度方向修改权值,因而通常存在以下问题。●学习效率低,收敛速度慢。●易陷入局部极小状态。针对以上问题,一般常用三种方式对BP算法进行改进。(1)附加动量法。附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用有可能滑过这些极小值。(2)自适应学习速率。对于一个特定的问题,学习速率通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不一定对后来的训练合适。为了解决这个问题,需要在训练过程中自动调节学习速率。5.1.3BP神经网络的训练本小节主要介绍增加方式和批处理方式这两种不同的训练方式。在增加方式中,每提交一次输入数据,网络权重和阈值都更新一次。在批处理方式中,仅仅当所有的输入数据都被提交后,网络权重和阈值才被更新。1.增加方式虽然增加方式更普遍地应用于动态网络,比如自适应滤波,但实际上在静态和动态网络中都可以应用它。(1)静态网络中的增加方式。用增加方式来训练网络,每提交一次输入数据,网络权重和偏置都更新一次。假定神经网络的输入为。批处理方式在批处理方式中,仅仅当所有的输入数据都被提交后,网络权重和阈值才被更新,它也可以应用于静态和动态网络。(1)静态网络中的批处理方式。批处理方式可以用adapt或train函数来实现,由于采用了更高效的学习算法,train通常是最好的选择。增加方式只能用adapt来实现,而train函数只能用于批处理方式。参照增加方式静态网络中使用的网络,学习速率设置为0.1。5.2BP神经网络设计5.2.1网络的层数在理论上,具有偏差和至少一个S型隐藏层加上一个线性输出的网络,能够逼近任何有理数。增加层数可以提高精度降低误差,但同时也使网络复杂化,从而增加了网络权值的训练时间。误差精度的提高也可以通过增加神经元数目来获得,其训练效果比增加层数更容易观察和调整。在一般情况下,应优先考虑增加隐藏层中的神经元数。5.2.2隐藏层的神经元数增加神经元数或隐藏层数,可以提高网络训练的精度。但是在结构实现上,增加神经元数要比增加隐藏层数简单。那应该选取多少隐藏层节点才合适呢?目前在理论上还没有一个明确的规定。在具体设计时,一般采取尝试法,即通过对不同神经元数进行训练对比,然后选取最适合的网络。5.2.3初始值的选取由于系统是非线性的,初始值会在很大程度上影响学习是否达到局部最小、是否能够收敛及训练时间的长短。5.3BP神经网络函数1.feedforwardnet函数feedforwardnet函数用于生成前馈神经网络。函数的语法格式为:net=feedforwardnet(hiddenSizes,trainFcn):返回前馈神经网络,其隐藏层大小为hiddenSizes,训练函数由trainFcn指定。前馈网络由一系列层组成。第一层有来自网络输入的连接。每个后续层都有来自上一个层的连接,最终层产生网络的输出。前馈网络的专用版本包括拟合和模式识别网络。【例5-1】使用前馈神经网络来求解简单的问题。>>%加载训练数据[x,t]=simplefit_dataset;%1×94矩阵x包含输入值,1×94矩阵t包含相关联的目标输出值>>%构造一个前馈网络,其中一个隐藏层的大小为10>>net=feedforwardnet(10);>>%使用训练数据训练网络net>>net=train(net,x,t);%得到训练过程如图5-3所示>>%查看经过训练的网络,网络图如图5-4所示>>view(net)
2.cascadeforwardnet函数在神经网络中,利用cascadeforwardnet函数生成级联前向神经网络。函数的语法格式为:net=cascadeforwardnet(hiddenSizes,trainFcn):返回级联前向神经网络,其隐藏层大小为hiddenSizes,训练函数由trainFcn指定。级联前向网络类似于前馈网络,但包括从输入和每个前一层到后续层的连接。如同前馈网络一样,只要提供足够多的隐藏神经元两层或多层级联网络便可以以任意方式很好地学习任何有限输入-输出关系。【例5-2】使用级联前向神经网络来求解简单的问题。>>%加载训练数据[x,t]=simplefit_dataset;%1×94矩阵x包含输入值,1×94矩阵t包含相关联的目标输出值>>%构造一个级联前向网络,其中一个隐藏层的大小为10net=cascadeforwardnet(10);>>%使用训练数据训练网络net,训练过程如图5-5所示net=train(net,x,t);>>%查看经过训练的网络,网络图如图5-6所示view(net)
3.fitnet函数在神经网络工具箱中,提供fitnet函数用于实现函数拟合神经网络。函数的语法格式为:net=fitnet(hiddenSizes):返回函数拟合神经网络,其隐藏层大小为hiddenSizes。net=fitnet(hiddenSizes,trainFcn):返回函数拟合神经网络,其隐藏层大小为hiddenSizes,训练函数由trainFcn指定。【例5-3】构造并训练函数拟合网络。>>%加载训练数据>>[x,t]=simplefit_dataset;%1×94矩阵x包含输入值,1×94矩阵t包含相关联的目标输出值>>%构造函数拟合神经网络,其中一个隐藏层的大小为10net=fitnet(10);>>%查看该网络%网络图如图5-7所示view(net)
4.train函数在神经网络中,train函数用于训练浅层神经网络。函数的语法格式为:trainedNet=train(net,X,T,Xi,Ai,EW):根据net.trainFcn和net.trainParam训练网络net。[trainedNet,tr]=train(net,X,T,Xi,Ai,EW):还返回训练记录。[trainedNet,tr]=train(net,X,T,Xi,Ai,EW,Name,Value):使用一个或多个名称-值对组参数指定的其他选项训练网络。【例5-4】训练和绘制网络。>>%输入x和目标t定义一个可以进行绘图的简单函数>>x=[012345678];t=[00.840.910.14-0.77-0.96-0.280.660.99];plot(x,t,'o')>>%此处feedforwardnet会创建一个两层前馈网络。该网络有一个包含十个神经元的隐藏层>>net=feedforwardnet(10);net=configure(net,x,t);y1=net(x)plot(x,t,'o',x,y1,'x')y1=-1.5607-1.6032-1.3181-0.9553-0.7898-1.4257-0.89390.68041.8595>>%训练该网络,然后重新对其进行仿真>>net=train(net,x,t);y2=net(x)......
7.learngdm函数learngd函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。函数的语法格式为:[dW,LS]=learngdm(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)info=learngdm('code')参数W为S*R维的权值矩阵;P为Q组R维的输入向量;Z为Q组S维的加权输入向量;N为Q组S维的输入向量;A为Q组S维的输出向量;T为Q组S维的层目标向量;E为Q组S维的层误差向量;gW为与性能相关的S*R维梯度;gA为与性能相关的S*R维输出梯度;D为S*S的神经元距离矩阵;LP为学习参数,可通过该参数设置学习速率,格式:LP.lr=0.01;LS为学习状态初始为空。返回参数dW为S*R维的权值或阈值变化率矩阵;LS为新的学习状态。info=learngd(code):根据不同的code值返回有关函数的不同信息,包括:●pnames:返回设置的学习参数;●pdefaults:返回默认的学习参数;●needg:如果函数使用了gW或者gA,则返回1。5.4BP神经网络的应用BP网络有很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说明BP网络在各工程中的应用。【例5-7】利用BP神经网络预测给定数据,并计算误差值。clearall;%%读取数据input=randi([120],200,2);%载入输入数据output=input(:,1)+input(:,2);%载入输出数据%%设置训练数据和预测数据input_train=input(1:190,:)';output_train=output(1:190,:)';input_test=input(191:200,:)';output_test=output(191:200,:)';%节点个数inputnum=2;%输入层节点数量hiddennum=5;%隐含层节点数量outputnum=1;%输出层节点数量%%训练样本数据归一化[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化......
图5-14BP预测数据效果
分析:假设频率参数k=2,绘制要逼近的非线性函数的目标曲线,代码为:>>clearall;k=2;p=[-1:0.05:8];t=1+sin(k*pi/2*p);plot(p,t,'-');%效果如图5-15所示title('目标函数');xlabel('时间');ylabel('非线性函数');
图5-15逼近的非线性函数曲线
用newff函数建立BP网络结构。隐藏层神经元数目可以改变,暂设为=5,输出层有一个神经元。选择隐藏层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg-Marquardt算法trainlm。n=5;net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');%对初始网络,可以应用sim()函数观察网络输出y1=sim(net,p);figure;plot(p,t,'-',p,y1,'.');%效果如图5-16所示title('未训练网络的输出结果');xlabel('时间');ylabel('仿真输出--原函数-')
图5-16网络输出曲线与原函数的比较图
因为使用newff函数建立网络时,权值和阈值的初始化是随机的,所以网络输出结构不好,根据达不到函数的逼近目的,每次运行的结果也有时不同。应用train函数对网络进行训练前,需要预先设置网络训练参数。将训练时间设为200,训练精度设为0.2,其余参数使用默认值。训练神经网络的代码为:net.trainParam.epochs=200;%网络训练时间设为200net.trainParam.goal=0.2;%网络训练精度设为0.2net=train(net,p,t);%开始训练网络训练后得到的误差变化过程如图5-17所示。
图5-17训练后得到的误差变化过程5.4.3BP网络的工具箱拟合数据应用【例5-9】假设有一家健康诊所的数据。想要设计一个网络,该网络可以基于13个解剖学测量值来预测人的体脂率。总共有252个人的样本,其中包括这13项数据和相关的体脂率。可以用两种方法解决此问题:●使用神经网络拟合,如使用神经网络拟合对数据进行拟合中所述。●使用命令行函数,如使用命令行函数拟合数据中所述。一般最好从App开始,然后使用该App自动生成命令行脚本。在使用任何方法之前,首先通过选择数据集来定义问题。每个神经网络App都可以访问许多采样数据集,可以使用这些数据集来试验工具箱(1)定义问题。要工具箱定义拟合(回归)问题,请将一组输入向量(预测变量)排列为矩阵中的列。然后,将一组响应(每个输入向量的正确输出向量)排列成第二个矩阵。例如,可以定义一个具有四个观测值的回归问题,每个观测值有两个输入特征和一个响应,如下所示:>>predictors=[0101;0011];responses=[0001];(2)使用神经网络拟合数据进行拟合。使用nftool打开神经网络拟合,如图5-21所示。
图5-21神经拟合界面
(8)使用命令行函数拟合数据。了解如何使用工具箱的命令行功能的最简单方法是从App生成脚本,然后修改它们以自定义网络训练。例如,该实例使用神经网络拟合创建的简单脚本。x=bodyfatInputs;t=bodyfatTargets;%ChooseaTrainingFunction%Foralistofalltrainingfunctionstype:helpnntrain%'trainlm'isusuallyfastest.%'trainbr'takeslongerbutmaybebetterforchallengingproblems.%'trainscg'uses
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合成碳膜电位器制造工班组评比强化考核试卷含答案
- 司磅工安全检查模拟考核试卷含答案
- 重冶配液工班组管理测试考核试卷含答案
- 光伏聚光组件制造工创新实践竞赛考核试卷含答案
- 润滑油脂生产工岗前沟通协调考核试卷含答案
- 电梯装配调试工班组评比测试考核试卷含答案
- 纤维板铺装工岗前工作合规考核试卷含答案
- 积材工岗前基础实操考核试卷含答案
- 液化气体生产工岗中安全生产知识考核试卷含答案
- 甲酸装置操作工岗位知识评估考核试卷含答案
- 2026年安全教育授课教师培训试题
- 有机磷农药中毒诊疗专家共识(2025版)
- (2026)中国石油化工集团中石化招聘笔试试题及答案
- 大学形势与政策《国家发展战略》课堂讲授课件
- 新版2026年湖南物理卷高考真题(含答案)(网络参考)
- 2026届中国移动校园招聘笔试真题(含详细答案解析)
- 新课标高中生物实验目录
- 20260402 偏差管理控制程序
- 《浙江省城镇燃气用户设施安全检查导则》
- 地下水污染阻隔墙建设技术
- 理发店消防责任制度
评论
0/150
提交评论