论文地址:https://arxiv.org/abs/1709.04875
Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting
文章目录
- 一、摘要
- 二、数据集介绍
- 美国洛杉矶交通数据集 METR-LA 介绍
- 美国加利福尼亚交通数据集 PEMS-BAY 介绍
- 美国加利福尼亚交通数据集 PEMSD7-M 介绍
- 数据集含义
- 三、任务目标
- 四、训练过程
- 基础推理过程
- 邻接矩阵
- 注意力机制
- 五、 总结
一、摘要
准时准确的交通预测对城市交通控制和引导至关重要。由于交通流的高非线性和复杂性,传统方法无法满足中长期预测任务的要求,并且通常忽视空间和时间依赖关系。本文提出了一种新颖的深度学习框架,即时空图卷积网络(STGCN),用于解决交通领域的时间序列预测问题。我们不是应用常规的卷积和循环单元,而是在图上制定问题,并利用完整的卷积结构构建模型,这使得训练速度更快,参数更少。实验证明,我们的模型STGCN通过建模多尺度交通网络有效地捕获了全面的时空相关性,并在各种真实世界的交通数据集上始终优于最先进的基线模型。
二、数据集介绍
美国洛杉矶交通数据集 METR-LA 介绍
T-GCN文章选取了该数据集2012年3月1日至3月7日期间的207个传感器及其交通速度。每5分钟汇总一次交通速度。**相似性,数据总结出一个邻接矩阵和一个特征矩阵。邻接矩阵是由交通网络中传感器之间的距离计算出来的。**由于Los-loop数据集包含一些缺失的数据,使用线性插值法来填补缺失值.
SOTA算法:
https://paperswithcode.com/sota/traffic-prediction-on-metr-la
目前第一名是Spatio-Temporal Graph Mixformer for Traffic Forecasting,而本文的STGCN只能排18。
美国加利福尼亚交通数据集 PEMS-BAY 介绍
PEMS-BAY 数据集由加利福尼亚大学伯克利分校的交通实验室发布。该数据集包含了旧金山湾区高速公路网络上 325 个传感器的实时交通流量数据。这个数据帮助对基于多源数据的交通预测算法进行评估和比较,并被广泛用于交通预测、拥堵控制、出行决策等领域的研究中。
SOTA:
https://paperswithcode.com/sota/traffic-prediction-on-pems-bay
美国加利福尼亚交通数据集 PEMSD7-M 介绍
SOTA:
https://paperswithcode.com/sota/traffic-prediction-on-pemsd7-m
PEMSD7-M 数据集由美国加州大学洛杉矶分校的智能交通系统实验室发布。该数据集收集了洛杉矶城市高速公路上的交通流量数据,包含了 228 个传感器(探头)每 5 分钟采样一次的方式收集数据。这个数据集旨在帮助进行基于不同时间尺度的交通预测研究,以提高道路网络可持续性和安全性。
数据集含义
以pems-bay为例,两个csv文件就是2个矩阵。
vel.csv的形状是(16384, 325),代表了16384次观测数据,每次数据都是325个传感器的数据(可能是车流量或者车速的一种综合表达的数据):
adj.mat.csv的形状是(325, 325),表示了传感器之间的关系,比如距离关系,是邻接矩阵,邻接矩阵是对角阵:
三、任务目标
还是以pems-bay数据集为例子,我们有16384次时序的观测数据,任务的目标就是预测这325个传感器的后续数据走向,看看哪个模型预测得准。
交通流量是一个很实际的问题,325个传感器分布在地区的各个要点中,邻接矩阵表达了各个传感器之间的关联性,而16384次时序观测数据也表达了传感器随时间变化采集到的数据。如果有一个模型可以很好预测传感器的后续数据,说明模型能很好预测出交通流量走势,这可以应用到交通疏通中或者预测拥堵的应用里去。
四、训练过程
基础推理过程
输入模型的x大小是,32是batchsize,12是时序步数,325是传感器维度。
输出的是下一次时序里的数据:
而训练数据条数一共有13108条:
13090/32
409.0625
所以每次训练是410个iter迭代步数。
x进去后,由self.st_blocks(一系列小波图运算)运算得到了x_stbs ,
而后 self.output 得到了预测结果。
def forward(self, x):
x_stbs = self.st_blocks(x)
# [2, 1, 12, 207]->[2, 64, 4, 207]
if self.Ko > 1:
x_out = self.output(x_stbs)
邻接矩阵
在上述推理过程中,在哪里使用到邻接矩阵了?
在最开始用wavelet_basis来确定了小波基矩阵。
这个函数wavelet_basis
的主要作用是根据输入的交通流量传感器的邻接矩阵adj
(表示传感器之间的连接关系),以及参数s
(小波尺度参数)和threshold
(阈值),来计算并返回一组小波基矩阵,用于后续在图卷积过程中对信号进行多尺度分析。这个过程涉及图信号处理的核心步骤,包括拉普拉斯矩阵的计算、特征分解、小波变换的构建、阈值化处理和L1范数归一化。下面是各部分的详细解析:
-
计算拉普拉斯矩阵:
- 函数首先调用
calculate_laplacian_matrix
来计算图的拉普拉斯矩阵L
。拉普拉斯矩阵是图论中的重要概念,广泛用于图信号处理和图的谱分析,能体现图的拓扑结构。
- 函数首先调用
-
特征分解:
- 接着,使用
fourier
函数对拉普拉斯矩阵L
进行特征分解,得到特征值lamb
和特征向量矩阵U
。这一步是图傅里叶变换的基础,用于将信号映射到频域进行分析。
- 接着,使用
-
构建图小波:
- 利用
weight_wavelet
函数基于小波尺度s
、特征值lamb
和特征向量U
计算小波权重矩阵Weight
,以及通过weight_wavelet_inverse
计算逆小波权重矩阵inverse_Weight
。这两个矩阵是构建小波基的关键,用于对信号进行多尺度分解和重构。
- 利用
-
阈值化处理:
- 根据给定的
threshold
,将Weight
和inverse_Weight
中小于该阈值的元素设为0,这是一种常见的去噪操作,可以减少噪声影响,提升模型的稳健性。
- 根据给定的
-
L1范数归一化:
- 对
Weight
和inverse_Weight
进行L1范数归一化,确保每个行的绝对值之和为1,这有助于保持能量守恒,并使后续的操作(如图卷积)更加稳定。
- 对
-
转换格式:
- 最后,将矩阵转换为稀疏矩阵格式
coo_matrix
,以节省存储空间和加速后续的矩阵运算。
- 最后,将矩阵转换为稀疏矩阵格式
整个函数的输出t_k = (Weight, inverse_Weight)
是一对小波基矩阵,它们在基于小波变换的图卷积神经网络(如之前提到的Graph_WaveletsConv
)中扮演核心角色,用于捕捉不同尺度的图信号特征,增强模型对复杂时空数据的理解能力。
注意力机制
小波变换真是复杂的作用机制,大体来说,是将有用信息用小波变换方式给入到了模型前向传导。
为了引入自注意力机制,就得找一些层引入,小波卷积层是一个不错的层。
定义一个AttentionModule,它接受节点特征作为输入,通过两层全连接层和ReLU激活函数计算每个节点的注意力分数,然后通过softmax函数标准化这些分数,确保所有节点的注意力权重之和为1。在Graph_WaveletsConvWithAttention中,首先使用原有的小波图卷积操作处理输入,然后将得到的特征传递给注意力模块,实现特征的自适应加权。
整体结构在多个尺度会调用上注意力块Graph_WaveletsConvWithAttention:
效果是没有提升,没提升是正常的,如果一个简单的改进就能得到提升,那大家都好发论文了:
又试了一下没加注意力之前的模型,如论文所写,的确小波加进去,MAE为1.81:
五、 总结
综合来看,以普通方式改进STGCN是很难有提升的,而目前的SOTA算法非常厉害,比如
STD-MAE算法(Spatial-Temporal-Decoupled Masked Pre-training for Spatiotemporal Forecasting)在PEMS-BAY的指标MAE为 1.77, 或许要尝试一些别的改进方式才行,我这里就不再进行额外尝试了。