神经网络实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称BP神经网络实验

实验名称一级倒立摆实验

实验仪器matlab、一级倒立摆实验台

系别自动化

专业

班级/学号

学生姓名

实验日期2014年4月8日

成绩

指导老师

一级倒立摆实验

实验目的:(1)熟悉Matlab/Simulink的使用.

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

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

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

实验原理:

1.前馈型人工神经网络

前馈型人工神经网络是整个神经网络体系中最常见的一种,其结构模型如图2所示。网络结构包含输入层、隐层(可能是多层)和输出层,它的连接方式是同层之间不相连接,相邻层之间单元为全连接型。这种网络没有反馈存在,实际运行是单向的,学习方式是一种监督式学习。

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

输入层隐层输出层

图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,[ ],[ ]);

系统提示如下:

图4 训练误差曲线

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

神经网络的结构

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

图5神经网络控制器外部结构

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

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

相关文档
最新文档