赞
踩
本次运行测试环境MATLAB2020b
- 总体而言,CNN用作特征(融合)提取,然后将输出的feature映射为序列向量输入到LSTM当中。
- 针对现有预测模型不能充分提取交通流时空特征的问题,提出一种基于卷积神经网络(convolutional neural network, CNN)和长短时记(long short-term memory,LSTM)神经网络的短时交通流预测方法。
- 首先,采用分层提取方法使设计的网络结构和一维卷积核函数自动提取序列的空间特征;其次,优化LSTM网络模块来减少网络对数据的长时间依赖;最后,在端对端模型的训练过程中,引入Adam优化算法,加快权重的拟合并提高网络输出的准确性和鲁棒性。
众多国内外研究人员主要集中在序列的特征提取、预测模型建立等关键技术领域开展研究,其中预测模型按预测方法可分为3类:基于参数的预测、基于浅层机器学习的预测、基于深度学习的预测。
- 基于参数的预测方法的典型代表是差分整合移动平均自回归模型(autoregressive integrated moving average model, ARIMA。ARIMA 最早于1970 年提出,其模型结构相对简单,在早期受到广泛重视。
- 基于浅层机器学习的预测方法主要包括支持向量回归(support vector regression, SVR)、K 近邻模型等。SVR 预测模型遇到高维数据时,处理速度相对较为缓慢且计算成本相对较高,输出存在延迟。
- 基于深度学习的预测方法主要包括长短时记忆神经网络(long short-term memory, LSTM)、门控循环单元神经网络(gated recurrent unit, GRU)和堆栈式 自编码器神经网络(stacked auto-encoders, SAEs)等。
- 深度学习模型已成为当前的研究热点,广泛应用于序列预测领域。但在实际应用中,基于深度学习的预测方法也存在一些问题。采用LSTM 模型预测短时序列,仿真结果表明:LSTM 网络本身无法捕获数据的空间特征,必须人工将空间信息编码作为网络的输入,从而影响了预测精度。另外,在训练预测模型的过程中,序列存在的时空特征会引发模型的自适应学习率方差较大的问题,进一步影响到预测模型的精度。因此,如何充分提取序列时空特征的问题是基于深度学习预测模型亟待解决的问题。
- 为了充分提取序列的时空特征,提供准确、及时的近期信息,本文提出了一种以卷积神经网络(convolutional neural network, CNN)和LSTM网络为结构基础的短时预测方法。通过使用多层CNN网络提取交通流量的空间特征,并运用多层LSTM 网络捕捉序列的时间依赖特征,并结合Adam优化算法机制进行模型的优化训练。主要工作如下:
1)为解决序列的空间特征提取问题,提出了CNN 网络分层提取方法使设计的网络结构和一维卷积核函数自动提取序列的空间特征,达到了对序列空间特征自动提取的目的;
2)为充分提取序列的时间依赖特征,提出了利用多层LSTM 网络模块来减少网络对数据的长时间依赖,达到提高预测精度的目的;
3)将Adam 优化算法应用于模型训练以提升预测模型的整体运行效率。
卷积层 输入数据序列,利用卷积操作生成特征矩阵。
利用卷积操作生成特征向量并输入到LSTM 网络。
LSTM 模型是时间循环神经网络中的一种,LSTM 是在传统的循环神经网络(recurrentneural network, RNN)基础上引入输入门、遗忘门、输入门,解决了RNN 网络存在的长期依赖问题。
本文将从CNN 网络中获得到的特征向量输入到LSTM 网络中,具体处理步骤如下:
- 通过sigmoid 函数计算遗忘信息;
- 在单元状态中存储的信息量,可以通过一个输入门决定更新的信息
- 通过将遗忘门与输入门进行结合,计算出新的单元状态。
- 在新的单元状态基础上计算出输出结果,将基于tanh 压缩过后的输出和基于sigmoid 门的输出相乘,最终得到预测序列。
本文提出利用Adam 优化算法增强CNN-LSTM 预测模型的鲁棒性及收敛性,在减少模型训练时间的同时,降低所提出模型的预测误差,最终得到不错的预测精度。CNN-LSTM 模型处理步骤如下:
- 首先将输入的历史交通流数据构造为包含交通流时空相关性特征矩阵。
- 将特征矩阵X 输入到多层CNN 中,提取出交通流数据的空间特征,得到序列特征向量。
- 将特征向量输入到多层LSTM 网络中提取时间依赖特征。
在完成模型网络结构的搭建之后,为防止数据过拟合及训练收敛时间较长,引入Dropout 层并选择Adam 优化算法应用于模型的训练过程。 提出模型的内部结构如下:
%% CNN-LSTM多变量回归预测 %% 加载数据与数据集划分 clc;clear;close all data = xlsread('data.xlsx', 'Sheet1', 'A3:M1250'); % 输入数据 input =data(:,1:12)'; output=data(:,13)'; nwhole =size(data,1); % 打乱数据集 % temp=randperm(nwhole); % 不打乱数据集 temp=1:nwhole; train_ratio=0.9; ntrain=round(nwhole*train_ratio); ntest =nwhole-ntrain; % 准备输入和输出训练数据 input_train =input(:,temp(1:ntrain)); output_train=output(:,temp(1:ntrain)); % 准备测试数据 input_test =input(:, temp(ntrain+1:ntrain+ntest)); output_test=output(:,temp(ntrain+1:ntrain+ntest));
% 批处理样本 MiniBatchSize =24; % 最大迭代次数 MaxEpochs = 60; % 学习率 learningrate = 0.005; % 一些参数调整 if gpuDeviceCount>0 mydevice = 'gpu'; else mydevice = 'cpu'; end options = trainingOptions( 'adam', ... 'MaxEpochs',100, ... 'GradientThreshold',1, ... 'InitialLearnRate',learningrate, ... 'LearnRateSchedule','piecewise', ... 'LearnRateDropPeriod',20, ... 'LearnRateDropFactor',0.8, ... 'L2Regularization',1e-3,... 'Verbose',false, ... 'ExecutionEnvironment',mydevice,... 'Plots','training-progress');



[1] https://blog.csdn.net/kjm13182345320/article/details/120377303
[2] https://mianbaoduo.com/o/bread/mbd-YZ2ak5pt
[3] https://www.bilibili.com/video/BV1BA411F7Q
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。