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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(人工智能实验报告BP神经网络算法的简单实现.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

人工智能实验报告BP神经网络算法的简单实现.docx

1、人工智能实验报告BP神经网络算法的简单实现人工神经网络是一种模拟人脑结构及其功能的信息办理系统, 能提升人们对信息办理的智能化水平。它是一门新兴的边沿和交错学科,它在理论、模型、 算法等方面比起从前有了较大的发展,但到现在无根天性的打破,还有好多空白点需要努力探究和研究。1人工神经网络研究背景神经网络的研究包含神经网络基本理论、 网络学习算法、 网络模型以及网络应用等方面。此中比较热点的一个课题就是神经网络学习算法的研究。最近几年来己研究出很多与神经网络模型相对应的神经网络学习算法, 这些算法大概能够分为三类: 有监察学习、 无监察学习和增强学习。 在理论上和实质应用中都比较成熟的算法有以下三

2、种:(1)偏差反向流传算法 (Back Propagation,简称 BP 算法 );(2)模拟退火算法;(3)竞争学习算法。当前为止,在训练多层前向神经网络的算法中, BP 算法是最有影响的算法之一。但这种算法存在许多弊端, 诸如收敛速度比较慢, 或许只求得了局部极小点等等。 所以,最近几年来,外国很多专家对网络算法进行深入研究,提出了很多改良的方法。主要有:(1)增添动量法:在网络权值的调整公式中增添一动量项,该动量项对某一时刻的调整起阻尼作用。它能够在偏差曲面出现忽然起伏时,减小振荡的趋向,提升网络训练速度;(2)自适应调理学习率:在训练中自适应地改变学习率,使其该大时增大,该小时减小。

3、使用动向学习率,进而加速算法的收敛速度;(3)引入陡度因子:为了提升 BP 算法的收敛速度,在权值调整进入偏差曲面的平展区时,引入陡度因子,想法压缩神经元的净输入,使权值调整离开平展区。别的,好多国内的学者也做了许多有关网络算法改良方面的研究, 并把改良的算法运用到实质中,获得了必定的成就:(1)王晓敏等提出了一种鉴于改良的差分进化算法,利用差分进化算法的全局寻优能力,能够迅速地获得 BP 神经网络的权值,提升算法的速度;(2)董国君等提出了一种鉴于随机退火体制的竞争层神经网络学习算法,该算法将竞争层神经网络的串行迭代模式改为随机优化模式, 经过采纳退火技术防止网络收敛到能量函数的局部极小点,

4、进而获得全局最优值;(3)赵青提出一种分层遗传算法与BP 算法相联合的前馈神经网络学习算法。将分层遗传算法引入到前馈神经网络权值和阈值的初期训练中,再用 BP 算法对先期训练所得性能较优的网络权值、 阈值进行二次训练获得最后结果, 该混淆学习算法能够较快地收敛到全局最优解;(4)胡洁等提出一种迅速且全局收敛的神经网络学习算法,并且对该优化算法的全局收敛性进行剖析和详尽证明,说明提出的算法比标准的算法效率更高且更精准。只管国内外的好多学者对BP 算法进行了改良,但这些算法只有在某些特定要求下才有效,并且对网络训练时要增强对网络的监控,网络的结构和参数是要经过多次的试验才能确立, 这些都致使了网络

5、训练时间的增添,降低了网络收敛速度。 所以,还需要进一步研究神经网络学习算法,提升网络收敛速度,使网络能够更好地应用于实质。2神经网络基础2.1 人工神经网络观点2.1.1 生物神经元模型生物神经系统是一个有高度组织和互相作用的数目巨大的细胞组织集体。 人类大脑的神经细胞大概有 1010 一 10,个。神经细胞也称神经元,是神经系统的基本单元,它们按不同的联合方式构成了复杂的神经网络。经过神经元及其连结的可塑性,使得大脑拥有学习、记忆和认知等各样智能。人工神经网络的研究出发点是以生物神经元学说为基础的。生物神经元学说以为, 神经细胞即神经元是神经系统中独立的营养和功能单元。其独立性是指每一个神

6、经元均有自己的核和自己的分界限或原生质膜。 生物神经系统包含中枢神经系统和大脑,均是由各种神经元构成。生物神经元之间的互相连结让信息传达的部位称为突触 (SynaPse)。突触按其传达信息的不一样体制, 可分为化学突触和电突触, 此中化学突触占大部分, 其神经激动传达借助于化学递质的作用。 神经元是基本的信息办理单元。 它主要由树突、 轴突和突触构成。其结构大概描绘如图 1 所示。图 1 生物神经元结构2.1.2 神经网络模型当古人们提出的神经元模型己有好多,此中提出最早且影响最大的是1943年心理学家McCulloch 和科学家 W.PittS 在剖析总结神经元基本特征的基础上第一提出的M

7、一P 模型,如图 2 所示,它是大部分神经网络模型的基础。Wji代表神经元i 与神经元图2模型 j 之间的连结强度(模拟生物神经元之间突触连结强度),称之为连结权;Ui代表神经元Vi代表神经元i 的活跃值,即神经元状态 ;j 的输出,即是神经元 i 的一个输入; j代表神经元的阀值。函数 f 表达了神经元的输入输出特征。在M-P 模型中, f 定义为阶跳函数 :1,? 0?= ? =?0,? 0?2.1.3 神经网络结构神经网络的网络结构能够归为以下几类 :l)前馈式网络 :该网络结构是分层摆列的,每一层的神经元输出只与下一层神经元连结。2)输出反应的前馈式网络 :该网络结构与前馈式网络的不一

