神经网络实验指导书版1Word文档格式.docx
《神经网络实验指导书版1Word文档格式.docx》由会员分享,可在线阅读,更多相关《神经网络实验指导书版1Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
第三,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,查看语法调用;
net=newff([0.350.35;
-33],[12,1],{'
'
});
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神经网络能成功的实现倒立摆的控制.
SOM神经网络>
(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
实验步骤
(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;
网络训练:
(4)训练后的运行:
a=sim(net,P)
由a的值可以得到SOM的哪个输出节点对输入有所响应,即归为哪一类
(4)画出输出示意图。
(提示输出a来确定获胜节点的坐标,从而进行画图)
DHNN神经网络>
(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神经网络
(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神经网络控制器的训练
输入(或输出)个数的矩阵,因此分别将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:
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);
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:
2
d_c(i,j)=xite*em(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2);
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;
yu=yu+w(j)*h(j)*(c(1,j)-x
(1))/b(j)^2;
dyu(k)=yu;
u_1=u(k);
y_1=y(k);
人工神经网络
课程编码:
2030B010
课程名称(英文):
ArtificialNeuralNe