目录
引言
Autoformer是一种用于长期时间序列预测的模型,由Haixu Wu, Jiehui Xu, Jianmin Wang, Mingsheng Long提出。这种模型增强了传统的Transformer架构,使其成为一个深度分解架构,可以在预测过程中逐步分解趋势和季节性组件。
在实际应用中,如极端天气早期预警和长期能源消费规划,扩展预测时间是一个关键需求。此论文研究了时间序列的长期预测问题。以前基于Transformer的模型采用各种自注意力机制来发现长期依赖关系。然而,长期未来的复杂时间模式阻碍了模型发现可靠的依赖关系。此外,Transformer必须采用稀疏版本的点对点自注意力来提高长序列的效率,这导致了信息利用瓶颈。Autoformer通过一种新颖的分解架构和自相关机制突破了传统Transformer的限制。该设计将系列分解从预处理常规转变为深度模型的基本内部模块,使Autoformer具备了处理复杂时间序列的渐进式分解能力。进一步地,受随机过程理论的启发,我们基于序列周期性设计了自相关机制,这一机制在子序列级别进行依赖性发现和表示聚合。自相关机制在效率和准确性上都优于自注意力。在长期预测中,Autoformer实现了最先进的准确性,在六个基准测试中取得了38%的相对改进,涵盖了五个实际应用领域:能源、交通、经济、天气和疾病。
这个模型由elisim和kashif贡献,原始代码可以在GitHub上找到。
AutoformerConfig
AutoformerConfig
是用于存储 AutoformerModel
配置的类,它根据指定的参数实例化一个Autoformer模型,定义了模型的架构。使用默认配置实例化将产生一个与Autoformer huggingface/autoformer-tourism-monthly架构相似的配置。
参数详解
prediction_length
(int) — 解码器的预测长度,即模型的预测范围。context_length
(int, 可选) — 编码器的上下文长度。如果未设置,则上下文长度将与prediction_length
相同。distribution_output
(string, 可选, 默认为 "student_t") — 模型的分布发射头。可以是"student_t"、"normal"或"negative_binomial"。loss
(string, 可选, 默认为 "nll") — 对应于distribution_output
头的模型损失函数。目前只支持负对数似然(nll)。input_size
(int, 可选, 默认为 1) — 目标变量的大小,默认为1,对于单变量目标。对于多变量目标,这个值大于1。lags_sequence
(list[int], 可选, 默认为 [1, 2, 3, 4, 5, 6, 7]) — 输入时间序列的滞后作为协变量,通常由频率决定。scaling
(bool, 可选, 默认为 True) — 是否对输入目标进行缩放。num_time_features
(int, 可选, 默认为 0) — 输入时间序列中的时间特征数量。num_dynamic_real_features
(int, 可选, 默认为 0) — 动态实值特征的数量。num_static_categorical_features
(int, 可选, 默认为 0) — 静态分类特征的数量。num_static_real_features
(int, 可选, 默认为 0) — 静态实值特征的数量。cardinality
(list[int], 可选) — 每个静态分类特征的基数(不同值的数量)。如果num_static_categorical_features
> 0,则此项不能为None。embedding_dimension
(list[int], 可选) — 每个静态分类特征的嵌入维度。d_model
(int, 可选, 默认为 64) — Transformer层的维度。encoder_layers
(int, 可选, 默认为 2) — 编码器层数。decoder_layers
(int, 可选, 默认为 2) — 解码器层数。encoder_attention_heads
(int, 可选, 默认为 2) — Trans