ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:29.10KB ,
资源ID:11928432      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11928432.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab神经网络学习总结.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab神经网络学习总结.docx

1、matlab神经网络学习总结1 通过神经网络滤波和信号处理,传统的sigmoid函数具有全局逼近能力,而径向基rbf函数则具有更好的局部逼近能力,采用完全正交的rbf径向基函数作为激励函数,具有更大的优越性,这就是小波神经网络,对细节逼近能力更强。BP网络的特点网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题。我们无需建立模型,或了解其内部过程,只需输入,获得输出。只要BPNN结构优秀,一般20个输入函数以下的问题都能在50000次的学习以内收敛到最低误差附近。而且理论上,一个三层的神经网络,能够以任意精度

2、逼近给定的函数,这是非常诱人的期望;网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;网络具有一定的推广、概括能力。bp主要应用回归预测(可以进行拟合,数据处理分析,事物预测,控制等)、 分类识别(进行类型划分,模式识别等),在后面的学习中,都将给出实例程序。但无论那种网络,什么方法,解决问题的精确度都无法打到100%的,但并不影响其使用,因为现实中很多复杂的问题,精确的解释是毫无意义的,有意义的解析必定会损失精度。BP注意问题1、BP算法的学习速度很慢,其原因主要有:a 由于BP算法本质上为梯度下降法,而它所要优化的目标函数又非常复杂,因此,必然会出现“锯齿形现象

3、”,这使得BP算法低效;结论4:由上表可以看出,后者的初始权值比较合适些,因此训练的时间变短,误差收敛速度明显快些。因此初始权值的选取对于一个网络的训练是很重要的。1.4,用最基本的BP 算法来训练BP 神经网络时,学习率、均方误差、权值、阈值的设置都对网络的训练均有影响。综合选取合理的值,将有利于网络的训练。在最基本的BP 算法中,学习率在整个训练过程是保持不变的,学习率过大,算法可能振荡而不稳定;学习率过小,则收敛速度慢,训练时间长。而要在训练之前选择最佳的学习率是不现实的。因此学习率可变的BP 算法(variable learning rate backpropagation ,VLBP

4、)应运而生。下一结介绍用VLBP 来训练该网络的情况。b 存在麻痹现象,由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;c 为了使网络执行BP算法,不能用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法将引起算法低效。2、网络训练失败的可能性较大,其原因有:a 从数学角度看,BP算法为一种局部搜索的优化方法,但它要解决的问题为求解复杂非线性函数的全局极值,因此,算法很有可能陷入局部极值,使训练失败;b 网络的逼近、推广能力同学习样本的典型性密切相关,而从问题中选取典型样本实例组成

5、训练集是一个很困难的问题。3、网络结构的选择:尚无一种统一而完整的理论指导,一般只能由经验选定。为此,有人称神经网络的结构选择为一种艺术。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题。4、新加入的样本要影响已学习成功的网络,而且刻画每个输入样本的特征的数目也必须相同。5、采用s型激活函数,由于输出层各神经元的理想输出值只能接近于1或0,而不能打到1或0,因此设置各训练样本的期望输出分量Tkp时,不能设置为1或0,设置0.9或0.1较为适宜。一 认识bp:第二节内容:主要是阐述BP中几个容易混绕的概念和问题,包括什么是网络的泛化能力?过拟合是什

6、么,怎么处理?学习速率有什么作用?神经网络的权值和阈值分别是个什么概念?用BP逼近非线性函数,如何提高训练精度?本节主要学习BP中几个容易混绕的概念和问题:什么是网络的泛化能力?过拟合是什么,怎么处理?学习速率有什么作用?神经网络的权值和阈值分别是个什么概念?用BP逼近非线性函数,如何提高训练精度?什么是网络的泛化能力?一个神经网路是否优良,与传统最小二乘之类的拟合评价不同(主要依据残差,拟合优度等),不是体现在其对已有的数据拟合能力上,而是对后来的预测能力,既泛化能力。网络的预测能力(也称泛化能力、推广能力)与训练能力(也称逼近能力、学习能力)的矛盾。一般情况下,训练能力差时,预测能力也差,

