文章标题:《Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting》
背景
因为本文是第一篇将图卷积用于提取空间和时间信息的文章,故之前文章使用的仿真模型(资源浪费大、且不合理的假设和简化使得效果很差)、统计方法(时间流具有高度不确定性,不可靠)、rnn一类的方法(只提取了时间信息没有提取空间信息)、cnn一类的方法(只处理了空间信息,没有结合时间信息)都不太兴,所以本文将图卷积试在交通预测流上。
前置知识:
问题定义如下,简单的说就是即通过前[t-m+1,t] 的交通流量状态来预测[t+1,t+H]的交通流量状态。但因为本文使用的是图卷积,所以是将每一个时刻的整个图的流量视为一个状态,用以预测后续的图的流量状态。
图的结构如下:由 G t = ( V t , E , W ) \mathcal{G}_{t}=\left(\mathcal{V}_{t}, \mathcal{E}, W\right) Gt=(Vt,E,W)来定义 V t \mathcal{V}_{t} Vt表示节点,即各个传感器的位置, E \mathcal{E} E表示边,即各条边相连,W表示权重,即距离。
然后是现有的两种图卷积一种是拓展集合的空间定义,即将顶点重新排列成特定的网格形式以便可以进行卷积,第二种是利用图形傅里叶变换在谱域进行操作,又称为 spectral graph convolution谱图卷积。然后本文使用则引入了图卷积算子的概念,不过本质还是基于谱图卷积。
公式(1)如下: Θ ∗ G x = Θ ( L ) x = Θ ( U Λ U T ) x = U Θ ( Λ ) U T x \Theta *_{\mathcal{G}} x=\Theta(L) x=\Theta\left(U \Lambda U^{T}\right) x=U \Theta(\Lambda) U^{T} x Θ∗Gx=Θ(L)x=Θ(UΛUT)x=UΘ(Λ)UTx,其中 Θ \Theta Θ是kernel, ∗ G *_{\mathcal{G}} ∗G代表图卷积算子,U则由拉普拉斯矩阵变化而来,即 L = I n − D − 1 2 W D − 1 2 = U Λ U T ∈ R n × n L=I_{n}-D^{-\frac{1}{2}} W D^{-\frac{1}{2}}=U \Lambda U^{T} \in \mathbb{R}^{n \times n} L=In−D−21WD−21=UΛUT∈Rn×n,In是一个单位矩阵,D是对角矩阵,其中 D i i = ∑ j W i j D_{ii}=\sum_{j}W_{ij} Dii=∑jWij, Λ \Lambda Λ是L的特征值对角矩阵,经过上述公式即可将X进行滤波然后进行卷积。
模型
本文提出了spatio-temporal graph convolutional networks (STGCN)模型,模型图如下。这张图应当从左往右看,即右边为左边部分组件的解释。从最左边我们可以看到将输入经过两层ST-Conv blocks,再经过FC即可完成输出。而ST-Conv blocks由三层组成,分别是Temporal Gated-Conv–>Spatial Graph-Conv–>Temporal Gated-Conv组成(其实每层原理都一样,就是通道数变了),然后Temporal Gated-Conv由一个1-D Conv和GLU(门控线性单元)组成。
如何将原来的数据进行转化以进行图卷积?
这里提出,根据之前的谱图卷积,运算量达到 O ( n 2 ) O(n^2)