天天看點

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

目錄

前言

一、模型介紹

1、模型架構介紹

2、訓練政策

3、似然函數模型

 4、損失函數

二、論文精華

1.尺度處理

三、仿真實驗

1、資料集介紹

2、評價名額

2.1 評價名額1(分布式評估)

2.2 評價名額2(點預測評估)

2.3 定性分析

總結

前言

最近看論文《DeepAR:Probabilistic Forecasting with Autoregressive Recurrent Networks》收獲良多,對于時間序列預測的了解又加深了,下面是我對這篇論文的解讀

早期的時間序列預測主要模型是諸如ARIMA這樣的單序列線性模型。這種模型對每個序列分别進行拟合。在ARIMA的基礎上,又提出了引入非線性、引入外部特征等的優化。然而,ARIMA類模型在處理大規模時間序列時效率較低,并且由于每個序列分别獨立拟合,無法共享不同序列存在的相似規律。深度學習模型在NLP、CV等領域取得了成功應用後,也被逐漸引入到解決時間序列預測問題中,常見的比如LSTM、CNN、ConvLSTM等。

傳統預測算法解決不了兩個問題:

1、聯合多重時間序列。由于資料樣本的不均衡導緻了不同時間序列對于模型的影響程度是不同的,學習一個全局模型是很困難的;

拿商品銷售為例(論文中舉了亞馬遜商品銷售量的例子)

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

上圖是亞馬遜商品銷售量的雙對數直方圖,近似一條直線,那麼原曲線近似服從幂律分布(長尾分布),這種長尾分布對于模型的影響是巨大的,不均衡樣本導緻輸入值的量級差異較大,大部分資料都是長尾分布(scale較小)的時間序列資料,就會導緻模型的預測值偏向于長尾分布,而原來非長尾分布(scale較大)的時間序列将會受到影響,會出現明顯的欠拟合,最後導緻模型學習失敗。對于這種尺度不一緻的時間序列資料,通常的處理方式是使用标準化,将資料統一到同一個scale。在模型中,也可以通過Batch Normalization 層進行batch的标準化,但是在正計數資料(比如商品銷量)中不是很有效。

2、預測未來某一時刻的機率分布。在特定場景下,機率預測比單點預測更有意義,比如零售業,若已知商品未來銷量的機率分布,可以運用運籌優化方法推算在不同業務目标下的最優采購量,進而輔助決策。

一、模型介紹

1、模型架構介紹

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結
時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 Zi,t代表第i個時間序列在時間t時刻的銷量資料,X代表所有的協變量,假設[1, t0−1]為已知銷量的時間區間,[t0, T]為需要預測的時間區間,Xi,1:T橫跨[1, t0−1]和[t0, T]兩個時間區間。

模型的目标是對條件分布P(已知1:t0-1時刻的z和1:T的X條件下得到t0:T時刻的z的機率)模組化,如式(1),Q是模型的聯合分布,t0:T時刻的所有的P乘積,l是似然函數,Θ代表模型要預測的參數,h 是有LSTM組成的多層RNN的實作函數,hi,t是網絡的隐層輸出。

DeepAR模型采用的是自回歸網絡(autoregressive recurrent network),假定機率分布P可以寫成式(2)的形式,第一個等号代表将原先的聯合機率分布寫成自回歸的機率乘積的形式,第二個等号是将自回歸機率用一個參數化後的似然函數表示,h(.)代表一個RNN,輸入上一時刻的隐層輸出

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

和輸入

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,以及時刻的協變量

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,可以得到該時刻的隐層輸出

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,在通過神經網絡θ(·)将

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

轉化為給定分布的參數(具體分布見下文),分布确定後,就可以計算出似然

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

的值。

将自回歸過程放到sequence-to-sequence架構中:首先用encoder網絡對1:t0-1的資料編碼,得到隐層輸出

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,再将其作為decoder網絡的初始化輸入,進行疊代輸出的

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

轉化為分布的參數,這樣就可以通過DeepAR得到預測的機率分布。

