基于MATLAB的神经网络算法研究及仿真.docx

上传人:b****5 文档编号:5368935 上传时间:2022-12-15 格式:DOCX 页数:14 大小:376.66KB
下载 相关 举报
基于MATLAB的神经网络算法研究及仿真.docx_第1页
第1页 / 共14页
基于MATLAB的神经网络算法研究及仿真.docx_第2页
第2页 / 共14页
基于MATLAB的神经网络算法研究及仿真.docx_第3页
第3页 / 共14页
基于MATLAB的神经网络算法研究及仿真.docx_第4页
第4页 / 共14页
基于MATLAB的神经网络算法研究及仿真.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于MATLAB的神经网络算法研究及仿真.docx

《基于MATLAB的神经网络算法研究及仿真.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的神经网络算法研究及仿真.docx(14页珍藏版)》请在冰豆网上搜索。

基于MATLAB的神经网络算法研究及仿真.docx

基于MATLAB的神经网络算法研究及仿真

基于MATLAB的神经网络算法研究及仿真

焦文明

摘要:

人工神经网络以其具有信息的分布存储、并行处理以及自学习能力等优点,已经在模式识别、信号处理、智能控制及系统建模等领域得到越来越广泛的应用。

MATLAB中的神经网络工具箱是以人工神经网络理论为基础,利用MATLAB语言构造出许多典型神经网络的传递函数、网络权值修正规则和网络训练方法,网络的设计者可根据自己的需要调用工具箱中有关神经网络的设计与训练的程序,免去了繁琐的编程过程。

采用Matlab软件编程实现BP神经网络算法,将神经网络算法应用于函数逼近和样本含量估计问题中,并分析相关参数对算法运行结果的影响。

关键词:

神经网络;BP神经网络;函数逼近

1绪论

人工神经网络(ArtificialNeuralNetworks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统。

神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。

神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。

神经网络具有非线性自适应的信息处理能力,克服了传统人工智能方法对于直觉的缺陷,因而在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。

神经网络与其他传统方法相组合,将推动人工智能和信息处理技术不断发展。

近年来,神经网络在模拟人类认知的道路上更加深入发展,并与模糊系统、遗传算法、进化机制等组合,形成计算智能,成为人工智能的一个重要方向。

MATLAB是一种科学与工程计算的高级语言,广泛地运用于包括信号与图像处理,控制系统设计,系统仿真等诸多领域。

为了解决神经网络问题中的研究工作量和编程计算工作量问题,目前工程领域中较为流行的软件MATLAB,提供了现成的神经网络工具箱(NeuralNetworkToolbox,简称NNbox),为解决这个矛盾提供了便利条件。

神经网络工具箱提供了很多经典的学习算法,使用它能够快速实现对实际问题的建模求解。

在解决实际问题中,应用MATLAB语言构造典型神经网络的激活传递函数,编写各种网络设计与训练的子程序,网络的设计者可以根据需要调用工具箱中有关神经网络的设计训练程序,使自己能够从烦琐的编程中解脱出来,减轻工程人员的负担,从而提高工作效率。

2神经网络结构及BP神经网络

2.1神经元与网络结构

人工神经网络(artificialneuralnetwork,ANN)是模仿生物神经网络功能的一种经验模型。

生物神经元受到传入的刺激,其反应又从输出端传到相联的其它神经元,输入和输出之间的变换关系一般是非线性的。

神经网络是由若干简单(通常是自适应的)元件及其层次组织,以大规模并行连接方式构造而成的网络,按照生物神经网络类似的方式处理输入的信息。

模仿生物神经网络而建立的人工神经网络,对输入信号有功能强大的反应和处理能力。

神经网络是由大量的处理单元(神经元)互相连接而成的网络。

为了模拟大脑的基本特性,在神经科学研究的基础上,提出了神经网络的模型。

但是,实际上神经网络并没有完全反映大脑的功能,只是对生物神经网络进行了某种抽象、简化和模拟。

神经网络的信息处理通过神经元的互相作用来实现,知识与信息的存储表现为网络元件互相分布式的物理联系。

神经网络的学习和识别取决于各种神经元连接权系数的动态演化过程。

若干神经元连接成网络,其中的一个神经元可以接受多个输入信号,按照一定的规则转换为输出信号。

由于神经网络中神经元间复杂的连接关系和各神经元传递信号的非线性方式,输入和输出信号间可以构建出各种各样的关系,因此可以用来作为黑箱模型,表达那些用机理模型还无法精确描述、但输入和输出之间确实有客观的、确定性的或模糊性的规律。

因此,人工神经网络作为经验模型的一种,在化工生产、研究和开发中得到了越来越多的用途。

神经网络连接的几种基本形式:

1)前向网络

前向网络结构如图2.1所示,网络中的神经元是分层排列的,每个神经元只与前一层的神经元相连接。

神经元分层排列,分别组成输入层、中间层(也称为隐含层,可以由若干层组成)和输出层。

每一层的神经元只接受来自前一层神经元的输入,后面的层对前面的层没有信号反馈。

输入模式经过各层次的顺序传播,最后在输出层上得到输出。

感知器网络和BP网络均属于前向网络。

