神经网络与matlab仿真Word版

神经网络与matlab仿真Word版
神经网络与matlab仿真Word版

神经网络与matlab仿真

摘要

随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,本文通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解和学习。

关键词:人工神经网路matlab仿真线性神经网络

1 神经网络的发展及应用

人工神经网络(Artificial Neural Network,简称ANN)是一种高度并行的信息处理系统,它具有高度的容错性,自组织能力和自学习能力;它以神经科学的研究成果为基础,反映了人脑功能的若干基本特性,对传统的计算机结构和人工智能方法是一个有力的挑战,其目的在于探索人脑加工、储存和搜索信息的机制,进而应用于人工智能系统。

1.1 神经网络的研究历史及发展现状

神经网络的研究已有较长的历史。1943年,心理学家McCulloch和数学家Pitts合作提出形式(兴奋与抑制型)神经元的数学模型(MP模型),开创了神经科学理论研究的时代。1944年,Hebb提出了神经元连接强度的修改规则,它们至今仍在各种神经网络模型中起着重要作用。50年代末60年代初,开始了作为人工智能的网络系统的研究。1958年,F.Rosenblatt首次引进了模拟人脑感知和学习能力的感知器概念,它由阈值性神经元组成。1962年,B.Widrow提出的自适应线性元件(adaline),具有自适应学习功能,在信息处理、模式识别等方面受到重视和应用。在这期间,神经网络大都是单层线性网络。此时,人们对如何解决非线性分割问题很快有了明确的认识,但此时,计算机科学已被人工智能研究热潮所笼罩。80年代后,传统的数字计算机在模拟视听觉的人工智能方面遇到了物理上不能逾越的基线,此时,物理学家Hopfield提出了HNN模型,引入了能量函数的概念,给出了网络稳定性的判据,同时开拓了神经网络用于联想记忆和优化计算的新途径。神经网络的热潮再次掀起。此后,Feldmann和Ballard 的连接网络模型指出了传统的人工智能“计算”与生物的“计算”的不同点,给出了并行分布的计算原则;Hinton和Sejnowski提出的Boltzman机模型则急用了统计物理学的概念和方法,首次采用了多层网络的学习算法,保证整个系统趋于全局稳定点;Rumelhart和McClelland等人发展了多层网络的BP算法;Kosko提出了双向联想记忆网络;Hecht-Nielsen提出了另一种反向传播网络,可用于图像压缩和统计分析;Holland提出了分类系统类似于以规则为基础的专家系统。这些努力为神经网络的后期发展奠定了牢固的基础。

目前,神经网络在研究方向上已经形成多个流派,包括多层网络BP算法,Hopfield网络模型,自适应共振理论(ART),自组织特征映射理论等。1987年,IEEE在San Diego召开大规模的神经网络国际学术会议,国际神经网络学会也随之诞生。

迄今为止的神经网络研究。大体可分为三个大的方向:

1)探求人脑神经系统的生物结构和机制;

2)用微电子学或光学器件形成特殊功能网络,主要应用于新一代计算机制造;

3)讲神经网络理论作为解决某些问题的一种手段和方法。

1.2 神经网络的应用

在理论工作取得重要进展的同时,硬件实现的研究工作也在积极开展,神经网络理论已经渗透到各个领域,并在智能控制、模式识别、计算机视觉、自适应滤波和信号处理、非线性优化、自动目标识别、连续语音识别、声纳信号的处理、知识处理、传感器技术与机器人、生物医学工程等方面取得了很大的进展。

人工神经网络系统是仿照人脑的工作原理而产生。它是大量的、同时也是很简单的处理单元(神经元)广泛互连形成的复杂的非线性系统。在人工神经网络中存在着许多简单的、具有非线性函数功能的几类单元,它们称为人工神经元。神经元以分层的形式来组织,而它们之间又存在着用突触维持的高度互连。人工神经网络的学习能力就在于突触的权值能够在学习过程中得到加强或是削弱,并以此将信息储存于神经网络中。人工神经网络经过训练,能够实现输入到输出的映射关系,同时具有一定的推广性,因此在不同的领域得到广泛的应用,如自动控制、移动通信、生物医学、模式识别、生产制造等等。

2 面向matlab工具箱的神经网络设计

人工神经网络可通过硬件或软件方式来实现。硬件方式即神经计算机。目前较常用的还是软件实现方式。已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。

神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S 型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。

目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。

