LSTM+transformer+稀疏注意力机制(ASSA)时间序列预测(pytorch框架)

LSTM+transformer+稀疏注意力机制


transformer,LSTM,ASSA注意力
首发原创!纯个人手打代码,自己研究的创新点,超级新。可以发刊,先发先的,高精度代码。
需知:好的创新性模型可以事半功倍。目前太多流水paper,都是旧模型,老师已经审美疲劳,很难发好一点的刊,这种模型很新,让paper审核老师眼睛一亮,老师就会觉得你有水平,关注顶会前沿热点,非常好中稿。上限下限都非常高,适合高等级的同学(继续优化)和没有经验的小白(直接用就行了)。
python代码,pytorch架构

  急需毕业,论文创新点,小论文,大论文的同学可以直接使用。或者需要缝合模型,设计模型可以催更联系。

1.LSTM

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),设计用于解决标准RNN在处理长序列时的梯度消失和梯度爆炸问题。LSTM通过引入记忆单元和门控机制,可以在长时间跨度内保持和更新关键信息,从而在许多序列数据任务中表现出色。

LSTM的结构

LSTM的基本单元包括以下三个主要组件:

  1. 细胞状态(Cell State)

    • 细胞状态是LSTM的核心部分,贯穿整个序列的数据流。它相当于一个直通通道,允许信息以最少的修改通过时间步长传播。细胞状态通过加法和乘法操作来控制信息的传递和遗忘,避免了梯度消失问题。
  2. 门控机制(Gates): LSTM通过三个门控来调节信息的流动:

    • 遗忘门(Forget Gate):决定细胞状态中哪些信息需要被遗忘。它接受前一时间步长的隐藏状态和当前输入,通过一个Sigmoid激活函数输出一个0到1之间的值,控制信息是否被丢弃。
    • 输入门(Input Gate):决定当前时间步长的新信息对细胞状态的更新程度。输入门与当前输入和前一隐藏状态结合,通过Sigmoid激活函数输出控制信号。
    • 输出门(Output Gate):决定细胞状态中的哪些部分将作为隐藏状态输出,并传递到下一时间步长。输出门通过Sigmoid激活函数,结合当前输入和前一隐藏状态,生成下一步的隐藏状态。
  3. 隐藏状态(Hidden State)

    • 隐藏状态是LSTM输出的主要内容,也是传递到下一个时间步长的信息。它包含了LSTM单元对当前时间步长输入和细胞状态的理解。

                                  

2.Transformer

Transformer是一种深度学习模型,最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初用于自然语言处理任务,但由于其出色的性能和高度的并行性,迅速被应用于各种领域,如图像处理、时间序列预测等。Transformer的核心是自注意力机制,它能够直接建模序列中的全局依赖关系。

Transformer的基本结构

Transformer模型由编码器(Encoder)和解码器(Decoder)两部分组成,这两部分由若干层堆叠而成。每一层由以下几个关键组件组成:

  1. 自注意力机制(Self-Attention Mechanism)

    • 自注意力机制是Transformer的核心。它允许模型在处理序列的每个元素时,同时关注序列中的其他元素,从而捕捉全局信息。
    • 计算步骤
      1. 输入嵌入(Input Embedding):首先,将输入序列中的每个元素嵌入为一个向量。
      2. 生成查询、键、值向量(Query, Key, Value Vectors):通过线性变换,将每个嵌入生成查询(Q)、键(K)、值(V)向量。
      3. 计算注意力得分:通过点积计算查询向量与键向量之间的相似度,并除以缩放因子(通常是向量维度的平方根)以避免数值不稳定性。然后应用Softmax函数,将其转换为概率分布。
      4. 加权求和:将得到的注意力得分与值向量相乘,得到输出向量。
      5. 多头注意力(Multi-Head Attention):为了让模型从多个角度捕捉信息,自注意力机制通常会被扩展为多个“头”(head),每个头独立计算注意力并进行并行处理,最后将结果拼接并通过线性层投影。
  2. 前馈神经网络(Feed-Forward Neural Network)

    • 每个注意力层之后接一个前馈神经网络,通常由两个线性变换层组成,中间通过ReLU激活函数。这一层为每个时间步独立地处理输入,并进一步对信息进行非线性变换。
  3. 层归一化(Layer Normalization)

    • 每个子层(注意力层和前馈网络层)之后,Transformer使用层归一化来稳定和加速训练过程。
  4. 残差连接(Residual Connection)

    • Transformer使用残差连接来缓解深层网络中的梯度消失问题。这意味着子层的输入将直接添加到子层的输出,帮助模型更好地学习。
  5. 位置编码(Positional Encoding)

    • 由于Transformer没有内在的序列处理顺序(不像RNN和LSTM那样按时间步处理数据),模型通过位置编码引入序列的位置信息。位置编码通常是固定的正弦和余弦函数,也可以是可学习的参数。

