作者: 魏祖昌
在我们现实生活中,已经部署大量的传感器(比如气象站点)。每一个传感器都有自己独特的地理空间位置,并且不断的产生时间序列读数。一组传感器共同监测一个空间的环境,这些读数之间就会有空间相关性,我们称这些传感器的读数为地理感知时间序列。此外,当不同空间位置用同一种传感器来监测, 通常会产生多种地理感知的时间序列。例如,如图 1(a)所示,道路上的环形探测器会及时报告过往车辆的读数以及它们的行驶速度。图 1(b)表示传感器每 5 分钟产生三个不同的水质化学指标。除了监测之外,对地理感知时间序列预测(如交通预测)的需求也在不断增长。
图 1:(a)-(b)地理传感器时序性数据的例子
然而,对地理感知时间序列进行预测是非常复杂的,主要受以下两个复杂因素的影响:
为了解决这些挑战,该论文提出了一个多层次的 Attention 网络(GeoMAN)来预测未来几个小时内地理传感器的读数。该论文的研究有三方面的贡献:
图 2 展示了该片论文的整个框架。依据 encoder-decoder 框架,我们利用两个分离 LSTM 网络,一个用于对输入序列(比如地理传感器的历史时间序列)进行 encoder,另一个则用于预测的输出序列。更具体的来说,论文中的 GeoMAN 模型主要是由两部分组成:
图 2:该论文的框架。Attn: attention. Local: local spatial attention. Global: global spatial attention. Concat: concatenation 层. $\hat{y}^{i}_{t}$: 在 t 时刻的 predicting value. ct: 在 t 时刻的 context vectors. h0: encoder 的初始值.
该论文是首次引入了 local spatial attention 机制。对于某个传感器来说,其的局部时间序列之间存在复杂的相关性。比如,一个空气质量监测站报告不同物质的时间序列,如 PM2.5(特定物质),NO 和 SO2。实际上,PM2.5 浓度通常受其他时间序列的影响,包括其他空气污染物和当地的天气状况。为了解决这个问题,给定第 i 个传感器的第 k 个局部特征向量(即$x_{i,k}$),我们利用 attention 机制自适应地捕捉目标序列与每个局部特征之间的动态相关性,其公式为:
其中[ ·; ·]是合并操作,$\mathbf{v}_l,\mathbf{b}_l \in \mathbb{R}^T, \mathbf{w}l \in \mathbb{R}^{T \times 2m} and \mathbf{U}l \in \mathbb{R}^{T \times T}$是学习来的参数。attention 的权重的局部特征值是由输入的局部特征和 encoder 层中的历史状态(即 $h{t-1}$, $s{t-1}$)共同决定的,这个权重值代表着每一个局部特征的重要性。一旦我们获得了 attention 的权值,就可以通过下面的公式算出在 t 时刻的 local spatial atttention 的输出向量:
其他传感器所监测的历史时间序列对将要预测出来的序列,会有直接的影响。然而,影响的权重是高度动态,是随时间变化的。由于会有很多不相关的序列,所以直接用所有的时间序列输入到 encoder 层来捕获不同传感器之间的相关性会导致非常高的计算成本并且降低性能。注意,这种影响的权重是受其他传感器的局部条件影响的。比如,当一股风从很远的地方吹来的时候,某些地区的空气质量会比之前更受这些地方的影响。受此启发,构建了一种新型的 attention 机制来捕获不同传感器之间的动态变化。给定第 i 个传感器作为我们的预测的对象,其他的传感器为 l,我们就可以计算他们之间的 attention 权值(即影响权重),公式如下:
其中$\mathbf{v}_g, \mathbf{u}_g, \mathbf{b}_g \in \mathbb{R}^{T \times 2m}, \mathbf{W}_g \in \mathbb{R}^{T \times 2m}, \mathbf{U}g \in \mathbb{R}^{T \times T}$和$\mathbf{W'}g \in \mathbb{R}^{T \times N^t}$是学习得来的参数。该 attention 机制通过参考目标序列和其他传感器的局部特征来自适应地选择相关传感器进行预测。同时,通过考虑编码器中先前 hidden state: $\mathbf{h}{t-1}$和 cell state: $\mathbf{s}{t-1}$来跨越时间步长传播历史信息。
注意,空间因素也会影响不同传感器之间的相关性。一般来说,地理传感器是通过显式或隐式进行相互连接的。这里,我们使用矩阵$\mathbf{P} \in \mathbb{R}^{N_g \times N_g}$来表示地理空间的相似度,其中$\mathbf{P}_{i,j}$表示传感器 i 和 j 之间的相似度。与 attention 权值不同的是,地理空间的相似度可以视作先验知识。尤其是,在如果$\mathbf{N}_g$太大,选择最近或相似的传感器会更好。然后,我们使用一个 softmax 函数来保证所有的 attention 权值和为 1,结合考虑地理空间相似性得出如下的公式:
其中 $\lambda$ 是一个可调的超参数。如果 $\lambda$ 很大,这个公式就会使 attention 的权重和地理空间相似度一样大。通过这些 attention 权值,我们就可以计算出 global spatial attention 的如下输出向量:
由于随着编码长度的增加,encoder-decoder 结构的性能会迅速下降,所以增添一个 temporal attention 机制可以自适应地选择 encoder 层的相关 hidden states 来产生输出序列,即,对预测序列中不同时间间隔之间的动态时间相关性进行建模。具体来说,为了计算 encoder 每个 hidden state 下每个输出时间 t‘处的 attention 向量,我们定义:
其中和都是学习得来的。这些值被一个 softmax 函数标准化,以创建 encoder 层隐藏状态上的 attention 掩码。
地理传感器的时间序列和空间因素(比如 POIs 和传感器网络之间)有很强的关系。形式上,这些因素共同决定了一个区域的功能。此外,还有很多时间因素(如气象和时间)在影响着传感器的读数。在受相关论文启发之下,该论文设计了一种简单有效的组建来处理这些因素。 正如上面的图 2 所示,首先合并了包括时间特征,气象特征和需要被预测传感器的 SensorID 等时间因素。由于未来时段的天气情况未知,我们使用天气预报来提高我们的性能。注意,这些因素大部分是分类的值,不能直接输入到神经网络中,我们将每个分类的属性分别输入到不同的 embedding 层中,将它们转化为一个低维向量。在空间因素方面,我们利用不同类别的 POIs 密度作为 POIs 特征。由于传感器网络的特性取决于特定的环境,我们就简单的利用了网络的结构特征(如居民和交叉口数量)。最后,我们将得到的嵌入向量和空间特征向量连接起来作为该模块的输出,记为$\mathbf{ex}_{t'} \in \mathbb{R}^{N_e}$ ,其中$t'$表示 decoder 层的未来时间步长。
在 encoder 层中,我们将 local spatial attention 和 the global spatial attention 简单汇总成: 我们把连接而成的$\tilde{\mathbf{x}}t$作为 encoder 层新的输入,并且用$\mathbf{h}t = f_e(\mathbf{h}{t-1}, \tilde{\mathbf{x}}t)$来更新 t 时刻的 hidden state,其中$f_e$是一个 LSTM 单元。 在 decoder 层中,一旦我们获得了未来$t'$时刻的$\mathbf{c}{t'}$的环境向量,我们就可以把它和外部特征抽取模块的输出$\mathbf{ex}{t'}$和 decoder 层最后一个输出$\hat{y}^i_{t'-1}$结合起来去更新 decoder 层的 hidden state,公式如下:
其中$f_d$是使用在 decoder 层中 LSTM 单元。然后,我们再把先前的环境向量$\mathbf{c}{t'}$和现在得到的 hidden state$\mathbf{d}{t'}$结合起来,成为新的 hidden state 来做如下的最终的预测: 最后,我们使用一个线性变换来产生最后的输出。 因为这个方法是光滑可谓的,所以是可以通过反向传播算法来进行训练的模型的。在这个训练阶段,我们使用的 Adam 优化器来最小化传感器 i 的预测向量$\hat{\mathbf{y}}^i$和实际测量值$\mathbf{y}^i$之间的 MSE 来训练这个模型: 其中$\theta$都是在所提出的模型中学习来的。
该论文中用了两个数据集分别来训练该模型,数据集的详细内容如图 3 所示:
图 3:数据集的详细内容。
但是由于完整数据没有公开的问题,我们后面复现是使用的是一个他提供的 sample_data,即是他处理完之后得到的向量,所以这部分不做深入介绍,如果对这部分还有疑问或者兴趣,可以自行参考论文相应部分。
我们使用多个标准来评估我们的模型,包括根均方误差(RMSE)和平均绝对误差(MAE),这两个标准在回归任务中都被广泛使用。
鉴于先前的一些研究,该论文设置时间间隔为 6 天来做短期预测。在训练过程中,我们设 batch 的大小为 256,learning rate 为 0.001 。在外部特征自动抽取模块,论文把 SensorID 嵌入到 $\mathbb{R}^6$中,把时间特征嵌入到 $\mathbb{R}^{10}$中。总的来说,在这个模型中有 4 个超参数,其中权衡参数$\lambda$从经验上来说是固定在 0.1 到 0.5 之间的。对于窗口长度 T,我们令 T∈{6,12,24,36,48}。对了简单起见,我们在 encoder 层和 decoder 层使用相同维度的 hidden 层,并且在{32, 64, 128, 256}上进行网格搜索。此外,我们使用堆叠的 LSTMs(层数记作 q)作为 encoder 和 decoder 的单位,以提高我们的性能。实验发现,在设置 q=2,m=n=64,$\lambda$=0.2 时在验证集表现的最好。
在本节中,我们将论文的模型与两个数据集上进行比较。为了公平起见,在图 4 中给出了不同参数设置下每种方法的最佳性能。
图 4:在不同模型中的表现对比
在水质预测方面,我们提出的方法在两个指标上都明显优于其他方法。特别地,GeoMAN 在 MAE 和 RMSE 上分别以 14.2%和 13.5%超过了最先进的方法(DA-RNN)。另一方面,由于 residual chlorine ( RC )的浓度遵循一定的周期规律,因此 stDNN 和 RNN 方法(即 Seq2seq, DA-RNN 和 GeoMAN)通过考虑更长的时间关系,获得了比 stMTMVL 和 FFA 更好的性能。与 LSTM 对未来时间步长的预测相比,GeoMAN 和 Seq2seq 由于解码器组件的积极作用而带来了显著的改进。值得注意的是,GBRT 在大多数基线上都有较好的表现,这说明了集成方法的优越性。
与相对稳定的水质读数相比,PM2.5 浓度波动较大,预测难度较大。图 4 是北京空气质量数据的综合比较。很容易看出,我们的模型同时达到了 MAE 和 RMSE 的最佳性能。继之前的工作关注 MAE 之后,我们主要讨论了这种度量。论文的方法比这些方法低了 7.2%到 63.5%,表明它在其他应用上有更好的泛化性能。另一个有趣的观察结果是,stMTMVL 在水质预测方面效果很好,但在这方面表现出了劣势,因为空气质量预测的联合学习任务的数量远远大于水质预测的联合学习任务的数量。
这篇论文提出了一种基于多层 attention 的时间序列预测网络。在第一个层次,应用 local 和 global spatial attention 机制来捕获地理感知数据中的动态传感器间关联。在第二层,论文利用 temporal attention 自适应地选择相关的时间步长进行预测。此外,论文的模型考虑了外部因素的影响,使用通用的特征抽取模块。论文中使用在两类地理传感器的数据集上对论文的模型进行了评价,实验结果表明,论文的模型在和其他 9 个模型同时在 RMSE 和 MAE 两个指标获得了最佳的性能。
项目地址:https://momodel.cn/workspace/5d96ed18673496721b0792fb?type=app