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

上传人:b****0 文档编号:9331962 上传时间:2023-05-18 格式:DOCX 页数:33 大小:120.53KB
下载 相关 举报
人工智能实验报告BP神经网络算法的简单实现.docx_第1页
第1页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第2页
第2页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第3页
第3页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第4页
第4页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第5页
第5页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第6页
第6页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第7页
第7页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第8页
第8页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第9页
第9页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第10页
第10页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第11页
第11页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第12页
第12页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第13页
第13页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第14页
第14页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第15页
第15页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第16页
第16页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第17页
第17页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第18页
第18页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第19页
第19页 / 共33页
人工智能实验报告BP神经网络算法的简单实现.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《人工智能实验报告BP神经网络算法的简单实现.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告BP神经网络算法的简单实现.docx(33页珍藏版)》请在冰点文库上搜索。

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

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

 

人工神经网络是一种模拟人脑结构及其功能的信息办理系统,能提升人们对信息办理的

智能化水平。

它是一门新兴的边沿和交错学科,它在理论、模型、算法等方面比起从前有了

较大的发展,但到现在无根天性的打破,还有好多空白点需要努力探究和研究。

 

1人工神经网络研究背景

 

神经网络的研究包含神经网络基本理论、网络学习算法、网络模型以及网络应用等方面。

此中比较热点的一个课题就是神经网络学习算法的研究。

最近几年来己研究出很多与神经网络模型相对应的神经网络学习算法,这些算法大概能够分

为三类:

有监察学习、无监察学习和增强学习。

在理论上和实质应用中都比较成熟的算法有

以下三种:

(1)偏差反向流传算法(BackPropagation,简称BP算法);

(2)模拟退火算法;

(3)竞争学习算法。

当前为止,在训练多层前向神经网络的算法中,BP算法是最有影响的算法之一。

但这

种算法存在许多弊端,诸如收敛速度比较慢,或许只求得了局部极小点等等。

所以,最近几年来,

外国很多专家对网络算法进行深入研究,提出了很多改良的方法。

主要有:

(1)增添动量法:

在网络权值的调整公式中增添一动量项,该动量项对某一时刻的调整起阻尼作用。

它能够在偏差曲面出现忽然起伏时,减小振荡的趋向,提升网络训练速度;

(2)自适应调理学习率:

在训练中自适应地改变学习率,使其该大时增大,该小时减小。

使用动向学习率,进而加速算法的收敛速度;

(3)引入陡度因子:

为了提升BP算法的收敛速度,在权值调整进入偏差曲面的平展区时,引入陡度因子,想法压缩神经元的净输入,使权值调整离开平展区。

别的,好多国内的学者也做了许多有关网络算法改良方面的研究,并把改良的算法运用到实质中,获得了必定的成就:

(1)王晓敏等提出了一种鉴于改良的差分进化算法,利用差分进化算法的全局寻优能力,能够迅速地获得BP神经网络的权值,提升算法的速度;

(2)董国君等提出了一种鉴于随机退火体制的竞争层神经网络学习算法,该算法将竞

争层神经网络的串行迭代模式改为随机优化模式,经过采纳退火技术防止网络收敛到能量函数的局部极小点,进而获得全局最优值;

(3)赵青提出一种分层遗传算法与BP算法相联合的前馈神经网络学习算法。

将分层

遗传算法引入到前馈神经网络权值和阈值的初期训练中,再用BP算法对先期训练所得性

能较优的网络权值、阈值进行二次训练获得最后结果,该混淆学习算法能够较快地收敛到全

局最优解;

 

(4)胡洁等提出一种迅速且全局收敛的神经网络学习算法,并且对该优化算法的全局收敛性进行剖析和详尽证明,说明提出的算法比标准的算法效率更高且更精准。

只管国内外的好多学者对BP算法进行了改良,但这些算法只有在某些特定要求下才

有效,并且对网络训练时要增强对网络的监控,网络的结构和参数是要经过多次的试验才能

确立,这些都致使了网络训练时间的增添,降低了网络收敛速度。

所以,还需要进一步研究

神经网络学习算法,提升网络收敛速度,使网络能够更好地应用于实质。

 

2神经网络基础

 

2.1人工神经网络观点

 

2.1.1生物神经元模型

生物神经系统是一个有高度组织和互相作用的数目巨大的细胞组织集体。

人类大脑的神

经细胞大概有1010一10,‘个。

神经细胞也称神经元,是神经系统的基本单元,它们按不

同的联合方式构成了复杂的神经网络。

经过神经元及其连结的可塑性,使得大脑拥有学习、

