神经网络实验指导书版1.docx

上传人:b****5 文档编号:5926824 上传时间:2023-01-02 格式:DOCX 页数:23 大小:207.61KB
下载 相关 举报
神经网络实验指导书版1.docx_第1页
第1页 / 共23页
神经网络实验指导书版1.docx_第2页
第2页 / 共23页
神经网络实验指导书版1.docx_第3页
第3页 / 共23页
神经网络实验指导书版1.docx_第4页
第4页 / 共23页
神经网络实验指导书版1.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

神经网络实验指导书版1.docx

《神经网络实验指导书版1.docx》由会员分享,可在线阅读,更多相关《神经网络实验指导书版1.docx(23页珍藏版)》请在冰豆网上搜索。

神经网络实验指导书版1.docx

神经网络实验指导书版1

北京信息科技大学自编实验讲义

 

神经网络实验指导书

许晓飞陈雯柏编著

 

自动化学院

智能科学与技术系

2013年1月

<>

实验指导

实验目的:

(1)熟悉Matlab/Simulink的使用.

(2)掌握BP神经网络的基本原理和基本的设计步骤.

(3)了解BP神经网络在实际中的应用.

(4)针对简单的实际系统,能够建立BP神经网络控制模型.

实验原理:

1.前馈型人工神经网络

前馈型人工神经网络是整个神经网络体系中最常见的一种,其结构模型如图2所示。

网络结构包含输入层、隐层(可能是多层)和输出层,它的连接方式是同层之间不相连接,相邻层之间单元为全连接型。

这种网络没有反馈存在,实际运行是单向的,学习方式是一种监督式学习。

前馈型神经网络具有很强的非线性映射能力,寻找其映射是靠学习实践的,只要学习数据足够完备,就能够描述任意未知的复杂系统。

因此前馈神经网络为非线性系统的建模和控制提供了有力的工具。

图1前馈型神经网络结构

2.BP算法原理

BP(BackPropagation)神经网络是一种利用误差反向传播训练算法的前馈型网络,BP学习算法实质是求取网络总误差函数的最小值问题[2]。

这种算法采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数,它是梯度下降法在多层前馈网络中的应用。

具体学习算法包括两大过程,其一是输入信号的正向传播过程,其二是输出误差信号的反向传播过程。

1.正向传播

输入的样本从输入层经过隐层单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。

在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播

反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。

网络各层的权值改变量,则由传播到该层的误差大小来决定。

3.BP算法的特点

BP神经网络具有以下三方面的主要优点[3]:

第一,只要有足够多的隐含层和隐层节点,BP神经网络可逼近任意的非线性映射关系;第二,BP学习算法是一种全局逼近方法,因而它具有较好的泛化能力。

第三,BP神经网络具有一定的容错能力。

因为BP神经网络输入输出间的关联信息分布存储于连接权中,由于连接权的个数总多,个别神经元的损坏对输入输出关系只有较小影响。

但在实际应用中也存在一些问题,如:

收敛速度慢,极有可能陷入最优陷阱(局部极值),而且典型的BP网络是一个冗余结构,它的结构及隐节点数的确定往往有人为的主观性,而且一旦人工决定之后,不能在学习过程中自主变更。

其结果是隐节点数少了,学习过程不收敛;隐节点数多了,则网络的学习及推理的效率较差。

实验步骤:

(1)建立控制模型

神经网络训练数据来源于MATLAB6.5自带的一阶T-S型模糊控制slcp.mdl。

如图2所示。

图2一级倒立摆的模糊控制仿真

在上面的控制系统中提取摆角、角速度、位移、速度初始条件为分别为0.5rad,1rad/s,0和0,在此条件下响应的输入输出对,

(2)提取训练数据

如图3所示,利用【SignalToWorkspace】模块获取一阶T-S型模糊控制仿真过程的控制器输入输出数据对,并保存到工作区中,可以直接用到神经网络的训练中。

图3数据提取

(3)BP神经网络控制器的训练

首先将提取出的训练数据变为标准的训练数据形式,标准的训练数据分为输入和目标输出两部分。

输入部分是一个形式为输入个数

