今天又是一篇Transformer梳理文章,這次應用場景是時間序列預測。Transformer的序列建模能力,讓其天然就比較適合時間序列這種也是序列類型的數據結構。但是,時間序列相比文本序列也有很多特點,例如時間序列具有自相關性或周期性、時間序列的預測經常涉及到周期非常長的序列預測任務等。這些都給Transformer在時間序列預測場景中的應用帶來了新的挑戰,也使業內出現了一批針對時間序列任務的Transformer改造。下面就給大家介紹7篇Transformer在時間序列預測中的應用。
論文題目: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細節的同學參考杰少的這篇文章:當前最強長時序預測模型--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中的自注意力機智的區別。自相關機制利用時間序列的平移尋找相似的片段,而自注意力機制關注點之間的關系。
論文題目: 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中的方式進行解碼。
論文題目: 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的方法緩解了累計誤差問題。
論文題目: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操作。
論文題目: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不僅考慮每個點的值,也能考慮每個點的上下文信息,將具有相似形狀的區域建立起聯系。
論文題目: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)給當前時間步每個特征計算重要性。這個重要性后面也被用于對時間序列預測結果進行可視化分析,看每個時刻各個特征對于預測的重要性狂。
論文題目:A transformer-based framework for multivariate time series representation learning(KDD 2021)
下載地址:
https://arxiv.org/pdf/1912.09363.pdf
這篇文章借鑒了預訓練語言模型Transformer的思路,希望能夠在多元時間序列上通過無監督的方法,借助Transformer模型結構,學習良好的多元時間序列表示。本文重點在于針對多元時間序列設計的無監督預訓練任務。如下圖右側,對于輸入的多元時間序列,會mask掉一定比例的子序列(不能太短),并且每個變量分別mask,而不是mask掉同一段時間的所有變量。預訓練的優化目標為還原整個多元時間序列。通過這種方式,讓模型在預測被mask掉的部分時,既能考慮前面、后面的序列,也能考慮同一時間段沒有被mask的序列。
下圖展示了無監督預訓練時間序列模型對時間序列預測任務帶來的效果提升。左側的圖表示,不同有label數據量下,是否使用無監督預訓練的RMSE效果對比。可以看到,無論有label數據量有多少,增加無監督預訓練都可以提升預測效果。右側圖表示使用的無監督預訓練數據量越大,最終的時間序列預測擬合效果越好。
這篇文章給大家匯總了Transformer在時間序列中的應用,也給大家推薦一篇時間序列Transformer的綜述類文章,2022年發表的,比較新,介紹的Transformer在時間序列中的應用也比較全:Transformers in Time Series: A Survey(2022)。
文章來源:圓圓的算法筆記