7、并且一定程度上,随训练能力地提高,预测能力也提高。但这种趋势有一个极限,当达到此极限时,随训练能力的提高,预测能力反而下降,即出现所谓“过拟合”现象。此时,网络学习了过多的样本细节,而不能反映样本内含的规律。过拟合是什么,怎么处理?神经网络计算不能一味地追求训练误差最小,这样很容易出现“过拟合”现象,只要能够实时检测误差率的变化就可以确定最佳的训练次数,比如15000次左右的学习次数,如果你不观察,设成500000次学习,不仅需要很长时间来跑,而且最后结果肯定令人大失所望。避免过拟合的一种方法是:在数据输入中,给训练的数据分类,分为正常训练用、变量数据、测试数据,在后面节将讲到如何进行这种分类

8、。其中变量数据,在网络训练中,起到的作用就是防止过拟合状态。学习速率有什么作用?学习速率这个参数可以控制能量函数的步幅,并且如果设为自动调整的话,可以在误差率经过快速下降后,将学习速率变慢,从而增加BPNN的稳定性。此时训练方法采用采用贝叶斯正则化算法提高 BP 网络的推广能力。二 主要函数1 prepca 函数对归一化后的样本数据进行主元分析,从而消除样本数据中的冗余成份,起到数据降维的目的。 ptrans,transMat = prepca(pn,0.001);2、数据归一化 mapminmax(x,minx,maxx)minx为要取得的最小值,maxx为最大值一般归一化到0.1-0.9比