训练数据个数的矩阵,这里输入个数为4。

目标输出为一个输出个数

训练数据个数的矩阵,这里输出个数为1。

而经signaltoworkspace模块提取出的数据为一个训练数据个数

输入(或输出)个数的矩阵,因此分别将p、t转置后就得到标准训练数据p’,t’。

接着选择要训练的步数,训练步数的选择可由下面语句定义:

net.trainParam.epochs=250

这一语句定义了一个500步的训练步数。

做完上面的工作后就可以对网络进行训练了,按照上一节中的选择和定义初始化网络后,在没有输入延迟和输出延迟的条件下,并设训练后的网络还为NET,便可用下面语句对网络训练:

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

使用下面语句初始化BP神经网络控制器并进行训练:

P=p';

T=t';

net=newff([-0.350.35;-11;-33;-33],[121],{'tansig','purelin'},'trainlm','learngdm');

net.trainParam.show=25;

net.trainParam.epochs=250;

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

系统提示如下:

TRAINLM,Epoch0/250,MSE10.1011/0,Gradient2554.35/1e-010

TRAINLM,Epoch50/250,MSE4.78751e-008/0,Gradient0.00983832/1e-010

TRAINLM,Epoch75/250,MSE4.1262e-008/0,Gradient0.00475103/1e-010

TRAINLM,Epoch100/250,MSE3.76953e-008/0,Gradient0.00278629/1e-010

TRAINLM,Epoch125/250,MSE3.52016e-008/0,Gradient0.00194476/1e-010

TRAINLM,Epoch150/250,MSE3.32444e-008/0,Gradient0.00150103/1e-010

TRAINLM,Epoch175/250,MSE3.16423e-008/0,Gradient0.00121143/1e-010

TRAINLM,Epoch200/250,MSE3.02987e-008/0,Gradient0.000996205/1e-010

TRAINLM,Epoch225/250,MSE2.91493e-008/0,Gradient0.000826085/1e-010

TRAINLM,Epoch250/250,MSE2.81489e-008/0,Gradient0.000687935/1e-010

TRAINLM,Maximumepochreached,performancegoalwasnotmet.

图4训练误差曲线

可以看出,经过250步训练控制器输出与期望输出间的误差已经很小了。

提示:

如训练程序有错,请在help文档搜索BP神经网络函数newff,查看语法调用;

P=p';

T=t';

net=newff([0.350.35;-11;-33;-33],[12,1],{'tansig''purelin'});

net.trainparam.show=25;

net.trainparam.epochs=300;

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

神经网络的结构

用语句gensim(net,-1)可以在simulink里生成控制器并使用其进行控制,其中-1的意思是系统是实时的,生成的神经网络控制器结构如图5所示。

(a)神经网络控制器外部结构

(b)内部结构

(c)隐层结构

(d)输出层结构

图5BP神经网络结构

(4)神经网络控制的实现

使用训练后的BP神经网络控制器代替原模糊控制器控制器便可进行仿真试验。

控制结构如图6所示。

图6直线一级倒立摆神经网络控制仿真

单击模型窗口上的’run’,运行以上的仿真实验,可以看出训练后的BP神经网络能成功的实现倒立摆的控制.

<>

实验指导

实验目的:

(1)熟悉Matlab/Simulink的使用.

(2)掌握SOM神经网络的基本原理和基本的设计步骤.

(3)熟悉SOM神经网络在实际中的应用.

实验原理:

通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。

自组织网络的自组织功能是通过竞争学习(competitivelearning)实现的。

1981年芬兰Helsink大学的T.Kohonen教授提出一种自组织特征映射网,简称SOM网,又称Kohonen网。

Kohonen认为:

一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过程是自动完成的。

自组织特征映射正是根据这一看法提出来的,其特点与人脑的自组织特性相类似。

SOM网共有两层,输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。

Kohonen学习算法程序流程:

示例:

产生100个(0,0.5pi)之间的角度,用其sin和cos值作为输入向量,利用输出为二维平面阵的SOM网络对其进行聚类。

参考程序如下:

angles=0:

0.5*pi/99:

0.5*pi;

