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