时序预测:从两篇高影响力的论文谈起
未來可以預測嗎?
本文從兩篇高影響力的時序預測文章談起,其中一篇是18年放在arXiv上的文章,文中總結性地提出了時序卷積網絡(TCN: Temporal Convolutional Network),短短兩三年引用數已經破千,TCN作為一種基準方法被廣泛應用于各種時序預測問題。
另外一篇發表在今年人工智能領域的頂會AAAI上,在9000多篇投稿中脫穎而出獲得最佳論文獎(三篇之一),GitHub上線短短幾個月星標就已經破千。
這兩篇文章都聚焦在時間序列預測這個非常有意義的“水晶球”問題:給定過去一段時間對某些變量的觀測值,提取數據特征用以預測未來事件。該問題的應用不勝枚舉,比如說對天氣、自然災害、能源消耗、交通流量的預測;股票、期貨市場、比特幣的漲跌等等。對未來的預測直接影響到我們現在所能采取的行動決策,預測的準確程度也因此決定了我們當前決策的得失,意義重大!拿最近席卷全球的Covid-19疫情來說,如果能對疫情傳播進行準確的時序建模與預測,應對措施就能做的更合理,減少人員的傷亡,降低對經濟的影響。
然而,問題意義重大并不代表在科研上還有得做,意義大的問題做的人也多,很可能已經做到頭,也因此就沒什么科研價值了。咱們之前提到過,在決定動手之前要先考慮問題的基線和極限,想要知道基線在哪兒就需要調研literature,搞清楚state-of-the-art做到什么程度了,想要知道極限就要考慮可能達到的最好結果是什么,如果兩者之間有足夠的差距,那這個問題就還值得去做,下面咱們就來檢驗一下。
時序預測問題的基線和極限
時序預測這個領域的工作與很多其他領域類似,我們可以按“深度學習”方法的引入作為分界線。在此之前的方法是傳統的時序建模方法,比如移動平均、自回歸、以及結合差分的ARIMA模型等,有著悠久的歷史以及基于理論基礎的可解釋性。但是,這類方法一般要求時間序列是平穩的,而且對于多變量協同預測要做很多人工處理,因此主要適用于小規模單變量的時序預測問題。在當前的大數據應用場景下,用深度神經網絡粗暴的自動提取特征,雖然丟失了可解釋性,但性能遠超傳統方法。
使用神經網絡對于序列信息進行建模的經典方法是循環神經網絡(RNN: Recurrent Neural Network)及其各種變種(LSTM: Long Short-Term Memory、GRU: Gated Recurrent Unit)。然而,RNN的訓練難以并行化,而且對于長序列建模面臨梯度消失和梯度爆炸等問題。2017年基于自注意力機制的Transformer架構橫空出世,Google展示了它在機器翻譯領域的絕佳性能。自此以后,無數文章前仆后繼把Transformer用于各種序列信息建模,把所有之前用到RNN的問題都洗了幾遍,把SOTA性能刷的也是死去活來。這一兩年來,Transformer也開始對CNN相關問題下手,刷榜還在如火如荼地進行中,這是題外話,這里就不展開說了。
Tranformer確實在序列建模方面性能出色,但也有個重大弱點,那就是復雜度非常高,對計算和存儲資源的消耗極大,速度也比較慢。因此近年來有很多工作嘗試在對性能影響不大的前提下降低復雜度,本文提到的Informer就是這樣一個工作。具體而言,Informer提出一種新的自注意力機制ProbSparse以及自注意力蒸餾模塊,將計算復雜度和存儲需求從O(L2)降到O(LlogL),并將其應用于長時序列的預測,這里L是預測時考慮的歷史信息長度。
由于這篇文章report的結果是state-of-the-art,而且在AAAI上斬獲大獎,自然是要作為目前研究的基線來看待。文章作者開源了他們的代碼并且持續有更新,因此很容易獲取基線結果。對于時序預測問題,我們可以把Ground Truth看做是終極的hard極限,先來看看二者之間的差距。
Informer文中給出的結果主要是均方根誤差以及平均絕對誤差等根據訓練集的均值和方差做歸一化后的結果,從數字本身很難感知誤差到底有多少。因此,我們做了些可視化來觀察具體的預測質量。我們可視化的是ETT-H1這個數據集,共有7個變量,采用的Informer模型是用過去的96小時數據來預測未來48小時數據的模型,我們先統計了在不同變量下的最小誤差、最大誤差以及平均值,從最小誤差的序列開始可視化。
然而可視化的結果有些讓我們目瞪口呆,因為即使是誤差最小的序列,其預測值與真值也相距甚遠!因此不得不強迫學生仔細檢查多遍,應該是沒有什么錯誤。
我們挑了兩段Informer模型表現還算可以的測試序列進行可視化,如下圖所示。左圖顯示的是測試集第1389個序列的第1個變量的結果;右圖則是測試集第441個序列上第5個變量的結果(此序列是2832個測試序列中Informer均方根誤差最低的結果)。
對于序列信息建模除了使用RNN或者Transformer,也可以使用卷積神經網絡CNN,這里的代表性工作就是前面提到的TCN。由于Informer這篇文章并沒有跟TCN的結果做比較,我們用TCN模型跑了同樣的數據,得到的結果如下圖所示。
可以看到,事實上TCN的結果比Informer要好不少,但也跟真值有著顯著差距。顯然,目前的基線結果跟hard極限有著巨大的gap,那是不是因為問題本身可達到的極限結果就很低呢?
這當然是有可能的,假設某個時序信號是單純的噪聲,那么,我們不可能學習到可以用于預測的特征。此外,對于極其復雜的時序數據比如說高頻交易,由于影響的因素過多,問題過于復雜,沒有任何公開的方法能夠通過時序預測獲取穩定的收益,悶聲發大財的有沒有就不清楚了?…?
遺憾的是,目前還沒有什么理論支撐我們來計算可能達到的最好時序預測結果。與此同時,從肉眼觀測來看,Informer文章使用的這幾個數據集確實相對很多其他時序預測數據集要復雜不少,但我們還是能看到些周期性和趨勢,而無論是Informer還是TCN,在很多情況下并沒有很好地捕捉到這些特征。因此,我們猜測這個問題還是有很大的提升空間,是個值得嘗試的高價值科研問題。
從哪兒入手?
確定了科研問題之后,接下來就要仔細分析問題本身的特性以及現有基線方法的優劣之處,或者針對其不足之處對癥下藥,或者另辟蹊徑來擊潰之。
首先,時間序列是一種特殊的序列信息,通常是按等時間間隔排列的一組數據,時序建模過程中我們關注的主要是趨勢以及周期性之類的pattern,因此數據發生的先后順序至關重要,這個特性跟很多其他序列信息是有顯著區別的。比如說文本序列,即使打亂一定的順序,只要比例不是過高,對我們的理解影響并不大。Transformer架構及其變種(包括Informer)使用注意力機制主要關注的是序列信息之間的兩兩相關性,雖然使用了位置編碼來encode信息之間的相對位置,但并不直接保留序列的順序信息,有不少信息損失,筆者認為這是為什么它對時序預測的效果不如TCN的主要原因。
TCN這個架構是借鑒Google的語音生成網絡WaveNet而來。按照arXiv上這篇原文,TCN將時序預測問題轉化為:使用卷積神經網絡CNN,將輸入x0, x1, …, xT濾波輸出y0, y1, …, yT這樣一個等長預測序列。
具體的卷積操作設計如上圖所示,有以下幾個主要特點:
因果卷積(Causal Convolution):輸出yt在卷積操作中只能使用輸入中的x0, ?…, xt,而不能使用xt之后的數據;
空洞卷積(Dilated Convolution):對于普通的1D卷積操作,為了在輸出側獲取足夠的“感受野”,網絡的層數需要跟追溯的歷史信息長度成線性關系。為了降低網絡復雜度,減少網絡層數,TCN在卷積里注入空洞來增加感受野,可以將網絡的層數下降到跟追溯的歷史信息長度成指數關系;
為保證各層的輸入輸出長度一致,在每層的卷積操作都需要做一定程度的Zero Padding來實現;
TCN的網絡設計看起來很有道理,在很多數據集上的表現也不錯,給人一種“使用CNN來做時序預測就該是這個樣子”的感覺。正因如此,雖然這篇arXiv文章的創新性不高,但被廣泛引用作為后續工作的基礎。
在了解現有工作之后,我們就需要做深入思考,這個階段要摒棄定式思維,要challenge現有工作,而不是人云亦云。如果我們仔細思考一下TCN的上述設計原則,就會發現它們雖然看起來很有道理,但實際上似是而非!
首先,請各位思考一下,“因果機制”對于時序預測是否必要?答案當然是肯定的,因為我們不能把未來信息當做已知來做預測。
但是,TCN架構中的“因果卷積”是否是必要的呢?答案就是未必了!這取決于輸入和輸出序列是否存在overlap,對于有混疊的部分,為了不泄露未來的信息,我們只能卷積過去的輸入序列信息。然而,在多數時序預測應用中,我們的預測方式是基于過去完整的序列直接來預測后續事件,所以并不存在所謂的“未來信息泄露”問題。TCN中的因果卷積可謂是多此一舉,不但沒有必要,反而自我限制了對時序信息的提取能力。筆者深切地懷疑這一誤解是由于TCN作者在最初formulate問題的時候對輸入輸出的下標使用了同樣的0,…, T導致的,事實上作為預測問題輸出的起始點最早也應該是T+1 。更遺憾的是后續工作也想當然地繼承了這一做法。
其次,“擴大感受野”對于時序預測是否必要?答案當然也是肯定的,我們要盡可能的利用歷史信息來學習有用的特征來增加預測能力。但是,TCN架構中的“空洞卷積”是否是必要的呢?答案也是未必!擴大感受野有多種方式,我們也可以在臨近兩層之間直接卷積較遠的時序信息。真正的問題在于如何找到有意義的擴大感受野方法?
最后,我們再思考一下TCN中要求各層之間的輸入輸出保持等長真的有必要嗎?事實上,時序預測中一個常見問題是single-step預測,也就是只預測下一個時間點的值。如果要求網絡的輸入輸出等長,就必然會在網絡各層之間引入人為的混疊,毫無意義。事實上只要將提取特征的網絡與預測輸出的網絡分開,就沒必要加入這個限制。
針對上述問題,尤其是考慮到時間序列的特殊性質,我們(主要是學生們)提出了一種全新的卷積網絡架構,大幅提升了時序預測效果。針對同樣的測試序列,我們的預測結果如下圖所示:
我們也在交通、金融、電力等多個時序預測數據集上驗證了方法的有效性,效果提升也是肉眼可見。由于這篇文章還在盲審階段,具體的實現細節這里就先不談了,如果哪位同學在做跟時序預測問題相關的問題,有興趣嘗試一下我們的方法,請聯系小編。
小結一下,科研樹的枝繁葉茂固然需要不斷地添枝加葉,也需要時不時地剪枝裁葉,有素質的科研汪應該是天生的懷疑論者!本文提到的這兩篇高影響力文章都成果斐然,但質疑才是推動科研進步的關鍵因素,尤其當前AI領域的工作大多都是通過empirical結果而不是理論推導來證明有效性,有太多的可質疑空間。筆者也期待我們提出的方法在不久的將來被推倒重來,最好是我們自己干的。
最后打個廣告,筆者和香港理工大學的秦璟老師有個聯合項目,需要招兩三個博士后,只要是CS和CE相關領域,有科研熱情即可。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的时序预测:从两篇高影响力的论文谈起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农村商机好项目有哪些 把握机遇才能赚到第
- 下一篇: 零存整取利息怎么算