STSGCN:时空同步图卷积神经网络用于交通预测
文章信息
《Spatial-Temporal Synchronous Graph Convolutional Networks: A New Framework for Spatial-Temporal Network Data Forecasting》。
由北京交通大学计算机学院万怀宇和林友芳老师团队的硕士生宋超和博士生郭晟楠完成,已被AAAI 2020接收。
摘要
本文提出了一种基于图卷积方法的时空网络预测方法,该方法以路网结构为基础,将多个近邻时间步的空间图连接到一起,使用图卷积方法捕获复杂的局部时空相关性;同时针对时空网络序列的不同部分使用相互独立的组件对时空异质性进行建模,实现了对时空网络的有效预测。在美国加州PEMS数据集上与当今的state-of-the-art方法做了比较,结果显示了该模型在时空网络预测问题上的有效性。
理论部分
之前的时空网络预测方法,如DCRNN、STGCN、ASTGCN等方法使用一个时间序列建模组件和一个空间依赖建模组件,把时空网络的原始特征输入到时间组件,或是输入到空间组件中,将得到的表示再输入到另一个组件中,以此实现神经网络对时空关系的捕获。这种方法看似简单,在时空网络预测任务上也确实取得了很好的效果。但是这种模式缺乏一定的可解释性。DCRNN使用扩散图卷积对每个时间步上的空间图上的空间关联性进行捕获,然后将这些表示放入时间序列模型GRU中,再通过编码解码结构,对空间组件和时间组件的编码信息进行解码,得到预测值。STGCN则是使用切比雪夫图卷积和基础的二维卷积实现对空间、时间关系捕获。ASTGCN是在STGCN基础上增加了注意力机制,但是这个模式没有变化。
作者认为,这样的建模方式难以同时且直接地对复杂的局部时空关系建模。在本文中,作者提出了一种时空同步建模的模型STSGCN(Spatial-Temporal Synchronous Graph Convolutional Networks)。不同于上述方法,该模型对时空关系的捕获是同时进行的,没有分别设计时间组件和空间组件,而是使用一种组件完成对局部时空关系的同时捕获。作者认为,在一个时空网络中,一个结点对其邻居的影响有三类,第一类是基于空间关系的空间依赖性;第二类是基于同一结点在时序上的时间关联性;第三类是某一结点在前一时间步作用到其后一时间步的邻居的时空相关性。
之前的方法往往通过分步建模的方式,对图中棕色和蓝色箭头所指的关系进行捕获。这类方法对于图中绿色箭头所指的时空关系的捕获缺乏直观的解释性。通常认为是某一结点捕获其邻居的空间关系后,该结点的表示就具有了其邻居的特征,通过时序模型建模时,就可以让模型考虑这种绿色箭头所指的关系。
方法部分
1. 局部时空图
作者提出了一个局部时空图的概念。每个时间步的时空网络都有一个空间图,这个空间图是通过结点之间的空间关系构建的,且这种关系不随时间变化。通过将相邻时间步每个结点与自身相连,可以将多个空间图连接起来,连续的三个时间片连接起来构成的图称为局部时空图。在局部时空图上,每个结点的邻居不仅有其同时间步的邻居,还有前后两个时间步的自身结点,且前后两个时间步该结点的邻居会作为它的二阶邻居,受到它的影响。
在这张局部时空图上使用图卷积方法,就可以让每个结点考虑其自身与其多阶邻居的关系。与一阶邻居的相互影响包含了空间依赖和时间相关性,而二阶邻居之间的影响就包含了跨时间和空间两个维度的时空关联性。
2. 时空嵌入
在局部时空图上使用图卷积网络会使得图卷积方法根据邻居的阶数将结点看作是等价的,因为在这个局部时空图上,时间和空间信息被忽略了。因此作者提出使用时空嵌入表示的方法区分各个结点。
对于历史T个时间步,假设图信号矩阵的特征数是C,那么就初始化一个随机矩阵,维度是T×C,使用广播的机制加到原始的图信号矩阵上,这个矩阵就是时间嵌入矩阵。同理,初始化一个N×C的随机矩阵,使用广播机制加到图信号矩阵上,N是空间中结点的个数,这样得到空间嵌入矩阵。这两个嵌入矩阵会作为神经网络的参数学习得到。时间嵌入矩阵对于相同时间步的结点来说是相同的,空间嵌入矩阵对于相同的结点来说是相同的。通过加入这两种嵌入矩阵,就可以在图信号矩阵中区分每个结点的时间和空间信息。
3. 图卷积操作
图卷积操作使用邻接矩阵与特征矩阵相乘,然后使用线性层的方法实现。作者使用GLU作为**函数。
GLU是一种门控机制的**函数,通过双倍的参数可以获得更大的容量,且sigmoid**函数也可以有效的控制信息的流通。
4. 时空同步图卷积模块
作者使用JK-net作为基础,构建了时空同步图卷积模块STSGCM。模块由多个图卷积操作和一个聚合操作组成。每个图卷积操作的输出都会使用类似残差神经网络的方式加到聚合层的输入上。聚合使用最大池化的方式实现。在聚合完成后,作者提出了一种剪切操作。这种剪切操作是将局部时空图中中间的那个时间步的信息保留,丢掉前后两个时间步的信息。这么做的好处是可以大幅减少参数,提高模型的效率,且防止冗余信息对模型性能造成损害。这么做的理论支撑是,图卷积操作可以聚合邻居的信息,所以时空图卷积模块聚合信息后,就可以将前后两个时间步的信息聚合到中间那个时间步上,这样丢掉前后两个时间步也不会影响局部时空关系的捕获。
5. 时空同步图卷积层
时空同步图卷积模块可以处理三个时间步内的局部时空关联性,对于时间范围更长的时空序列来说,作者使用滑动窗的方式,对时空网络序列进行切片,如果历史的时空序列长度为T,那么滑动窗可以切出T-2个局部时空图。作者发现,这T-2个局部时空图具有的局部时空关联性是不同的,因此使用T-2个独立的时空同步图卷积模块对其分别建模,这样可以有效地捕获时空序列中的异质性。
这些独立的时空同步图卷积模块的输出会拼接起来,构成新的时空图卷积系列。这样并行的T-2个时空图卷积模块称为一个时空同步图卷积层STSGCL。这样的一个层可以处理一个稍长范围的时空图序列。同时这样的层也可以堆叠,构建层级表示。而且每个层都可以配备两个独立的时空嵌入矩阵。
6. 模型整体架构
最后,这个时空同步图卷积网络的结构如上图所示,原始的时空图序列输入到全连接层中做特征变换,然后通过堆叠的STSGCL捕获序列中的复杂时空关联性,最后通过全连接层将输出映射到目标空间。
7. 全局遮罩矩阵
为了更好的控制图卷积在聚合邻居信息时的权重,作者还提出使用一个全局遮罩矩阵对聚合权重进行调整。这个遮罩矩阵会在一开始就乘以局部时空图的邻接矩阵,通过训练不断地调整其参数,使得邻接矩阵收敛到一个更合理的值。这么做的原因是有些结点之间可能在局部时空图中有边,但是这两个结点之间可能并没有实际的关联,或他们的关联程度很低,有的结点之间关联程度很高,这个遮罩矩阵就可以在聚合时调节这个关联性的强弱。
8. 损失函数
最后,作者使用huber loss作为损失函数。这个损失函数结合了L1和L2两种损失。因为L1损失在原点处不可微,对于一些模型的优化会造成困难,所以将原点附近替换为L2损失,其他地方继续使用L1损失。而且L2损失由于平方的存在,会使得一些异常值或者离群值造成的损失更大,使模型过多地关注他们,相比之下L1损失更平滑一些,训练出来的模型更鲁棒。
实验部分
实验数据是在PEMS数据集上构造了4个子集。
有一个小型数据集,两个中等级别的,还有一个大型数据集。数据以5分钟为单位进行聚合,每个时间步表示5分钟的这个时段里面的车流量,任务是通过历史12个时间步的数据去预测未来12个时间步,即历史1小时预测未来1小时。Baseline方法选取了近几年效果很好的模型。评价指标是MAE,MAPE,RMSE。STSGCN的超参数是4个STSGCL层,每层的STSGCM有3个图卷积操作,每个图卷积操作使用64个卷积核。所有实验完成10次并取均值和标准差。
实验结果可以看出这个模型在部分数据集上效果可以稳定的超越其他方法。在PEMS07的RMSE上没有DCRNN好。其他指标都超越了历年的state-of-the-art方法。说明该方法在时空网络预测中效果比较可观。
作者还设计了几种变体模型来验证每个组件带来的性能提升。
1) basic:使用ReLU作为**函数,且STSGCM不独立,不适用遮罩矩阵和时空嵌入。
2) multi-module:STSGCM独立,不共享。
3) GLU:ReLU**函数换成GLU。
4) +emb:加入时空嵌入。
5) +mask:加入全局遮罩矩阵。
6) reshape-output:改变输出层的输出方式。
6) STSGCN:最终的模型。
可以看到这些组件在MAE和MAPE上都有明显的性能提升,但是RMSE上的提升没有那么明显,这也是为什么在PEMS07上RMSE指标不如DCRNN模型。不过影响RMSE指标没有提升的原因有很多,可能和损失函数有关,还需要具体的论证。
论文、代码及数据集:
论文、代码和数据集已在github上公开发布:https://github.com/wanhuaiyu/STSGCN
总结
STSGCN模型抛开了时空数据挖掘中的传统模式,尝试使用单组件对时空关系进行同时捕获,取得了一定的成功,在4个数据集上的实验证明了该方法的可行性。且全局遮罩矩阵、时空嵌入矩阵等也增强了模型在时空信息捕获上的能力。