记忆和认知等各样智能。

人工神经网络的研究出发点是以生物神经元学说为基础的。

生物神

经元学说以为,神经细胞即神经元是神经系统中独立的营养和功能单元。

其独立性是指每一

个神经元均有自己的核和自己的分界限或原生质膜。

生物神经系统包含中枢神经系统和大脑,

均是由各种神经元构成。

生物神经元之间的互相连结让信息传达的部位称为突触(SynaPse)。

突触按其传达信息的不一样体制,可分为化学突触和电突触,此中化学突触占大部分,其神经

激动传达借助于化学递质的作用。

神经元是基本的信息办理单元。

它主要由树突、轴突和突

触构成。

其结构大概描绘如图1所示。

 

图1生物神经元结构

2.1.2神经网络模型

 

当古人们提出的神经元模型己有好多,此中提出最早且影响最大的是

1943

年心理学家

McCulloch和科学家W.PittS在剖析总结神经元基本特征的基础上第一提出的

M一

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)输出反应的前馈式网络:

该网络结构与前馈式网络的不一样之处在于这类网络存在着一

个从输出层到输入层的反应回路。

3)前馈式内层互连网络:

该网络结构中,同一层之间存在着互相关系,神经元之间有相

互的限制关系,但从层与层之间的关系来看仍旧是前馈式的网络结构,很多自组织神经网络

大多拥有这类结构。

4)反应型全互连网络:

在该网络中,每个神经元的输出都和其余神经元相连,进而形成

了动向的反应关系,该网络结构拥有对于能量函数的自寻优能力。

5)反应型局部互连网络:

该网络中,每个神经元只和其四周若干层的神经元发生互连关

系,形成局部反应,从整体上看是一种网状结构。

2.1.4神经网络的学习

 

神经网络的学习也称为训练,指的是经过神经网络所在环境的刺激作用调整神经网络的

自由参数,使神经网络以一种新的方式对外面环境做出反响的一个过程。

能够从环境中学习

和在学习中提升自己性能是神经网络的最存心义的性质。

神经网络经过频频学习对其环境更

为认识。

学习算法是指针对学习问题的明确规则会合。

学习种类是由参数变化发生的形式决

定的,不一样的学习算法对神经元的突触权值调整的表达式有所不一样。

 

2.2BP神经网络

 

神经网络的定义、特色及应用

采纳偏差反向流传算法(Bp:

ErrorBack一propagationAlgorithm)的多层前馈人工神经网

络(或称多层感知器,MLP:

Multiuyerperceptron)称为Bp神经网络或BP神经网络模型。

BP神

经网络拥有显然的特色:

l)散布式的信息储存方式

神经网络是以各个办理器自己的状态和它们之间的连结形式储存信息的,一个信息不是

储存在一个地方,而是按内容散布在整个网络上。

网络上某一处不是只储存一个外面信息,

而是储存了多个信息的部分内容。

整个网络对多个信息加工后才储存到网络各处,所以,它

 

是一种散布式储存方式。

2)大规模并行办理

BP神经网络信息的储存与办理(计算)是合二为一的,即信息的储存表此刻神经元互连的

散布上,并以大规模并行散布方式办理为主,比串行失散符号办理的现代数字计算机优胜。

3)自学习和自适应性

BP神经网络各层直接的连结权值拥有必定的可调性,网络能够经过训练和学习来确立

网络的权值,表现出很强的对环境的自适应和对外界事物的自学习能力。

4)较强的鲁棒性和容错性

BP神经网络散布式的信息储存方式,使其拥有较强的容错性和联想记忆功能,这样如

果某一部分的信息丢掉或破坏,网络还能恢复出本来完好的信息,系统还能运转。

神经网络结构

 

BP神经网络往常由输入层、隐含层和输出层构成,层与层之间全互连,每层节点之间

不相连。

它的输入层节点的个数往常取输入向量的维数,

输出层节点的个数往常取输出向量

的维数,隐层节点个数当前还没有确立的标准,需经过频频试凑的方法,而后获得最后结果。

依据

Kolmogor。

、定瑾,拥有一个隐层

(隐层节点足够多

)的三层

BP神经网络能在闭集上以任

意精度迫近随意非线性连续函数。

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

层与层之间采纳全

互连方式,同一层之间不存在互相连结,隐层能够有一个或多个。

结构一个BP网络需要

确立其办理单元————神经元的特征和网络的拓扑结构。

神经元是神经网络最基本的处

理单元,隐层中的神经元采纳S型变换函数,输出层的神经元可采纳S型或线性型变换函

数。

1为一个典型的三层

BP

