第九章 Elman网络与学习算法 北京科技大学 信息工程学院 付冬梅 fdm2003@163.com 62334967
本章内容 概述 Elman神经网络结构 Elman神经网络学习算法 Elman网络的MATLAB实现
概述 Elman神经网络由Jeffrey L. Elman 于1990年提出 是一种反馈神经网络 具有很强的计算能力 Hello ,I’m Jeffrey L. Elman
9.1 Elman神经网络结构 Elman网络由4层组成 输入层 信号传输作用 隐含层 输入层 信号传输作用 隐含层 承接层 也称上下文单元或状态层,承接层从隐含层接收反馈信号,用来记忆隐含层神经元前一时刻的的输出值,承接层神经元的输出经延迟与存储,再输入到隐含层。这样就使其对历史数据具有敏感性,增加了网络自身处理动态信息的能力。 输出层 仅起线性加权作用。
9.2 Elman神经网络学习算法 Elman神经网络各层输入输出公式 如果输入向量 为 维向量,输出向量 为 如果输入向量 为 维向量,输出向量 为 维,隐含层输出向量 为 维,承接层输出向量 为 维, 分别为隐含层到输出层、输入层到隐含层、承接层到隐含层的连接权值。 为输出神经元的激活函数,是隐含层输出的线性组合。 为隐含层神经元的激活函数, 为承接层的激活函数, 表示某层的净输入,用A表示输入层,用B表示承接层, 表示迭代次序则各层之间的表达式如下图所示。
Elman神经网络结构及其各层输入输出公式 Output y r 1 2 Input u n m 承接层用白色表示 输出层用紫色表示 隐含层用兰色表示 g()为输出神经元的转换函 数;f()是中间层的转换函 数,常为S型函数,也可以是高斯型函数。当f()为S函数时采用BP算法训练权值;当是高斯型函数时采用RBF网络方法训练权值。 学习指标函数为: 为计算输出 为理想输出
9.2 Elman神经网络学习算法 Elman神经网络学习算法采用BP算法 Elman神经网络学习算法流程图 判断算法是否结束的误差函数为: 其中 为期望输出 Elman神经网络学习算法流程图
9.2 Elman神经网络学习算法 Elman神经网络学习算法流程图 初始化各层权值 输入样本值 计算输入层输出 计算承接层输出 计算隐含层输出 计算输出层输出 计算误差函数 更新权值
根据已设定的权值和阈值对网络进行顺序训练 自适应学习速率动量梯度下降反向传播训练函数 9.3 Elman网络的MATLAB实现 Elman神经网络的重要函数和基本功能 函 数 名 功 能 newelm() 生成一个Elman神经网络 trains() 根据已设定的权值和阈值对网络进行顺序训练 traingdx() 自适应学习速率动量梯度下降反向传播训练函数 learngdm() 动量梯度下降权值和阈值学习函数
9.3 Elman网络的MATLAB实现 Elman网络仿真实例 空调系统逐时负荷的准确预测是实现住宅和电网现代控制前提之一。空调负荷于多种因素成非线性关系,并且是一种动态关系。不宜采用BP、RBF等静态映射网络。这里尝试采用Elmen网络
9.3 Elman网络的MATLAB实现 Elman网络仿真实例 N个输入 M个输出 X1 X2 … XN XN+1 XN+2 … XN+M 网络具有N个输入,M个输出,中间层一般可以取在N+M左右。 N个输入 M个输出 X1 X2 … XN XN+1 XN+2 … XN+M X2 X3 … XN+1 XN+2 XN+3 … XN+M+1 … … XK XK+! … XN+K+! XN+K XN+K+! … XN+M+K+1
9.2 Elman网络的MATLAB实现 例1 下表为某单位办公室七天上午9点到12点的空调负荷数据,数据已经做了归一化处理,预测方法采用前6天的数据作为网络的训练样本,每3天的负荷作为输入向量,第4天的负荷作为目标向量,第七天的数据作为网络的测试数据。 时间 空调负荷数据(归一化后) 2009-7-1 0.4413 0.4707 0.6953 0.8133 2009-7-2 0.4379 0.4677 0.6981 0.8022 2009-7-3 0.4517 0.4725 0.7005 0.8201 2009-7-4 0.4557 0.4790 0.7019 0.8211 2009-7-5 0.4601 0.4811 0.7101 0.8298 2009-7-6 0.4612 0.4845 0.7188 0.8312 2009-7-7 0.4615 0.4891 0.7201 0.8330
9.2 Elman网络的MATLAB实现 例1 程序 %设定网络训练次数 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和tg pg=[p3 p4 p3 p4 p3 p4]; tg=[t3 t4 t3 t4 t3 t4]; pgseq=con2seq(pg); a=sim(net,pgseq); figure(3); plot(t5,cat(2,a{:}),'r-',t5,tg,'b--'); %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和t p=[p1 p2 p1 p2 p1 p2]; tt=[t1 t2 t1 t2 t1 t2]; Pseq=con2seq(p); Tseq=con2seq(tt); R=1; %输入元素的个数为1 S2=1; %输出元素的个数为1 S1=10; %隐层元素的个数为10 net=newelm([-2,2],[S1,S2],{'tansig','purelin'});
9.2 Elman网络的MATLAB实现 例1 误差曲线
小结 注意Elman神经网络的结构和模型形式; Elman神经网络学习算法有两种,取决于神经元中的非线性作用函数;
谢谢!