P=[sin(angles);cos(angles)];

plot(P(1,:

),P(2,:

),'+r')

net=newsom([01;01],[10]);

net.trainParam.epochs=10;

net=train(net,P);

plotsom(net.iw{1,1},net.layers{1}.distances)

p=[1;0];

a=sim(net,p)

实验内容:

人口分类是人口统计中的一个重要指标,现有1999共10个地区的人口出生比例情况如下表所示,建立一个自组织神经网络对上述数据分类,给定某个地区的男、女出生比例分别为0.5,0.5,测试训练后的自组织神经网络的性能,判断其属于哪个类别。

出生男性百分比

0.5512 0.5123 0.5087 0.5001 0.6012 0.52980.5000 0.49650.51030.5003

出生女性百分比

0.44880.4877 0.49130.4999 0.39880.47020.5000 0.50350.48970.4997

实验步骤:

(1)确定输入模式;

(2)确定网络的结构,设计参数;

(3)编辑相应的M文件实现SOM对数据进行聚类,运行M文件,在命令窗口察看结果。

课下扩展实验:

利用SOM网络对动物属性特征映射

1989年Kohonen给出一个SOM网的著名应用实例,即把不同的动物按其属性特征映射到两维输出平面上,使属性相似的动物在SOM网输出平面上的位置也相近。

该例训练集种共有16种动物,每种动物用一个29维向量来表示,其中前16个分量构成符号向量,对不同的动物进行“16取1”编码;后13个分量构成属性向量,描述动物的13种属性,用1或0表示某动物该属性的有或无。

表2中的各列给出16种动物的属性列向量。

表2.16种动物的属性向量

动物

属性

鸽子

母鸡

猫头鹰

狐狸

斑马

2只腿

4只腿

鬃毛

羽毛

1

0

0

1

0

0

0

0

1

0

0

1

0

1

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

0

1

1

0

0

1

0

0

0

0

1

0

0

1

1

1

0

0

1

0

0

0

0

1

1

0

1

0

1

0

0

1

0

0

0

0

1

1

0

1

0

0

1

0

1

0

0

0

0

1

1

0

1

0

0

1

0

0

1

1

0

0

0

1

0

0

0

0

1

0

0

1

1

0

0

0

0

1

0

0

0

1

0

0

1

1

0

0

0

1

1

0

0

1

0

0

0

1

1

0

0

0

1

0

0

0

0

0

1

0

1

1

0

0

0

1

1

0

0

0

0

1

0

1

1

0

0

0

1

1

0

0

0

0

1

0

1

1

1

1

0

0

1

0

0

0

0

1

0

1

1

1

1

0

0

1

0

0

0

0

1

0

1

1

1

0

0

0

0

0

0

实验步骤

(1)准备输入模式;

(2)设计SOM网络:

SOM网的输出平面上有10⨯10个神经元

(3)SOM网络的训练:

用16个动物模式轮番输入进行训练,考察输出平面上所示情况。

注意事项

(1)输入:

P为29×16的矩阵,其中29维输入向量,16为动物的个数---归一化

(2)输出:

10×10

(3)网络的设计:

建立新的网络:

net=newsom(AA,[1010],'gridtop');'hextop'

网络训练参数设定:

net.trainParam.epochs=1000;

网络训练:

net=train(net,P);

(4)训练后的运行:

a=sim(net,P)

由a的值可以得到SOM的哪个输出节点对输入有所响应,即归为哪一类

(4)画出输出示意图。

(提示输出a来确定获胜节点的坐标,从而进行画图)

<>

实验指导

实验目的:

(1)熟悉Matlab/Simulink的使用.

(2)掌握DHNN神经网络的基本原理和基本的设计步骤.

(3)熟悉DHNN神经网络在实际中的应用.

实验原理:

Hopfield网络是神经网络发展历史上的一个重要的里程碑。

由美国加州理工学院物理学家J.J.Hopfield教授于1982年提出,是一种单层反馈神经网络,结构如下所示。

DHNN网实质上是一个离散的非线性动力学系统。

网络从初态X(0)开始,若能经有限次递归后,其状态不再发生变化,即X(t+1)=X(t),则称该网络是稳定的。