网络的拓扑结构。

神经网络学习采纳改良

BP算法,

学习过程由前向计算过程和偏差反向流传过程构成。

在前向计算过程中

输入信息从输入层经隐层逐层计算

并传向输出层

每层神经元的状态

只影响下一层神经元的状态。

如输出层不可以获得希望的输出

则转入偏差反向流传过程

差信号沿本来的连结通路返回

经过改正各层的神经元的权值

使得网络系统偏差最小。

终网络的实质输出与各自所对应的希望输出迫近。

 

3MATLAB6.1神经网络工具箱及其有关函数简介

 

BP

 

神经网络设计时

 

需要确立网络的拓扑结构

 

(隐层的层数及各层的神经元的数目

 

)及

其神经元的变换函数

网络的初始化

偏差计算

学习规则及网络训练

训练参数及训练样

本的归一化办理等方面的工作,在MATLAB6.1神经网络工具箱中,有对应的函数达成所涉

及到的所有计算任务。

 

3.1设计BP网络的有关函数

 

1)神经元变换函数

 

:

线性变换函数

 

purelin、对数

 

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层网络的神经元个数

网络共有

N1层。

TFi

是第

i层网络神经元的变换函数

缺省为

tansig.

BTF是

BP训练算法函数

缺省为

trainlm.

BLF是学习函数,缺省为learngdm.

PF是性能函数,缺省为mse.

newff

在确立网络结构后会自动调用初始化函数

init,

用缺省参数来初始化网络中各个

权值和阈值

产生一个可训练的前馈网络

即该函数的返回值

net。

MATLAB中,

神经

网络

net

当成对象

(object)办理,

其属性用结构来定义。

3)初始化函数init:

它是对网络的连结权值和阈值进行初始化。

newff在创立网络对象

的同时,自动调换初始化函数,依据缺省的参数对网络进行连结权值和阈值初始化。

4)学习函数:

供给多种学习函数,用来修正权值和阈值。

基本的学习函数有:

learngd、

learngdm。

5)性能函数

:

它是用来计算网络的输出偏差。

为训练供给判据,包含:

函数mae,计算网络的均匀绝

对偏差;函数mse,计算网络的均方偏差;函数msereg,计算均方偏差和权/阈值的加权;函数

sse,计算网络的均方偏差和。

6)训练函数train:

BP网络的训练初始化后,可对它进行训练。

在MATLAB中训练网络有两类模式:

逐变模

式和批办理模式。

在逐变模式中,每输入一个学习样本就依据网络性能指标函数对连结权值

和阈值更新一次。

在批办理模式中,所有的学习样本都学习达成后,连结权值和阈值才被更

新一次。

使用批办理模式不需要为每一层的连结权值和阈值设定训练函数,而只要为整个

网络指定一个训练函数,使用起来相对方便,并且很多改良的迅速训练算法只好采纳批办理

模式。

训练网络的函数是train按设置的net.trainFcn和net.trainParam参数来训练网络

采纳批办理方式进行网络的权值和阈值修正,最后达到设定的网络性能指标的要求。

7)BP训练算法函数:

 

 

它是依据网络的输入、目标希望输出,对由函数

newff生成的BP网络进行计算,

修正

其权值和阈值,最后达到设定的网络性能指标的要求。

不一样的训练算法函数对应不一样的训

练算法,如traingd对应最基本梯度降落法

;traingdm

带有动量项的梯度降落法

;traingdx

带有

采纳动量项的自适应算

法;用共轭梯度

法进行训练

的函数有:

traincgf(采纳

Fletcher

-Reeves搜寻技术)、traincgp(采纳Polak-Ribiers搜寻技术)、traincgb(采纳Powell-Beale

搜寻

技术);trainbfg

是鉴于拟牛顿法的训练函数

;trainlm是用Levenberg-Marquardt

数值优化法来

实现偏差反传算法的。

各算法的快慢及内存要求依问题的复杂程度、训练集大小、网络的

大小及偏差要求的不一样而有所不一样。

一般来讲,对于含有几百个权重的网络

Levenberg

-Marquardt算法有最快的收敛速度。

该算法需要大的内存

可经过增大参数

mem-reduc的

值来减少内存的使用量。

需要注意的是:

减少内存使用量实质是经过将雅可比矩阵分解为一

个个小的亚矩阵来实现的

每次只计算此中一个亚矩阵

这必然增添计算时间

所以,

假如

有足够的内存,应当将mem-reduc

参数设为1,即每次都计算整个雅可比矩阵。

拟牛顿算

法的速度仅次于

Levenberg-Marquardt