图2.1前向网络结构

2)从输出到输入有反馈的前向网络

其结构如图2.2所示,输出层对输入层有信息反馈,这种网络可用于存储某种模式序列,如神经认知机和回归BP网络都属于这种类型。

图2.2有反馈的前向网络结构

3)层内互连前向网络

其结构如图2.3所示,通过层内神经元的相互结合,可以实现同一层神经元之间的横向抑制或兴奋机制。

这样可以限制每层内可以同时动作的神经元素,或者把每层内的神经元分为若干组,让每一组作为一个整体进行运作。

例如,可利用横向抑制机理把某层内的具有最大输出的神经元挑选出来,从而抑制其他神经元,使之处于无输出状态。

图2.3有相互结合的前向网络结构

4)相互结合型网络

相互结合型网络结构如图2.4所示,这种网络在任意两个神经元之间都可能有连接。

Hopfield网络和Boltzmann机均属于这种类型。

在无反馈的前向网络中,信号一旦通过某神经元,该神经元的处理就结束了。

而在相互结合网络中,信号要在神经元之间反复传递,网络处于一种不断变化状态的动态之中。

信号从某初始状态开始,经过若干次变化,才会达到某种平衡状态。

根据网络的结构和神经元的特性,网络的

运行还有可能进入周期振荡或其他如混沌平衡状态。

图2.4结合型网络结构

综上,可知神经网络有分层网络、层内连接的分层网络、反馈连接的分层网络、互连网络等四种结构,其神经网络模型有感知器网络,线性神经网络,BP神经网络,径向基函数网络,反馈神经网络等,本文主要学习研究了BP神经网络,以及BP神经网络在函数逼近和样本含量估计两个实例中的应用分析。

2.2BP神经网络及其原理

2.2.1BP神经网络定义

BP(BackPropagation)神经网络是一种神经网络学习算法。

其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。

相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。

然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。

此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。

2.2.2BP神经网络模型及其基本原理

BP神经网络是误差反向传播神经网络的简称,它由一个输入层,一个或多个隐含层和一个输出层构成,每一次由一定数量的的神经元构成。

这些神经元如同人的神经细胞一样是互相关联的。

其结构如图2.5所示:

 

图2.5BP神经网络模型

生物神经元信号的传递是通过突触进行的一个复杂的电化学等过程,在人工神经网络中是将其简化模拟成一组数字信号通过一定的学习规则而不断变动更新的过程,这组数字储存在神经元之间的连接权重。

网络的输入层模拟的是神经系统中的感觉神经元,它接收输入样本信号。

输入信号经输入层输入,通过隐含层的复杂计算由输出层输出,输出信号与期望输出相比较,若有误差,再将误差信号反向由输出层通过隐含层处理后向输入层传播。

在这个过程中,误差通过梯度下降算法,分摊给各层的所有单元,从而获得各单元的误差信号,以此误差信号为依据修正各单元权值,网络权值因此被重新分布。

此过程完成后,输入信号再次由输入层输入网络,重复上述过程。

这种信号正向传播与误差反向传播的各层权值调整过程周而复始地进行着,直到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。

权值不断调整的过程就是网络的学习训练过程。

BP神经网络的信息处理方式具有如下特点:

1)信息分布存储。

人脑存储信息的特点是利用突触效能的变化来调整存储内容,即信息存储在神经元之间的连接强度的分布上,BP神经网络模拟人脑的这一特点,使信息以连接权值的形式分布于整个网络。

2)信息并行处理。

人脑神经元之间传递脉冲信号的速度远低于冯·诺依曼计算机的工作速度,但是在很多问题上却可以做出快速的判断、决策和处理,这是由于人脑是一个大规模并行与串行组合的处理系统。

BP神经网络的基本结构模仿人脑,具有并行处理的特征,大大提高了网络功能。

3)具有容错性。

生物神经系统部分不严重损伤并不影响整体功能,BP神经网络也具有这种特性,网络的高度连接意味着少量的误差可能不会产生严重的后果,部分神经元的损伤不破坏整体,它可以自动修正误差。

这与现代计算机的脆弱性形成鲜明对比。

4)具有自学习、自组织、自适应的能力。

BP神经网络具有初步的自适应与自组织能力,在学习或训练中改变突触权值以适应环境,可以在使用过程中不断学习完善自己的功能,并且同一网络因学习方式的不同可以具有不同的功能,它甚至具有创新能力,可以发展知识,以至超过设计者原有的知识水平。

3BP神经网络在实例中的应用

快速发展的Matlab软件为神经网络理论的实现提供了一种便利的仿真手段。

Matlab神经网络工具箱的出现,更加拓宽了神经网络的应用空间。

神经网络工具箱将很多原本需要手动计算的工作交给计算机,一方面提高了工作效率,另一方面,还提高了计算的准确度和精度,减轻了工程人员的负担。

神经网络工具箱是在MATLAB环境下开发出来的许多工具箱之一。

它以人工神经网络理论为基础,利用MATLAB编程语言构造出许多典型神经网络的框架和相关的函数。

这些工具箱函数主要为两大部分。