8、样之处在于这类网络存在着一个从输出层到输入层的反应回路。3)前馈式内层互连网络 :该网络结构中,同一层之间存在着互相关系,神经元之间有相互的限制关系, 但从层与层之间的关系来看仍旧是前馈式的网络结构, 很多自组织神经网络大多拥有这类结构。4)反应型全互连网络 :在该网络中,每个神经元的输出都和其余神经元相连,进而形成了动向的反应关系,该网络结构拥有对于能量函数的自寻优能力。5)反应型局部互连网络 :该网络中,每个神经元只和其四周若干层的神经元发生互连关系,形成局部反应,从整体上看是一种网状结构。2.1.4 神经网络的学习神经网络的学习也称为训练, 指的是经过神经网络所在环境的刺激作用调整神经网

9、络的自由参数, 使神经网络以一种新的方式对外面环境做出反响的一个过程。能够从环境中学习和在学习中提升自己性能是神经网络的最存心义的性质。神经网络经过频频学习对其环境更为认识。 学习算法是指针对学习问题的明确规则会合。学习种类是由参数变化发生的形式决定的,不一样的学习算法对神经元的突触权值调整的表达式有所不一样。2.2BP 神经网络神经网络的定义、特色及应用采纳偏差反向流传算法 (Bp:ErrorBack 一 propagationAlgorithm) 的多层前馈人工神经网络(或称多层感知器, MLP :Multiuyerperceptron) 称为 Bp 神经网络或 BP神经网络模型。 BP

10、神经网络拥有显然的特色 :l)散布式的信息储存方式神经网络是以各个办理器自己的状态和它们之间的连结形式储存信息的, 一个信息不是储存在一个地方,而是按内容散布在整个网络上。网络上某一处不是只储存一个外面信息,而是储存了多个信息的部分内容。 整个网络对多个信息加工后才储存到网络各处, 所以, 它是一种散布式储存方式。2)大规模并行办理BP 神经网络信息的储存与办理 (计算 )是合二为一的, 即信息的储存表此刻神经元互连的散布上,并以大规模并行散布方式办理为主,比串行失散符号办理的现代数字计算机优胜。3)自学习和自适应性BP 神经网络各层直接的连结权值拥有必定的可调性,网络能够经过训练和学习来确立

