- 12种算法优化CNN-BiLSTM-Attention模型预测的代码。其中Attention模型可以改为单头或者多头,在代码中就是改个数字而已。代码注释已写好如何更改。
- 主要功能为:采用12种算法优化CNN-BiLSTM-Attention模型的四个参数,分别是学习率,BiLSTM的神经元个数,注意力机制的键值,正则化参数。并进行了优化前后的结果比较。
- 12种算法如下:北方苍鹰算法(NGO)、蜕螂优化算法(DBO)、灰狼优化算法(GWO)、鱼鹰优化算法(OOA)、粒子群算法(PSO)、减法优化器算法(SABO)、沙猫群优化算法(SCSO)、麻雀优化算法(SSA)、白鲸优化算法(BWO)、霜冰优化算法(RIME)、鲸鱼优化算法(WOA)、哈里斯鹰优化算法(HHO)。代码中12种算法可以随意切换!
- 部分代码:
-
net = trainNetwork(trainD,targetD',lgraph0,options0); toc %analyzeNetwork(net);% 查看网络结构 % 预测 %% 测试与评估 t_sim = net.predict(testD); analyzeNetwork(net);% 查看网络结构 % 数据反归一化 T_sim = mapminmax('reverse', t_sim, ps_output); % 数据格式转换 T_sim = double(T_sim); T_sim = T_sim'; %% 优化CNN-BiLSTM-Attention disp(' ') disp('优化CNN_BiLSTM_attention神经网络:') %% 初始化参数 popsize=5; %初始种群规模 maxgen=10; %最大进化代数 fobj = @(x)objectiveFunction(x,f_,trainD,targetD',testD,T_test,ps_output); % 优化参数设置 lb = [0.001 10 2 0.0001]; %参数的下限。分别是学习率,biLSTM的神经元个数,注意力机制的键值, 正则化参数 ub = [0.01 50 50 0.001]; %参数的上限 dim = length(lb);%数量 % 可选:'DBO','GWO','OOA','PSO','SABO','SCSO','SSA','BWO','RIME','WOA','HHO','NGO'; [Best_score,Best_pos,curve]=NGO(popsize,maxgen,lb,ub,dim,fobj); %修改这里的函数名字即可 setdemorandstream(pi);
网络结构:
CNN-BiLSTM-Attention模型
CNN能够对时间序列数据进行特征提取,但不能发掘出时间序列数据中的长依赖问题:BiLSTM能够很好地对时间序列数据进行学习,解决CNN不能处理的长依赖问题,因此将CNN和BiLSTM组合构成CNN-BiLSTM模型,能够充分发挥各自神经网络模型的优点,从而提高模型预测精度。
CNN-BiLSTM模型能够充分发挥模型各部分的优点,进行时间序列数据预测,但该模型在使用输入项多、数据量大的时间序列数据进行模型训练时,可能存在着忽略部分时刻数据的重要特征信息,导致模型学习能力下降,从而影响模型预测精度。Attention能够捕获时间序列数据中不同时刻数据的特征状态对预测值的影响程度,从而提高模型的预测精度。因此,在CNN-BiLSTM模型中引入Attention能够很好的解决原有模型忽略部分重要特征信息的问题,从而提高模型预测精度。
基于CNN-BiLSTM-Attention的预测模型结构如图所示,该模型由输入层、CNN层(卷积层和池化层)、BiLSTM层(前向LSTM层和后向LSTM层)、Attention层、输出层构成。使用CNN-BiLSTM-Attention模型进行预测时,输入层将对应的特征数据输入;CNN层中的卷积层对输入的数据进行特征提取,选取重要特征数据,池化层对特征数据进行降维处理;BiLSTM层将CNN层提取特征降维后的数据分别通过前向和后向链式连接的多个LSTM单元进行时间序列数据计算得到输出数据;Attention层计算不同时刻数据的特征状态对预测值的注意力值,得到时间序列各项数据与预测值的关联性;输出层对Attention层输出的数据进行输出计算,得到预测值。
北方苍鹰NGO优化CNN-BiLSTM-Attention进行展示效果如下