如果网络是稳定的,它可以从任一初态收敛到一个稳态.若把需记忆的样本信息存储于网络不同的吸引子,当输入含有部分记忆信息的样本时,网络的演变过程便是从部分信息寻找全部信息,即联想回忆的过程。

实验内容:

设印刷体数字由10*10点阵构成,就是将数字分成很多小方块,每个方块就对应数字的一部分,构成数字本部分的方块用1表示,空白处用-1表示。

试设计一个Hopfield网络,能够正确识别印刷体的数字0-9的识别,考察网络对受污染的数字点阵的识别,证明网络的有效性。

实验步骤:

(1)确定网络的输入向量与目标向量;

(2)确定网络的结构,创建一个Hopfield神经网络,设计参数;

(3)编辑相应的M文件实现对给定受噪声污染的数字点阵的恢复,对DHNN网络进行仿真.要求考虑固定噪声和随机噪声两种情况。

注:

随机噪声的生成

Noise_one=one;

Noise_two=two;

Fori=1:

100

a=rand;

ifa<0.2

Noise_one(i)=-one(i);

Noise_two(i)=-two(i);

End

End

显示图的运行结果

放大图像:

imresize(one,20)

显示图像:

imshow(one)

RBF神经网络

实验目的:

(1)熟悉Matlab/Simulink的使用.

(2)掌握RBF神经网络的基本原理和基本的设计步骤.

(3)熟悉RBF神经网络在实际中的应用.

实验原理:

径向基函数(RBF-RadialBasisFunction)神经网络是由J.Moody和C.Darken在80年代末提出的一种神经网络,它是具有单隐层的三层前馈网络。

由于它模拟了人脑中局部调整、相互覆盖接收域(或称感受野-ReceptiveField)的神经网络结构,因此,RBF网络是一种局部逼近网络,已证明它能任意精度逼近任意连续函数。

1.RBF网络特点

(1)RBF网络的作用函数为高斯函数,是局部的,BP网络的作用函数为S函数,是全局的;

(2)如何确定RBF网络隐层节点的中心及基宽度参数是一个困难的问题;

(3)已证明RBF网络具有唯一最佳逼近的特性,且无局部极小。

2.RBF网络结构

RBF网络是一种三层前向网络。

RBF网络结构如图2.1所示。

由于输入到输出的映射是非线性的,而隐含层空间到输出空间的映射是线性的,从而可以大大加快学习速度并避免局部极小问题。

图2.1RBF网络结构

3.RBF网络的逼近

采用RBF网络逼近一对象的结构如图2.2所示。

图2.2RBF网络逼近

在RBF网络结构中,

为网络的输入向量。

设RBF网络的径向基向量

,其中hj为高斯基函数:

网络的第

个结点的中心矢量为:

其中,

设网络的基宽向量为:

为节点的基宽度参数,且为大于零的数。

网络的权向量为:

时刻网络的输出为:

(2.1)

设理想输出为

,则性能指标函数为:

(2.2)

根据梯度下降法,输出权、节点中心及节点基宽参数的迭代算法如下:

(2.3)

(2.4)

(2.5)

(2.6)

(2.7)

其中,

为学习速率,

为动量因子。

4、RBF神经网络函数newrbe及其参数介绍

应用newrbe()函数可以快速设计一个径向基函数网络,且使得设计误差为0,调用方式如下:

net=newrbe(P,T,SPREAD)

其中,P为输入向量,T为期望输出向量(目标值),SPREAD为径向基层的散布常数,缺省值为1。

输出为一个径向基网络,其权值和阈值完全满足输入和期望值关系要求。

由newrbe()函数构建的径向基函数网络,径向基层(第一层)神经元数目等于输入向量的个数。

径向基层阈值的设定决定了每个径向基神经元对于输入向量产生响应的区域。

因此,SPREAD应当足够大,使得神经元响应区域覆盖所有输入区间。

实验内容:

利用MATLAB6.5自带的一阶T-S型模糊控制slcp.mdl平台(如图1所示)设计RBF神经网络控制器,实现倒立摆的稳定控制仿真研究。

