您现在的位置:首页 >> 技术文章 >> 人工智能 >> 内容

BP神经网络的matlab实现

时间:2017-6-24 15:26:54 点击:

  核心提示:BP神经网络的matlab实现...

BP神经网络是目前人工神经网络模式中最具代表性,应用得最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任意连续函数.近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了许多改进算法.然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得.MATLAB中的神经网络工具箱(Neural NetworkToolbox,简称NNbox),为解决这一问题提供了便利的条件.神经网络工具箱功能十分完善,提供了各种MATLAB函数,包括神经网络的建立、训练和仿真等函数,以及各种改进训练算法函数,用户可以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包以满足实际需要。

此项课题主要是针对MATLAB软件对BP神经网络的各种算法的编程,将神经网络算法应用于函数逼近和样本含量估计问题中,并分析比较相关参数对算法运行结果的影响。

1 绪论

人工神经网络(Artificial Neural NetworksNN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。

神经网络具有非线性自适应的信息处理能力,克服了传统人工智能方法对于直觉的缺陷,因而在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。神经网络与其他传统方法相组合,将推动人工智能和信息处理技术不断发展。近年来,神经网络在模拟人类认知的道路上更加深入发展,并与模糊系统、遗传算法、进化机制等组合,形成计算智能,成为人工智能的一个重要方向。

MATLAB是一种科学与工程计算的高级语言,广泛地运用于包括信号与图像处理,控制系统设计,系统仿真等诸多领域。为了解决神经网络问题中的研究工作量和编程计算工作量问题,目前工程领域中较为流行的软件MATLAB,提供了现成的神经网络工具箱(Neural Network Toolbox,简称NNbox),为解决这个矛盾提供了便利条件。神经网络工具箱提供了很多经典的学习算法,使用它能够快速实现对实际问题的建模求解。在解决实际问题中,应用MATLAB 语言构造典型神经网络的激活传递函数,编写各种网络设计与训练的子程序,网络的设计者可以根据需要调用工具箱中有关神经网络的设计训练程序,使自己能够从烦琐的编程中解脱出来,减轻工程人员的负担,从而提高工作效率。

1.1 人工神经网络的研究背景和意义 

人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

人工神经网络就是模拟人思维的一种方式,是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。

近年来通过对人工神经网络的研究,可以看出神经网络的研究目的和意义有以下三点:(1)通过揭示物理平面与认知平面之间的映射,了解它们相互联系和相互作用的机理,从而揭示思维的本质,探索智能的本源。(2)争取构造出尽可能与人脑具有相似功能的计算机,即神经网络计算机。(3)研究仿照脑神经系统的人工神经网络,将在模式识别、组合优化和决策判断等方面取得传统计算机所难以达到的效果。

人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。将信息几何应用于人工神经网络的研究,为人工神经网络的理论研究开辟了新的途径。神经计算机的研究发展很快,已有产品进入市场。光电结合的神经计算机为人工神经网络的发展提供了良好条件。

1.2 神经网络的发展与研究现状

1.2.1 神经网络的发展

神经网络起源于20世纪40年代,至今发展已半个多世纪,大致分为三个阶段。

120世纪50年代-20世纪60年代:第一次研究高潮

1943M-P模型开始,至20世纪60年代为止,这一段时间可以称为神经网络系统理论发展的初期阶段。这个时期的主要特点是多种网络的模型的产生与学习算法的确定。

220世纪60年代-20世纪70年代:低潮时期

到了20世纪60年代,人们发现感知器存在一些缺陷,例如,它不能解决异或问题,因而研究工作趋向低潮。不过仍有不少学者继续对神经网络进行研究。

Grossberg 提出了自适应共振理论;Kohenen 提出了自组织映射;Fukushima 提出了神经认知网络理论;Anderson提出了BSB模型;Webos 提出了BP理论等。这些都是在20世纪70年代和20世纪80年代初进行的工作。

320世纪80年代-90年代:第二次研究高潮

进入20世纪80年代,神经网络研究进入高潮。这个时期最具有标志性的人物是美国加州工学院的物理学家John Hopfield。他于1982年和1984年在美国科学院院刊上发表了两篇文章,提出了模拟人脑的神经网络模型,即最著名的Hopfield模型。Hopfield网络是一个互连的非线性动力学网络,它解决问题的方法是一种反复运算的动态过程,这是符号逻辑处理方式做不具备的性质。20世纪80年代后期到90年代初,神经网络系统理论形成了发展的热点,多种模型、算法和应用被提出,研究经费重新变得充足,使得研究者们完成了很多有意义的工作。

1.2.2  神经网络的现状

进入20世纪90年代以来,神经网络由于应用面还不够宽,结果不够精确,存在可信度问题,从而进入了认识与应用研究期。

1)开发现有模型的应用,并在应用中根据实际运行情况对模型、算法加以改造,以提高网络的训练速度和运行的准确度。

2)充分发挥两种技术各自的优势是一个有效方法。

3)希望在理论上寻找新的突破,建立新的专用/通用模型和算法。

4)进一步对生物神经系统进行研究,不断地丰富对人脑的认识。

1.3 神经网络的研究内容和目前存在的问题

1.3.1 神经网络的研究内容