11、网络的权值,表现出很强的对环境的自适应和对外界事物的自学习能力。4)较强的鲁棒性和容错性BP 神经网络散布式的信息储存方式,使其拥有较强的容错性和联想记忆功能,这样如果某一部分的信息丢掉或破坏,网络还能恢复出本来完好的信息,系统还能运转。神经网络结构BP 神经网络往常由输入层、隐含层和输出层构成,层与层之间全互连,每层节点之间不相连。 它的输入层节点的个数往常取输入向量的维数,输出层节点的个数往常取输出向量的维数,隐层节点个数当前还没有确立的标准,需经过频频试凑的方法,而后获得最后结果。依据Kolmogor 。、定瑾, 拥有一个隐层(隐层节点足够多)的三层BP神经网络能在闭集上以任意精度迫近随

12、意非线性连续函数。BP 网络是一种多层前馈神经网络 , 由输入层、 隐层和输出层构成。 层与层之间采纳全互连方式 , 同一层之间不存在互相连结 , 隐层能够有一个或多个。 结构一个 BP 网络需要确立其办理单元 神经元的特征和网络的拓扑结构。神经元是神经网络最基本的处理单元 , 隐层中的神经元采纳 S 型变换函数 , 输出层的神经元可采纳 S 型或线性型变换函数。图1 为一个典型的三层BP网络的拓扑结构。神经网络学习采纳改良BP算法,学习过程由前向计算过程和偏差反向流传过程构成。在前向计算过程中, 输入信息从输入层经隐层逐层计算, 并传向输出层, 每层神经元的状态只影响下一层神经元的状态。如输

13、出层不可以获得希望的输出, 则转入偏差反向流传过程, 误差信号沿本来的连结通路返回, 经过改正各层的神经元的权值, 使得网络系统偏差最小。最终网络的实质输出与各自所对应的希望输出迫近。3MATLAB6.1 神经网络工具箱及其有关函数简介BP神经网络设计时, 需要确立网络的拓扑结构(隐层的层数及各层的神经元的数目)及其神经元的变换函数,网络的初始化, 偏差计算, 学习规则及网络训练, 训练参数及训练样本的归一化办理等方面的工作 , 在 MATLAB6.1 神经网络工具箱中 , 有对应的函数达成所涉及到的所有计算任务。3.1 设计 BP 网络的有关函数1)神经元变换函数:线性变换函数purelin

14、 、对数S 型变换函数logsin、双曲线正切S型变换函数tansig。2)BP网络生成函数newff: 它是用来生成BP神经网络并进行初始化, 能够确立网络层数 、每层中的神经元数和变换函数。这个函数有六个输入参数, 分别是:输入向量的范围、网络结构、各层变换函数、训练算法函数、学习函数和性能函数。输出参数为所生成的BP神经网络名net 。 其语法为:net =newff(PR, * S1, S2, SN1+ , * TF1, TF2,TFN1+ , BTF, BLF,PF)此中 :PR 是一个由每个输入向量的最大最小值构成的Rx2 矩阵 , R为输着迷经元数目。Si 是第i 层网络的神经元

15、个数, 网络共有N1 层。TFi是第i 层网络神经元的变换函数, 缺省为tansig.BTF 是BP 训练算法函数, 缺省为trainlm.BLF 是学习函数 , 缺省为 learngdm.PF 是性能函数 , 缺省为 mse.newff在确立网络结构后会自动调用初始化函数init,用缺省参数来初始化网络中各个权值和阈值, 产生一个可训练的前馈网络, 即该函数的返回值net。 在MATLAB 中 ,神经网络net当成对象(object) 办理 ,其属性用结构来定义。3)初始化函数 init: 它是对网络的连结权值和阈值进行初始化。 newff 在创立网络对象的同时 , 自动调换初始化函数 ,

