当前位置:文档之家› 神经网络实验指导书2013版[1]

神经网络实验指导书2013版[1]

神经网络实验指导书2013版[1]北京信息科技大学自编实验讲义神经网络实验指导书许晓飞陈雯柏编著找其映射是靠学习实践的,只要学习数据足够完备,就能够描述任意未知的复杂系统。

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

输入层隐层输出层图1 前馈型神经网络结构2.BP算法原理BP(Back Propagation)神经网络是一种利用误差反向传播训练算法的前馈型网络,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所示,利用【Signal To Workspace】模块获取一阶T-S型模糊控制仿真过程的控制器输入输出数据对,并保存到工作区中,可以直接用到神经网络的训练中。

摆杆角度摆杆角速度小车位移小车速度图3 数据提取(3) BP神经网络控制器的训练首先将提取出的训练数据变为标准的训练数据形式,标准的训练数据分为输入和目标输出两部分。

输入部分是一个形式为输入个数⨯训练数据个数的矩阵,这里输入个数为4。

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

而经signal to workspace模块提取出的数据为一个训练数据个数⨯输入(或输出)个数的矩阵,因此分别将p、t转置后就得到标准训练数据p’,t’。

接着选择要训练的步数,训练步数的选择可由下面语句定义:net.trainParam.epochs=250这一语句定义了一个500步的训练步数。

做完上面的工作后就可以对网络进行训练了,按照上一节中的选择和定义初始化网络后,在没有输入延迟和输出延迟的条件下,并设训练后的网络还为NET,便可用下面语句对网络训练:[net,tr]=train(net,P,T,[ ],[ ])使用下面语句初始化BP神经网络控制器并进行训练:P=p';T=t';net=newff([-0.35 0.35;-1 1;-3 3;-3 3],[12 1],{'tansig','purelin'},'trainlm','learngdm');net.trainParam.show=25;net.trainParam.epochs=250;[net,tr]=train(net,P,T,[ ],[ ]);系统提示如下:TRAINLM, Epoch 0/250, MSE 10.1011/0, Gradient 2554.35/1e-010TRAINLM, Epoch 50/250, MSE 4.78751e-008/0, Gradient 0.00983832/1e-010TRAINLM, Epoch 75/250, MSE 4.1262e-008/0, Gradient 0.00475103/1e-010TRAINLM, Epoch 100/250, MSE 3.76953e-008/0, Gradient 0.00278629/1e-010TRAINLM, Epoch 125/250, MSE 3.52016e-008/0, Gradient 0.00194476/1e-010TRAINLM, Epoch 150/250, MSE 3.32444e-008/0, Gradient 0.00150103/1e-010TRAINLM, Epoch 175/250, MSE 3.16423e-008/0, Gradient 0.00121143/1e-010TRAINLM, Epoch 200/250, MSE 3.02987e-008/0, Gradient 0.000996205/1e-010TRAINLM, Epoch 225/250, MSE2.91493e-008/0, Gradient 0.000826085/1e-010TRAINLM, Epoch 250/250, MSE 2.81489e-008/0, Gradient 0.000687935/1e-010TRAINLM, Maximum epoch reached, performance goal was not met.图4 训练误差曲线可以看出,经过250步训练控制器输出与期望输出间的误差已经很小了。

提示:如训练程序有错,请在help文档搜索BP神经网络函数newff,查看语法调用;P=p';T=t';net=newff([0.35 0.35;-1 1;-3 3;-3 3],[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)输出层结构图5 BP神经网络结构(4) 神经网络控制的实现使用训练后的BP神经网络控制器代替原模糊控制器控制器便可进行仿真试验。

控制结构如图6所示。

图6 直线一级倒立摆神经网络控制仿真单击模型窗口上的’run’,运行以上的仿真实验,可以看出训练后的BP神经网络能成功的实现倒立摆的控制.<<SOM神经网络>>实验指导实验目的:(1)熟悉Matlab/Simulink的使用. (2)掌握SOM神经网络的基本原理和基本的设计步骤.(3) 熟悉SOM神经网络在实际中的应用.实验原理:通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。

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

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([0 1;0 1],[10]);net.trainParam.epochs = 10;net = train(net,P);plotsom(net.iw{1,1},yers{1}.distances)p = [1;0];a = sim(net,p)实验内容:人口分类是人口统计中的一个重要指标,现有1999共10个地区的人口出生比例情况如下表所示,建立一个自组织神经网络对上述数据分类,给定某个地区的男、女出生比例分别为0.5,0.5,测试训练后的自组织神经网络的性能,判断其属于哪个类别。

实验步骤:(1)确定输入模式;(2)确定网络的结构,设计参数;(3)编辑相应的M文件实现SOM对数据进行聚类,运行M文件,在命令窗口察看结果。

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

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

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

实验步骤(1)准备输入模式;(2)设计SOM网络:SOM网的输出平面上有10 10个神经元(3)SOM网络的训练:用16个动物模式轮番输入进行训练,考察输出平面上所示情况。

注意事项(1)输入:P为29×16的矩阵,其中29维输入向量,16为动物的个数---归一化(2)输出:10×10(3)网络的设计:建立新的网络:net = newsom(AA,[10 10],'gridtop');'hextop'网络训练参数设定:net.trainParam.epochs = 1000;网络训练:net = train(net,P);(4)训练后的运行:a = sim(net,P)由a的值可以得到SOM的哪个输出节点对输入有所响应,即归为哪一类(4)画出输出示意图。

相关主题