9、较和2 或者使用mapstd3 反归一化 y1=mapminmax(reverse,y,ps)4 dividevec()函数 输入训练数据的乱序排法,以及分类trainV,valV,testV = dividevec(p,t,valPercent,testPercent)p = rands(3,1000);t = p(1,:).*p(2,:); p(2,:).*p(3,:);trainV,valV,testV = dividevec(p,t,0.20,0.20); net = newff(minmax(p),10 size(t,1); trainV,valV,testV,trainInd,va

10、lInd,testInd =divideblock(allV,trainRatio,valRatio,testRatio)训练数据,变量数据,测试数据,训练数据矩阵的标号,变量数据标号,测试数据标号 =divideblock(所有数据,训练数据百分比,变量数据百分比,测试数据百分比)其实dividevec和后面四个分类函数的区别在于,dividevec一般直接在Matlab代码中调用。而后面四个函数是通过设置网络的divideFcn函数来实现,比如,net.divideFcn=divideblock,但不是说不可以在代码中像dividevec直接调用正常数据,是用来正常训练用变量数据,主要目的

11、是防止训练中出现过拟合状态测试数据,是用来看训练效果的 net = train(net,trainV.P,trainV.T,valV,testV);sim(net,validateSamples.P,validateSamples.T)2. 任何生成相同的随机数方法: 试着产生和时间相关的随机数,种子与当前时间有关. rand(state,sum(100*clock) 即: rand(state,sum(100*clock) ;rand(10) 只要执行 rand(state,sum(100*clock) ;的当前计算机时间不现,生成的随机值就不现. 也就是如果时间相同,生成的 随机数还是会相

12、同. 在你计算机速度足够快的情况下,试运行一下: rand(state,sum(100*clock);A=rand(5,5);rand(state,sum(100*clock);B=rand(5,5)5 常用bp训练函数Traingdm % 动量梯度下降算法Traingda 变学习率梯度下降算法Traingdx % 变学习率动量梯度下降算法Trainrp RPROP(弹性BP)算法,内存需求最小 大型网络训练方法% (共轭梯度算法)traincgf; % Fletcher-Reeves修正算法traincgp; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修

13、正算法略大traincgb; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大% (大型网络的首选算法)trainscg; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多trainbfg; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快trainoss; % One Step Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大% (中型网络

14、的首选算法)trainlm; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快trainbr; % 贝叶斯正则化算法6 trainb用于网络初始阀值和权值训练函数net,tr = trainb(net,tr,trainV,valV,testV);不直接使用由train调用。 训练好的权值、阈值的输出方法是:输入到隐层权值: 代码: w1=net.iw1,1隐层阈值:代码: theta1=net.b1隐层到输出层权值 代码:w2=net.lw2,1;输出层阈值: 代码:theta2=net.b2net.IW是输入权值,net.LW是层权值,net.b是阈值。直接用命令对

15、这些值赋值就可以了。还有不懂的可以参看帮助训练好的BP神经网络保存:因为每次初始化网络时都是随机的,而且训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(大致是一样的),所以每次训练后的结果也略有不同。找到比较好的结果后,用命令save filen_ame net_name保存网络,可使预测的结果不会变化,在需要的调用时用命令load filename载入。关于如何找到比较好的结果,进行保存,可以设置误差,在循环中保存,具体使用可以参看bp交通预测优化后的例子7 最大学习速率lr=0.99*maxlinlr(p,1);A=purelin(W*P,B);e=T-A;dW,dB=le

16、arnwh(P,e,lr);B=B+dB。w为权值,b为阀值。e为误差神经网络例子。例子1 本文实习带训练,验证,测试数据的BP函数识别。x=1:1:100;y=2*sin(x*pi/10)+0.5*randn(1,100);plot(x,y);输入输出xg,ps=mapminmax(x,.1,.9);yg,pt=mapminmax(y,.1,.9);归一化到0.1-0.9trainV,valV,testV = dividevec(xg,yg,0.2,0.2);随机抽取训练,验证,测试数据net=newff(minmax(xg),15,1,tansig,purelin,trainscg);建立

17、BP函数net=train(net,trainV.P,trainV.T,valV,testV);训练xtrain=sim(net,trainV.P,trainV.T);仿真xvalidation= sim(net,valV.P,valV.T);仿真xtest= sim(net,testV.P,testV.T);仿真ytrainr=mapminmax(reverse,xtrain,pt);对仿真反归一化yvalidationr=mapminmax(reverse,xvalidation,pt);对仿真反归一化ytestr= mapminmax(reverse,xtest,pt);对仿真反归一化t

18、rainr= mapminmax(reverse,trainV.T,pt);反归一化validationr=mapminmax(reverse,valV.T,pt);反归一化testr=mapminmax(reverse,testV.T,pt);反归一化msetrain=mse(trainr-ytrainr);求误差msevalidation=mse(yvalidationr-validationr);求误差msetest=mse(testr-ytestr);求误差例2采用贝叶斯正则化算法提高 BP 网络的推广能力。 在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶

19、斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下MATLAB 语句生成: 输入矢量:P = -1:0.05:1; 目标矢量:randn(seed,78341223); T = sin(2*pi*P)+0.1*randn(size(P); 解:本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF生成一个新的前向神经网络 % TRAIN对 BP 神经网络进行训练% SIM对 BP 神经网络进行仿真 pause% 敲任意键开始 clc % 定义训练样本矢量 % P 为输入矢

20、量 P = -1:0.05:1; % T 为目标矢量 randn(seed,78341223); T = sin(2*pi*P)+0.1*randn(size(P); % 绘制样本数据点 plot(P,T,+); echo off hold on; plot(P,sin(2*pi*P),:);% 绘制不含噪声的正弦曲线 echo on clc pause clc % 创建一个新的前向神经网络 net=newff(minmax(P),20,1,tansig,purelin); pause clc echo off clcdisp(1. L-M 优化算法 TRAINLM); disp(2. 贝叶斯

21、正则化算法 TRAINBR); choice=input(请选择训练算法(1,2):); figure(gcf); if(choice=1) echo on clc % 采用 L-M 优化算法 TRAINLM net.trainFcn=trainlm; pause clc % 设置训练参数 net.trainParam.epochs = 500; net.trainParam.goal = 1e-6; net=init(net); % 重新初始化 pause clcelseif(choice=2) echo on clc % 采用贝叶斯正则化算法 TRAINBR net.trainFcn=tr

22、ainbr; pause clc % 设置训练参数 net.trainParam.epochs = 500; randn(seed,192736547); net = init(net); % 重新初始化 pause clcend % 调用相应算法训练 BP 网络 net,tr=train(net,P,T); pause clc % 对 BP 网络进行仿真 A = sim(net,P); % 计算仿真误差 E = T - A; MSE=mse(E) pause clc % 绘制匹配结果曲线 close all; plot(P,A,P,T,+,P,sin(2*pi*P),:); pause; c

23、lcecho offRBF网络与BP网络比较: RBF网络的输出是隐单元输出的线性加权和,学习速度加快 BP网络使用sigmoid()函数作为激活函数,这样使得神经元有很大的输入可见区域 径向基神经网络使用径向基函数(一般使用高斯函数)作为激活函数,神经元输入空间区域很小,因此需要更多的径向基神经元 二 RBF径向基网络net,tr = newrb(P,T,goal,spread,MN,DF) Spread为分散系数,默认为1, spread分布密度是自己调节的.我建议你多试几次,Spread越大 函数就越平滑 但是对于目标的接近就越不稳定。MN为最大神经元数目 Here we design

24、a radial basis network given inputs P and targets T. P = 1 2 3; T = 2.0 4.1 5.9; net = newrb(P,T); P = 1.5; Y = sim(net,P)众所周知,BP网络用于函数逼近时,权值的调节采用的是负梯度下降法。这个调节权值的方法有局限性,即收敛慢和局部极小等。径向基函数网络(RBF)在逼近能力、分类能力和学习速度等方面均优于BP网络。 Matlab中提供了四个径向基函数相关的函数,它们都是创建两层的神经网络,第一层都是径向基层,第二层是线性层或者竞争层。主要的区别是它们权值、阀值就算函数不同或者

25、是否有阀值。 注意:径向基函数网络不需要训练,在创建的时候就自动训练好了。 = newrbe(P,T,spread) newrbe()函数可以快速设计一个径向基函数网络,且是的设计误差为0。第一层(径向基层)神经元数目等于输入向量的个数,加权输入函数为dist,网络输入函数为netprod;第二层(线性层)神经元数模有输出向量T确定,加权输入函数为dotprod,网络输入函数为netsum。两层都有阀值。 第一层的权值初值为p,阀值初值为0.8326/spread,目的是使加权输入为spread时径向基层输出为0.5,阀值的设置决定了每一个径向基神经元对输入向量产生响应的区域。 ,tr = n

26、ewrb(P,T,goal,spread,MN,DF) 该函数和newrbe一样,只是可以自动增加网络的隐层神经元数模直到均方差满足精度或者神经元数模达到最大为止。 例子1 P=-1:0.1:1; T=sin(P); spread=1; mse=0.02; net=newrb(P,T,mse,spread); t=sim(net,P); plot(P,T,r*,P,t) 例子2P=-1:0.1:1;T=-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.164

27、7 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201;%应用newb()函数可以快速构建一个径向基神经网络,并且网络自动根据输入向量和期望值%进行调整,从而进行函数逼近,预先设定均方差精度为eg以及散布常数sc。eg=0.02;sc=1;net=newrb(P,T,eg,sc);figure;plot(P,T,+);xlabel(输入);X=-1:0.1:1;Y=sim(net,X);hold on;plot(X,Y);hold off;legend(目标,输出) = newgrnn(P,T,spread)泛回归网络(gene

28、ralized regression neural network) 广义回归网络主要用于函数逼近。它的结构完全与newbre的相同,但是有以下几点区别(没有说明的表示相同): (1)第二网络的权值初值为T (2)第二层没有阀值 (3)第二层的权值输入函数为normpod,网络输入函数为netsum P=0:1:20; T=exp(P).*sin(P); net=newgrnn(P,T,0.7); p=0:0.1:20; t=sim(net,p); plot(P,T,*r,p,t) = newpnn(P,T,spread)概率神经网络(probabilistic neural network)

29、 (主要用于分类问题) 该网络与前面三个最大的区别在于,第二层不再是线性层而是竞争层,并且竞争层没有阀值,其它同newbre,故PNN网络主要用于解决分类问题。PNN是按下面的方式进行分类的: 为网络提供一输入向量后,首先,径向基层计算该输入向量同样本输入向量之间的距离|dist|,该层的输出为一个距离向量;竞争层接受距离向量为输入,计算每个模式出现的概率,通过竞争传递函数为概率最大的元素对应输出1,否则为0。 注意:由于第二层是竞争层,故输入/输出向量必须使用ind2vec/vec2ind函数进行转换,也就是将索引转换为向量或者向量转换为索引。 转换后行数等于数据索引个数,列数等于数据索引中最大的值 P=1 2; 2 2;1 1 P = 1 2 1 2 2 1 Tc=1 2 3; 应该为分类索引 T=ind2vec(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1