GeoMAN:Multi-level Attention Networks for Geo-sensory Time Series Predicti on 论文笔记
论文亮点
在encoder阶段加入两种类型的attention机制,包括local attention和global attention,分别学到同一sensor内各个特征之间的关系,以及不同sensor之间的关系。Decoder阶段的temporal attention机制学习到序列时序之间的关系。加入外部因子融合模块。
总的来说:GeoMAN的网络结构以Encoder-Decoder作为基础结构,Encoder阶段加入了spatio attention(包括local attention和global attention),Decoder阶段加入了tempral attention和external attention。
Attention细节
文中用到的符号:$Y=(y^1,y^2,…,y^{N_g})\in R^{N_g \times T}$表示所有sensor测量到的在T时间序列内的数据。其中$y^i\in R^T$表示sensor i的测量值。使用$X^i=(x^{i,1},x^{i,2},…,x^{i,N_l})^{T}=(x_1^i,x_2^i,…,x_T^i)\in R^{N_l\times T}$表示sensor i的local features。将所有sensor的local feature组合在一起,得到global feature,$\chi={X^1,X^2,…,X^{N_g}}$以此作为sensor i的global 特征。
Spatio Attention
Local Attention
Local Attention的目的是找出同一个sensor之间不同特征的权重关系,遵循以下方法来进行:
$e_t^k=v_l^T tanh(W_l[h_{t-1};s_{t-1}]+U_lx^{i,k}+b_l)$
根据$\alpha_t^k=\frac{exp(e_t^k)}{\sum_{j=1}^{N_l}exp(e_t^j)}$计算特征k的权重,这里其实就是一个softmax函数。
最后得到:
$x_t^{local}=(\alpha_t^1x_t^{i,1},\alpha_t^2x_t^{i,2},…,\alpha_t^{N_l}x_t^{i,N_l})^T$
上述公式中,$v_l,b_l\in R^T$,$W_l\in R^{T\times 2m}$,$U_l\in R^{T\times T}$
Global Attention
主要目的是找到不同sensor测量的特征之间的关系。
对于目标sensor i和另一个sensor l,通过以下式子计算attention的权重。
$g_t^l=v_g^T tanh(W_g[h_{t-1};s_{t-1}]+U_gy^l+W_g’X^lu_g+b_g)$
其中,$v_g,u_g,b_g \in R^T$,$W_g \in R^{T\times 2m}$,$U_g\in R^{T\times T}$,$W_g’\in R^{T\times N_l}$都是需要学习的参数。
另外还加入一个矩阵$P\in R^{N_g\times N_g}$来表征地理空间的相似性。
最后,和local attention机制类似,将权重用softmax整合起来。
$\beta _t^l=\frac{exp((1-\lambda)g_t^l+\lambda P_{i,l})}{\sum _{j=1}^{N_g}exp((1-\lambda)g_t^j+\lambda P_{i,j})}$
然后$x_t^{global}=(\beta_t^1y_t^1,\beta_t^2y_t^2,…,\beta_t^{N_g}y_t^{N_g})^T$
Tempral Attention
解决时序过长时,Encoder-Decoder性能下降的问题。
$u_{t’}^o=v_d^Ttanh(W_d’[d_{t’-1};s_{t’-1}’]+W_dh_o+b_d)$
$\gamma_{t’}^o=\frac{exp(u_{t’}^o)}{\sum_{j=1}^{T}exp(u_{t’}^j)}$
$c_{t’}=\sum_{o=1}^{T}\gamma_{t’}^oh_o$
其中$W_d\in R^{m\times m}$,$W_d’\in R^{m\times 2n}$,$v_d,b_d\in R_m$是可以学习的参数。
External Attention
将各种外界的影响因素,embedding起来。
$ex_{t’}\in R^{N_e}$,其中t’是decoder中的未来时间点。
Encoder-Decoder结构
Encoder阶段
将local attention和global attention的结果concat起来作为Encoder的输入。
$x_t=[x_t^{local};x_t^{global}]$,其中$x_t\in R^{N_l+N_g}$,然后根据$h_t=f_e(h_{t-1},x_t)$更新hiddent state,其中$f_e$是LSTM单元。
Decoder阶段
在Decoder阶段,根据t’时刻的加权求和的上下文向量$c_{t’}$,加上$ex_{t’}$和$y_{t’-1}^i$来更新decoder的hidden state,$d_{t’}=f_d(d_{t’-1},[y_{t’-1}^i;ex_{t’};c_{t’}])$,其中$f_d$是decoder中使用的LSTM单元。然后使用下式得到$y_{t’}^i$,$y_{t’}^i=v_y^T(W_m[c_{t’};d_{t’}]+b_m)+b_y$其中$W_m\in R^{n\times ( m+n)}$,$b_m\in{R^n}$将$[c_{t’};d_{t’}]\in R^{m+n}$映射到hidden state的尺度。最后用线性变换产生最后的预测输出。
实验结果
使用MSE作为损失函数,最后的实验结果详见原论文。在其所用数据集上达到了state-of-the-art。
源码阅读及实现
官方tensorflow 实现学习
pytorch 实现
参考资料
1、原论文 GeoMAN: Multi-level Attention Networks for Geo-sensory Time Series Prediction
2、官方Tensorflow实现