一文梳理Transformer在時間序列預測中的發展歷程代表工作
Transformer的序列建模能力,讓其天然就比較適合時間序列這種也是序列類型的數據結構。但是,時間序列相比文本序列也有很多特點,例如時間序列具有自相關性或周期性、時間序列的預測經常涉及到周期非常長的序列預測任務等。這些都給Transformer在時間序列預測場景中的應用帶來了新的挑戰,也使業內出現了一批針對時間序列任務的Transformer改造。下面給大家介紹Transformer在時間序列預測中的應用,基本上按照時間順序,到2023年近期的Transformer典型代表工作,共10篇頂會相關論文匯總。
1.Transformer-based Model
論文題目:Deep Transformer Models for Time Series Forecasting: The Influenza Prevalence Case
下載地址:??https://arxiv.org/pdf/2001.08317.pdf??
在我印象里,這篇文章應該是第一篇正式發表的在時間序列預測中使用Transformer結構的文章。其整體結構就是直接將Transformer的Encoder-Decoder搬過來,沒做什么特別的升級,并且應用層面也是一個個性化場景。但是從此打開了Transformer在時間序列預測中應用的大門。
2.TFT
論文題目:Temporal fusion transformers for interpretable multi-horizon time series forecasting(2019)
下載地址:??https://arxiv.org/pdf/1912.09363.pdf??
這篇文章中則采用了LSTM+Transformer的方式。時間序列首先輸入到LSTM中,這里的LSTM既可以起到類似于CNN提取每個點上下文信息的作用,也可以起到Position Encoding的作用,利用LSTM的順序建模能力,替代原來Transformer中隨模型訓練的Position Embedding。對于特征的輸入,TFT也進行了詳細設計,在每個時間步的輸入特征上,都會使用一個特征選擇模塊(一個attention)給當前時間步每個特征計算重要性。這個重要性后面也被用于對時間序列預測結果進行可視化分析,看每個時刻各個特征對于預測的重要性狂。
3.Log-Sparse Transformer
論文題目:Enhancing the locality and breaking the memory bottleneck of transformer on time series forecasting(2019)
下載地址:??https://arxiv.org/pdf/1907.00235.pdf??
Transformer的Attention操作是點對點的,而時間序列上上下文信息非常重要。例如下圖中,左側雖然兩個點時間序列值相同,但是由于周邊序列形狀差異很大,因此這兩個點之間不具有參考價值。而右側圖中,雖然兩個區域的時間序列值差別很大,但是整體形狀是非常相似的,因此這兩個部分具有較大參考價值,應該增加attention權重。從這個例子可以看出,在時間序列問題中,不能只用類似NLP中的兩點之間的注意力機制,而應該考慮點周圍的上下文信息。
本文采用卷積+Transformer的方式,時間序列會首先輸入到一個一維卷積中,利用卷積提取每個節點周圍的信息,然后再使用多頭注意力機制學習節點之間的關系。這樣就能讓attention不僅考慮每個點的值,也能考慮每個點的上下文信息,將具有相似形狀的區域建立起聯系。
4.Informer
論文題目: Informer: Beyond efficient transformer for long sequence timeseries forecasting(AAAI 2021)
下載地址:??https://arxiv.org/pdf/2012.07436.pdf??
Informer針對長周期時間序列預測,主要從效率角度對Transformer進行了優化,這篇工作也是AAAI 2021的best paper。對于長周期時間序列,輸入的維度很高,而Transformer的時間復雜度隨著輸入序列長度增加指數增長。為了提升Transformer在長序列上的運行效率,通過讓key只和關鍵query形成稀疏的attention減少大量運算量。作者通過實驗方法,attention score具有非常明顯的長尾性,少數的score比較大,大多數score很小,因此只要重點建模那些重要的關系即可。如果一個query和其他key的attention score接近均勻分布,那么這個query就是簡單的把其他value加和求平均,意義不大。因此Informer中提出計算每個query的attention score打分分布和均勻分布的KL散度,對于重要性不大的query,key就不和這些query計算attention,形成了sparse attention的結構,帶來計算效率的大幅提升。
此外,針對時間序列任務,Informer還引入了self-attention distillation,在每兩層Transformer之間增加一個卷積,將序列長度縮減一半,進一步減少了訓練開銷。在Decoder階段,則采用了一次性預測多個時間步結果的方法,相比傳統GPT等autoregressive的方法緩解了累計誤差問題。
5.Autoformer
論文題目:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting(NIPS 2021)
下載地址:??https://arxiv.org/pdf/2106.13008.pdf??
Autoformer是Transformer的升級版本,針對時間序列問題的特性對原始Transformer進行了一系列優化。模型的整體結構如下圖,核心是Series Decomposition Block模塊和對多頭注意力機制的升級Auto-Correlation Mechanism。這里推薦想詳細了解Autoformer細節的同學參考杰少的這篇文章:,整理的非常全面深入。下面給大家簡單介紹一下Auroformer的各個模塊。
第一個模塊是Series Decomposition Block,這個模塊主要目的是將時間序列分解成趨勢項和季節項。在最基礎的時間序列分析領域,一個時間序列可以被視為趨勢項、季節項、周期項和噪聲。對于這4個因素的拆借,有加法模型、乘法模型等,其中加法模型認為這4個因素相加構成了當前時間序列。本文采用了加法模型,認為時間序列由趨勢項+季節項構成。為了提取出季節項,本文采用了滑動平均法,通過在原始輸入時間序列上每個窗口計算平均值,得到每個窗口的趨勢項,進而得到整個序列的趨勢項。同時,根據加法模型,將原始輸入序列減去趨勢項,即可得到季節項。整個Series Decomposition Block的公式可以表示為:
模型的輸入結合Series Decomposition Block模塊。Encoder部分輸入歷史時間序列,Decoder部分的輸入包括趨勢項和季節項兩個部分。趨勢項由兩部分組成,一部分是歷史序列經過Series Decomposition Block分解出的趨勢項的后半部分,相當于用歷史序列近期的趨勢項作為Decoder的初始化;趨勢項的另一部分是0填充的,即目前尚不知道的未來序列的趨勢項,用0進行填充。季節項和趨勢項類似,也是由兩部分組成,第一部分為Encoder分解出的近期季節項,用于初始化;第二部分為Encoder序列均值作為填充,公式如下。
Encoder部分的主要目的是對復雜的季節項進行建模。通過多層的Series Decomposition Block,不斷從原始序列中提取季節項。這個季節項會作為指導Decoder在預測未來時季節項的信息。Encoder部分的公式如下,Auto-correlation代表Auto-Correlation Mechanism,我們在下面再進行介紹。
Decoder部分也是類似的結構,利用Encoder信息和Decoder輸入進行預測,公式如下:
第二個模塊是Auto-Correlation Mechanism,是對傳統Transformer在時間序列預測場景的升級。Auto-Correlation Mechanism的核心思路是利用時間序列的自相關系數,尋找時間序列最相關的片段。時間序列的自相關系數計算時間序列和其滑動一個步長后的時間序列的相關系數。舉例來說,如果一個時間序列是以年為周期,那么序列平移365天后,原序列和平移后的序列相關系數是很高的。AutoFormer利用了這個性質,計算各個滑動步長的自相關系數,并選擇相關系數top k的滑動步長。
在具體實現上,Auto-Correlation Mechanism替代了Transformer中的self-attention結構,其公式如下。首先,將輸入的時間序列通過全連接映射成Q、K、V,這和multi-head attention相同。接下來,計算Q和K之間各個周期的相關系數,選擇相關系數最高的top k,這k個周期代表著Q和K的高相關性周期。這個過程可以理解為計算attention,與以往attention不同的是,這里計算的是片段的相似關系而非點的相似關系。最后,利用softmax得到每個周期歸一化的權重,對V的對應周期平移結果進行加權求和。
文中使用快速傅里葉變換(FFT)計算自相關系數。下圖分別展示了Auto-Correlation Mechanism,以及這種自相關機制相比Transformer中的自注意力機智的區別。自相關機制利用時間序列的平移尋找相似的片段,而自注意力機制關注點之間的關系。
6.Pyraformer
論文題目: Pyraformer: Low-complexity pyramidal attention for long-range time series modeling and forecasting(ICLR 2022)
下載地址:??https://openreview.net/pdf?id=0EXmFzUn5I??
在長周期的時間序列預測問題中,如何平衡運算復雜度以及縮短兩個時間點之間的交互距離一直是研究的焦點(如下表為各個模型的運算復雜度及兩點最長路徑)。RNN、CNN這種模型對于輸入長度為L的序列,兩個時間點的最長路徑為L,在長周期中節點之間信息交互比較困難。而Transformer引入了Attention機制,讓兩兩節點之間可以直接交互,但是提升了時間復雜度。
本文提出了一種樹形結構的Transformer,用于解決長周期時間序列預測問題。從下到上,時間序列的粒度逐漸變粗。最底層為原始輸入的時間序列,上層為使用卷積聚合得到的粗粒度序列。每個節點和3種節點做attention:該節點的子節點、該節點的相鄰鄰居節點、該節點的父節點。通過這種方式,任何兩個節點之間都可以直接交互,并且時間復雜度大幅降低。
在預測時,一種是把經過上述編碼得到的表示直接接全連接映射到預測空間。另一種方法是使用一個額外的Decoder,采用類似Transformer中的方式進行解碼。
7.FEDformer
論文題目:FEDformer: Frequency enhanced decomposed transformer for long-term series forecasting(2022)
下載地址:??https://arxiv.org/pdf/2201.12740.pdf??
FEDformer的主要思路也是將Transformemr和 seasonal-trend decomposition結合起來。使用普通的Transformer進行時間序列預測時,經常會出現預測的數據分布和真實分布存在比較大的gap。這主要是由于Transformer在進行預測每個時間點是獨立的利用attention預測的,這個過程中可能會忽略時間序列整體的屬性。為了解決這個問題,本文采用了兩種方法,一種是在基礎的Transformer中引入 seasonal-trend decomposition,另一種是引入傅里葉變換,在頻域使用Transformer,幫助Transformer更好的學習全局信息。
FEDformer的核心模塊是傅里葉變換模塊和時序分解模塊。傅里葉變換模塊將輸入的時間序列從時域轉換到頻域,然后將Transformer中的Q、K、V替換成傅里葉變換后的頻域信息,在頻域中進行Transformer操作。
8.Non-stationary Transformer
論文標題:Non-stationary Transformers: Rethinking the Stationarity in Time Series Forecasting(NIPS 2022)
下載地址:??https://arxiv.org/pdf/2205.14415.pdf??
時間序列的不平穩性(non-stationarity)是一個比較難處理,且真實世界中很常見的問題。業內解決這種統計量隨時間變化的不平穩問題主要方法是,對時間序列數據做一些諸如歸一化等平穩化處理。例如對每個序列樣本使用z-normalization處理成0均值1方差的,這樣就可以解決不同時間步的樣本統計量不一致的問題。但是這種解決方法會對Transformer模型帶來一個負面影響:平穩化后的序列雖然統計量一致了,但是這個過程中也讓數據損失了一些個性化的信息,導致不同序列的Transformer中的attention矩陣趨同。文中將這個現象叫作over-stationarization。
這篇文章提出了一種新的Transformer結構Non-stationary Transformers,核心包括兩個部分:一個是對輸入序列的歸平穩化處理的預測結果反平穩化處理方法;另一個是讓Transformer能夠處理平穩化序列的同時,學習不平穩化數據中的attention規律。
為了讓Transformer能夠直接從平穩化前的時間序列中學習attention pattern,本文提出了De-stationary Attention。對于每個Attention層,由于輸入的是平穩化后的序列,其和平穩化前序列的關系可以表達成如下公式:
并可以進一步轉換為如下表達式:
因此,想要使用平穩化前的序列計算attention,核心就是去計算3項:平穩化的方差、Q在時間維度上的均值、平穩化前的序列得的K。文中采用原始序列和一個MLP網絡來學習這兩個部分:
通過這種方式,既能讓模型在平穩化后的序列上學習,又能讓模型根據非平穩化前完整的序列信息學習Transforomer的attention pattern。模型的整體結構如下圖所示。
9.PatchTST
論文標題:A TIME SERIES IS WORTH 64 WORDS: LONG-TERM FORECASTING WITH TRANSFORMERS(ICLR 2023)
下載地址:??https://arxiv.org/pdf/2211.14730.pdf??
這篇文章提出了基于Transformer時序預測和時序表示學習新方法,將時間序列數據轉換成類似Vision Transformer中的patch形式,取得非常顯著的效果。
本文提出的Transformer多元時間序列預測模型,核心思路為以下2點:
- Patching:原來的時間序列預測方法都是每個time step輸入到模型中,這種方式一方面在歷史序列比較長的時候運行效率太低,導致無法引入更長的歷史序列信息;另一方面每個time step包含的信息量很少,不像NLP中一個token那樣有明確意義。因此文中借鑒了Vision Transformer的思路(如下圖),也將時間序列分成patch的形式進行建模。
- Channel-independence:原來的多元時間序列建模方法中,將多個變量融合到一個embedding建模。而本文采用了channel-independence的方法,即每個變量的序列單獨映射到獨立的embedding進行建模。
10.CrossFormer
之前用Transformer解決時間序列問題的工作,大多集中在如何更合理的進行時間維度的關系建模上。利用時間維度的自注意力機制,建立不同時間步之間的關系。
而在多元時間序列預測中,各個變量之間的關系也很重要。之前的解法,主要是將每個時間步的多元變量壓縮成一個embedding(如下圖中的b),再進行時間維度的attention。這種方法的問題是缺少對不同變量之間關系的建模。因為時間序列不同變量的含義是不同的,每個變量應該在哪個時間片段進行對齊無法提前預知,直接每個時間步融合的方式顯然太粗糙了。
基于以上考慮,本文對Transformer在多元時間序列預測的應用中進行了改造,將多元時間序列轉換成patch,增加了變量維度之間的attention(如上圖中的c),并考慮到效率問題,提出了基于路由的變量間attention機制。
模型整體包含3個主要模塊:
- Dimension-Segment-Wise Embedding:這個模塊的主要目標是將時間序列分成patch形式,得到patch embedding,作為后續模型的輸入,類似于之前文章介紹的方法,將每個變量的時間序列按照一定的窗口與劃分成多個區塊,每個區塊通過全連接進行映射,本文不再詳細介紹;
- Two-Stage Attention Layer:兩階段的attention,第一階段在時間維度進行attention,第二階段在多變量之間進行attention;
- Hierarchical Encoder-Decoder:采用不同的patch尺寸和劃分方式,形成層次的編碼和解碼結構。