算法而比共轭梯度法的速度快

内存的需要量也介

于这两者之间。

在共轭梯度法中,traincgb需要的内存数目最多

但往常也能最快收敛。

地来讲,鉴于共轭梯度法、拟牛顿算法和

Levenberg-Marquardt

法等数值优化算法的训练函

数的效率比鉴于启迪式算法的

traingd、traingdm、traingdx的效率高。

以上的训练算法函

数均在网络生成函数newff中早先设置。

8)仿真函数sim:

能够用来计算网络在给定输入下的输出。

9)画图函数poltperf:

能够用来计算网络性能曲线。

 

3.2数据预办理

 

假如对神经网络的输入和输出数据进行必定的预办理,能够加速网络的训练速度。

MATLAB供给的预办理方法有

:

归一化办理(将每组数据都变成-1至1之间数,

所波及的函

数有premnmx、postmnmx、tramnmx)、标准化办理(将每组数据都为均值为

0,

方差为1的

一组数据,所波及的函数有

prestd、poststd、trastd)和主成分剖析(进行正交办理,

减少输入

数据的维数,所波及的函数有

prepca、trapca)。

下边以归一化办理为例说明其用法

对于输

入矩阵p和输出矩阵

t进行归一化办理的语句为:

[pn,minp,maxp,tn,mint,

maxt]=

premnmx(p,t);训练时应当用归一化以后的数据

即:

net=train(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网络进行训练,一定准备训练样本。

对样本数据的获得,有以下几种方法供选

择,详细采纳那种方法,取决于数据的多少,数据文件的格式等。

用元素列表方式直接输入数据。

创立数据文件,经过MATLAB供给的装载数据函数,从数据文件中读取。

函数load合适从MAT文件、ASCII文件中读取数据;

MATLABI/O

函数合适从其余应用中的数据文件中读取数据

;还能够经过数据输入导游

(ImportWizard)从文件或剪贴板中读取数据

单击

File

菜单下的“

ImportData...”将出现

“ImportWizard”窗口,

经过该窗口进行设置

该方法不合适从

M文件中读取数据。

 

4BP神经网络的MATLAB实现

 

4.1网络设计步骤

 

在进行BP神经网络设计时,需要考虑以下问题:

网络的拓扑结构(隐层的层数及各层的神经元的数目);神经元的变换函数选用;网络的初始化(连结权值和阈值的初始化);训练参数设置;训练样本的归一化办理;样本数据导入方式等。

依据以上剖析可知,对于网络的实现有四个基本的步骤:

○1网络成立:

经过函数newff实现,它依据样本数据自动确立输入层、输出层的神经

元数目;隐层神经元数目以及隐层的层数、隐层和输出层的变换函数、训练算法函数需由用户确立。

○2初始化;经过函数init实现,当newff在创立网络对象的同时,自动调换初始化函数init,依据缺省的参数对网络进行连结权值和阈值初始化。

○3网络训练:

经过函数train实现,它依据样本的输入矢量P、目标矢量T;和早先已设置好的训练函数的参数;对网络进行训练。

○4网络仿真:

经过函数sim实现,它依据已训练好的网络,对测试数据进行仿真计算。

 

4.2设计实例

 

利用BP神经网络来达成非线性函数的迫近任务

样本数据以下:

 

输入X

输出D

输入X

输出D

输入X

输出D

0

0

4

4

8

2

1

1

5

3

9

3

2

2

6

2

10

4

3

3

7

1

 

看到希望输出的范围高出,输出层神经元函数利用线性函数作为转移函数。

程序以下:

clear;

clc;

X=-1:

0.1:

1;

D=[-0.9602-0.5770-0.07290.37710.64050.66000.4609

...

0.1336-0.2013-0.4344-0.5000-0.3930-0.1647-.0988

...

0.30720.39600.34490.1816-0.312-0.2189-0.3201];

figure;

plot(X,D,

'*'

);%绘制原始数据散布图(图

3)

net=newff([-11],[51],{

'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.iw{1,1}

%输入层到中间层权值

theta1=net.b{1}

%中间层各神经元阀值

W=net.lw{2,1}

%中间层到输出层权值

theta2=net.b{2}

%神经元各神经元阀值

运转结果以下:

 

图3原始数据散布图

 

图4训练结果

 

 

5matlab

 

神经网络运转状态

由图5能够看出,经过多次训练此后,得出图

3、4的结果只要要经过

8次训练即可满

足精度要求。

训练次数:

8次

用时:

〈1s

偏差:

0.00299〈0.0500

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

当前位置:首页 > 自然科学 > 物理

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

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