实验步骤:

(1)建立控制模型

图1一级倒立摆的模糊控制仿真

在上面的控制系统中提取摆角、角速度、位移、速度初始条件为分别为0.5rad,1rad/s,0和0,在此条件下响应的输入输出对。

(2)提取训练数据

如图2所示,利用【SignalToWorkspace】模块获取一阶T-S型模糊控制仿真过程的控制器输入输出数据对,并保存到工作区中,可以直接用到神经网络的训练中。

图2数据提取

(3)RBF神经网络控制器的训练

首先将提取出的训练数据变为标准的训练数据形式,标准的训练数据分为输入和目标输出两部分。

输入部分是一个形式为输入个数

训练数据个数的矩阵,这里输入个数为4。

目标输出为一个输出个数

训练数据个数的矩阵,这里输出个数为1。

而经signaltoworkspace模块提取出的数据为一个训练数据个数

输入(或输出)个数的矩阵,因此分别将u、v转置后就得到标准训练数据

使用下面语句应用newrbe()函数设计一个RBF神经网络:

input=u’;

output=v’;

net=newrbe(input,output,256)

(4)误差观察

对网络进行检测,对于输入向量input应用函数sim()进行仿真,观察RBF对样本向量的逼近效果。

y=sim(net,input)

(5)观察RBF网络的内部结构

调用函数gensim()生成上述网络的Simulink模型。

设定st=-1,生成一个连续采样的网络模块。

用下面语句可以在Simulink里生成控制器并使用其进行控制:

gensim(net,-1)

其中-1的意思是系统是实时的。

生成的RBF神经网络控制器如图3.2所示

(a)外部结构

(b)内部结构

(c)隐层结构

(d)输出层结构

图3RBF神经网络控制器

(6)利用RBF网络实现倒立摆的稳定控制

使用这个RBF神经网络控制器代替原模糊控制器。

运行程序,比较结果。

图4RBF神经网络控制仿真图

实验思考:

1.比较RBF与BP网络

2.为了更直观的研究RBF网络逼近的效果,下面选取一非线性函数作为逼近对象进行仿真研究,逼近对象为:

将上式编入程序,其中采样时间取1ms。

输入信号为

,网络隐层神经元个数取m=4,网络结构为2-4-1,网络的初始值取随机值,高斯函数的初始

网络的学习参数取

RBF网络逼近程序:

alfa=0.05;

xite=0.5;

x=[0,0]';

b=1.5*ones(4,1);

c=0.5*ones(2,4);

w=rands(4,1);

w_1=w;w_2=w_1;

c_1=c;c_2=c_1;

b_1=b;b_2=b_1;

d_w=0*w;

d_b=0*b;

y_1=0;

u_1=0;

ts=0.001;

fork=1:

1:

2000

time(k)=k*ts;

u(k)=0.50*sin(1*2*pi*k*ts);

y(k)=(-0.3*y_1+u_1)/(5+y_1^2);

x

(1)=u(k);

x

(2)=y_1;

forj=1:

1:

4

h(j)=exp(-norm(x-c(:

j))^2/(2*b(j)*b(j)));

end

ym(k)=w'*h';

em(k)=y(k)-ym(k);

forj=1:

1:

4

d_w(j)=xite*em(k)*h(j);

d_b(j)=xite*em(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:

j))^2;

fori=1:

1:

2

d_c(i,j)=xite*em(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2);

end

end

w=w_1+d_w+alfa*(w_1-w_2);

b=b_1+d_b+alfa*(b_1-b_2);

c=c_1+d_c+alfa*(c_1-c_2);

%%%%%%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%%%%%

yu=0;

forj=1:

1:

4

yu=yu+w(j)*h(j)*(c(1,j)-x

(1))/b(j)^2;

end

dyu(k)=yu;

u_1=u(k);

y_1=y(k);

w_2=w_1;w_1=w;

c_2=c_1;c_1=c;

b_2=b_1;b_1=b;

end

人工神经网络

课程编码:

2030B010

课程名称(英文):

ArtificialNeuralNe

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

当前位置:首页 > 医药卫生 > 基础医学

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

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