16、依据缺省的参数对网络进行连结权值和阈值初始化。4)学习函数 : 供给多种学习函数 , 用来修正权值和阈值。基本的学习函数有:learngd 、learngdm 。5)性能函数:它是用来计算网络的输出偏差 。 为训练供给判据 , 包含 : 函数 mae, 计算网络的均匀绝对偏差 ;函数 mse, 计算网络的均方偏差 ;函数 msereg, 计算均方偏差和权 / 阈值的加权 ;函数sse, 计算网络的均方偏差和。6)训练函数 train:BP 网络的训练初始化后 , 可对它进行训练。 在 MATLAB中训练网络有两类模式 :逐变模式和批办理模式。 在逐变模式中 , 每输入一个学习样本就依据网络性能

17、指标函数对连结权值和阈值更新一次。在批办理模式中 , 所有的学习样本都学习达成后 , 连结权值和阈值才被更新一次。 使用批办理模式不需要为每一层的连结权值和阈值设定训练函数 , 而只要为整个网络指定一个训练函数 , 使用起来相对方便 , 并且很多改良的迅速训练算法只好采纳批办理模式。训练网络的函数是 train 按设置的 net.trainFcn 和 net.trainParam 参数来训练网络采纳批办理方式进行网络的权值和阈值修正 , 最后达到设定的网络性能指标的要求。7)BP 训练算法函数 :,它是依据网络的输入、 目标希望输出 , 对由函数newff 生成的 BP 网络进行计算 ,修正其

18、权值和阈值 , 最后达到设定的网络性能指标的要求。不一样的训练算法函数对应不一样的训练算法 , 如 traingd 对应最基本梯度降落法;traingdm带有动量项的梯度降落法;traingdx带有采纳动量项的自适应算法 ; 用共轭梯度法进行训练的函数有 :traincgf( 采纳Fletcher-Reeves 搜寻技术 )、traincgp( 采纳 Polak-Ribiers 搜寻技术 )、traincgb( 采纳 Powell-Beale搜寻技术 );trainbfg是鉴于拟牛顿法的训练函数;trainlm 是用 Levenberg -Marquardt数值优化法来实现偏差反传算法的。各算

19、法的快慢及内存要求依问题的复杂程度、训练集大小、网络的大小及偏差要求的不一样而有所不一样。一般来讲 , 对于含有几百个权重的网络,Levenberg-Marquardt 算法有最快的收敛速度。该算法需要大的内存, 可经过增大参数mem-reduc 的值来减少内存的使用量。需要注意的是 :减少内存使用量实质是经过将雅可比矩阵分解为一个个小的亚矩阵来实现的,每次只计算此中一个亚矩阵, 这必然增添计算时间, 所以,假如有足够的内存 , 应当将 mem-reduc参数设为 1, 即每次都计算整个雅可比矩阵。拟牛顿算法的速度仅次于Levenberg -Marquardt算法而比共轭梯度法的速度快, 内存

20、的需要量也介于这两者之间。在共轭梯度法中 , traincgb 需要的内存数目最多, 但往常也能最快收敛。总地来讲 , 鉴于共轭梯度法、拟牛顿算法和Levenberg-Marquardt法等数值优化算法的训练函数的效率比鉴于启迪式算法的traingd 、 traingdm 、 traingdx 的效率高。以上的训练算法函数均在网络生成函数 newff 中早先设置。8)仿真函数 sim:能够用来计算网络在给定输入下的输出。9)画图函数 poltperf:能够用来计算网络性能曲线。3.2 数据预办理假如对神经网络的输入和输出数据进行必定的预办理 ,能够加速网络的训练速度。MATLAB 供给的预办理

21、方法有:归一化办理 (将每组数据都变成 -1 至 1 之间数 ,所波及的函数有 premnmx 、postmnmx 、tramnmx) 、标准化办理 (将每组数据都为均值为0,方差为 1的一组数据 , 所波及的函数有prestd、 poststd 、 trastd) 和主成分剖析 (进行正交办理 ,减少输入数据的维数 , 所波及的函数有prepca、trapca)。下边以归一化办理为例说明其用法, 对于输入矩阵 p 和输出矩阵t 进行归一化办理的语句为: pn, minp, maxp, tn,mint,maxt =premnmx(p, t); 训练时应当用归一化以后的数据, 即:net= tr