一部分函数特别针对某一种类型的神经网络的,如感知器的创建函数、BP网络的训练函数等。

而另外一部分函数则是通用的,几乎可以用于所有类型的神经网络,如神经网络仿真函数、初始化函数和训练函数等[15]。

这些函数的MATLAB实现,使得设计者对所选定网络进行计算过程,转变为对函数的调用和参数的选择,这样一来,网络设计人员可以根据自己的的需要去调用工具箱中有关的设计和训练程序,从烦琐的编程中解脱出来,集中精力解决其他问题,从而提高了工作效率。

3.1基于MATLAB的BP神经网络工具箱函数

最新版本的神经网络工具箱几乎涵盖了所有的神经网络的基本常用模型,如感知器和BP网络等。

对于各种不同的网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。

Matlab神经网络工具箱中包含了许多用于BP网络分析与设计的函数,BP网络的常用函数如表3.1所示。

表3.1BP网络的常用函数表

函数类型

函数名称

函数用途

前向网络创建函数

newcf

创建级联前向网络

Newff

创建前向BP网络

传递函数

logsig

S型的对数函数

tansig

S型的正切函数

purelin

纯线性函数

学习函数

learngd

基于梯度下降法的学习函数

learngdm

梯度下降动量学习函数

性能函数

mse

均方误差函数

msereg

均方误差规范化函数

显示函数

plotperf

绘制网络的性能

plotes

绘制一个单独神经元的误差曲面

plotep

绘制权值和阈值在误差曲面上的位置

errsurf

计算单个神经元的误差曲面

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)

info=learngd(code)

2)learngdm函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数,来计算权值或阈值的变化率。

3.1.4BP网络训练函数

1)train

神经网络训练函数,调用其他训练函数,对网络进行训练。

该函数的调用格式为:

[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai)

[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai,VV,TV)

2)traingd函数为梯度下降BP算法函数。

traingdm函数为梯度下降动量BP算法函数。

3.2BP网络在函数逼近中的应用

BP网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。

BP网络模型结构见图3.1。

网络同层节点没有任何连接,隐层节点可以由一个或多个。

网络的学习过程由正向和反向传播两部分组成。

在正向传播中,输入信号从输入层节点经隐层节点逐层传向输出层节点。

每一层神经元的状态只影响到下一层神经元网络,如输出层不能得到期望的输出,那么转入误差反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,在经正向传播过程,这两个过程反复运用,使得误差信号最小或达到人们所期望的要求时,学习过程结束。

图3.1BP网络模型结构

利用神经网络工具箱进行设计和仿真的具体步骤:

1.确定信息表达方式:

将实际问题抽象成神经网络求解所能接受的数据形式;

2.确定网络模型:

选择网络的类型、结构等;

3.选择网络参数:

如神经元数,隐含层数等;

4.确定训练模式:

选择训练算法,确定训练步数,指定训练目标误差等;

5.网络测试:

选择合适的训练样本进行网络测试。

 

3.2.1第一步问题的提出

设计一个简单的BP网络,实现对非线性函数的逼近,通过改变BP网络的隐层神经元的数目,采用不同的训练方法来观察训练时间和训练误差的变化情况。

假设将要将要逼近的函数为正弦函数,其频率参数N=1,绘制此函数见图3.2所示。

N=1;

p=[-1:

0.05:

1];

t=sin(N*pi*p);

%假设N=1,绘制此函数曲线

plot(p,t,'r*')

title('要逼近的非线性函数')

xlabel('时间');

3.2.2第二步网络建立

应用newff()建立两层的BP网络,隐层神经元数目可以改变,此时S=8,输出层一个神经元,隐层和输出层的传递函数分别为tansig和purelin,学习算法采用Levenberg-Marquadt(trainlm)。

用sim()观察初始化网络输出如图3.3所示。

S=8;

net=newff(minmax(p),[S,1],{'tansig','purelin'},'trainlm');

y1=sim(net,p);

figure;

plot(p,t,'r*',p,y1,'b-')

title('未训练网络的输出结果')

xlabel('时间');

ylabel('仿真输出-原函数*');

legend('要逼近的非线性函数','未训练网络的输出结果')

图3.2要逼近的非线性函数

图3.3未训练时网络的输出结果

3.2.3第三步网络训练

将训练时间设为10,精度为0.001,用train()进行训练,误差曲线见图3.4所示。

net.trainParam.epochs=10;

net.trainParam.goal=0.001;

net1=train(net,p,t)

图3.4训练过程图

3.2.4第四步网络测试

用sim()观察训练后的网络输出如图3.5所示。

y2=sim(net1,p)

figure;

plot(p,t,'r*',p,y1,'b-',p,y2,'ko')

title('训练后网络的输出结果')

xlabel('时间');

ylabel('仿真输出')

legend('要逼近的非线性函数','未训练网络的输出结果','训练后网络的输出结果')

图3.5训练后网路的输出结果

从图3.5可以看出经过很短时间的训练后BP网络很好的逼近了非线性函数。

4.结论

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.

(注:

可编辑下载,若有不当之处,请指正,谢谢!

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

当前位置:首页 > 高等教育 > 院校资料

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

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