2、訓練政策

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 從論文中這一段可以看出,得到預測輸出的過程是:在模型訓練完成後,将t<t0的曆史資料送入網絡,獲得初始狀态 

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,再使用祖先采樣得到預測結果,對于t0~T的資料,在每一個時間步随機采樣得到

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

~

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,作為下一時間步的輸入。重複該過程,得到一系列t0~T的采樣值,并利用這些采樣值可以計算所需的目标值,如分位數、期望等。

在訓練過程中,使用Teacher Forcing政策,訓練過程中有一定機率使用真實值,預測過程中不使用真實值,退化為普通的recursive seq2seq。

3、似然函數模型

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

~

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 DeepAR預測下一個時間點的機率分布的所有參數 θ(例如均值和方差)。論文中有兩種選擇,針對連續型資料(real-valued data,比如溫度)的高斯似然和針對正計數資料(positive count data,比如銷量)的負二項似然(negative-binomial likehood,負二項分布)。我們使用其均值和标準差 θ = ( µ , σ ) 對高斯似然進行參數化,其中均值由網絡輸出的仿射函數給出,為了確定 σ > 0,标準差通過應用仿射變換和 Softplus 激活函數獲得, Softplus函數可以看作是ReLU函數的平滑。

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 下圖是Softplus和Relu對比圖

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 4、損失函數

模型參數可以通過最大化對數似然來學習,使用随機梯度下降求解:由于hi,t是輸入的确定性函數,是以計算(10)所需的所有量都被觀察到:

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

  由于模型的自回歸性質,優化 (10) 導緻模型在訓練期間與從模型獲得預測結果時的差異。在訓練期間,zi,t 的值是已知的,使用teacher forcing政策;在預測過程中,對于 t ≥ t0,zi,t是未知的,并且預測樣本服從分布  

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

~

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

,根據 (3) 計算 hi,t,在解碼器階段不斷遞歸得到預測輸出,按理說應該會因為遞歸産生較大的累積誤差,例如NLP 任務,但作者在預測中沒有觀察到由此産生的不利影響。NLP任務比如機器翻譯,有上下文語境,如果一個環節翻譯錯了,後面的可能都會錯掉,是以對這個要求比較高,但時序資料可能沒有那麼嚴格。

二、論文精華

1.尺度處理

将模型應用于幂律資料存在兩個挑戰:

DeepAR是一個全局模型,可以處理所有scale(尺度)的資料,這個尺度就是資料的數量級,那對于幂律資料是怎麼處理的呢?論文中給出兩步處理方法。

首先,由于模型的自回歸性質,輸入zi,t-1以及網絡的輸出(例如μ)都直接與觀測值zi,t成比例,但兩者間的網絡非線性具有有限操作範圍,網絡是以必須學會将輸入适當縮放,再在輸出處翻轉縮放。

而對于這種樣本量級差異的解決方法,需要對商品銷售量進行縮放,找到一個scale因子,對應到神經網絡中,即輸入到神經網絡前除以v, 輸出後乘以v。如何選擇為每一個商品選擇對應的v是一個挑戰,實踐發現使用商品的曆史銷量均值是一個不錯的選擇。

下面的式11和12是對負二項似然函數的參數進行的縮放變換,這裡逆變換并不都是乘以vi

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

其次,由于資料的不平衡,均勻随機選擇訓練執行個體的随機優化過程,會很少通路大規模的小數時間序列,導緻這些時間序列的拟合不足。為了抵消這種影響,在訓練期間對樣本進行weighted sampling scheme。文中權重采樣方案中,從尺度為νi的示例中選擇視窗的機率與 νi成正比。

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

三、仿真實驗