神经网络的研究内容相当广泛,反映了多科学交叉技术领域的特点。目前,主要的研究工作集中在以下四方面:

1)生物原型研究:从生理学、心理学、解剖学、脑科学、病理学生物科学方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。

2)建立理论模型:根据生物圆形的研究,建立神经元、神经网络的理论模型,其中包括概念模型、知识模型、物理化学模型、数学模型等。

3)网络模型与算法研究:在理论模型研究的基础上构成具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。

4)神经网络应用系统:在网络模型与算法研究的基础上,利用神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能、构成专家系统、制成机器人等。

1.3.2 神经网络研究目前存在的问题

人工神经网络的发展具有强大的生命力。当前存在的问题是智能水平还不高,许多应用方面的要求还不能得到很好的满足;网络分析与综合的一些理论性问题还未得到很好的解决。例如,由于训练中稳定性的要求学习率很小,所以梯度下降法使得训练很忙动量法因为学习率的提高通常比单纯的梯度下降法要快,但在实际应用中还是很慢。针对千变万化的应用对象,各类复杂的求解问题,编制一些特定的程序、软件求解,耗费了大量的人力和物力。而这些软件往往只针对某一方面的问题有效,并且在人机接口、用户友好性等诸多方面存在一定的缺陷。在微机飞速发展的今天,很多都已不能满足发展的需要。

1.4 神经网络的应用

神经网络理论的应用取得了令人瞩目的发展,特别是在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别、CAD/CAM等方面都有重大的应用实例。下面列出一些主要应用领域:

1)模式识别和图像处理。印刷体和手写字符识别、语音识别、签字识别、指纹识别、人体病理分析、目标检测与识别、图像压缩和图像复制等。

2)控制和优化。化工过程控制、机器人运动控制、家电控制、半导体生产中掺杂控制、石油精炼优化控制和超大规模集成电路布线设计等。

3)预报和智能信息管理。股票市场预测、地震预报、有价证券管理、借贷风险分析、IC卡管理和交通管理。

4)通信。自适应均衡、回波抵消、路由选择和ATM网络中的呼叫接纳识别和控制。

5)空间科学。空间交汇对接控制、导航信息智能管理、飞行器制导和飞行程序优化管理等

2.4.1分析了初始权值设置影响因素对BP神经网络的影响,下面首先通过MATLAB程序段一,通过随机设置权值初始化网络方式获取训练好的阈值和权值,作为MATLAB程序段二的初始化值。由此进行仿真分析。

MATLAB程序段一:

x=-4:0.01:4;

y1=sin((1/2)*pi*x)+sin(pi*x);

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

net.trainparam.epochs=2000;

net.trainparam.goal=0.00001;

%初始化网络,用newff创建网络,其权值和阈值初始化函数的默认值是initnw

%initnwNguyen-Widrow规则初始化算法对网络层的权值和阈值进行初始化,该算法

%的初始化值,可以使网络层中每个神经元的作用范围近似地在网络层的输入空间均

%匀分布。 与纯随机初始化权值和阈值的方法比较,初始化算法有以下优点: 神经   %元的浪费少(因为所有神经元都分布在输入空间内);网络的训练速度快(因为输入%空间的每一个区域都有神经元);这里是用rands重新设置权值和阈值。

net.layers{1}.initFcn='initnw';

net.layers{2}.initFcn='initnw';

net.inputWeights{1,1}.initFcn='rands';

net.inputWeights{2,1}.initFcn='rands';

net.biases{1,1}.initFcn='rands';

net.biases{2,1}.initFcn='rands';

net=init(net);

%查看初始化后的权值和阈值

net.iw{1,1}

net.b{1}

net.lw{2,1}

net.b{2}

net=train(net,x,y1);

%得出训练好的权值和阈值供MATLAB程序段二使用

net.iw{1,1}

net.b{1}

net.lw{2,1}

net.b{2}

y2=sim(net,x);

err=y2-y1;

res=norm(err);

pause

plot(x,y1);

hold on

plot(x,y2,'r+');

MATLAB程序段二:

x=-4:0.01:4;

y1=sin((1/2)*pi*x)+sin(pi*x);

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

net.trainparam.epochs=2000;

net.trainparam.goal=0.00001;

%从程序段一得出的数据

net.iw{1,1}=-0.3740;

net.b{1}=-0.1930;    

net.lw{2,1}=[-20.7192;19.6478;10.9678;-9.4500;21.3555;6.7648;-20.7057;-6.1023;-9.4889;-12.7880;-15.5183;-13.9643;-21.2201;29.9987;-15.3738];

net.b{2}=[21.2768;-16.9303;-7.9953;4.8688;-6.6081;-1.3465;-0.8528;-1.2791;-4.7658;-15.4970;-9.2069;-10.5259;-20.1442;3.5287;-13.6953];

net=train(net,x,y1);

y2=sim(net,x);

err=y2-y1;

res=norm(err);

pause

plot(x,y1);

hold on

plot(x,y2,'r+');

 

作者:BP神经网络的matlab实现 来源:BP神经网络的matlab实现
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
  • 上一篇:基于MATLAB的BP神经网络预测系统的设计
  • 下一篇:没有了
  • 相关文章
    • 没有相关文章
    相关评论
    发表我的评论
    • 大名:
    • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment