用于時(shí)間序列預(yù)測(cè)的最佳深度學(xué)習(xí)模型總結(jié)(1)
時(shí)間序列預(yù)測(cè)在最近兩年內(nèi)發(fā)生了巨大的變化,尤其是在kaiming的MAE出現(xiàn)以后,現(xiàn)在時(shí)間序列的模型也可以用類似MAE的方法進(jìn)行無(wú)監(jiān)督的預(yù)訓(xùn)練。
Makridakis M-Competitions系列(分別稱為M4和M5)分別在2018年和2020年舉辦(M6也在今年舉辦了)。對(duì)于那些不了解的人來(lái)說(shuō),m系列得比賽可以被認(rèn)為是時(shí)間序列生態(tài)系統(tǒng)的一種現(xiàn)有狀態(tài)的總結(jié),為當(dāng)前得預(yù)測(cè)的理論和實(shí)踐提供了經(jīng)驗(yàn)和客觀的證據(jù)。
2018年M4的結(jié)果表明,純粹的“ ML”方法在很大程度上勝過(guò)傳統(tǒng)的統(tǒng)計(jì)方法,這在當(dāng)時(shí)是出乎意料的。在兩年后的M5[1]中,最的高分是僅具有“ ML”方法。并且所有前50名基本上都是基于ML的(大部分是樹型模型)。這場(chǎng)比賽看到了LightGBM(用于時(shí)間序列預(yù)測(cè))以及Amazon's Deepar [2]和N-Beats [3]的首次亮相。N-Beats模型于2020年發(fā)布,并且優(yōu)于M4比賽的獲勝者3%!
最近的 Ventilator Pressure Prediction比賽展示了使用深度學(xué)習(xí)方法來(lái)應(yīng)對(duì)實(shí)時(shí)時(shí)間序列挑戰(zhàn)的重要性。比賽的目的是預(yù)測(cè)機(jī)械肺內(nèi)壓力的時(shí)間順序。每個(gè)訓(xùn)練實(shí)例都是自己的時(shí)間序列,因此任務(wù)是一個(gè)多個(gè)時(shí)間序列的問題。獲勝團(tuán)隊(duì)提交了多層深度架構(gòu),其中包括LSTM網(wǎng)絡(luò)和Transformer 塊。
在過(guò)去的幾年中,許多著名的架構(gòu)已經(jīng)發(fā)布,如MQRNN和DSSM。所有這些模型都利用深度學(xué)習(xí)為時(shí)間序列預(yù)測(cè)領(lǐng)域貢獻(xiàn)了許多新東西。除了贏得Kaggle比賽,還給我們帶來(lái)了更多的進(jìn)步比如:
多功能性:將模型用于不同任務(wù)的能力。
MLOP:在生產(chǎn)中使用模型的能力。
解釋性和解釋性:黑盒模型并不那么受歡迎。
本文討論了5種專門研究時(shí)間序列預(yù)測(cè)的深度學(xué)習(xí)體系結(jié)構(gòu),論文是:
N-BEATS (ElementAI)
DeepAR (Amazon)
Spacetimeformer [4]
Temporal Fusion Transformer or TFT (Google) [5]
TSFormer(時(shí)間序列中的MAE)[7]
N-BEATS
這種模式直接來(lái)自于(不幸的)短命的ElementAI公司,該公司是由Yoshua Bengio聯(lián)合創(chuàng)立的。頂層架構(gòu)及其主要組件如圖1所示:
N-BEATS是一個(gè)純粹的深度學(xué)習(xí)架構(gòu),它基于集成前饋網(wǎng)絡(luò)的深度堆棧,這些網(wǎng)絡(luò)也通過(guò)正向和反向的相互連接進(jìn)行堆疊。
每一個(gè)塊只對(duì)由前一個(gè)的backcast產(chǎn)生的殘差進(jìn)行建模,然后基于該誤差更新預(yù)測(cè)。該過(guò)程模擬了擬合ARIMA模型時(shí)的Box-Jenkins方法。
以下是該模型的主要優(yōu)勢(shì):
表達(dá)性強(qiáng)且易于使用:該模型易于理解,具有模塊化結(jié)構(gòu),它被設(shè)計(jì)為需要最小的時(shí)間序列特征工程并且不需要對(duì)輸入進(jìn)行縮放。
該模型具有對(duì)多個(gè)時(shí)間序列進(jìn)行概括的能力。換句話說(shuō),分布略有不同的不同時(shí)間序列可以用作輸入。在N-BEATS中是通過(guò)元學(xué)習(xí)實(shí)現(xiàn)的。元學(xué)習(xí)過(guò)程包括兩個(gè)過(guò)程:內(nèi)部學(xué)習(xí)過(guò)程和外部學(xué)習(xí)過(guò)程。內(nèi)部學(xué)習(xí)過(guò)程發(fā)生在塊內(nèi)部,并幫助模型捕獲局部時(shí)間特征。外部學(xué)習(xí)過(guò)程發(fā)生在堆疊層,幫助模型學(xué)習(xí)所有時(shí)間序列的全局特征。
雙重殘差疊加:殘差連接和疊加的想法是非常巧妙的,它幾乎被用于每一種類型的深度神經(jīng)網(wǎng)絡(luò)。在N-BEATS的實(shí)現(xiàn)中應(yīng)用了相同的原理,但有一些額外的修改:每個(gè)塊有兩個(gè)殘差分支,一個(gè)運(yùn)行在回看窗口(稱為backcast),另一個(gè)運(yùn)行在預(yù)測(cè)窗口(稱為forecast)。
每一個(gè)連續(xù)的塊只對(duì)由前一個(gè)塊重建的backcast產(chǎn)生的殘差進(jìn)行建模,然后基于該誤差更新預(yù)測(cè)。這有助于模型更好地逼近有用的后推信號(hào),同時(shí)最終的堆棧預(yù)測(cè)預(yù)測(cè)被建模為所有部分預(yù)測(cè)的分層和。就是這個(gè)過(guò)程模擬了ARIMA模型的Box-Jenkins方法。
可解釋性:模型有兩種變體,通用的和可解釋性的。在通用變體中,網(wǎng)絡(luò)任意學(xué)習(xí)每個(gè)塊的全連接層的最終權(quán)值。在可解釋的變體中,每個(gè)塊的最后一層被刪除。然后將后推backcast和預(yù)測(cè)forecast分支乘以模擬趨勢(shì)(單調(diào)函數(shù))和季節(jié)性(周期性循環(huán)函數(shù))的特定矩陣。
注意:原始的N-BEATS實(shí)現(xiàn)只適用于單變量時(shí)間序列。
結(jié)合深度學(xué)習(xí)和自回歸特性的新穎時(shí)間序列模型。圖2顯示了DeepAR的頂層架構(gòu):
以下是該模型的主要優(yōu)勢(shì):
DeepAR在多個(gè)時(shí)間序列上工作得非常好:通過(guò)使用多個(gè)分布略有不同的時(shí)間序列來(lái)構(gòu)建全局模型。也適用于許多現(xiàn)實(shí)場(chǎng)景。例如電力公司可能希望為每個(gè)客戶推出電力預(yù)測(cè)服務(wù),每個(gè)客戶都有不同的消費(fèi)模式(這意味著不同的分布)。
除了歷史數(shù)據(jù),DeepAR還允許使用已知的未來(lái)時(shí)間序列(自回歸模型的一個(gè)特點(diǎn))和額外的靜態(tài)屬性。在前面提到的電力需求預(yù)測(cè)場(chǎng)景中,一個(gè)額外的時(shí)間變量可以是月份(作為一個(gè)整數(shù),值在1-12之間)。假設(shè)每個(gè)客戶都與一個(gè)測(cè)量功耗的傳感器相關(guān)聯(lián),那么額外的靜態(tài)變量將是sensor_id或customer_id之類的東西。
如果莫熟悉使用MLPs和rnn等神經(jīng)網(wǎng)絡(luò)架構(gòu)進(jìn)行時(shí)間序列預(yù)測(cè),那么一個(gè)關(guān)鍵的預(yù)處理步驟是使用標(biāo)準(zhǔn)化或標(biāo)準(zhǔn)化技術(shù)對(duì)時(shí)間序列進(jìn)行縮放。這在DeepAR中是不需要手動(dòng)操作的,因?yàn)榈讓拥哪P蛯?duì)每個(gè)時(shí)間序列i的自回歸輸入z進(jìn)行縮放,縮放因子為v_i,即該時(shí)間序列的平均值。具體而言,論文基準(zhǔn)中使用的比例因子方程如下:
但是在實(shí)踐中,如果目標(biāo)時(shí)間序列的大小差異很大,那么在預(yù)處理過(guò)程中應(yīng)用自己的縮放還是很有必要的。例如,在能源需求預(yù)測(cè)場(chǎng)景中,數(shù)據(jù)集可以包含中壓電力客戶(例如小工廠,按兆瓦單位消耗電力)和低壓客戶(例如家庭,按千瓦單位消耗電力)。
DeepAR進(jìn)行概率預(yù)測(cè),而不是直接輸出未來(lái)值。這是以蒙特卡洛樣本的形式完成的。這些預(yù)測(cè)被用來(lái)計(jì)算分位數(shù)預(yù)測(cè),通過(guò)使用分位數(shù)損失函數(shù)。對(duì)于那些不熟悉這種損失類型的人,分位數(shù)損失不僅用來(lái)計(jì)算一個(gè)估計(jì),而且用來(lái)計(jì)算圍繞該值的預(yù)測(cè)區(qū)間。
在單變量時(shí)間序列中時(shí)間依賴性是最重要的。但是在多個(gè)時(shí)間序列場(chǎng)景中,事情就沒那么簡(jiǎn)單了。例如假設(shè)我們有一個(gè)天氣預(yù)報(bào)任務(wù),想要預(yù)測(cè)五個(gè)城市的溫度。讓我們假設(shè)這些城市屬于一個(gè)國(guó)家。鑒于目前所看到的,我們可以使用DeepAR并將每個(gè)城市作為外部靜態(tài)協(xié)變量進(jìn)行建模。
換句話說(shuō),該模型將同時(shí)考慮時(shí)間和空間關(guān)系。這便是Spacetimeformer的核心理念:使用一個(gè)模型來(lái)利用這些城市/地點(diǎn)之間的空間關(guān)系,從而學(xué)習(xí)額外的有用依賴,因?yàn)槟P蛯⑼瑫r(shí)考慮時(shí)間和空間關(guān)系。
顧名思義,這種模型在內(nèi)部使用了基于transformers的結(jié)構(gòu)。在使用基于transformers的模型進(jìn)行時(shí)間序列預(yù)測(cè)時(shí),一種流行的產(chǎn)生時(shí)間感知嵌入的技術(shù)是通過(guò)Time2Vec[6]嵌入層傳遞輸入(對(duì)于NLP任務(wù)是使用位置編碼向量來(lái)代替Time2Vec)。雖然這種技術(shù)對(duì)于單變量時(shí)間序列非常有效,但對(duì)于多變量時(shí)間輸入?yún)s沒有任何意義??赡苁窃谡Z(yǔ)言建模中,句子中的每個(gè)單詞都用嵌入表示,單詞本質(zhì)上是一個(gè)是詞匯表的一部分,而時(shí)間序列則沒那么簡(jiǎn)單。
在多元時(shí)間序列中,在給定的時(shí)間步長(zhǎng)t,輸入的形式為x_1,t, x2,t, x_m,t其中x_i,t是特征i的數(shù)值,m是特征/序列的總數(shù)。如果我們將輸入通過(guò)一個(gè)Time2Vec層,將產(chǎn)生一個(gè)時(shí)間嵌入向量。這種嵌入真正代表什么?答案是它將把整個(gè)輸入集合表示為單個(gè)實(shí)體(令牌)。因此模型將只學(xué)習(xí)時(shí)間步之間的時(shí)間動(dòng)態(tài),但將錯(cuò)過(guò)特征/變量之間的空間關(guān)系。
Spacetimeformer解決了這個(gè)問題,它將輸入扁平化為一個(gè)大向量,稱為時(shí)空序列。如果輸入包含N個(gè)變量,組織成T個(gè)時(shí)間步,則生成的時(shí)空序列將具有(NxT)標(biāo)記。下圖3更好地顯示了這一點(diǎn):
論文指出:“(1)包含時(shí)間信息的多元輸入格式。****輸入缺少(“?”)值,在進(jìn)行預(yù)測(cè)時(shí)設(shè)置為零。(2)時(shí)間序列通過(guò)一個(gè)Time2Vec層,生成一個(gè)代表周期性輸入模式的頻率嵌入。(3)二進(jìn)制嵌入表示該值是作為上下文給出的還是需要預(yù)測(cè)的。(4)將每個(gè)時(shí)間序列的整數(shù)索引映射到一個(gè)具有查找表嵌入的“空間”表示。(5)利用前饋層投影每個(gè)時(shí)間序列的Time2Vec嵌入和變量值。(6)將值和時(shí)間,變量和給定的嵌入求和會(huì)導(dǎo)致使MSA在時(shí)間和可變空間之間以更長(zhǎng)的序列作為輸入。
換句話說(shuō),最后的序列編碼了一個(gè)包含了時(shí)間、空間和上下文信息統(tǒng)一的嵌入。但是這種方法的一個(gè)缺點(diǎn)是,序列可能會(huì)變得很長(zhǎng)導(dǎo)致資源的二次增長(zhǎng)。這是因?yàn)楦鶕?jù)注意機(jī)制,每個(gè)令牌都要對(duì)另一個(gè)進(jìn)行檢查。作者使用了一種更有效的體系結(jié)構(gòu),稱為Performer注意機(jī)制,適用于更大的序列。
Temporal Fusion Transformer(TFT)是由Google發(fā)布的基于Transformer的時(shí)間序列預(yù)測(cè)模型。TFT比以前的模型更加通用。
TFT的頂層架構(gòu)如圖4所示。以下是該模型的主要優(yōu)勢(shì):
與前面提到的模型一樣,TFT支持在多個(gè)異構(gòu)時(shí)間序列上構(gòu)建模型。
TFT支持三種類型的特征:i)具有已知的未來(lái)輸入的時(shí)變數(shù)據(jù)ii)僅到目前為止已知的時(shí)變數(shù)據(jù)iii)分類/靜態(tài)變量,也被稱為時(shí)不變特征。因此TFT比以前的型號(hào)更通用。在前面提到的電力需求預(yù)測(cè)場(chǎng)景中,我們希望使用濕度水平作為一個(gè)時(shí)變特征,這是到目前為止才知道的。這在TFT中是可行的,但在DeepAR中不行。
圖5顯示了如何使用所有這些特性的示例:
TFT非常強(qiáng)調(diào)可解釋性。具體地說(shuō),通過(guò)利用Variable Selection組件(如上圖4所示),模型可以成功地度量每個(gè)特性的影響。因此可以說(shuō)模型學(xué)習(xí)了特性的重要性。
另一方面,TFT提出了一種新的可解釋的多頭注意機(jī)制:該層的注意權(quán)重可以揭示在回顧期間哪些時(shí)間步是最重要的。這些權(quán)重的可視化可以揭示整個(gè)數(shù)據(jù)集中最顯著的季節(jié)模式。
預(yù)測(cè)區(qū)間:與DeepAR類似,TFT通過(guò)使用分位數(shù)回歸輸出預(yù)測(cè)區(qū)間和預(yù)測(cè)值。
綜上所述,深度學(xué)習(xí)無(wú)疑徹底改變了時(shí)間序列預(yù)測(cè)的格局。上述所有模型除了無(wú)與倫比的性能之外,還有一個(gè)共同點(diǎn):它們充分利用多重、多元的時(shí)間數(shù)據(jù),同時(shí)它們使用外生信息,將預(yù)測(cè)性能提高到前所未有的水平。但是在自然語(yǔ)言處理(NLP)任務(wù)中多數(shù)都利用了預(yù)訓(xùn)練的模型。NLP任務(wù)的feed大多是人類創(chuàng)造的數(shù)據(jù),充滿了豐富而優(yōu)秀的信息,幾乎可以看作是一個(gè)數(shù)據(jù)單元。在時(shí)間序列預(yù)測(cè)中,我們可以感覺到缺乏這種預(yù)先訓(xùn)練的模型。為什么我們不能像在NLP中那樣在時(shí)間序列中利用這個(gè)優(yōu)勢(shì)呢?
這就引出了我們要介紹的最后一個(gè)模型TSFormer,該模型考慮了兩個(gè)視角,我們講從輸入到輸出將其為四個(gè)部分,并且提供Python的實(shí)現(xiàn)代碼(官方也提供了),這個(gè)模型是剛剛發(fā)布不久的,所以我們才在這里著重介紹它。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。