(2)时间序列预测之Autoformer

前言:结合论文和代码介绍时间序列预测Autoformer模型


文章信息

  1. 模型: Autoformer(Decomposition Transformers with Auto-Correlation )
  2. 关键词: 序列分解;自相关机制
  3. 作者:Haixu Wu, Jiehui Xu, Jianmin Wang, Mingsheng Long
  4. 机构:清华大学
  5. 发表情况:NeurIPS 2021
  6. 网址:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting

一、针对的问题

Autoformer主要针对两个长时间序列预测问题来建模:

  1. 时域依赖关系的提取涉及复杂纠缠的各种时间模式
    如果不做任何处理而,直接从长时间序列本身提取时域依赖是不可靠的,因为时间序列由复杂纠缠的各种时间模式组合而成。

时间模式是指随着时间推移而重复发生的一系列事件或行为,比如序列多种变化趋势(如上升、下降、波动等)

  1. 信息利用率和计算复杂度的平衡问题
    自注意力机制过高的复杂度并不适合处理长时序,即便使用各种稀疏设计,也是逐点的注意力,难以在信息利用率和计算复杂度上平衡。

本文给出的解决方式是:时间序列分解技术+Auto-Correlation机制
使用时间序列分解技术,将时间序列不同的模式解纠缠,以获取更清晰、具备代表意义的序列;使用Auto-Correlation代替原有的Self-Attention(全局注意力机制、稀疏注意力机制等),利用FFT降低计算的复杂度,同时实现子序列之间时间依赖关系的提取。

二、网络结构

在介绍具体实现前,让我们先看一下Autoformer的整体网络结构。
Autoformer architecture从上图可以看到本文和Transformer一样是编码解码架构同时由Auto-Correlation、Series Decomp、Feed Forward三个模块组成每一层,同时使用残差结构。其中encoder层通过序列分解块(series decomposition block)消除长期趋势周期性部分,专注于周期性模式建模。decoder同样专注于周期性模式建模,最后输出是周期项和趋势项的和。

1. Decomposition Architecture

在预测过程中,模型逐步从隐变量中分离趋势项与周期项,实现渐进式分解。

Series decomposition block

分解公式

  • AvgPool是滑动平均
  • Padding的作用是滑动平均之后,时间序列长度不变
  • 总的计算过程记为 :
    SeriesDecomp
代码实现
class moving_avg(nn.Module):
    """
    Moving average block to highlight the trend of time series
    """

    def __init__(self, kernel_size, stride):
        super(moving_avg, self).__init__()
        self.kernel_size = kernel_size
        self.avg = nn.AvgPool1d(kernel_size=kernel_size, stride=stride, padding=0)  # 一维滑动平均

    def forward(self, x):
        # padding on the both ends of time series
        front = x[:, 0:1, :].repeat(1, (self.kernel_size - 1) // 2, 1)
        end = x[:, -1:, :].repeat(1, (self.kernel_size - 1) // 2, 1)
        x = torch.cat([front, x, end], dim=1)
        x = self.avg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值