Self-Attention在时间序列预测中有效吗?新Transformer架构效率效果双提升
今天给大家介绍最近的一篇探索self-attention在时间序列预测有效性的文章。本文承接Are Transformers Effective for Time Series Forecasting?这篇工作,进一步指出导致Transformer在时间序列问题上效果不好的核心模块是self-attention。并提出了一种新的线性模型+cross attention结构解决,提升了长周期时序预测效果。
论文标题:Are Self-Attentions Effective for Time Series Forecasting?
下载地址:https://arxiv.org/pdf/2405.16877v1
1.背景介绍
在Are Transformers Effective for Time Series Forecasting?一文中,作者指出了Transformer在时间序列预测中的问题,并且提出线性模型就能取得比Transformer更好的效果。并且文中指出,Transformer在时间序列预测中表现差,是Transformer中的self-attention结构缺乏位置和时序等先验信息导致的。
虽然上述文章将Transformer直接替换成线性模型,但本文指出,既然self-attention是导致Transformer效果不好的原因,那能不能只把Transformer中的self-attention去掉,而保留cross-attention结构呢?Cross-attention是Encoder-Decoder类型的Transformer模型中的模块,Decoder每个时刻在预测时,去和Encoder的历史序列做cross-attention,实现对历史信息的利用。
基于上述思路,本文提出了CAT模型,将transformer中的self-attention完全去掉,保留cross-attention结构。下面详细介绍一下文中的具体实现。
2.实现方法
本文提出的模型结构,核心包括3个方面:Cross-attention模块、参数共享机制、Query自适应mask。
整体的模型结构如下图所示,可以看到,模型主体是一个基于Transformer的Encoder-Decoder结构,但是将所有self-attention模块全部去掉,替换成了全连接网络。同时,底层的输入采用PatchTST的处理方式,先转换成patch,再输入到Transformer模型中。
Cross-attention模块:Cross-attention模块的核心是在预测未来每个时间步的信息时,能够从历史信息中检索有用的模块。为了实现cross-attention,文中给未来每个时间步,都分配了一个可学习的向量,这个向量作为attention中的query。基于这个query,和历史序列每个时刻的向量做multi-head cross attention,实现Decoder到Encoder的信息交互。
参数共享机制:本文的cross-attention模块引入,使得每个时间步的预测结果只和当前时间步的query,以及历史序列输入有关,因此可以实现高度的参数共享。因此,文中的参数共享应用到了embedding、全连接、cross-attention等各个部分。每个未来时间步的预测,参数都是共享的。基于这个特性,CAT实现了大幅的模型参数量缩减。
Query自适应mask:高度的参数共享带来了一个问题,每个时间步的预测会倾向于更相似的预测结果。为了解决这个问题,文中提出了query自适应mask。在训练过程中,以一定比例mask掉cross-attention的信息,使得模型只能根据query本身去预测,增强不同query之间的差异性,进而让参数共享下每个时刻的预测结果更具备差异性。
3.实验效果
在实验效果上,本文提出的CATS模型结构在时序预测,特别是长周期预测上取得了比较明显的提升,主要得益于其cross-attention对历史序列的长范围检索能力。
在参数量上,本文提出的模型由于高度的参数共享性,即使在长周期预测中,也能保证参数量不会急速膨胀,运行效率明显优于其他SOTA模型。
本文转载自 圆圆的算法笔记,作者: Fareise