論文題目:Recurrent Neural Networks for Multivariate Time Series with Missing Values (發表在 Scientific reports 2018,被引用160+

背景

多變數的時間序列廣泛存在於各種應用場景。由於種種原因,它們往往不可避免地會攜帶遺漏的觀測結果,這些缺失值或缺失的 pattern 往往能夠為一些有監督的學習任務(如分類)提供豐富的信息。

目前已經有些方法能夠處理時間序列中缺失值。最簡單的方法是忽略掉缺失值,直接在觀察到的值上做分析,當缺少率較高時顯然效果不好。另一類方法是去填充缺失的值,也叫數據補全。實際中用的比較多的有平滑(smoothing)、插值(interpolation)和樣條(spline)等,但是這類方法在補全時不能捕獲變數之間的相關性已經複雜的 pattern。其他比較高級的補全方法是去估計缺失值,這類方法包括 spectral analysis, kernel methods, EM algorithm, matrix completion 和 matrix factorization。這些方法可以結合起來利用,降低結果的不確定性。但是,數據補全和下游的任務(如預測)被分離為兩個子任務,這樣補全的pattern 不能被下游任務充分利用,導致次優解。

現有的 RNN 模型(LSTM/GRU)在序列建模任務上表現優秀。因此本文設計了一個基於 GRU 的模型(GRU-D)能夠充分利用缺失的 pattern (missingness patterns)。缺失的 pattern 包含兩個表示:masking time interval接下來具體介紹。

方法

定義

多變數時間序列 X={x_1,x_2,......,x_T}inRe ^{T	imes D} ,長度為 T ,變數數為 Dx_t^d 表示 t 時刻的第 d 個變數。由於數據存在缺失值,本文引入了 masking 向量 m_tin {0,1}^D 表示每一個變數是否缺失:

由於本文中時間序列是非等時間間隔的, s_t 表示 x_t 對應的時刻。此外,為每一個變數維護一個time interval delta _t^d 表示每一個變數當前時刻和最近的非缺失值對應時刻的時間間隔:

下圖給出了一個例子:

針對上述的場景,本文只考慮分類任務。首先給出了三種基於 GRU 的簡單方法。

簡單方法1:GRU-Mean

思想:用所有數據的平均值填充缺失值,然後將該序列送入 GRU 中。

簡單方法2:GRU-Forward

思想:將過去時刻中最近的那個值去填充缺失值,然後將該序列送入 GRU 中。

簡單方法3:GRU-Simple

思想:將三個值拼接得到的序列送入 GRU 中。

重點:GRU-D

圖中左下為修改後的GRU,左上為原始的GRU,右圖為模型的輸入和輸出。

本文引入了decay rates gamma ,由time interval delta _t^d做轉換得到:

decay rates gamma 包含兩種,一種是input decaygamma _x,相當於用來填充缺失值,缺失值的填充與歷史最近的非缺失值和平均值有關。

x_{t}^d 為歷史最近的非缺失值, 	ilde{x}^d 為該變數的平均值。

第二種是hidden state decay gamma _h,用來延遲前一個時刻的隱狀態:

最後,將masking 向量 m_t 直接輸入到模型:

另外給出原始GRU的公式,便於做對比看:


推薦閱讀:
相關文章