基于时间注意力机制的BiLSTM网络(TPA-BiLSTM)一维时间序列预测算法matlab仿真,对比BiLSTM

目录

1.前言

2.算法运行效果图预览

3.算法运行软件版本

4.部分核心程序

5.算法理论概述

5.1 双向长短期记忆网络 (BiLSTM)

5.2 时间注意力机制 (Temporal Attention Layer)

6.参考文献

7.算法完整程序工程


1.前言

时间序列预测在许多领域都至关重要,传统的循环神经网络(RNN)及其变体(如LSTM、GRU)在处理时间序列数据时展现出一定的能力,但它们在捕捉长距离依赖关系和区分输入序列中不同时间步的重要性方面仍有不足。为了解决这些问题,我们将双向长短期记忆网络(BiLSTM)与时间注意力机制(Temporal Attention)相结合,构建出一种更强大的时间序列预测模型——TPA-BiLSTM。

2.算法运行效果图预览

(完整程序运行后无水印)

3.算法运行软件版本

Matlab2024b(推荐)或者matlab2022a

4.部分核心程序

(完整版代码包含中文注释和操作步骤视频)

%训练集
Predict_yNorm = func_Predict(Xtrain,params,State_test);
Predict_yNorm = extractdata(Predict_yNorm);
Predict_yNorm = (Predict_yNorm-min(Predict_yNorm))/(max(Predict_yNorm)-min(Predict_yNorm));
% 反归一化
Predict_Trainy = Predict_yNorm-mean(Predict_yNorm);
Train_y   = (Train_y-min(Train_y))/(max(Train_y)-min(Train_y));
Train_y   = Train_y-mean(Train_y);


% 绘图
figure
subplot(211);
plot(Predict_Trainy,'b','linewidth',1.5);
hold on 
plot(Train_y,'r','linewidth',1.5);
legend('训练集预测值','训练集实际值')

t1=double(gather((Predict_Trainy)));
t2=Train_y;
err1=mean(abs(t1-t2));

%predict(直接测试集)
Predict_yNorm = func_Predict(dlarray(Xtest,'CBT'),params,State_test);
Predict_YNorm = extractdata(Predict_yNorm);
Predict_yNorm = (Predict_yNorm-min(Predict_yNorm))/(max(Predict_yNorm)-min(Predict_yNorm));
Predict_testy     = Predict_yNorm-mean(Predict_yNorm);
Test_y        = (Ytest-min(Ytest))/(max(Ytest)-min(Ytest));
Test_y    = Test_y-mean(Test_y);
% 绘图
subplot(212);
plot(Predict_testy,'b','linewidth',1.5);
hold on 
plot(Test_y,'r','linewidth',1.5);
legend('测试集预测值','测试集实际值')

t1=double(gather((Predict_testy)));
t2=Test_y;
err2=mean(abs(t1-t2));


save R1.mat Predict_Trainy Train_y Predict_testy Test_y err1 err2 Loss_trains Loss_valid
 
0237

5.算法理论概述

TPA-BiLSTM模型的核心思想是:

BiLSTM:负责从原始时间序列数据中提取双向的、上下文相关的特征。它能同时捕捉过去信息对当前的影响(前向LSTM)和未来信息对当前的影响(后向LSTM)。

时间注意力机制 (Temporal Attention):在BiLSTM提取的特征序列基础上,计算每个时间步特征向量的 “注意力权重”。这使得模型能够自动识别输入序列中对当前预测任务更为关键的历史信息,并给予其更高的权重。

整体结构如下:

输入序列 -> BiLSTM层 -> 时间注意力层 -> 全连接层 -> 输出层

5.1 双向长短期记忆网络 (BiLSTM)

BiLSTM由一个前向LSTM和一个后向LSTM组成。将每个时间步的前向和后向隐藏状态拼接起来,得到BiLSTM的最终输出序列H:

5.2 时间注意力机制 (Temporal Attention Layer)

时间注意力机制旨在为BiLSTM输出的每个特征向量ht 计算一个权重αt ​ ,以表示其对最终预测的重要性。

对于每个时间步t的特征向量ht ​ ,我们计算一个能量值et ​ 。这个能量值衡量了ht与一个可学习的 “查询”向量q的匹配程度。一个常见的计算方式是使用单层前馈神经网络(感知机):

使用softmax函数对所有时间步的能量值进行归一化,得到注意力权重αt:

将BiLSTM的输出特征向量与对应的注意力权重进行加权求和,得到一个固定长度的向量c:

向量c被送入一个或多个全连接层(也称为稠密层)进行非线性变换,以学习更复杂的预测模式。

最后一个全连接层的输出经过一个线性激活函数(对于回归问题)或softmax函数(对于分类问题)得到最终的预测结果y^。

6.参考文献

[1] Ang L , Baoyu Z , Liyan Z ,et al.The Application of the CNN-BiLSTM-TPA Model Based on Deep Learning in Porosity Prediction[J].Journal of Geophysics and Engineering, 2025.DOI:10.1093/jge/gxaf141.

posted @ 2026-07-27 19:40  简简单单做算法  阅读(1)  评论(0)    收藏  举报