同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。

3 线性神经网络

线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成。50年代末期提出的自适应线性元件是线性神经网络最早的典型代表。其每个神经元的传递函数为线性函数,其输出可以取任意值。线性神经网络可以采用Widrow-Hoff学习规则,也称为LMS算法来调整网络的权值和阈值。

3.1 线性神经网络模型

线性神经元模型的神经元有一个线性传递函数purelin ,其输入输出之间是简单的比例关系,一次对单个线性神经元,由图1可得,a=purelin(ω×p+b).因此,线性神经网络允许输出可以取任意值,而不仅仅是0或1。

图1 线性神经元模型

图2 线性神经元传递函数

具有R 个输入的单层(S 个神经元)线性神经网络模型如下图3所示。

图3 单层多输入的线性神经网络模型

3.2 线性神经网络的学习算法

Widrow-Hoff 学习规则,又称为最小均方误差LMS (Least Mean Square Error )学习算法,由Widrow-Hoff 提出,属于有导师学习算法。

LMS 学习规则定义如下:

22

1111()(()())m m

k k mse e k d k y k m m ====-∑∑ (3-1)

其目标是通过调节权值,使mse 从误差空间的某点开始,沿着mse 的斜面向下滑行,最终使mse 达到最小值。

LMS 算法的实现有五个步骤:

第一步:初始化。给各个连接赋一个较小的随机值;

第二步:输入一个样本,计算连接权值的调整量:

2()()2()ij ij e k e k e k ωω??=?? (3-2)

2()()2()e k e k e k b b ??=?? (3-3)

1()[()(())]R ij i ij ij i e k e d k p k b ωωω=??=-+??∑ (3-4)

第三步:调整连接权值:

根据负梯度下降的原则,网络权值和阈值修正公式如下

(1)()2()()

(1)()2()T k k e k p k b k b k e k ωωηη+=++=+ (3-5)

式中η为学习率,当其取较大值时,可以加快网络的训练速度,但是如果其值太大,会导致网络稳定性的降低和训练误差的增加。所以,为了保证网络进行稳定的训练,学习率的值必须选择一个合适的值;

第四步:计算均方误差:

22

1111()(()())m m

k k mes e k d k y k m m ====-∑∑ (3-6)

第五步:判断误差是否为零或者是否达到预选设定的要求。如果是,则结束算法,否则输入下一个样本,返回第二步进入下一轮求解过程。

4 线性神经网络的matlab 实现

下表1给出了matlab 中与线性网络相关的神经网络工具函数。

errsurf 计算误差性能曲面

sim 仿真一个神经网络

具函数实现。

设计一个简单的单层线性神经元,其输入和目标分别为P=[+1.0 -1.2],T=[+0.5 +1.0]。权值和阈值的范围分别为-1~1。试用matlab实现其从输入到输出的变化关系。该线性网络的结构如下图4所示。

图4 线性网络结构图

由例中的条件编写matlab源程序如下:

%dlin1.m

%NEWLIND

%SIM

clf;

figure(gcf);

P=[1.0 -1.2];

T=[0.5 1.0];

w_range=-1:0.1:1;

b_range=-1:0.2:1;

ES=errsurf(P,T,w_range,b_range,'purelin');

plotes(w_range,b_range,ES);

ax=findobj(gcf.'type','axes');

pause

net=neslind(P,T);

format compact;

A=0;E=0;SSE=0;

A=sim(net,P)

E=T-A

SSE=sumsqr(E)

plotes(w_range,b_range,ES);

plotep(net.IW{1.1},net.b{1},SSE);

p=-1.2;

a=0;

a=sim(net,p) % 进行网络验证

disp('End of dline1')

执行程序,可得到线性网络求解后的误差曲面图5如下。

图5 线性网络误差曲面图

对此线性网络进行更多的训练以求最优解,则matlab程序更改如下。% dlin2.m

% NEWLIN

% TRAIN

% SIM

clf;

figure(gcf);

P=[1.0 -1.2];

T=[0.5 1.0];

w_range=-1:0.2:1;

b_range=-1:0.2:1;

ES=errsurf(P,T,w_range,b_range,'purelin');

plotes(w_range,b_range,ES);

pause

maxlr=0.40*maxlinlr(P,'bias');

net=newlin([-2 2].1.[0],maxlr);

net.trainParam.goal=.001;

subplot(1,2,2);

