時間序列預測——DA-RNN模型

時間序列預測——DA-RNN模型

做者:梅昊銘html

1. 背景介紹

傳統的用於時間序列預測的非線性自迴歸模型(NRAX)很難捕捉到一段較長的時間內的數據間的時間相關性並選擇相應的驅動數據來進行預測。本文將介紹一種基於 Seq2Seq 模型(Encoder-Decoder 模型)並結合 Attention 機制的時間序列預測方法。做者提出了一種雙階段的注意力機制循環神經網絡模型(DA-RNN),可以很好的解決上述兩個問題。git

模型的第一部分,咱們引入輸入注意力機制在每一個時間步選擇相應的輸入特徵。模型的第二部分,咱們使用時間注意力機制在整個時間步長中選擇相應的隱藏層狀態。經過這種雙階段注意力機制,咱們可以有效地解決一些時序預測方面的問題。咱們將這兩個注意力機制模型集成在基於 LSTM 的循環神經網絡中,使用標準反向傳播進行聯合訓練。github

2. DA-RNN 模型

2.1 輸入與輸出

輸入:給定 n 個驅動序列(輸入特徵),X = (x^1,x^2,...,x^n)^T = (x_1,x_2,...,x_T) \in R^{n \times T}T 表示時間步長,n 表示輸入特徵的維度。web

輸出:\hat{y}_{T}= F(y_1,...,y_{T-1},x_1,...,x_T)(y_1,...,y_{T-1})表示預測目標過去的值,其中 y_t\in R(x_1,...,x_T) 爲時間 Tn 維的外源驅動輸入序列,x_t \in R^nF(\cdot) 爲模型須要學習的非線性映射函數。網絡

2.2 模型結構

DA-RNN 模型是一種基於注意力機制的 Encoder-Decoder 模型。在編碼器部分,咱們引入了輸入注意力機制來選擇相應的驅動序列;在解碼器部分,咱們使用時間注意力機制來選擇整個兒時間步長中相應的隱藏層狀態。經過這個兩種注意力機制,DA-RNN 模型可以選擇最相關的輸入特徵,而且捕捉到較長時間內的時間序列之間的依賴關係,如圖1所示。app

圖 1:DA-RNN 模型結構

2.3 編碼器

編碼器本質上是一個 RNN 模型,它可以將輸入序列轉換爲一種特徵表示,咱們稱之爲隱藏層狀態。對於時間序列預測問題,給定輸入 X = (x_1,x_2,...,x_T) \in R^{n \times T},x_t \in  R^n,在時刻 t ,編碼器將 x_t 映射爲 h_th_t = f_1(h_{t-1},x_t)h_t \in R^m 表示編碼器隱藏層在時刻 t 的狀態,m 表示隱藏層的維度,f_ 爲非線性激活函數,本文中咱們使用 LSTM。函數

本文中,咱們提出了一種輸入注意力機制編碼器。它可以適當地選擇相應的驅動序列,這對時間序列預測是相當重要的。咱們經過肯定性注意力模型來構建一個輸入注意力層。它須要將以前的隱藏層狀態h_{t-1} 和** LSTM** 單元的** cell **狀態 s_{t-1} 做爲該層的輸入獲得:學習

e^k_t = v^T_etanh(W_e[h_{t-1};s_{t-1}]+U_ex^k)$$,其中$v_e \in R^T,W_e \in R^{T \times 2m},U_e \in R^{T \times T}$是須要學習的參數。
輸入注意力層的輸出 $(e^1_t,e^2_t,...,e^n_t)$ 輸入到 softmax 層獲得  $\alpha_t^k$ 以確保全部的注意力權重的和爲1,$\alpha_t^k$ 表示在時刻 $t$ 第 $k$ 個輸入特徵的重要性。

獲得注意權重後,咱們能夠自適應的提取驅動序列 $\tilde x_t = (\alpha^1_tx^1_t,\alpha^2_tx^2_t,...,\alpha^n_tx^n_t)$,此時咱們更新隱藏層的狀態爲 $h_t = f_1(h_{t-1},\tilde x_t)$。
## 2.4 解碼器
爲了預測輸出 $\hat y_T$,咱們使用另一個 LSTM 網絡層來解碼編碼器的信息,即 隱藏層狀態 $h_$。當輸入序列過長時,傳統的Encoder-Decoder 模型效果會急速惡化。所以,在解碼器部分,咱們引入了時間注意力機制來選擇相應的隱藏層狀態。

