Chao Song, Youfang Lin, Shengnan Guo, Huaiyu Wan*. Spatial-Temporal Synchronous Graph Convolutional Networks: A New Framework for Spatial-Temporal Network Data Forecasting. Proc. of the 34th AAAI Conference on Artificial Intelligence (AAAI), 2020. (CCF A)
回顾下前面的这篇文章 论文笔记《Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting》
在这篇文章中存在一个问题,即模型中的时空图卷积块(GCN+Conv 部分) 先在空间维度图卷积,再在时间维度一维卷积,这样的分步操作并没有实现时空相关性的同步捕获。所以,本篇文章重点解决这个问题。
1. Introduction
首先,需要明确在时空网络中的节点的三类依赖关系。之所以会存在这三类依赖关系,是因为时空网络的信息分别在时间和空间维度同时传递。
- 在同一时间片中,邻居节点与特定点的依赖关系(棕色箭头)
- 在不同时间片中,特定点对其自身的依赖关系(蓝色箭头)
- 在不同时间片中,邻居节点对特定点的依赖关系(绿色箭头)
其次,明确现有模型存在的问题。
- 多数模型都只直接捕获了前两种依赖关系,然后通过将空间表征喂入到针对时间维度建模的模块中,以捕获第三种依赖关系,并不是同时捕获的。
- 时空网络数据通常在时间维/空间维具有异质性,例如在城市路网中,居住区和商业区在不同时刻常具有不同观测特征,但是以往的模型针对不同时间 共享模型结构,这样一来不能很好地捕获异质性。
最后,明确本文思路。
- 构造了局部时空图,它将相邻时间步长的单个空间图连接成一个图。
- 设计Spatial-Temporal Synchronous Graph Convolutional Module (STSGCM) 模块,用以提取局部时空图的时空相关性。
- 设计Spatial-Temporal Synchronous Graph Convolutional Layer (STSGCL) 层,即在不同时间段部署多个STSGCM,用以捕获长程时空网络数据的异质性。
- 堆叠多个STSGCL 以聚合长程时空关系和异质性,并得到最终预测结果。
2. Spatial-Temporal Synchronous Graph Convolutional Network
2.1 Localized Spatial-Temporal Graph Construction
- 每个时间片的时空网络图都会有一个局部空间图,这个局部空间图是由连续3个时间片组成。
- 每个时间片的某节点,不仅有当下时间片的邻居节点,还有前后两个时间片的与自身的邻接关系。
- 形成的局部时空图表示节点的属性,不随时间变化而变化。
注:这个局部时空图是为后续的图卷积操作服务的,目的是体现各个节点与其多阶邻居的关系,每个节点既有与其同时间步的邻居,还有前后两个时间步的自身节点,还有前后两个时间步自身节点的邻居节点(二阶邻居)。
2.2 Spatial-Temporal Embedding
当将不同时间步的节点放到同一个局部时空图中,就模糊了节点在时空维度的属性。因此,为解决该问题,作者在时空网络序列中添加位置嵌入信息。
- 对于每个时空网络序列 X g ∈ R N × C × T X_g \in \mathbb{R}^{N\times C\times T} Xg∈RN×C×T,加一个可学习的时间嵌入矩阵 T e m b ∈ R C × T T_{emb} \in \mathbb{R}^{C\times T} Temb∈RC×T 和空间嵌入矩阵 S e m b ∈ R N × T S_{emb} \in \mathbb{R}^{N\times T} Semb∈RN×T,通过广播机制将两个嵌入矩阵添加到时空网络序列中,得到新的网络序列表示
- 这两个嵌入矩阵是作为参数学习得到的,训练结束后,这两个嵌入矩阵将包含时间和空间信息,从而帮助模型捕获时空相关性
注:为什么要进行这步操作呢,是因为刚刚的局部时空图,把三个时间片节点的关系都压到一个矩阵中了,这样一来图卷积网络就会把节点看作是等价的,时空信息被盖掉了,所以要加个时空嵌入表示的方法区分节点。
2.3 Spatial-Temporal Synchronous Graph Convolutional Module
- 输入数据为局部时空图的邻接矩阵
- 接着输入至图卷积层中,进行图卷积操作(基于空域的)
- 最后进入聚合层(AGG),聚合层的实现分两步走:聚合(aggregating)和裁剪(cropping)。
Aggregating operation 聚合操作
- 聚合(aggregating): 使用最大池化 h A G G = max ( h ( 1 ) , h ( 2 ) , … , h ( L ) ) ∈ R 3 N × C o u t h_{A G G}=\max \left(h^{(1)}, h^{(2)}, \ldots, h^{(L)}\right) \in \mathbb{R}^{3 N \times C_{o u t}} hAGG=max(h(1),h(2),…,h(L))∈R<