h=text(sum(get(gca,'xlim'))*0.5,sum(get(gca,'ylim'))*0.5'*Click On ME*'); set(h,'horizontal','center','fontweight','bold');

[net.IW{1.1}net.b{1}]=ginput(1);

delete(h);

[net,tr]=train (net,P,T);

format conpact;

A=0;E=0;SSE=0;

A=sim(net,P)

E=T-A

SSE=sumsqr(E)

plotes(w_range,b_range,ES);

plotep(net.IW{1.1},net.b{1},SSE);

pause

plotperf(tr,net.trainParam.goal);

p=-1.2;

a=sim(net,P)

disp('End of dlin2')

运行程序,得到的误差曲面及误差等高线图如下图6所示。

图6 误差曲面及误差等高线

5 结束语

由于自身知识的局限性,本文只是讨论了神经网络中最基本的matlab建模。我希望随着以后的深入学习,可以能够掌握matlab对神经网络的仿真方法,为自己的研究和学习添砖加瓦。

参考文献

[1]周开利,康耀红. 神经网络模型及其MATLAB仿真程序设计[M]. 北京:清华大学出版社,2005:90-95.

[2] 闵惜琳,刘国华. 用MATLAB神经网络工具箱开发BP网络应用[J]. 计算机应用,2001,21(8):163-164.

[3] 刘建斌. 人工神经网络在电磁建模中的应用[D]. 上海交通大学,2003:10-11.

[4] 张德丰. MATLAB神经网络应用设计[M]. 机械工业出版社,2009:7-12.

神经网络学习算法matlab仿真(借鉴参照)

东南大学自动化学院 智能控制概论 神经网络学习算法研究 学院: 姓名: 学号: 日期:

目录 1 任务要求叙述 ..................................................... 错误!未定义书签。 2 系统分析及设计原理 ......................................... 错误!未定义书签。 3 设计实现.............................................................. 错误!未定义书签。4仿真验证.. (6) 5 讨论与分析.......................................................... 错误!未定义书签。

一.任务要求叙述 (1)任务 (a) 运行算法,观察和分析现有学习算法的性能; clear all;close all; nu=20;pi=3.1415926; for i=1:nu p(i)=2*pi*i/nu; t(i)=0.5*(1+cos(p(i))); end minmax=[min(p(:)) max(p(:))] net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd');% traingd traingdm trainlm net.trainParam.epochs = 10000; net.trainParam.goal = 0.0001; net.trainParam.show=200; net.trainParam.lr=0.1; net.trainParam.mc=0.6; %0.9 default value; available for momentum net = train(net,p,t); y1 = sim(net,p); figure(2); plot(p,t,'*-',p,y1,'r--') %************** test data ****************** nu2=nu*3/2; for i=1:(nu2) p2(i)=2*pi*i/(nu2); t2(i)=0.5*(1+cos(p2(i))); end y2 = sim(net,p2); figure(3); plot(t2,'*-');hold on; plot(y2,'r'); xlabel('times');ylabel('outputs'); figure(4); plot(t2-y2); xlabel('times');ylabel('error'); (b) 为了进一步提高学习逼近效果,可以采取那些措施,调节规律如何?根据所提的每种措施,修改算法程序,给出仿真效果验证、过程以及相应的曲线图,给出适当的评述;(c) 联系、结合前向神经网络的算法样本学习、测试等过程,谈谈本人对神经网络系统的一些认识和看法。

(完整版)BP神经网络matlab实例(简单而经典).doc

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM 算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据 y=anew'; 1、 BP 网络构建 (1)生成 BP 网络 net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。 [ S1 S2...SNl] :各层的神经元个数。 {TF 1 TF 2...TFNl } :各层的神经元传递函数。 BTF :训练用函数的名称。 (2)网络训练 [ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV ) (3)网络仿真 [Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ) {'tansig','purelin'},'trainrp' BP 网络的训练函数 训练方法 梯度下降法 有动量的梯度下降法 自适应 lr 梯度下降法 自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrp Fletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgp

基于matlab实现BP神经网络模型仿真

