XLSTM+informer时间序列预测模型
XLSTM是lstm原班人马在2024年5月发布的模型,本文将xlstm和informer进行相应的结合进行时间序列的预测。源码在最后。
1.XLSTM
论文原地址:https://arxiv.org/abs/2405.04517
xLSTM 的核心是两个新颖的组件:指数门控和增强的记忆结构。指数门控允许更灵活地控制信息流动,使 xLSTM 能够在遇到新上下文时有效地修正决策。同时,引入的矩阵记忆与传统的标量 LSTM 相比,极大地增加了存储容量。
但改进不仅限于此。通过借用大型语言模型中的技术,如可并行化和残差块堆叠,xLSTM 可以有效地扩展到数十亿参数。这解锁了其对极长序列和上下文窗口进行建模的潜力——这一能力对于复杂的语言理解至关重要。
Hochreiter 最新创造的影响是巨大的。想象一下,虚拟助手可以可靠地追踪长达数小时的对话上下文;或者语言模型在广泛的数据训练后,可以更稳健地推广到新领域。应用范围涵盖了 LSTM 曾经影响的所有领域:聊天机器人、翻译、语音接口、程序分析等,但现在随着 xLSTM 的突破能力得到大幅提升。
在这篇深度技术指南中,我们将深入探讨 xLSTM 的架构细节,评估其新颖的组件如标量和矩阵 LSTM、指数门控机制、记忆结构等。您将从实验结果中了解 xLSTM 在性能上的显著提升,与当前最先进的架构如变压器和最新的递归模型相比。
理解起源:LSTM 的局限性
在我们深入探讨 xLSTM 的世界之前,了解传统 LSTM 架构所面临的局限性是至关重要的。这些局限性是驱动 xLSTM 和其他替代方法开发的重要因素。
无法修正存储决策:LSTM 的主要局限性之一是,当遇到更相似的向量时,它难以修正已存储的值。这可能导致在需要动态更新存储信息的任务中表现不尽如人意。
有限的存储容量:LSTM 将信息压缩到标量细胞状态中,这限制了它们在处理稀有标记或长程依赖时,有效存储和检索复杂数据模式的能力。
缺乏并行化能力:LSTM 中的记忆混合机制涉及时间步之间的隐隐连接,这强制了顺序处理,阻碍了计算的并行化,限制了扩展性。
这些局限性为变压器模型和其他架构的出现铺平了道路,使其在某些方面超过了 LSTM,特别是在扩展到更大模型时。
xLSTM 架构
扩展 LSTM (xLSTM) 家族
xLSTM 的核心是对传统 LSTM 框架的两项主要修改:指数门控和新颖的记忆结构。这些增强引入了两种新的 LSTM 变体,即 sLSTM (标量 LSTM)和 mLSTM (矩阵 LSTM)。
sLSTM
具有指数门控和记忆混合的标量 LSTM
指数化门控:sLSTM 为输入和遗忘门引入了指数激活函数,从而实现对信息流更加灵活的控制。
归一化与稳定性:为了防止数值不稳定,sLSTM 引入了一个归一化状态,该状态跟踪输入门和未来遗忘门的积。
内存混合:sLSTM 支持多个内存单元,并允许通过递归连接进行内存混合,从而提取复杂模式和状态跟踪能力。
mLSTM
增强存储能力的矩阵 LSTM
矩阵记忆:mLSTM 使用矩阵记忆代替标量记忆单元,增加了存储容量,并提高了信息检索效率。
协方差更新规则:mLSTM 借鉴双向联想记忆(BAM)的灵感,采用协方差更新规则来高效地存储和检索键-值对。
并行化:通过放弃内存混合,mLSTM 实现了完全并行化,使其在现代硬件加速器上能够高效计算。
这两个变种,sLSTM 和 mLSTM,可以集成到残差块架构中,形成 xLSTM 块。通过残差堆叠这些 xLSTM 块,研究人员可以建立强大的 xLSTM 架构,以针对特定任务和应用领域。
2.informer
Informer 是一种用于时间序列预测的深度学习模型,特别适用于长序列的时间序列数据。它是基于 Transformer 结构的一种改进,主要解决了传统 Transformer 在处理长序列时计算复杂度高的问题。
1.1Informer 的关键机制
-
稀疏自注意力机制(ProbSparse Attention):
- 传统的 Transformer 使用全局自注意力机制,即对于输入的每个时间步,它都计算与其他所有时间步的相似性。这种方法的计算复杂度是,当序列很长时,这种计算开销是巨大的。
- Informer 提出了稀疏自注意力机制,选择性地关注最重要的时间步,具体来说,它通过概率稀疏抽样方法,仅计算具有较大贡献的自注意力分数,减少了无用计算。
-
因子分解编码器(Distilling Operation):
- Informer 在编码器中引入了多层的因子分解模块,通过每层编码器对序列信息的稀疏化处理,逐步提取关键特征。这一机制能够显著减少冗余信息,进一步降低计算复杂度。
-
多头自回归生成(Autoformer-like Output Layer):
- 在解码器部分,Informer 借鉴了 Autoformer 的思想,通过多头自回归生成的方式,逐步预测未来的时间步。它在解码过程中利用先前预测的值来预测下一个时间步,从而逐步生成整个序列。
-
长尾预测能力:
- Informer 针对长尾分布的时间序列数据进行了优化,使得模型在处理分布不均衡的数据时表现更加稳定。通过稀疏机制和因子分解编码器,Informer 能够更好地捕捉到长尾分布中的关键特征。
1.2优势
Informer 的这些创新使得它在处理长序列时间序列数据时具有更高的效率和准确性。它适用于各种实际应用场景,如风电、光伏发电预测、交通流量预测等。
3.实验部分
部分实验代码
class Model(nn.Module):
"""
Vanilla Transformer
with O(L^2) complexity
Paper link: https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
"""
def __init__(self, configs):
super(Model, self).__init__()
self.pred_len = configs.pred_len
self.output_attention = configs.output_attention
self.lstm = LSTM(input_size=configs.enc_in, hidden_size=configs.d_model, num_layers=3,
batch_size=configs.batch_size)
# Embedding
self.enc_embedding = DataEmbedding(configs.enc_in, configs.d_model, configs.embed, configs.freq,
configs.dropout)
# Encoder
self.encoder = Encoder(
[
EncoderLayer(
AttentionLayer(
FullAttention(False, configs.factor, attention_dropout=configs.dropout,
output_attention=configs.output_attention), configs.d_model, configs.n_heads),
configs.d_model,
configs.d_ff,
dropout=configs.dropout,
activation=configs.activation
) for l in range(configs.e_layers)
],
norm_layer=torch.nn.LayerNorm(configs.d_model)
)
# Decoder
self.dec_embedding = DataEmbedding(configs.dec_in, configs.d_model, configs.embed, configs.freq,
configs.dropout)
self.decoder = Decoder(
[
DecoderLayer(
AttentionLayer(
FullAttention(True, configs.factor, attention_dropout=configs.dropout,
output_attention=False),
configs.d_model, configs.n_heads),
AttentionLayer(
FullAttention(False, configs.factor, attention_dropout=configs.dropout,
output_attention=False),
configs.d_model, configs.n_heads),
configs.d_model,
configs.d_ff,
dropout=configs.dropout,
activation=configs.activation,
)
for l in range(configs.d_layers)
],
norm_layer=torch.nn.LayerNorm(configs.d_model),
projection=nn.Linear(configs.d_model, configs.c_out, bias=True)
)
数据集
数据集都可以,只要是时间序列格式,不限领域,类似功率预测,风电光伏预测,负荷预测,流量预测,浓度预测,机械领域预测等等各种时间序列直接预测。可以做验证模型,对比模型。格式类似顶刊ETTH的时间序列格式即可。
这里是时间列+7列影响特征+1列预测特征(也可以没有时间)
功能如下
1.多变量输入,单变量输出/可改多输出
2.多时间步预测,单时间步预测
3.评价指标:R方 RMSE MAE MAPE 对比图
4.数据从excel/csv文件中读取,直接替换即可。
5.结果保存到文本中,可以后续处理。
6.对比模型消融实验也准备好了,一步到位
代码带数据,注释清晰,直接一键运行即可,适合新手小白。
接运行,主页还有其他优质模型,或者需要在此基础缝合模型或者其他模型要求,直接发要求给博主就行。
4.补充
创新性非常高,保底3区以上完全够用,效果也不错。代码里也有pdf理论知识和注释方便理解,代码是在顶会源码的基础上解决了大量报错,删除多余部分并且添加功能,适合小白,注释清楚,没学过都能看懂。
继续改进:informer也可以替换为其他主预测模型,另外也可以改其他优化算法,继续提升创新。比如SSA,多元宇宙,VMd等等其他优化算法。
模型预测效果优秀。结合其他模型或者其他效果都很不错。
5.源码以及详细视频讲解地址(适合小白)
代码地址:https://www.bilibili.com/video/BV1UMBTYNEzq/?spm_id_from=333.999.0.0