一文梳理Transformer在時(shí)間序列預(yù)測(cè)中的發(fā)展歷程代表工作
Transformer的序列建模能力,讓其天然就比較適合時(shí)間序列這種也是序列類型的數(shù)據(jù)結(jié)構(gòu)。但是,時(shí)間序列相比文本序列也有很多特點(diǎn),例如時(shí)間序列具有自相關(guān)性或周期性、時(shí)間序列的預(yù)測(cè)經(jīng)常涉及到周期非常長(zhǎng)的序列預(yù)測(cè)任務(wù)等。這些都給Transformer在時(shí)間序列預(yù)測(cè)場(chǎng)景中的應(yīng)用帶來了新的挑戰(zhàn),也使業(yè)內(nèi)出現(xiàn)了一批針對(duì)時(shí)間序列任務(wù)的Transformer改造。下面給大家介紹Transformer在時(shí)間序列預(yù)測(cè)中的應(yīng)用,基本上按照時(shí)間順序,到2023年近期的Transformer典型代表工作,共10篇頂會(huì)相關(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ù)測(cè)中使用Transformer結(jié)構(gòu)的文章。其整體結(jié)構(gòu)就是直接將Transformer的Encoder-Decoder搬過來,沒做什么特別的升級(jí),并且應(yīng)用層面也是一個(gè)個(gè)性化場(chǎng)景。但是從此打開了Transformer在時(shí)間序列預(yù)測(cè)中應(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。對(duì)于特征的輸入,TFT也進(jìn)行了詳細(xì)設(shè)計(jì),在每個(gè)時(shí)間步的輸入特征上,都會(huì)使用一個(gè)特征選擇模塊(一個(gè)attention)給當(dāng)前時(shí)間步每個(gè)特征計(jì)算重要性。這個(gè)重要性后面也被用于對(duì)時(shí)間序列預(yù)測(cè)結(jié)果進(jìn)行可視化分析,看每個(gè)時(shí)刻各個(gè)特征對(duì)于預(yù)測(cè)的重要性狂。
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)對(duì)點(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í)間序列會(huì)首先輸入到一個(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針對(duì)長(zhǎng)周期時(shí)間序列預(yù)測(cè),主要從效率角度對(duì)Transformer進(jìn)行了優(yōu)化,這篇工作也是AAAI 2021的best paper。對(duì)于長(zhǎng)周期時(shí)間序列,輸入的維度很高,而Transformer的時(shí)間復(fù)雜度隨著輸入序列長(zhǎng)度增加指數(shù)增長(zhǎng)。為了提升Transformer在長(zhǎng)序列上的運(yùn)行效率,通過讓key只和關(guān)鍵query形成稀疏的attention減少大量運(yùn)算量。作者通過實(shí)驗(yàn)方法,attention score具有非常明顯的長(zhǎng)尾性,少數(shù)的score比較大,大多數(shù)score很小,因此只要重點(diǎn)建模那些重要的關(guān)系即可。如果一個(gè)query和其他key的attention score接近均勻分布,那么這個(gè)query就是簡(jiǎn)單的把其他value加和求平均,意義不大。因此Informer中提出計(jì)算每個(gè)query的attention score打分分布和均勻分布的KL散度,對(duì)于重要性不大的query,key就不和這些query計(jì)算attention,形成了sparse attention的結(jié)構(gòu),帶來計(jì)算效率的大幅提升。
此外,針對(duì)時(shí)間序列任務(wù),Informer還引入了self-attention distillation,在每?jī)蓪覶ransformer之間增加一個(gè)卷積,將序列長(zhǎng)度縮減一半,進(jìn)一步減少了訓(xùn)練開銷。在Decoder階段,則采用了一次性預(yù)測(cè)多個(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的升級(jí)版本,針對(duì)時(shí)間序列問題的特性對(duì)原始Transformer進(jìn)行了一系列優(yōu)化。模型的整體結(jié)構(gòu)如下圖,核心是Series Decomposition Block模塊和對(duì)多頭注意力機(jī)制的升級(jí)Auto-Correlation Mechanism。這里推薦想詳細(xì)了解Autoformer細(xì)節(jié)的同學(xué)參考杰少的這篇文章:,整理的非常全面深入。下面給大家簡(jiǎn)單介紹一下Auroformer的各個(gè)模塊。
第一個(gè)模塊是Series Decomposition Block,這個(gè)模塊主要目的是將時(shí)間序列分解成趨勢(shì)項(xiàng)和季節(jié)項(xiàng)。在最基礎(chǔ)的時(shí)間序列分析領(lǐng)域,一個(gè)時(shí)間序列可以被視為趨勢(shì)項(xiàng)、季節(jié)項(xiàng)、周期項(xiàng)和噪聲。對(duì)于這4個(gè)因素的拆借,有加法模型、乘法模型等,其中加法模型認(rèn)為這4個(gè)因素相加構(gòu)成了當(dāng)前時(shí)間序列。本文采用了加法模型,認(rèn)為時(shí)間序列由趨勢(shì)項(xiàng)+季節(jié)項(xiàng)構(gòu)成。為了提取出季節(jié)項(xiàng),本文采用了滑動(dòng)平均法,通過在原始輸入時(shí)間序列上每個(gè)窗口計(jì)算平均值,得到每個(gè)窗口的趨勢(shì)項(xiàng),進(jìn)而得到整個(gè)序列的趨勢(shì)項(xiàng)。同時(shí),根據(jù)加法模型,將原始輸入序列減去趨勢(shì)項(xiàng),即可得到季節(jié)項(xiàng)。整個(gè)Series Decomposition Block的公式可以表示為:
模型的輸入結(jié)合Series Decomposition Block模塊。Encoder部分輸入歷史時(shí)間序列,Decoder部分的輸入包括趨勢(shì)項(xiàng)和季節(jié)項(xiàng)兩個(gè)部分。趨勢(shì)項(xiàng)由兩部分組成,一部分是歷史序列經(jīng)過Series Decomposition Block分解出的趨勢(shì)項(xiàng)的后半部分,相當(dāng)于用歷史序列近期的趨勢(shì)項(xiàng)作為Decoder的初始化;趨勢(shì)項(xiàng)的另一部分是0填充的,即目前尚不知道的未來序列的趨勢(shì)項(xiàng),用0進(jìn)行填充。季節(jié)項(xiàng)和趨勢(shì)項(xiàng)類似,也是由兩部分組成,第一部分為Encoder分解出的近期季節(jié)項(xiàng),用于初始化;第二部分為Encoder序列均值作為填充,公式如下。
Encoder部分的主要目的是對(duì)復(fù)雜的季節(jié)項(xiàng)進(jìn)行建模。通過多層的Series Decomposition Block,不斷從原始序列中提取季節(jié)項(xiàng)。這個(gè)季節(jié)項(xiàng)會(huì)作為指導(dǎo)Decoder在預(yù)測(cè)未來時(shí)季節(jié)項(xiàng)的信息。Encoder部分的公式如下,Auto-correlation代表Auto-Correlation Mechanism,我們?cè)谙旅嬖龠M(jìn)行介紹。
Decoder部分也是類似的結(jié)構(gòu),利用Encoder信息和Decoder輸入進(jìn)行預(yù)測(cè),公式如下:
第二個(gè)模塊是Auto-Correlation Mechanism,是對(duì)傳統(tǒng)Transformer在時(shí)間序列預(yù)測(cè)場(chǎng)景的升級(jí)。Auto-Correlation Mechanism的核心思路是利用時(shí)間序列的自相關(guān)系數(shù),尋找時(shí)間序列最相關(guān)的片段。時(shí)間序列的自相關(guān)系數(shù)計(jì)算時(shí)間序列和其滑動(dòng)一個(gè)步長(zhǎng)后的時(shí)間序列的相關(guān)系數(shù)。舉例來說,如果一個(gè)時(shí)間序列是以年為周期,那么序列平移365天后,原序列和平移后的序列相關(guān)系數(shù)是很高的。AutoFormer利用了這個(gè)性質(zhì),計(jì)算各個(gè)滑動(dòng)步長(zhǎng)的自相關(guān)系數(shù),并選擇相關(guān)系數(shù)top k的滑動(dòng)步長(zhǎ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)重,對(duì)V的對(duì)應(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??
在長(zhǎng)周期的時(shí)間序列預(yù)測(cè)問題中,如何平衡運(yùn)算復(fù)雜度以及縮短兩個(gè)時(shí)間點(diǎn)之間的交互距離一直是研究的焦點(diǎn)(如下表為各個(gè)模型的運(yùn)算復(fù)雜度及兩點(diǎn)最長(zhǎng)路徑)。RNN、CNN這種模型對(duì)于輸入長(zhǎng)度為L(zhǎng)的序列,兩個(gè)時(shí)間點(diǎn)的最長(zhǎng)路徑為L(zhǎng),在長(zhǎng)周期中節(jié)點(diǎn)之間信息交互比較困難。而Transformer引入了Attention機(jī)制,讓兩兩節(jié)點(diǎn)之間可以直接交互,但是提升了時(shí)間復(fù)雜度。
本文提出了一種樹形結(jié)構(gòu)的Transformer,用于解決長(zhǎng)周期時(shí)間序列預(yù)測(cè)問題。從下到上,時(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ù)測(cè)時(shí),一種是把經(jīng)過上述編碼得到的表示直接接全連接映射到預(yù)測(cè)空間。另一種方法是使用一個(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ù)測(cè)時(shí),經(jīng)常會(huì)出現(xiàn)預(yù)測(cè)的數(shù)據(jù)分布和真實(shí)分布存在比較大的gap。這主要是由于Transformer在進(jìn)行預(yù)測(cè)每個(gè)時(shí)間點(diǎn)是獨(dú)立的利用attention預(yù)測(cè)的,這個(gè)過程中可能會(huì)忽略時(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)問題主要方法是,對(duì)時(shí)間序列數(shù)據(jù)做一些諸如歸一化等平穩(wěn)化處理。例如對(duì)每個(gè)序列樣本使用z-normalization處理成0均值1方差的,這樣就可以解決不同時(shí)間步的樣本統(tǒng)計(jì)量不一致的問題。但是這種解決方法會(huì)對(duì)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è)是對(duì)輸入序列的歸平穩(wěn)化處理的預(yù)測(cè)結(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。對(duì)于每個(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ù)測(cè)和時(shí)序表示學(xué)習(xí)新方法,將時(shí)間序列數(shù)據(jù)轉(zhuǎn)換成類似Vision Transformer中的patch形式,取得非常顯著的效果。
本文提出的Transformer多元時(shí)間序列預(yù)測(cè)模型,核心思路為以下2點(diǎn):
- Patching:原來的時(shí)間序列預(yù)測(cè)方法都是每個(gè)time step輸入到模型中,這種方式一方面在歷史序列比較長(zhǎng)的時(shí)候運(yùn)行效率太低,導(dǎo)致無法引入更長(zhǎng)的歷史序列信息;另一方面每個(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ù)測(cè)中,各個(gè)變量之間的關(guān)系也很重要。之前的解法,主要是將每個(gè)時(shí)間步的多元變量壓縮成一個(gè)embedding(如下圖中的b),再進(jìn)行時(shí)間維度的attention。這種方法的問題是缺少對(duì)不同變量之間關(guān)系的建模。因?yàn)闀r(shí)間序列不同變量的含義是不同的,每個(gè)變量應(yīng)該在哪個(gè)時(shí)間片段進(jìn)行對(duì)齊無法提前預(yù)知,直接每個(gè)時(shí)間步融合的方式顯然太粗糙了。
基于以上考慮,本文對(duì)Transformer在多元時(shí)間序列預(yù)測(cè)的應(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)。