基于BP神经网络模型及改进模型对全国历年车祸次数预测 一、背景 我国今年来随着经济的发展,汽车需求量不断地增加,所以全国每年的车祸次数也被越来越被关注,本文首先搜集全国历年车祸次数,接着通过这些数据利用BP神经网络模型和改进的径向基函数网络进行预测,最后根据预测结果,分析模型的优劣,从而达到深刻理解BP神经网络和径向基函数网络的原理及应用。所用到的数据即全国历年车祸次数来自中国汽车工业信息网,网址如下: https://www.360docs.net/doc/c317267079.html,/autoinfo_cn/cszh/gljt/qt/webinfo/2006/05/124650 1820021204.htm 制作历年全国道路交通事故统计表如下所示: 二、问题研究 (一)研究方向 (1)通过数据利用BP神经网络模型预测历年全国交通事故次数并与实际值进行比较。(2)分析BP神经网络模型改变训练函数再进行仿真与之前结果进行对比。 (3)从泛化能力和稳定性等方面分析BP神经网络模型的优劣。 (4)利用径向基函数网络模型进行仿真,得到结果与采用BP神经网络模型得到的结果进行比较。

(二)相关知识 (1)人工神经网络 人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。 人工神经网络有以下几个特征: (1)非线性非线性关系是自然界的普遍特性。大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性网络关系。具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量。 (2)非局限性一个神经网络通常由多个神经元广泛连接而成。一个系统的整体行为不仅取决于单个神经元的特征,而且可能主要由单元之间的相互作用、相互连接所决定。通过单元之间的大量连接模拟大脑的非局限性。联想记忆是非局限性的典型例子。 (3)非常定性人工神经网络具有自适应、自组织、自学习能力。神经网络不但处理的信息可以有各种变化,而且在处理信息的同时,非线性动力系统本身也在不断变化。经常采用迭代过程描写动力系统的演化过程。 (4)非凸性一个系统的演化方向,在一定条件下将取决于某个特定的状态函数。例如能量函数,它的极值相应于系统比较稳定的状态。非凸性是指这种函数有多个极值,故系统具有多个较稳定的平衡态,这将导致系统演化的多样性。 (2)BP神经网络模型 BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。 (3)径向基函数网络模型 径向基函数(Radial Basis Function,RBF)神经网络由三层组成,输入层节点只传递输入信号到隐层,隐层节点由像高斯函数那样的辐射状作用函数构成,而输出层节点通常是简单的线性函数。 隐层节点中的作用函数(基函数)对输入信号将在局部产生响应,也就是说,当输入信号靠近基函数的中央范围时,隐层节点将产生较大的输出,由此看出这种网络具有局部逼近能力,所以径向基函数网络也称为局部感知场网络。

BP神经网络模型应用实例

BP神经网络模型 第1节基本原理简介 近年来全球性的神经网络研究热潮的再度兴起,不仅仅是因为神经科学本身取得了巨大的进展.更主要的原因在于发展新型计算机和人工智能新途径的迫切需要.迄今为止在需要人工智能解决的许多问题中,人脑远比计算机聪明的多,要开创具有智能的新一代计算机,就必须了解人脑,研究人脑神经网络系统信息处理的机制.另一方面,基于神经科学研究成果基础上发展出来的人工神经网络模型,反映了人脑功能的若干基本特性,开拓了神经网络用于计算机的新途径.它对传统的计算机结构和人工智能是一个有力的挑战,引起了各方面专家的极大关注. 目前,已发展了几十种神经网络,例如Hopficld模型,Feldmann等的连接型网络模型,Hinton等的玻尔茨曼机模型,以及Rumelhart等的多层感知机模型和Kohonen的自组织网络模型等等。在这众多神经网络模型中,应用最广泛的是多层感知机神经网络。多层感知机神经网络的研究始于50年代,但一直进展不大。直到1985年,Rumelhart等人提出了误差反向传递学习算法(即BP算),实现了Minsky的多层网络