22、ain(net, pn, tn);训练结束后还应付网络的输出 an=sim(net, pn)作以下办理 :a=postmnmx(an, mint, maxt); 当用训练好的网络对新数据 pnew 进行展望时 , 也应作相应的办理 :pnewn= tramnmx (pnew, minp, maxp);anewn=sim(net,pnewn);anew=postmnmx(anew, mint,maxt)。3.3 训练数据的导入方法要对 BP 网络进行训练 , 一定准备训练样本。 对样本数据的获得 , 有以下几种方法供选择 , 详细采纳那种方法 , 取决于数据的多少 , 数据文件的格式等。用元素列

23、表方式直接输入数据。创立数据文件 , 经过 MATLAB 供给的装载数据函数 , 从数据文件中读取。函数 load 合适从 MAT 文件、 ASCII 文件中 读取数据 ;MATLABI/O函数合适从其余应用中的数据文件中读取数据; 还能够经过数据输入导游(Import Wizard) 从文件或剪贴板中读取数据, 单击File菜单下的“Import Data.”将出现“ImportWizard ”窗口 ,经过该窗口进行设置, 该方法不合适从M 文件中读取数据。4BP 神经网络的 MATLAB 实现4.1 网络设计步骤在进行 BP 神经网络设计时 , 需要考虑以下问题 :网络的拓扑结构 (隐层的

24、层数及各层的神经元的数目 );神经元的变换函数选用 ;网络的初始化 (连结权值和阈值的初始化 ); 训练参数设置 ;训练样本的归一化办理 ;样本数据导入方式等。依据以上剖析可知 , 对于网络的实现有四个基本的步骤 :1网络成立 :经过函数 newff 实现 , 它依据样本数据自动确立输入层 、输出层的神经元数目 ;隐层神经元数目以及隐层的层数、隐层和输出层的变换函数、训练算法函数需由用户确立。2 初始化 ;经过函数 init 实现 , 当 newff 在创立网络对象的同时 , 自动调换初始化函数 init, 依据缺省的参数对网络进行连结权值和阈值初始化。3网络训练 :经过函数 train 实现

25、 , 它依据样本的输入矢量 P、目标矢量 T;和早先已设置好的训练函数的参数 ;对网络进行训练。4网络仿真 :经过函数 sim 实现 , 它依据已训练好的网络 , 对测试数据进行仿真计算。4.2 设计实例利用 BP 神经网络来达成非线性函数的迫近任务样本数据以下:输入 X输出 D输入 X输出 D输入 X输出 D00448211539322621043371看到希望输出的范围高出,输出层神经元函数利用线性函数作为转移函数。程序以下:clear;clc;X=-1:0.1:1;D=-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609.0.1336 -

26、0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988.0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201;figure;plot(X,D,*); %绘制原始数据散布图(图3)net = newff(-1 1,5 1,tansig, tansig);net.trainParam.epochs = 100;%训练的最大次数net.trainParam.goal = 0.005;%全局最小偏差net = train(net,X,D);O = sim(net,X);figure;plot(X,D,*,X,O);%绘制最后获得的结果和偏差曲线V = net.iw1,1%输入层到中间层权值theta1 = net.b1%中间层各神经元阀值W = net.lw2,1%中间层到输出层权值theta2 = net.b2%神经元各神经元阀值运转结果以下:图 3 原始数据散布图图 4 训练结果图5matlab神经网络运转状态由图 5 能够看出,经过多次训练此后,得出图3、 4 的结果只要要经过8 次训练即可满足精度要求。训练次数: 8 次用时: 1s偏差: 0.00299 0.0500

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2