(完整word版)动力学建模之神经网络
- 格式:doc
- 大小:274.80 KB
- 文档页数:10
动力学系统建模课程报告神经网络综述1 神经网络介绍 1.1 神经网络概述人工神经网络简称为神经网络或称作连接模型,它是一种模范动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
人工神经网络可以看成以人工神经为节点,用有向加权弧连接起来的有向图,有向弧的权值表示两个人工神经元相互作用的强弱。
人工神经网络模拟人类大脑神经元结构及处理问题的方式,成为为人工智能控制上的一大创新。
人工神经网络主要优点是能够自适应样本数据,不会被噪音等影响;能够处理来自多个资源和决策系统的数据;能够提供简单工具进行特征选取,产生有用的数据表示;可作为专家系统的前端;有十分快的优化功能。
神经网络可以处理非线性适应性信息,克服了传统人工智能方法对于直觉的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域取得成功应用。
1.2人工神经网络基本要素人工神经元四个基本要素:(1) 连接权,用于表示各个神经元的连接强度,正值表示加强,负值表示削弱,对应生物神经元的突触。
(2) 求和单元,求取对应节点输入信号的加权和,对输入信号求加权和即求解神经节点的输入信号。
数学表达式:j pj kj k x w u ∑==1。
(3) 激活函数,相当于细胞体的功能,对输入的信号进行非线性映射,使输出幅值限制在一定范围内。
输出表达式:)(k k net g y =。
激活函数有阶跃函数、分段线性函数、sigmoid 函数及双曲正切对称S 型函数。
(4) 阀值,其作用可用数学表达式来表示:k k k u net θ-=。
1.3人工神经网络的工作方式其工作过程主要分为两个阶段:(1) 学习期,此时每一个计算单元的状态不变,样本数据进行输入,得到实际输出,与期望输出进行对比得出输出误差,根据输出误差修改权值,直至系统参数满足输出误差要求,这样就建立了适合样本的神经网络模型。
(2) 工作期,此时各连接权是固定的,输入数据便可得到模型结果,即运用神经网络模型进行实际应用过程。
1.4人工神经网络的学习方式通过向环境学习来获取系统参数并改进自身性能是神经网络的一个重要特点。
一般情况下,性能的改善是按照预定的期望来修改自身的参数。
学习的方式有以下三种:(1) 有监督学习阶段:以输入输出为训练样本集,学习系统将实际输出与期望输出进行比较,根据一定的学习算法修正权系数及阀值,从而使系统实际输出越来越达到期望输出。
(2) 无监督学习阶段:只提供输入,不提供输出,根据输入调整权系数及阀值,主要用于某些聚类操作。
(3) 强化学习:外部环境对系统输出只给出评价(相当于完成任务时的奖励),没有具体的期望输出,学习系统通过强化那些受奖励的来修改自身参数。
下面分别介绍前馈神经网络及反馈神经网络算法。
2 前馈神经网络算法原理2.1 前馈神经网络及BP神经网络介绍前馈神经网络中的各个神经元只接收上一级的输入,并输出到下一级,网络中没有反馈。
节点分为两类,即输入单元及计算单元,每一个计算单元可以有任意个输入,但只有一个输出。
前馈神经网络除了输入层及输出层之外,中间的层称为隐层。
前馈神经网络为一种非线性映射,通过简单的非线性处理就可以映射非常复杂的非线性关系,可用来处理难以建模的非线性系统。
前馈神经网络为一种非常强大的计算系统,但不具有丰富的动力学行为。
BP神经网络是一种利用误差反向传播训练算法含隐层的前馈神经网络。
对于输入层,输入模式送到输入层节点上,这一层节点的输出即等于其输入。
除了输入层的节点外,隐含层和输出层节点的净输入是前一层节点输出的加权和。
每个节点的激活程度由它的输入信号、激活函数和节点的偏值(或阈值)来决定。
2.2 BP神经网络的算法原理2.2.1 BP神经网络算法介绍BP学习算法的基本原理是梯度最速下降法,它的中心思想是调整权值使网络总误差最小。
也就是采用梯度搜索技术,以期使网络的实际输出值与期望输出值的误差均方值为最小。
网络学习过程是一种误差边向后传播边修正权系数的过程。
将上一层节点的输出传送到下一层时,通过调整连接权系数来达到增强或削弱这些输出的作用。
多层网络运用BP 学习算法时,实际上包含了正向和反向传播两个阶段。
在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层,每一层神经元的状态只影响下一层神经元的状态。
如果在输出层不能得到期望输出,则转入反向传播,将误差信号沿原来的连接通道返回,通过修改各层神经元的权值,使误差信号最小。
2.2.2 正向传播阶段学习训练阶段,有N 个样本,如果已知输入样{}p x 及预期输出{}p T ,隐含层第i 个节点在样本p 作用下的输入可以表示为:i Mj p j ij p ix w net θ-=∑=1,q i ,,2,1Λ=(2-1)其中p j x 为第p 个样本中第j 个输入,i θ为隐层第i 个节点的阀值,ij w 为输入层第j 个节点与隐层第i 个节点之间的连接权值,M 为输入层的节点数。
隐含层第i 个节点的输出为:)(p i p i net g o =,q i ,,2,1Λ=(2-2)g(.)为激活函数,sigmoid 激活函数形式为])/)(ex p[1/(1)(01θθ+-+=x x g ,其中1θ表示偏值,0θ为调节形状参数。
其导数可以表示为:)1()](1)[()(p i p i p i p i p i o o net g net g net g -=-='(2-3)隐含层第i 个节点输出p i o 通过权系数向前传播到输出层第k 个节点,并作为它的输入之一,输出层的第k 个节点的输入为:k qi p i ki pko w net θ-=∑=1,L k ,,2,1Λ=(2-4)k θ为输出层第k 个节点的阀值,ki w 为输出层第k 个节点与隐层第i 个节点之间的连接权值,L 为输出层的节点数,q 为隐层的节点数。
输出层第k 个节点的输出为:)(p k p k net g o =,L k ,,2,1Λ=(2-5)激活函数的导数:)1()](1)[()(p k p k p k p k p k o o net g net g net g -=-=',L k ,,2,1Λ=(2-6)对每一个样本p 的输入模式,其误差为:21)(21p k L k pk p o t J -=∑=(2-7)p k t 为第p 个样本第k 个输出层节点输出期望值。
对N 个训练样本的总误差为:∑∑∑===-==N p p k L k pk Np p o t J J 1211)(21(2-8)N 为模式样本数,L 为网络输出节点数。
若其输出与给定的期望值不一致,则将误差信号从输出端反向传播回来,并在传播过程中对权系数进行修正,直到输出层输出值为期望输出,完成样本训练过程。
2.2.3 反向修改权系数(1) 输出层权系数调整 首先定义:)1()(p k p k p k p k p k o o o t --=δ(2-9)隐层第i 个节点与输出层第k 个节点权值总调整量:p i Np p k ki o w ∑==∆1ηδ(2-10)调整后的隐层第i 个节点与输出层第k 个节点的权值:ki ki ki w k w k w ∆+=+)()1((2-11)(2) 隐层权系数的调整: 首先定义:ki Lk p k p ip ipi w o o ∑=-=1)1(δδ(2-12)隐层第i 个节点与输入层第j 个节点权值总调整量:p j Np p i ij x w ∑==∆1ηδ(2-13)调整后的隐层第i 个节点与输入层第j 个节点权值:ij ij ij w k w k w ∆+=+)()1((2-14)采用修正后的权系数,带入输入样本继续训练,计算结果与期望输出进行比较。
如果达不到要求,继续返回修改权系数,这样一直循环下去,直到得出的输出达到期望的输出。
2.3 运用BP 神经网络解决黑箱问题 2.3.1问题描述已知一个控制系统,如图1所示。
该系统为两输入两输出系统,输入输出已知,系统参数未知,通过神经网络方法构造神经网络模型来模拟该控制系统。
图1 黑想问题模型该模型输入为⎥⎦⎤⎢⎣⎡=1231X ,期望输出为⎥⎦⎤⎢⎣⎡=9.01.09.01.0T ,试构造图2所示的神经网络模型模拟该黑箱系统。
图2 神经网络模型2.3.2 MTLAB 求解神经网络利用MATLAB 中的矩阵运算功能可以方便地求解神经网络问题,相对C 语言来说,省去矩阵运算程序的编写,程序结构简单。
黑箱模型的神经网络计算程序如下所示:Ir=1;err_goal=1e-4;%Ir 为学习速率; err_goal 为期望误差最小值max_epoch=10000;%max_epoch 为训练的最大次数;a 为惯性系数Oi=0;Ok=0;%置隐含层和输出层各神经元输出初值为零X=[1 3;2 3];T=[0.1 0.9;0.1 0.9]%输入样本输入及期望值[M,N]=size(X);q=3;[L,N]=size(T);%求隐层输入层及输出层个数wij=rand(q,M); wki=rand(L,q);% 初始化wki、wijfor epoch=1:max_epoch% 计算隐含层各神经元输出NETi=wij*X;for j=1:Nfor i=1:qOi(i,j)=1/(1+exp(-NETi(i,j)));endend%计算输出层各神经元输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=1/(1+exp(-NETk(k,i)));endend%计算误差函数E=((T-Ok)'*(T-Ok))/2;if (E<err_goal) break;end %调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok);wki=wki+Ir*deltak*Oi';% 调整隐含层加权系数deltai=Oi.*(1- Oi).*(deltak'*wki)'; wij=wij+Ir*deltai*X';endepoch %显示计算次数% BP 网络的第二阶段工作期X1=X;%计算隐含层各神经元输出NETi=wij*X1;for j=1:Nfor i=1:qOi(i,j)=1/(1+exp(-NETi(i,j))) ; endend%计算输出层各神经元输出NETk=wki*Oi;for i=1:Nfor k=1:LOk(k,i)=1/(1+exp(-NETk(k,i))); endendOk当学习速率取1时,结果如下:epoch =626Ok =0.1104 0.89370.1095 0.8943可见,运用神经网络模型可以很好逼近系统模型。