1、資料集介紹

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 DeepAR模型大概每秒可以訓練14條時間序列,文中使用 MXNet 實作模型,并使用包含 4 個 CPU 和 1 個 GPU 的單個 p2.xlarge AWS 執行個體來運作所有實驗。在此硬體上,可以在不到 10 小時内完成在包含 500K 時間序列的大型 ec 資料集上運作的完整訓練和預測,如果還想更快的速度,可以并行運作。實驗中用了5個資料集,包含公共資料集parts、electricity和traffic,以及亞馬遜銷量資料集ec和ec-sub。

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結
時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 上圖是在ec資料集上做的時間序列預測,可以看出模型不僅可以預測未來的數值,還可以對其不确定性做出估計

2、評價名額

2.1 評價名額1(分布式評估)

 ρ-risk名額,使用權重分位數損失評估預測分布的準确度

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

使用ρ-risk名額((quantile loss分位數損失) 量化預測分布的分位數ρ 的準确性,其中(L,S)代表在分界點t0之後的[L,L+S)時間範圍,例如(2,1)代表[t0+2,t0+2+1)的時間範圍,隻度量這個範圍内模型的結果。

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

parts、ec、ec-sub資料集上的仿真實驗,Croston、 ETS、 Snyder和ISSM都是文獻中的方法,還有兩個RNN模型;

rnn-gaussian :模型架構與DeepAR相同,但使用統一采樣和更簡單的縮放機制,時間序列zi除以vi,輸出乘以vi;

rnn-negbin: 使用負二項分布,統一采樣且不縮放輸入和輸出。

從表中得出幾條結論:

1、因parts多條序列幅度沒有顯著差異(不呈現幂律分布),rnn-negbin和DeepAR效果差不多

2、 ec和ec-sub多條序列幅度顯著差異(呈現幂律分布),DeepAR明顯比rnn-negbin效果好

3、3個資料集都是count-valued資料,負二項分布效果都優于高斯分布

2.2 評價名額2(點預測評估)

用真值和預測的均值來計算

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結
時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

 比較了DeepAR和MatFact(matrix factorization technique)在electricity和traffic資料集上的點預測精度,評價名額采用歸一化偏差Normalized Deviation(ND)和歸一化RMSE。結果表明,DeepAR在兩個資料集上的性能都優于MatFact。

2.3 定性分析

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

  ISSM和DeepAR模型的不确定性随時間的推移而增長

展示了在ec資料集上的DeepAR和ISSM的邊際預測分布的不同分位數的總和。與ISSM模型相比,不确定性的線性增長是模組化假設的一部分,不确定性的增長模式是從資料中學習出來的。在這種情況下,該模型确實學習到了不确定性随時間的總體增長。然而,這并不是簡單的線性增長:不确定性(正确地)在第四季度增加,不久之後又再次下降。是以DeepAR更好地學習到時序的不确定性。

時間序列預測之DeepAR前言一、模型介紹二、論文精華三、仿真實驗總結

        DeepAR與ISSM在分布預測的表現

顯示了預測機率分布的好壞(預測準确度),其中percentile是真實分位數,coverage是預測覆寫量(橫坐标可以認為是預測值,縱坐标可以認為是真實值)。若預測跟真實分布一緻,則為灰色對角線。我們能看到DeepAR更靠近灰線,說明它機率分布預測最好。

總結

DeepAR的核心是用循環神經網絡(RNN)預測多重時間序列,能夠從時間序列中學習到全局模型,比較适合包含幾百個時間序列的中型資料集,相比于一般的RNN網絡,有三點優勢:

1、不是直接簡單地輸出一個确定的預測值,而是輸出預測值的一個機率分布。計算損失函數時,采用的是分布損失(Distribution Loss),當資料分布不是正态而是長尾分布或者其他分布時,可以選用更适合該分布的損失函數。可以讓算法隻考慮特定分位的損失,比如0.25分位,而且還可以評估出預測的不确定性和相關的風險;

2、處理不同時序scale不一緻的問題,除了傳統分組訓練預測、Batch Normalization ,更符合時序特性的處理方法可以是:加入scale因子和使用scale因子做權重采樣;

3、能夠從資料中學習複雜的模式,例如随時間推移的季節性和不确定性的增長情況。而且該方法幾乎不需要根據各種資料集進行超參數調整。

繼續閱讀