Transformer的工作流程

  1. 编码阶段

    • 输入序列经过嵌入层后,被加上位置编码,然后通过多个编码器层。每个编码器层由一个多头自注意力机制和一个前馈神经网络组成。编码器的输出是高维表示,其中包含了整个序列的信息。
  2. 解码阶段

    • 解码器类似于编码器,但在自注意力机制后增加了一个与编码器输出交互的注意力层(通常称为“编码器-解码器注意力”)。解码器的输入通常是目标序列的偏移版本(如翻译任务中的已经翻译部分),解码器逐步生成输出。

                                                       

Transformer的优点

  1. 并行计算:由于不需要像RNN那样按时间步处理数据,Transformer能够同时处理序列中的所有元素,这使得训练速度大幅提升,特别是在GPU上。

  2. 捕捉全局依赖关系:自注意力机制使得Transformer能够直接建模序列中的长距离依赖关系,无论元素之间的距离有多远。

  3. 适应多种任务:Transformer不仅在自然语言处理任务(如机器翻译、文本生成)中表现出色,还被广泛应用于图像处理、时间序列预测、语音识别等领域。

  4. 更好的性能:在许多任务上,Transformer优于传统的RNN和LSTM模型,尤其是在处理大规模数据时。

3.ASSA

ASSA是2024年发布的一个注意力机制,很新可以做创新点。

ASSA提出了一种自适应稀疏变压器 (AST) 来减轻不相关区域的噪声相互作用,并消除空间域和通道域中的特征冗余。AST 包括两个核心设计,即自适应稀疏自注意力 (ASSA) 模块和功能精炼前馈网络 (FRFN)。具体来说,ASSA 是使用双分支范式自适应计算的,其中引入稀疏分支以消除低查询键匹配分数对聚合特征的负面影响,而密集分支则确保有足够的信息流通过网络来学习判别性表示。同时,FRFN em 采用了一种增强和简化方案来消除通道中的特征密度,通过ASSA机制和LSTM处理后的特征输入到transformer网络预测,可以进一步提高预测的准确性和效率。在顶刊ETTh开源数据集达到一个很不错的效果。

                                            

实验代码

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列预测特征

实验结果

这里我按照训练集80%测试集20%进行训练。

 图中表明LSTM-Transformer模型在时间序列预测任务中表现出色,能够准确预测大多数时间点的值,尽管在一些极端波动或拐点处仍有一定的误差。总体而言,该模型是有效的,但可能需要进一步优化以减少在某些极端情况下的误差。

4.功能如下


1.多变量输入,单变量输出/可改多输出
2.多时间步预测,单时间步预测
3.评价指标:R方  RMSE  MAE  MAPE 对比图
4.数据从excel/csv文件中读取,直接替换即可。
5.结果保存到文本中,可以后续处理。
代码带数据,注释清晰,直接一键运行即可,适合新手小白。
接运行,主页还有其他优质模型,或者需要在此基础缝合模型或者其他模型要求,直接发要求给博主就行。

5.补充

创新性非常高,保底3区以上完全够用,效果也不错。代码里也有pdf理论知识和注释方便理解,代码是在顶会源码的基础上解决了大量报错,删除多余部分并且添加功能,适合小白,注释清楚,没学过都能看懂。

继续改进:LSTM也可以改为其他创新卷积或者提取特征模块,例如可将LSTM改为TCN,CNN或者其他提取特征的方式,transformer也可以替换为其他主预测模型,另外也可以改其他优化算法,继续提升创新。比如SSA,多元宇宙,VMd等等其他优化算法。如果需要也可以发要求私信博主。

模型预测效果优秀。结合其他模型或者其他效果都很不错。

6.源码地址

https://m.tb.cn/h.goBiCfO?tk=YPsE3gBsNBj





 

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值