设想,如图34-1所示。 BP 算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。节点的作用的激励函数通常选取S 型函数,如 Q x e x f /11)(-+= 式中Q 为调整激励函数形式的Sigmoid 参数。该算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并 传向输出层。每一层神经元的状态只影响下一层神经

神经网络PID控制及Matlab仿真

神经网络PID控制及Matlab仿真 摘要 PID控制技术是一种应用很普遍的控制技术,目前在很多方面都有广泛的应用。论文首先简要介绍了神经网络的理论基础和神经网络的学习算法,传统的常规PID控制器。为了达到改善常规PID控制器在复杂的、动态的和不确定的系统控制还存在着许多不足之处的目的,文中系统的分析了神经网络PID控制器。 本文主要研究了神经网络PID控制。利用神经网络具有强的非线性映射能力、自学习能力、联想记忆能力、并行信息处理方式及优良的容错性能,应用神经网络对PID控制器进行改进后,对于工业控制中的复杂系统控制有着更好的控制效果,有效的改善了由于系统结构和参数变化导致的控制效果不稳定。文中深入研究了基于神经网络的BP神经网络PID控制器及其仿真等。 最后,对常规PID控制器和神经网络PID控制器进行了仿真比较,仿真结果表明,应用神经网络对常规PID控制器进行改进后提高了系统的鲁棒性和动态特性,有 效的改善了系统控制结果,达到了预期的目的前言 在工业控制过程中,PID控制是一种最基本的控制方式,其鲁棒性好、结构简单、易于实现,但常规的PID控制也有其自身的缺点,因为常规PID控制器的参数是根据被控对象数学模型确定的,当被控对象的数学模型是变化的、非线性的时候,PID参数不易根据其实际的情况做出调整,影响了控制质量,使控制系统的控制品质下降。特别是在具有纯滞后特性的工业过程中,常规的PID控制更难满足控制精度的要求。 PID控制是最早发展起来的控制策略之一,按偏差的比例、积分和微分进行控制的调节器称为 PID控制器,它是连续系统中技术成熟,应用最广泛的一种调节器。由于其算法简单,实现简易、鲁棒性能良好和可靠性高,能够对很大一类工业对象进行有效控制等一系列优点,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。但是在实际的工业生产过程中,往往具有非线性,时变不确定性,因而难以建立精确的数学模型,应用常规 PID控制器不能达到理想的控制效果:在实际生产过程中,由于受到参数整定方法繁杂的困扰,常规PID控制器参数往往整定不良,性能欠佳,对运行工况的适应性很差。

BP神经网络地设计实例(MATLAB编程)

神经网络的设计实例(MATLAB编程) 例1 采用动量梯度下降算法训练BP 网络。训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为t = [-1 -1 1 1] 解:本例的MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练 % SIM——对BP 神经网络进行仿真pause % 敲任意键开始 clc % 定义训练样本 P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量T=[-1, -1, 1, 1]; % T 为目标矢量

clc % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net.IW{1,1} inputbias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} pause clc % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause clc % 调用TRAINGDM 算法训练BP 网络 [net,tr]=train(net,P,T);

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明) 看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络。 本人前几天也遇到了这样的问题,在论坛中看了大家的回复,虽然都提到了关键的两个函数“save”和“load”,但或多或少都简洁了些,让人摸不着头脑(呵呵,当然也可能是本人太菜)。通过不断调试,大致弄明白这两个函数对神经网络的存储。下面附上实例给大家做个说明,希望对跟我有一样问题的朋友有所帮助。 如果只是需要在工作目录下保到当前训练好的网络,可以在命令窗口 输入:save net %net为已训练好的网络 然后在命令窗口 输入:load net %net为已保存的网络 加载net。 但一般我们都会在加载完后对网络进行进一步的操作,建议都放在M文件中进行保存网络和调用网络的操作 如下所示: %% 以函数的形式训练神经网络 functionshenjingwangluo() P=[-1,-2,3,1; -1,1,5,-3]; %P为输入矢量 T=[-1,-1,1,1,]; %T为目标矢量 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') %创建一个新的前向神经网络 inputWeights=net.IW{1,1} inputbias=net.b{1} %当前输入层权值和阀值 layerWeights=net.LW{2,1} layerbias=net.b{2} net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9;

人工神经网络作业MATLAB仿真(共3篇)

人工神经网络作业M A T L A B 仿真(共3篇) -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

人工神经网络仿真作业(3篇) 人工神经网络仿真作业1: 三级倒立摆的神经网络控制 人工神经网络仿真作业2: 基于模型整体逼近的机器人RBF网络自适应控制 人工神经网络仿真作业3: 基于RBF的机械手无需模型自适应控制研究

