目录
前言
文献阅读-NGCU:用于时间序列数据预测的新RNN模型
背景
主要贡献
思路
模型:NGCU
实验
元胞自动机
元胞自动机(CA)
原理
特点
代码实战
奇偶规则
森林火灾
总结
This week I read an article that proposed a new gating unit through the study of RNN, LSTM, GRU and time series forecasting.NGCU's proposal is primarily used for time series data forecasting.Compared with traditional RNNs, NGCUs greatly alleviate the problem of gradient loss and explosion caused by long-term data dependence.In addition, in terms of machine learning, the relevant content of cellular automata was learned.
本周学习了一篇文章,该文通过对RNN、LSTM、GRU和时间序列预测的研究,提出了一种新的门控单元。NGCU的提议主要用于时间序列数据预测。与传统RNN相比,NGCU大大缓解了长期数据依赖导致的梯度消失和爆炸问题。除此之外,在机器学习方面,学习了元胞自动机的相关内容。
--Jingyang Wang, Xiaolei Li, Jiazheng Li, Qiuhong Sun, Haiyao Wang,
NGCU: A New RNN Model for Time-Series Data Prediction,
Big Data Research,
Volume 27,
2022,
100296,
ISSN 2214-5796,
https://doi.org/10.1016/j.bdr.2021.100296.
时间序列分析的主要目的是根据现有历史数据预测未来值。RNN是时间序列分析中最重要的神经网络之一。与普通神经网络相比,RNN是相互独立的。RNN每个隐藏层的计算结果与当前输入和先前隐藏层结果相关。RNN具有记忆先前结果的特征。然而,由于数据对RNN的长期依赖,模型训练中出现了梯度消失和爆炸的问题。
LSTM可以很好地缓解RNN训练过程中梯度消失和爆炸的问题。LSTM采用门控技术,通过遗忘门、输入门、输出门确定历史数据和输入数据的删除和保存。LSTM的一个重要变体是由Cho构建的GRU,它将遗忘门和输入门组合成一个更新门。与LSTM相比,GRU参数数量减少,模型结构更简单。
LSTM有很多参数,LSTM的计算太复杂了。因此,LSTM的训练时间很长。与LSTM相比,GRU由于参数数量的减少而减少了训练时间。
1)通过对RNN、LSTM、GRU和时间序列数据的分析,提出了一种基于RNN的新门控制单元(NGCU)。NGCU的提议主要应用于时间序列数据的预测。
(2)通过引入门技术,增加抗过饱和转换模块,NGCU对数据特征学习更加敏感,能够有效缓解RNN长期依赖导致的梯度消失和爆炸问题。验证了NGCU的计算复杂度降低,因为NGCU的参数数小于LSTM和GRU的参数数。
(3)通过对比实验,大大减少了模型的训练时间。实验表明,基于NGCU的时间序列预测模型的评价结果优于其他3种模型。
本文提出的NGCU旨在确保该模型能够缓解RNN的梯度消失和爆炸问题,以提高预测精度并减少模型训练时间。NGCU在学习灵敏度、时间序列预测精度和训练时间方面取得了一些创新进展。在模型学习灵敏度方面,与RNN、LSTM和GRU相比,NGCU首次引入了抗饱和转换模块,大大提高了模型对数据学习的敏感度。在时间序列预测精度方面,与RNN、LSTM和GRU相比,NGCU的遗忘门增加了对历史数据的学习,因此可以更准确地掌握数据的整体趋势,模型对数据的预测精度也相应提高。在训练时间方面,与LSTM和GRU相比,NGCU结构更简洁,参数更少,因此训练时间更少。为了验证NGCU的准确性、效率和可行性,本文采用RNN、LSTM和GRU进行对比实验,利用空气质量、恒生指数和黄金期货价格三种不同的数据来证明NGCU的泛化性。预测结果由MAE,MSE,EVS,R评估2和模型训练时间。
为了提高NGCU学习的灵敏度,引入了抗过饱和转换模块Tri。NGCU介绍整个数据流信息直到输入门计算过程中的前一时刻。
如公式(12)所示,遗忘门ft主要确定从上一时刻可以保留多少数据到当前时刻,其中xt是第 t 个时间步长的输入向量,并且xt与权重矩阵 W 相乘以执行线性变换。ℎt−1存储上一个时间步长的数据t−1和ℎt−1通过与权重矩阵 W 相乘来执行线性变换。将两部分数据信息相加,然后通过Sigmoid激活函数计算,因此数值结果ft获得的值介于 0 和 1 之间。
如公式(13)所示,输入门it主要确定当前时间可以保留多少数据。与忘记门相比,输入门it的NGCU介绍整个数据流信息直到前一个时间,所以输入门对当前时间数据的保留有记忆影响。NGCU 中的输入门使用 Sigmoid 激活函数。sigmoid 激活函数如图 5 所示。当x小于-3或大于3时,sigmoid激活函数的值将落入过饱和区。因此,当输入数据进入输入门的过饱和区时,该值不会发生显着变化,从而导致学习灵敏度下降。
抗过饱和转换模块Tri的计算公式如图(14)所示,tanh函数如图5所示。sigmoid 激活函数在 (0, 1) 范围内。当数据通过输入门时,转换模块生成的值Tri,因此该值更为显著。 如式(15)所示,ct是从开始到当前时刻保留的数据信息。ct控制 tanh 函数可以将当前时刻的数据信息保留到下一时刻。
如式(16)所示,ℎt是当前时刻保留的数据信息。
NGCU的结构如图所示。NGCU由遗忘门和输入门组成。与LSTM相比,NGCU消除了输出门。与GRU相比,模型结构更简单。LSTM、GRU和NGCU的参数如表1所示。与LSTM相比,W参数的数量从8个减少到4个,b参数的数量从4个减少到2个。与GRU相比,W参数的数量从6个减少到4个,b参数的数量从3个减少到2个。
NGCU结构
为了保证NGCU预测的泛化,本实验选择了3个不同的数据集。三个数据集在数据总量、输入项数量、数据特征值大小和数据稳定性方面存在差异。与其他两个数据集相比,空气质量数据集具有更大的数据量和数据稳定性。与空气质素数据集相比,恒生指数数据集的数据量和输入项数据较少。与其他两组数据集相比,黄金期货价格数据集的数据量最小,数据的稳定性最差。
获取数据后,经常会出现缺失数据、重复数据、非数字数据等问题。为了提高数据的可用性和稳定性,需要进一步处理原始数据。在该实验中,缺失的数据用先前和后续数据的平均值填充。
在本文中,选择了三个不同的数据集。对于数据量大且相对稳定的空气质量数据集,与RNN、LSTM和GRU的预测结果相比,NGCU在MAE、MSE、EVS和R方面的预测结果最好。对于数据量小、数据稳定性低的恒生指数数据集,与RNN、LSTM和GRU的预测结果相比,NGCU在MAE、MSE、EVS、R方面的预测结果最好。对于数据量最小、数据稳定性差的黄金未来数据集,与RNN、LSTM和GRU的预测结果相比,NGCU在MAE、MSE、EVS和R方面的预测结果最好。显然,NGCU的遗忘门、输入门和抗饱和转换模块在筛选和学习历史数据和当前时间方面发挥着作用,模型的预测精度也得到了提高。
空气质量预测值和真实值的四种模型的比较。
恒生指数预测值和真实值的四个模型的比较
黄金期货价格预测值和真实值四种模型的比较
不同于一般的动力学模型,元胞自动机不是由严格定义的物理方程或函数确定,而是用一系列模型构造的规则构成。凡是满足这些规则的模型都可以算作是元胞自动机模型。因此,元胞自动机是一类模型的总称,或者说是一个方法框架。
采用离散的空间布局和离散的时间间隔,将元胞分成有限种状态,元胞个体状态的演变仅与其当前状态以及其某个局部邻域的状态有关。
%%奇偶规则
clear;clc;
%指定边界长度
n = 200;
Se = zeros(n);
z = zeros(n);
%将中间5*5=25个点初始化为1
Se(n/2-2:n/2+2,n/2-2:n/2+2)=1;
Ch = imagesc(Se);
axis square;
%设置边界情况
Sd = zeros(n+2);
while(true) %死循环
Sd(2:n+1,2:n+1) = Se;
%4邻居型计算通用式 进行邻居数值求和
sumValue = Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2);
Se = mod(sumValue,2);
set(Ch,'cdata',Se);
pause(0.03)
end
clear;clc;
%火灾
% 定义表示森林的矩阵大小
n = 300;
% 迭代次数
k = 30000;
Pground = 0.8; % 从着火变成空地的概率
Plight = 5e-6; Pgrowth = 1e-3; % 定义闪电和生长的概率
P2=0.7; %旁边有火,树着火的概率
UL = [n,1:n-1]; DR = [2:n,1]; % 定义上左,下右邻居
veg=zeros(n,n)+2; % 初始化表示森林的矩阵
imh = image(cat(3,veg,veg,veg)); % 可视化表示森林的矩阵
Sd = zeros(n+2); %边界
% veg = 空地为0 着火为1 树木为2
for i=1:k
Sd(2:n+1,2:n+1) = veg;
%8邻居通用表达式 判断邻居是否着火
sumValue = (Sd(1:n,2:n+1)==1)+(Sd(2:n+1,1:n)==1)+(Sd(2:n+1,3:n+2)==1)+(Sd(3:n+2,2:n+1)==1);
%进行演化迭代
for p=1:n
for q=1:n
if(veg(p,q)==2 && ((sumValue(p,q)>0 && rand()
下周我们将继续学习机器学习的相关内容。除此之外,将深层次的研究时序问题。