Autoformer – Transformer 在时间序列预测中有效

介绍

Hugging Face 宣布 Autoformer 模型现在可在 🤗 Transformers 库中使用。该帖子表明基于 Transformer 的模型在时间序列预测中有效,反驳了诸如 DLinear 之类的简单线性模型更优的说法。

基准测试 - Transformers 与 DLinear 的对比

在 Traffic、Exchange‑Rate 和 Electricity 数据集上,Autoformer 模型的 MASE 值低于 DLinear 模型。具体来说,Autoformer 在 Traffic 上的 MASE 为 0.910,在 Exchange‑Rate 上为 1.087,在 Electricity 上为 0.751,而 DLinear 分别为 0.965、1.690 和 0.831。这表明 Autoformer 在所有三个数据集上均优于 DLinear。

Autoformer - 原理概览

Autoformer 通过引入 Decomposition Layer 和 Autocorrelation Mechanism 来改进时间序列预测。

分解层

分解层使用移动平均池化将输入序列分割为趋势和季节性成分。对于输入 $\mathcal{X} \in \mathbb{R}^{L \times d}$,趋势为 $\mathcal{X}{\text{trend}} = \text{AvgPool}(\text{Padding}(\mathcal{X}))$,季节性部分为 $\mathcal{X}{\text{seasonal}} = \mathcal{X} - \mathcal{X}_{\text{trend}}$。一个 PyTorch 实现会对序列进行填充,应用平均池化,并返回这两个成分。

注意力(Autocorrelation)机制

Autoformer 使用频域中的自相关机制替换标准的自注意力。查询和键的自相关通过 FFT 计算得出,复杂度为 $O(L \log L)$。得到的权重按照时间延迟进行聚合:选择 top‑k 延迟,进行 softmax 归一化,并用于加权滚动的值状态。此机制捕捉基于周期的依赖关系。

DLinear - 原理概览

DLinear 是一个简单的前馈网络,它使用与 Autoformer 相同的分解层,然后将季节性和趋势部分分别通过独立的线性层并求和它们的输出。在概率设置中,线性层将其投射到 prediction-length * hidden 维度,随后概率头映射到分布参数。

示例:Traffic 数据集

Traffic 数据集包含来自 2015‑2016 年的 862 个旧金山高速公路占用率(范围 [0,1])的每小时时间序列。在实验中,预测长度设置为 24,上下文长度设置为 48,批量大小设置为 128,并且使用小型 Transformer 配置(encoder_layers=2decoder_layers=2d_model=16)训练模型 50 个 epoch。Autoformer 和其他模型的预训练检查点可在 Hugging Face Hub 上获得。

加载数据集

数据集通过 `gluonts.dataset.repository.datasets.get_dataset(

Sources