神经网络仿真作业1:三级倒立摆的神经网络控制 摘要:建立了基于人工神经网络改进BP 算法的三级倒立摆的数学模型,并给 出了BP 网络结构,利用Matlab 软件进行训练仿真,结果表明,改进的BP 算法控制倒立摆精度高、收敛快,在非线性控制、鲁棒控制等领域具有良好的应用前景。 1.引言 倒立摆系统的研究开始于19世纪50年代,它是一个典型的非线性、高阶次、多变量、强耦合和绝对不稳定系统.许多抽象的控制概念,如系统的稳定性、可控性、系统的收敛速度和抗干扰能力都可以通过倒立摆直观地表现出来。随着现代控制理论的发展,倒立摆的研究对于火箭飞行控制和机器人控制等现代高科技的研究具有重要的实践意义。目前比较常见的倒立摆稳定控制方法有线性控制,如LQR,LQY 等;智能控制,如变论域自适应模糊控制,遗传算法,预测控制等。 2.系统的数学模型 2.1三级倒立摆的模型及参数 三级倒立摆主要由小车,摆1、摆2、摆3组成,它们之间自由链接。小车可以在水平导轨上左右平移,摆杆可以在铅垂平面内运动,将其置于坐标系后如图1 所示: 规定顺时针方向的转角和力矩均为正。此外,约定以下记号:u 为外界作用力,x 为小车位移,i (i =1,2,3)为摆i 与铅垂线方向的夹角, i O 分别为摆i 的链接点位置。其它的系统参数说明如下:

BP神经网络matlab实例

神经网络Matlab p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2

S S SNl:各层的神经元个数。 [1 2...] TF TF TFNl:各层的神经元传递函数。 { 1 2...} BTF:训练用函数的名称。 (2)网络训练 = [,,,,,] (,,,,,,) net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp' BP网络的训练函数 训练方法训练函数 梯度下降法traingd 有动量的梯度下降法traingdm 自适应lr梯度下降法traingda 自适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp Fletcher-Reeves共轭梯度法traincgf Ploak-Ribiere共轭梯度法traincgp Powell-Beale共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlm

神经网络与matlab仿真

神经网络与matlab仿真 摘要 随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,本文通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解和学习。 关键词:人工神经网路matlab仿真线性神经网络 1 神经网络的发展及应用 人工神经网络(Artificial Neural Network,简称ANN)是一种高度并行的信息处理系统,它具有高度的容错性,自组织能力和自学习能力;它以神经科学的研究成果为基础,反映了人脑功能的若干基本特性,对传统的计算机结构和人工智能方法是一个有力的挑战,其目的在于探索人脑加工、储存和搜索信息的机制,进而应用于人工智能系统。 1.1 神经网络的研究历史及发展现状 神经网络的研究已有较长的历史。1943年,心理学家McCulloch和数学家Pitts合作提出形式(兴奋与抑制型)神经元的数学模型(MP模型),开创了神经科学理论研究的时代。1944年,Hebb提出了神经元连接强度的修改规则,它们至今仍在各种神经网络模型中起着重要作用。50年代末60年代初,开始了作为人工智能的网络系统的研究。1958年,F.Rosenblatt首次引进了模拟人脑感知和学习能力的感知器概念,它由阈值性神经元组成。1962年,B.Widrow提出的自适应线性元件(adaline),具有自适应学习功能,在信息处理、模式识别等方面受到重视和应用。在这期间,神经网络大都是单层线性网络。此时,人们对如何解决非线性分割问题很快有了明确的认识,但此时,计算机科学已被人工智能研究热潮所笼罩。80年代后,传统的数字计算机在模拟视听觉的人工智能方面遇到了物理上不能逾越的基线,此时,物理学家Hopfield提出了HNN模型,引入了能量函数的概念,给出了网络稳定性的判据,同时开拓了神经网络用于联想记忆和优化计算的新途径。神经网络的热潮再次掀起。此后,Feldmann和Ballard 的连接网络模型指出了传统的人工智能“计算”与生物的“计算”的不同点,给出了并行分布的计算原则;Hinton和Sejnowski提出的Boltzman机模型则急用了统计物理学的概念和方法,首次采用了多层网络的学习算法,保证整个系统趋于全局稳定点;Rumelhart和McClelland等人发展了多层网络的BP算法;Kosko提出了双向联想记忆网络;Hecht-Nielsen提出了另一种反向传播网络,可用于图像压缩和统计分析;Holland提出了分类系统类似于以规则为基础的专家系统。这些努力为神经网络的后期发展奠定了牢固的基础。 目前,神经网络在研究方向上已经形成多个流派,包括多层网络BP算法,Hopfield网络模型,自适应共振理论(ART),自组织特征映射理论等。1987年,IEEE在San Diego召开大规模的神经网络国际学术会议,国际神经网络学会也随之诞生。 迄今为止的神经网络研究。大体可分为三个大的方向:

