目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码
简单循环网络(simple recurrent networks,简称SRN)又称为Elman network,是由Jeff Elman在1990年提出来的。Elman在Jordan network(1986)的基础上进行了创新,并且简化了它的结构,最终提出了Elman network。
Elman network就是指现在一般说的RNN(包括LSTM、GRU等等)。一个recurrent层的输出经过时延后作为下一时刻这一层的输入的一部分,然后recurrent层的输出同时送到网络后续的层,比如最终的输入层。一个Jordan network说的是直接把整个网络最终的输出(i.e. 输出层的输出)经过时延后反馈回网络的输入层,所以Jordan network的整个网络的所有层都是recurrent的。
Elman network和Jordan network通常被统称为Simple recurrent network。可能是因为Elman network里相对独立的recurrent使用起来比较灵活(比如可以用作单独的层做不同类型层的堆叠等组合;同时Jordan network在网络输出层很大的时候可能需要降维来方便输入层接受前一时间的输出),所以Elman network现在基本上是主流,以至于大家都直接叫它RNN而非它本来的名字。
主函数部分代码:
y(1)=0.1; % Initial conditions
y(2)=0.1;
index=1;% Variable for plotting test data
sw=2; % Variable to switch between random and nearly best initial
% conditions for weights (sw=1 for random, sw=2 for nearly best)
nnu = 1; % Input layer
nnx = 6; % Hidden layer
nny = 1; % Output layer
training_set_size=900; % Training data(First 900 elements of
% Billings System)
test_set_size =training_set_size+40; % Test data
iteration=1;
momentum=0.65;
if sw==1
n=0.029; % Learning rate
weights_u = randn(nnx,nnu); % Initial conditions for weights
weights_x = randn(nnx,nnx);
weights_y = randn(nny,nnx);
end
[1]林春燕,朱东华.基于Elman神经网络的股票价格预测研究[J].计算机应用,2006(02):476-477+484.