與編碼器中注意力層相似,解碼器的注意力層也須要將以前的隱藏層狀態$d_{t-1}$ 和**LSTM** 單元的**cell**狀態 $s'_{t-1}$ 做爲該層的輸入獲得該層的輸出:
$l^i_t = v^T_dtanh(W_d[d_{t-1};s'_{t-1}]+U_dh_i)$,其中$v_d \in R^m,W_d \in R^{m \times 2p},U_e \in R^{m \times m}$是須要學習的參數。經過 softmax 層,咱們能夠獲得第 $i$ 個編碼器隱藏狀態 $h_i$ 對於最終預測的重要性 $\beta^i_t$。解碼器將全部的編碼器隱藏狀態按照權重求和獲得文本向量 $c_t = \sum_{i=1}^T \beta_t^ih_i$,注意 $c_t$ 在不一樣的時間步是不一樣的。

在獲得文本向量以後,咱們將其和目標序列結合起來獲得 $\tilde y_{t-1} = \tilde w^T[y_{t-1};c_{t-1}]+\tilde b$。利用新計算獲得的 $\tilde y_{t-1}$,咱們來更新解碼器隱藏狀態 $d_t=f_2(d_{t-1},\tilde y_{t-1})$,咱們使用 LSTM 來做爲激活函數 $f_2$。
經過 DA-RNN 模型,咱們預測 $\hat y_T = F(y_1,...,y_{T-1},x_1,...,x_T) = v_y^T(W_y[d_T;c_T]+b_w)+b_v$。

## 2.5 訓練過程
在該模型中,做者使用平均方差做爲目標函數,利用 Adam 優化器,min-batch 爲128來進行參數優化。
目標函數:
$$O(y_T,\tilde y_T)=\frac{1}{N}\sum_{i=1}^N(\hat y^i_T-y_T^i)^2

3. 實驗

3.1 數據集

本文的做者採用了,兩種不一樣的數據集來測試驗證 DA-RNN 模型的效果。這裏咱們僅對 NASDAQ 100 Stock 數據集進行介紹。做者根據 NASDAQ 100 Stock 收集了 81 家主要公司的股票價格做爲驅動時間序列,NASDAQ 100 的股票指數作目標序列。數據收集的頻率爲一分鐘一次。該數據集包含了從2016年7月26日至2016年12月22日總共105天的數據。在本實驗中,做者使用 35100 條數據做爲訓練集,2730條數據做爲驗證集,以及最後2730條數據做爲測試集。測試

3.2 參數設置和評價指標

時間窗口的大小 T \in \{3,5,10,15,25\}。實驗代表 :T=10 時,模型在驗證集上的效果最好。編碼器和解碼器隱藏層的大小 m ,p\in\{16,32,64,128,256\}。當m=p=64,128 時,實驗效果最好。優化

爲評估模型的效果,咱們考慮了三種不一樣的評價指標:RSME,MAE,MAPE。

3.3 模型預測

爲展現 DA-RNN 模型的效果,做者將該模型和其餘的模型在兩個不一樣的數據集上的預測效果進行了對比,如表1所示。由表1能夠看出,DA-RNN模型相對於其餘模型,偏差更小一些。DA-RNN模型在時間序列預測方面具備良好的表現。

表 1:SML 2010數據集和納斯達克100股票數據集的時間序列預測結果

爲了更好的視覺比較,咱們將Encoder-Decoder 模型,Attention RNN 和 DA-RNN 模型的在納斯達克100股票數據集上的預測結果在圖2中展現出來。咱們不難看出DA-RNN模型能更好地反映真實狀況。

圖 3:三種模型在納斯達克100股票數據集上的預測結果

4. 總結

在本文中,咱們介紹了一種基於注意力機制的雙階段循環神經網絡模型。該模型由兩部分組成:Encoder 和 Decoder。在編碼器部分,咱們引入了輸入注意力機制來對輸入特徵進行特徵提取,爲相關性較高的特徵變量賦予更高的權重;在解碼器部分,咱們經過時間注意力機制爲不一樣時間 t 的隱藏狀態賦予不一樣的權重,不斷地更新文本向量,來找出時間相關性最大的隱藏層狀態。Encoder 和 Decode 中的注意力層分別從空間和時間上來尋找特徵表示和目標序列之間的相關性,爲不一樣的特徵變量賦予不一樣的權重,以此來更準確地預測目標序列。 項目源碼地址:https://momodel.cn/workspace/5da8cc2ccfbef78329c117ed?type=app

5. 參考資料

  1. 論文:A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction
  2. 注意力機制詳解:blog.csdn.net/BVL10101111…
  3. 項目源碼:github.com/chensvm/A-D…
  4. 數據集:cseweb.ucsd.edu/~yaq007/NAS…
相關文章
相關標籤/搜索