matlab BP神经网络

基于MATLAB的BP神经网络工具箱函数 最新版本的神经网络工具箱几乎涵盖了所有的神经网络的基本常用模型,如感知器和BP网络等。对于各种不同的网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便[16]。Matlab R2007神经网络工具箱中包含了许多用于BP网络分析与设计的函数,BP网络的常用函数如表3.1所示。 3.1.1BP网络创建函数 1) newff 该函数用于创建一个BP网络。调用格式为: net=newff net=newff(PR,[S1S2..SN1],{TF1TF2..TFN1},BTF,BLF,PF) 其中, net=newff;用于在对话框中创建一个BP网络。 net为创建的新BP神经网络; PR为网络输入向量取值范围的矩阵; [S1S2…SNl]表示网络隐含层和输出层神经元的个数; {TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’; BTF表示网络的训练函数,默认为‘trainlm’; BLF表示网络的权值学习函数,默认为‘learngdm’; PF表示性能数,默认为‘mse’。

2)newcf函数用于创建级联前向BP网络,newfftd函数用于创建一个存在输入延迟的前向网络。 3.1.2神经元上的传递函数 传递函数是BP网络的重要组成部分。传递函数又称为激活函数,必须是连续可微的。BP网络经常采用S型的对数或正切函数和线性函数。 1) logsig 该传递函数为S型的对数函数。调用格式为: A=logsig(N) info=logsig(code) 其中, N:Q个S维的输入列向量; A:函数返回值,位于区间(0,1)中; 2)tansig 该函数为双曲正切S型传递函数。调用格式为: A=tansig(N) info=tansig(code) 其中, N:Q个S维的输入列向量; A:函数返回值,位于区间(-1,1)之间。 3)purelin 该函数为线性传递函数。调用格式为: A=purelin(N) info=purelin(code) 其中, N:Q个S维的输入列向量; A:函数返回值,A=N。 3.1.3BP网络学习函数 1)learngd 该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。调用格式为: [dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) [db,ls]=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)

基于MATLAB 的神经网络的仿真

智能控制 基于MATLAB 的神经网络的仿真 学院: 姓名: 学号: 年级: 学科:检测技术与自动化装置 日期:

一.引言 人工神经网络以其具有信息的分布存储、并行处理以及自学习能力等优点, 已经在模式识别、 信号处理、智能控制及系统建模等领域得到越来越广泛的应用。MATLAB中的神经网络工具箱是以人工神经网络理论为基础, 利用MATLAB 语言构造出许多典型神经网络的传递函数、网络权值修正规则和网络训练方法,网络的设计者可根据自己的需要调用工具箱中有关神经网络的设计与训练的程序, 免去了繁琐的编程过程。 二.神经网络工具箱函数 最新版的MATLAB 神经网络工具箱为Version4.0.3, 它几乎涵盖了所有的神经网络的基本常用类型,对各种网络模型又提供了各种学习算法,我们可以根据自己的需要调用工具箱中的有关设计与训练函数,很方便地进行神经网络的设计和仿真。目前神经网络工具箱提供的神经网络模型主要用于: 1.数逼近和模型拟合; 2.信息处理和预测; 3.神经网络控制; 4.故障诊断。 神经网络工具箱提供了丰富的工具函数,其中有针对某一种网络的,也有通用的,下面列表中给出了一些比较重要的工具箱函数。

三.仿真实例 BP 网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。BP 网络模型结构见图1。网络同层节点没有任何连接,隐层节点可以由一个或多个。网络的学习过程由正向和反向传播两部分组成。在正向传播中,输入信号从输入层节点经隐层节点逐层传向输出层节点。每一层神经元的状态只影响到下一层神经元网络,如输出层不能得到期望的输出,那么转入误差反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,在经正向传播过程,这两个过程反复运用,使得误差信号最小或达到人们所期望的要求时,学习过程结束。

bp神经网络及matlab实现

bp神经网络及matlab实现 分类:算法学习2012-06-20 20:56 66399人阅读评论(28) 收藏举报网络matlab算法functionnetworkinput 本文主要内容包括:(1) 介绍神经网络基本原理,(2) https://www.360docs.net/doc/c317267079.html,实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在https://www.360docs.net/doc/c317267079.html,/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。 一种解决方法是用已有的数据训练一个神经网络用作分类器。 如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题,或者已经了解神经网络基本原理,请直接跳到第二节——神经网络实现。 第一节、神经网络基本原理 1. 人工神经元( Artificial Neuron )模型 人工神经元是神经网络的基本元素,其原理可以用下图表示:

