您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第9章-Elmen网络
第九章Elman网络与学习算法北京科技大学信息工程学院付冬梅fdm2003@163.com62334967概述Elman神经网络结构Elman神经网络学习算法Elman网络的MATLAB实现本章内容概述Elman神经网络由JeffreyL.Elman于1990年提出是一种反馈神经网络具有很强的计算能力Hello,I’mJeffreyL.Elman9.1Elman神经网络结构输入输入单元上下文单元输出隐层单元输出单元Elman网络由4层组成输入层信号传输作用隐含层承接层也称上下文单元或状态层,承接层从隐含层接收反馈信号,用来记忆隐含层神经元前一时刻的的输出值,承接层神经元的输出经延迟与存储,再输入到隐含层。这样就使其对历史数据具有敏感性,增加了网络自身处理动态信息的能力。输出层仅起线性加权作用。9.2Elman神经网络学习算法Elman神经网络各层输入输出公式如果输入向量为维向量,输出向量为维,隐含层输出向量为维,承接层输出向量为维,分别为隐含层到输出层、输入层到隐含层、承接层到隐含层的连接权值。为输出神经元的激活函数,是隐含层输出的线性组合。为隐含层神经元的激活函数,为承接层的激活函数,表示某层的净输入,用A表示输入层,用B表示承接层,表示迭代次序则各层之间的表达式如下图所示。urymxncx123,,()f()n()h()nettElman神经网络结构及其各层输入输出公式g()为输出神经元的转换函数;f()是中间层的转换函数,常为S型函数,也可以是高斯型函数。当f()为S函数时采用BP算法训练权值;当是高斯型函数时采用RBF网络方法训练权值。1111()()()mnnettwtxt11()(())mytgnett23()()()()incitutxtwtww1()()()ininettwtt11()(())nnxtfnett11()()()ininettwtt()(())cnxthnett3()wt1(1)wt2()wtOutputyr12Inputun1n1m1承接层用白色表示输出层用紫色表示隐含层用兰色表示21()()()TkkkEwywyw学习指标函数为:()kyw()kyw为计算输出为理想输出Elman神经网络学习算法采用BP算法判断算法是否结束的误差函数为:其中为期望输出Elman神经网络学习算法流程图21[()()]nkEykdk()dk9.2Elman神经网络学习算法Elman神经网络学习算法流程图计算输出层输出初始化各层权值输入样本值计算输入层输出计算误差函数更新权值计算承接层输出计算隐含层输出9.2Elman神经网络学习算法Elman神经网络的重要函数和基本功能函数名功能newelm()生成一个Elman神经网络trains()根据已设定的权值和阈值对网络进行顺序训练traingdx()自适应学习速率动量梯度下降反向传播训练函数learngdm()动量梯度下降权值和阈值学习函数9.3Elman网络的MATLAB实现空调系统逐时负荷的准确预测是实现住宅和电网现代控制前提之一。空调负荷于多种因素成非线性关系,并且是一种动态关系。不宜采用BP、RBF等静态映射网络。这里尝试采用Elmen网络Elman网络仿真实例9.3Elman网络的MATLAB实现9.3Elman网络的MATLAB实现N个输入M个输出X1X2…XNXN+1XN+2…XN+MX2X3…XN+1XN+2XN+3…XN+M+1…………XKXK+!…XN+K+!XN+KXN+K+!…XN+M+K+1如果希望用过去的N(N1)个时刻的值,即进行M步预测,可取N个相邻的样本为滑动窗,并将它们映射为M个预测值。于是网络具有N个输入,M个输出,中间层一般可以取在N+M左右。Elman网络仿真实例例1下表为某单位办公室七天上午9点到12点的空调负荷数据,数据已经做了归一化处理,预测方法采用前6天的数据作为网络的训练样本,每3天的负荷作为输入向量,第4天的负荷作为目标向量,第七天的数据作为网络的测试数据。9.2Elman网络的MATLAB实现时间空调负荷数据(归一化后)2009-7-10.44130.47070.69530.81332009-7-20.43790.46770.69810.80222009-7-30.45170.47250.70050.82012009-7-40.45570.47900.70190.82112009-7-50.46010.48110.71010.82982009-7-60.46120.48450.71880.83122009-7-70.46150.48910.72010.8330例1程序9.2Elman网络的MATLAB实现%Elmen网络的演示实例1%-----------------%产生正弦信号t=1:20;p1=sin(1:20);p2=sin(1:20)*2;t1=ones(1,20);t2=ones(1,20)*2;figure(1);plot(t,p1,'r',t,p2,'b--');pause;%产生训练样本p和tp=[p1p2p1p2p1p2];tt=[t1t2t1t2t1t2];Pseq=con2seq(p);Tseq=con2seq(tt);R=1;%输入元素的个数为1S2=1;%输出元素的个数为1S1=10;%隐层元素的个数为10net=newelm([-2,2],[S1,S2],{'tansig','purelin'});%设定网络训练次数net.trainParam.epochs=500;net=train(net,Pseq,Tseq);y=sim(net,Pseq);t5=1:120;figure(2);plot(t5,cat(2,y{:}),'r-',t5,cat(2,Tseq{:}),'b--');%利用新的信号来测试网络p3=sin(1:20)*1.9;t3=ones(1,20)*2;p4=sin(1:20)*0.8;t4=ones(1,20)*1;%产生测试样本pg和tgpg=[p3p4p3p4p3p4];tg=[t3t4t3t4t3t4];pgseq=con2seq(pg);a=sim(net,pgseq);figure(3);plot(t5,cat(2,a{:}),'r-',t5,tg,'b--');例1误差曲线9.2Elman网络的MATLAB实现小结注意Elman神经网络的结构和模型形式;Elman神经网络学习算法有两种,取决于神经元中的非线性作用函数;Elman神经网络是一种动态神经网络,更适合于动态数据的建模;目前Elman网络的学习算法还较慢,使其的实时使用受到较大限制。谢谢!
本文标题:第9章-Elmen网络
链接地址:https://www.777doc.com/doc-4579857 .html