摘要
多步(尺度)預測通常包含一個復雜的輸入組合——包括靜態(tài)(即時不變)協(xié)變量惊窖、已知的未來輸入,以及其他僅在過去觀察到的外生時間序列——沒有任何關于它們?nèi)绾闻c目標相互作用的先驗信息厘贼。幾種深度學習方法已經(jīng)被提出界酒,但它們通常是“黑盒”模型,并不能闡明它們?nèi)绾问褂脤嶋H場景中出現(xiàn)的全部輸入嘴秸。在本文中毁欣,我們介紹了時間融合變壓器(TFT)——一種新的基于注意的架構(gòu),它結(jié)合了高性能的多步預測和對時間動態(tài)的可解釋的洞察力岳掐。為了學習不同尺度上的時間關系凭疮,TFT使用循環(huán)層進行局部處理,并使用可解釋的自我注意層進行長期依賴串述。TFT利用專門的組件來選擇相關的特性和一系列的門控層來抑制不必要的組件执解,從而在廣泛的場景中實現(xiàn)高性能。
歷史瓶頸
在時序多步預測任務中纲酗,DNN面臨以下兩個挑戰(zhàn):
1. 如何利用多個數(shù)據(jù)源衰腌? ? ?? 2. 如何解釋模型的預測結(jié)果?
1. 如何利用多個數(shù)據(jù)源觅赊?
如上圖桶唐,在時間序列預測中,所有的變量都劃分為兩個大類:
1茉兰、靜態(tài)變量尤泽;
2、動態(tài)變量
(1)靜態(tài)變量(Static Covariates):不會隨時間變化的變量规脸,例如商店位置;
(2)時變變量(Time-dependent Inputs):隨時間變化的變量;
●過去觀測的時變變量(Past-observed Inputs):過去可知坯约,但未來不可知,例如歷史客流量
●先驗已知未來的時變變量(Apriori-known Future Inputs):過去和未來都可知莫鸭,例如節(jié)假日闹丐;
靜態(tài)變量可以細分為:
再細分可以劃分為靜態(tài)連續(xù)變量和靜態(tài)離散變量,靜態(tài)離散變量很好理解被因,例如商品所在的城市卿拴,商品的大類衫仑,商品所在銷售區(qū)域等等,這些變量都是不會隨著時間發(fā)生變化的堕花,而靜態(tài)連續(xù)變量文狱,例如,商品A在2020年的年總銷售金額缘挽,商品B在2021年雙十一期間的銷量等瞄崇,這些不會隨著時間變化的變量都是靜態(tài)變量,或者說壕曼,靜態(tài)特征(這里需要注意定義苏研,如果說的是前一年銷量,則是一個動態(tài)變量腮郊,因為時間點和取值是會發(fā)生變化的摹蘑,真特么繞);
動態(tài)變量分為兩種(論文里的圖沒有畫的特別詳細轧飞,所以看后面的地方會比較疑惑)
1纹蝴、動態(tài)時變變量;
2踪少、動態(tài)時不變變量
(當然,動態(tài)時變和時不變的變量中也都包含了連續(xù)和離散型的features,不過這個很好區(qū)分糠涛,下面的描述主要還是從時變和時不變展開來看的)
所謂動態(tài)時變量指的就是隨著時間變化的特征援奢,例如我們要預測的銷售金額,明天的客流量忍捡,網(wǎng)頁的pv集漾,uv等等;動態(tài)時不變變量也是隨著時間變化的特征砸脊,例如月份具篇,星期幾,那么二者的區(qū)別是什么凌埂?
二者的核心區(qū)別在于是否可以推斷出來驱显,動態(tài)時變變量是無法推斷的,比如在經(jīng)典的溫度預測的例子里瞳抓,溫度埃疫,濕度杭煎,氣壓這些都是無法推斷的域滥,隨著時間變化的携取,我們無法事先知道的择份。而動態(tài)時不變變量疆股,最典型的就是月份贯卦,星期幾了麸粮,這些變量他們雖然也是隨著時間變化的慧脱,但是我們是可以輕而易舉的進行推斷從而應用到模型訓練的過程中。
常規(guī)的向量輸出的深度學習模型在訓練的過程中是不會用到未來的特征的仅炊,即使是靜態(tài)特征斗幼,例如我們用歷史的30天的銷量數(shù)據(jù)預測未來10天的銷量數(shù)據(jù),我們在模型訓練的過程中不會用到未來十天的任何特征茂洒。
而很多RNN結(jié)構(gòu)的變體模型孟岛,還有Transformer的變體模型,很少在多步預測任務上督勺,認真考慮怎么去利用不同數(shù)據(jù)源的輸入渠羞,只是簡單把靜態(tài)變量和時變變量合并在一起,但其實針對不同數(shù)據(jù)源去設計網(wǎng)絡智哀,會給模型帶來提升次询。
因為無論是tcn,wavenet瓷叫,nbeats屯吊,deepar,LSTM摹菠,seq2seq based model 或者是attention-based model 或是transformer盒卸,我們在構(gòu)建模型的時候,都是將所有的特征按照time step 直接concat在一起次氨,也就是說蔽介,目前現(xiàn)有的處理方式基本上就是“萬物皆時序”,將所有的變量全部都擴展到所有的時間步煮寡,無論是靜態(tài)虹蓄,動態(tài)的變量都合并在一起送入模型,文中提到如果模型能夠?qū)o態(tài)和動態(tài)變量加以區(qū)分幸撕,能夠進一步提升模型的泛化性能(存疑薇组,不一定吧?)坐儿。其實如果有關注時序比賽的話律胀,可以看看top solutions里關于nn的代碼,基本上大家都是直接把所有變量一起放到模型里traing的貌矿,而不區(qū)分靜態(tài)累铅,動態(tài),或者動態(tài)時變 or 動態(tài)時不變站叼。
2. 如何解釋模型的預測結(jié)果娃兽?
除了不考慮常見的多步預測輸入的異質(zhì)性之外,大多數(shù)當前架構(gòu)都是" 黑盒" 模型尽楔,預測結(jié)果是由許多參數(shù)之間的復雜非線性相互作用控制而得到的投储。這使得很難解釋模型如何得出預測第练,進而讓使用者難以信任模型的輸出,并且模型構(gòu)建者也難對癥下藥去Debug模型玛荞。不幸的是娇掏,DNN常用的可解釋性方法不適合應用于時間序列。在它們的傳統(tǒng)方法中勋眯,事后方法(Post-hoc Methods)婴梧,例如LIME和SHAP不考慮輸入特征的時間順序。另一方面客蹋,像Transformer架構(gòu)塞蹭,它的自相關模塊更多是能回答“哪些時間點比較重要?”讶坯,而很難回答“該時間點下番电,哪些特征更重要?”辆琅。
論文貢獻
本文提出的TFT模型有如下貢獻:
1. 靜態(tài)協(xié)變量編碼器:可以編碼上下文向量漱办,提供給網(wǎng)絡其它部分;
2. 門控機制和樣本維度的特征選擇:最小化無關輸入的貢獻婉烟;
3. sequence-to-sequence層:局部處理時變變量(包括過去和未來已知的時變變量)娩井;
4. 時間自注意解碼器:用于學習數(shù)據(jù)集中存在的長期依賴性。這也有助于模型的可解釋性似袁,TFT支持三種有價值的可解釋性用例洞辣,幫助使用者識別:
● 全局重要特征;
● 時間模式叔营;
● 重要事件。
模型
我們設計了時間融合轉(zhuǎn)換器(TFT)所宰,使用規(guī)范組件為每個輸入類型(即靜態(tài)绒尊、已知輸入、觀察輸入)高效地構(gòu)建特征表示仔粥,使其能夠在廣泛的問題上獲得高預測性能婴谱。TFT的主要組成部分是:
(1)控制機制,跳過架構(gòu)中任何未使用的組件躯泰,提供自適應深度和網(wǎng)絡復雜性谭羔,以適應大范圍的數(shù)據(jù)集和場景。門控線性單元在整個體系結(jié)構(gòu)中得到了廣泛的應用麦向,門控剩余網(wǎng)絡被提出作為主要的構(gòu)建模塊瘟裸。
(2)變量選擇網(wǎng)絡,在每個時間步選擇相關的輸入變量诵竭。
(3)靜態(tài)協(xié)變量編碼器话告,通過對上下文向量進行編碼兼搏,以條件時間動態(tài),將靜態(tài)特征融入到網(wǎng)絡中沙郭。
(4)時間處理佛呻,學習長期和短期的時間關系,同時自然地處理觀察到的和先驗知道的時變輸入病线。一個序列-序列層被用于局部特征處理吓著,而長期依賴關系被捕獲使用一個新的可解釋的多頭注意塊。
(5)多水平預測區(qū)間預測送挑,在每個預測水平產(chǎn)生分位數(shù)預測
下圖顯示了TFT的高級體系結(jié)構(gòu)绑莺,后面的部分將詳細描述各個組件。模型的開源實現(xiàn)也可以在GitHub1上找到让虐,完全可復制紊撕。
google-research/tft at master · google-research/google-research · GitHub
總結(jié)一下,GRN用了skip-connection和GLU赡突,主要是控制線性和非線性特征的特征信息的貢獻(Gate+Add&Norm)对扶,特別是加入靜態(tài)協(xié)變量c,去引導模型的學習惭缰。VSN是配合GRN和softmax浪南,進行特征選擇。TFD中的多頭自關注模塊提供了可解釋性和時序長依賴關系的捕捉能力漱受。
新認識:
2. VSN軟性的特征(變量)選擇络凿;
3. GRN作線性特征與非線性特征的融合,對非線性變量作篩選昂羡。其中這里用的殘差絮记,類似教師機制,對模型的訓練很有效果虐先、以及使用GLU來作門限組件怨愤,起到了特征選擇的作用,與TabNet相似蛹批、以及ELU激活函數(shù)撰洗,比relu效果更好,小于0的部分不會出現(xiàn)梯度消失的情況腐芍,呈指數(shù)形式差导。
4. TSL中,多頭注意力機制的使用:可解釋性多頭自關注層比較好理解(與Transformer不同之處)猪勇,它其實就是針對V是多頭共享參數(shù)设褐,對Q和K是多頭獨立參數(shù),然后計算多頭attention score加權(quán)后的V,
5. 預測分位數(shù):
除了像DeepAR預測均值和標準差络断,然后對預測目標做高斯采樣后裁替,做分位數(shù)統(tǒng)計。
分位數(shù)損失函數(shù):
當q取越大貌笨,使得loss更小弱判,相較y越大;當q取越小锥惋,欲使得loss更小昌腰,
相較y越小。
由于q取90%膀跌,訓練時遭商,模型會越來越趨向于預測出大的數(shù)字,這樣Loss下降的更快捅伤,則模型的整個擬合的超平面會向上移動劫流,這樣便能很好的擬合出目標變量的90分位數(shù)值。
我們對于未來的預測就能夠產(chǎn)生 prediction intervals了丛忆,可以比較好的反應預測結(jié)果的不確定性祠汇,比如某個點的不同分位數(shù)線性回歸的預測結(jié)果很接近,則其prediction intervals很窄熄诡,預測的確定性高可很,反之亦然。
創(chuàng)新點
對時序模型的輸入進行了分類凰浮。文章提出的分類方式是從模型視角出發(fā)我抠,對不同預測任務輸入的特征作了抽象的歸類。
指出了探索不同數(shù)據(jù)源交互信息的重要性袜茧。這一點也可以說是用深度學習作預測的重要性菜拓,因為深度學習模型的優(yōu)點在于捕捉非線性關系,這種關系在真實的系統(tǒng)中大量存在笛厦。
強調(diào)了時序預測可解釋性的重要性纳鼎。時序預測無法像推薦算法、圖像算法那樣直接產(chǎn)生收益递递,更多起到輔助決策的作用喷橙,在利益方牽涉較廣的電力啥么、交通登舞、經(jīng)濟、金融系統(tǒng)中悬荣,黑盒模型始終缺乏說服力菠秒。
消融實驗
另外作者對網(wǎng)絡模塊做了消融實驗,如圖12。從下圖右側(cè)践叠,我們能看到Self-Attention和Local Processing(LSTM層)貢獻最大言缤,但不同數(shù)據(jù)集上,兩者的貢獻大小并不絕對禁灼,比如對于Traffic數(shù)據(jù)集管挟,Local Processing更重要,作者認為是Traffic數(shù)據(jù)集得目標歷史觀測值更重要弄捕,所以Local Processing發(fā)揮了更大的作用僻孝。而對于Eelectricity數(shù)據(jù)集,Self-Attention更重要守谓,作者認為是電力的周期性明顯穿铆,hour-of-day特征甚至比預測目標Power Usage的歷史觀測值更重要,所以自關注發(fā)揮作用更大斋荞。
對TFT的解釋性荞雏,作者從3方面進行展示:(1)檢查每個輸入變量在預測中的重要性,(2)可視化長期的時間模式平酿,以及(3)識別導致時間動態(tài)發(fā)生重大變化的任何狀態(tài)或事件凤优。