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
