做者:梅昊銘html
傳統的用於時間序列預測的非線性自迴歸模型(NRAX)很難捕捉到一段較長的時間內的數據間的時間相關性並選擇相應的驅動數據來進行預測。本文將介紹一種基於 Seq2Seq 模型(Encoder-Decoder 模型)並結合 Attention 機制的時間序列預測方法。做者提出了一種雙階段的注意力機制循環神經網絡模型(DA-RNN),可以很好的解決上述兩個問題。git
模型的第一部分,咱們引入輸入注意力機制在每一個時間步選擇相應的輸入特徵。模型的第二部分,咱們使用時間注意力機制在整個時間步長中選擇相應的隱藏層狀態。經過這種雙階段注意力機制,咱們可以有效地解決一些時序預測方面的問題。咱們將這兩個注意力機制模型集成在基於 LSTM 的循環神經網絡中,使用標準反向傳播進行聯合訓練。github
輸入:給定 n 個驅動序列(輸入特徵), , 表示時間步長, 表示輸入特徵的維度。web
輸出:。表示預測目標過去的值,其中 ; 爲時間 內 維的外源驅動輸入序列,; 爲模型須要學習的非線性映射函數。網絡
DA-RNN 模型是一種基於注意力機制的 Encoder-Decoder 模型。在編碼器部分,咱們引入了輸入注意力機制來選擇相應的驅動序列;在解碼器部分,咱們使用時間注意力機制來選擇整個兒時間步長中相應的隱藏層狀態。經過這個兩種注意力機制,DA-RNN 模型可以選擇最相關的輸入特徵,而且捕捉到較長時間內的時間序列之間的依賴關係,如圖1所示。app
圖 1:DA-RNN 模型結構編碼器本質上是一個 RNN 模型,它可以將輸入序列轉換爲一種特徵表示,咱們稱之爲隱藏層狀態。對於時間序列預測問題,給定輸入 ,在時刻 ,編碼器將 映射爲 :, 表示編碼器隱藏層在時刻 的狀態, 表示隱藏層的維度, 爲非線性激活函數,本文中咱們使用 LSTM。函數
本文中,咱們提出了一種輸入注意力機制編碼器。它可以適當地選擇相應的驅動序列,這對時間序列預測是相當重要的。咱們經過肯定性注意力模型來構建一個輸入注意力層。它須要將以前的隱藏層狀態 和** LSTM** 單元的** cell **狀態 做爲該層的輸入獲得:學習
本文的做者採用了,兩種不一樣的數據集來測試驗證 DA-RNN 模型的效果。這裏咱們僅對 NASDAQ 100 Stock 數據集進行介紹。做者根據 NASDAQ 100 Stock 收集了 81 家主要公司的股票價格做爲驅動時間序列,NASDAQ 100 的股票指數作目標序列。數據收集的頻率爲一分鐘一次。該數據集包含了從2016年7月26日至2016年12月22日總共105天的數據。在本實驗中,做者使用 35100 條數據做爲訓練集,2730條數據做爲驗證集,以及最後2730條數據做爲測試集。測試
時間窗口的大小 。實驗代表 :T=10 時,模型在驗證集上的效果最好。編碼器和解碼器隱藏層的大小 。當 時,實驗效果最好。優化
爲評估模型的效果,咱們考慮了三種不一樣的評價指標:RSME,MAE,MAPE。
爲展現 DA-RNN 模型的效果,做者將該模型和其餘的模型在兩個不一樣的數據集上的預測效果進行了對比,如表1所示。由表1能夠看出,DA-RNN模型相對於其餘模型,偏差更小一些。DA-RNN模型在時間序列預測方面具備良好的表現。
表 1:SML 2010數據集和納斯達克100股票數據集的時間序列預測結果爲了更好的視覺比較,咱們將Encoder-Decoder 模型,Attention RNN 和 DA-RNN 模型的在納斯達克100股票數據集上的預測結果在圖2中展現出來。咱們不難看出DA-RNN模型能更好地反映真實狀況。
圖 3:三種模型在納斯達克100股票數據集上的預測結果在本文中,咱們介紹了一種基於注意力機制的雙階段循環神經網絡模型。該模型由兩部分組成:Encoder 和 Decoder。在編碼器部分,咱們引入了輸入注意力機制來對輸入特徵進行特徵提取,爲相關性較高的特徵變量賦予更高的權重;在解碼器部分,咱們經過時間注意力機制爲不一樣時間 的隱藏狀態賦予不一樣的權重,不斷地更新文本向量,來找出時間相關性最大的隱藏層狀態。Encoder 和 Decode 中的注意力層分別從空間和時間上來尋找特徵表示和目標序列之間的相關性,爲不一樣的特徵變量賦予不一樣的權重,以此來更準確地預測目標序列。 項目源碼地址:https://momodel.cn/workspace/5da8cc2ccfbef78329c117ed?type=app