图1. 人工神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为: 图中yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为: 若用X表示输入向量,用W表示权重向量,即: X = [ x0 , x1 , x2 , ....... , xn ]

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的 Matlab编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP 算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},' trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutatio n',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 net.trainParam.show=1; net.trainParam.lr=1; net.trainParam.epochs=50; net.trainParam.goal=0.001; %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x);

BP神经网络原理及MATLAB仿真

BP Neural Network principle and MATLAB Simulation Xiong Xin Nie Mingxin School of Information Engineering School of Information Engineering Wuhan University of Technology Wuhan University of Technology Wuhan, P. R. China 430070 Wuhan, P. R. China 430070 sense1559@https://www.360docs.net/doc/c317267079.html, niemx@https://www.360docs.net/doc/c317267079.html, Abstract This paper introduces the prevalent BP algorithm in neural network, and discusses the goodness、problem and training process of BP neural network, as well as using MATLAB software to simulate the numbers on the basis of it. At last, several improved BP training algorithms have been compared in the paper. Keywords: BP neural network; number recognition; MATLAB 1 Introduction The development of neural network is rapid since the first neural network model——MP model came up in 1943[1]. Hopfield neural network proposed in 1982 and opposite phase broadcast algorithm proposed by Rumelhart in 1985 make the neural network of Hopfield model and multilayer feedforward model to be the prevalent neural network model. They are effective in many applications of fields such as speech recognition, mode recognition, image processing and industry controlling. Neural network is an theory which is imitative of the biological processing model to get the function of information intelligent processing. It treats with the pattern information which is hard to be expressed in certain language by the method from bottom to top and parallel distribution way formed by self-study, self-organization and non-linear dynamics. Neural network is a parallel and distributed information processing network architecture. It is generally composed by massive neurons, each of which has only one output that can connect many other neurons. The reciprocity between neurons is embodied by their connected weighs. The output of neurons is its input function. The types of functions in common use have linear function, Sigmoid function and value function. There are two phases of positive transmitting processing and error reverse transmitting processing in the study processing of BP neural network[2]. The signal inputted from outside spreads to the output layer and gives the result through processing layer for layer of neurons in input layer and hidden layer. If the expected output can’t be obtained in output layer, it shifts to the conversed spreading processing and the true value and the error outputted by network will return along the coupled access formerly. The error is reduced by modifying contacted weight value of neurons in every layer and then it shifts to the positive spreading processing and revolves iteration until the error is smaller the given value. Take a three layer network for example, the network is composed of N input neurons, K hidden neurons and M output neurons(as showed in fig.1). O2pm and O1pk are the output value of output layer and hidden layer respectively. w2km and w1nk are the connected weight value from the hidden layer to the output layer and from the input layer to the hidden layer respectively. Suppose the input studying sample is Xpn, so its corresponding expected output value is tpm. Fig.1 BP neural network configuration

BP神经网络matlab实例

BP神经网络及其MATLAB实例 问题:BP神经网络预测2020年某地区客运量和货运量 公路运量主要包括公路客运量和公路货运量两方面。某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1999-2018)的公路运量相关数据如下: 人数/万人: 20.5522.4425.3727.1329.4530.1030.9634.0636.4238.09 39.1339.9941.9344.5947.3052.8955.7356.7659.1760.63机动车数量/万辆: 0.60.750.850.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1 公路面积/单位:万平方公里: 0.090.110.110.140.200.230.230.320.320.34 0.360.360.380.490.560.590.590.670.690.79 公路客运量/万人:5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462公路货运量/万吨: 1237137913851399166317141834432281328936 11099112031052411115133201676218673207242080321804影响公路客运量和公路货运量主要的三个因素是:该地区的人数、机动车数量和公路面积。 Matlab代码实现 %人数(单位:万人) numberOfPeople=[20.5522.4425.3727.1329.4530.1030.9634.0636.42 38.0939.1339.9941.9344.5947.3052.8955.7356.7659.1760.63]; %机动车数(单位:万辆) numberOfAutomobile=[0.60.750.850.91.051.351.451.61.71.852.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1]; %公路面积(单位:万平方公里) roadArea=[0.090.110.110.140.200.230.230.320.320.340.360.360.38

相关文档
最新文档