论文笔记《ST-GRAT: A Novel Spatio-temporal Graph Attention Network for Accurately Forecasting》
文章《ST-GRAT: A Novel Spatio-temporal Graph Attention Network for Accurately Forecasting Dynamically Changing Road Speed》
目录
-
1. INTRODUCTION
-
2. RELATED WORK(略)
-
3. PROPOSED APPROACH
-
- 3.1 Problem Setting for Traffic Speed Forecasting
- 3.2 Encoder Architecture
- 3.3 Embedding Layer
- 3.4 Spatial Attention
- 3.5 Temporal Attention
- 3.6 Decoder Architecture
-
4. EVALUATION
1. INTRODUCTION
- 预测道路交通速度的难点:(1)路段类型不同;(2)速度的突然变化;(3)路段间的空间依赖性。
- 存在问题1: 很多基于图卷积和循环神经网络的深度学习方法用于预测交通速度,例如扩散递归神经网络DCRNN 和 Graph WaveNet,但这些模型的问题是:假设路段的空间依赖性是固定的, 因此计算一次空间依赖性就不变了,没有考虑交通状态的动态变化性。为解决这个问题,现有模型应用 多头注意力 对空间依赖性建模,但没考虑整体图结构信息(如节点的距离、连通性和方向)
- 存在问题2: 很多模型都用RNN对时间维度建模,但RNN难以捕获长程相关关系。为解决这个问题,可以加入attention,但现有研究没有考虑时间动态性,比如有的节点在不必要的情况下也会聚合邻居节点信息。
- 本文提出名为 spatio-temporal graph attention (ST-GRAT) 的模型,包含三方面:(1) spatial attention 模块,包括扩散过程
diffusion prior、有向头directed heads和距离嵌入distance embedding;(2)temporal attention 模块捕获交通速度变化;(3)sentinel vectors 前哨向量 模块,本文设计空间前哨(spatial sentinel) 的key和value向量。
实现动态允许模型从空间相关节点获取新特征或保留现有特征。
2. RELATED WORK(略)
3. PROPOSED APPROACH
3.1 Problem Setting for Traffic Speed Forecasting
- 目标是预测每个感测器处的未来交通速度。
- 输入图是 \mathcal{G}=(\mathcal{V}, \mathcal{E}, \mathcal{A}) ,\mathcal{V} 是传感器点集,\mathcal{E} 是边集,\mathcal{A} 是有权重的邻接矩阵。
- t 时刻输入的特征矩阵 X^{(t)} \in \mathbb{R}^{N \times 2},N 是节点数目,2 是特征数(速度和时间戳)
3.2 Encoder Architecture
模型整体结构如下:

- 左侧(橘色)整个是Encoder部分,包含一个Embedding层、四个同样结构的Encoder层。
- 一个Encoder层(紫色)中包含一个空间注意力层、时间注意力层和前馈层。
3.3 Embedding Layer
- 加入预训练节点嵌入,编码后的特征用于空间注意力的计算。同时,也可以起到位置嵌入的作用,即能考虑输入序列的顺序。
3.4 Spatial Attention

-
空间注意力层由多头注意力组成,奇数序号的头表示inflow,偶数序号的头表示outflow。定义Encoder层的隐藏层状态是 \mathcal{Z}=\left[z_{i}, \cdots, z_{N}\right],z_{i} \in \mathcal{R}^{d_{\text {model}}} 是第 i 节点的隐藏状态。\mathcal{N_{i}} 是第 i 节点及其邻居节点。为防止关注到无关信息,加入空间前哨
key \ value向量。 -
o_{i}^{h} \in \mathcal{R}^{d_{v}} 表示第 h 注意力头的第 i 节点输出特征,o_{i}^{h}=\left(1-\sum_{j=\mathcal{N}_{i}} \alpha_{i, j}\right) *\left(z_{i} W_{h}^{V_{s}}\right)+\sum_{j=\mathcal{N}_{i}} \alpha_{i, j}\left(z_{j} W_{h}^{V_{n}}\right)
其中 W_{h}^{V_{s}} \in \mathcal{R}^{d_{\text {model}} \times d_{v}} 和 W_{h}^{V_{n}} \in \mathcal{R}^{d_{\text {model}} \times d_{v}} 分别表示前哨向量value矩阵和空间注意力的value矩阵。 -
注意力得分系数 \alpha_{i, j}=\frac{\exp \left(e_{i, j}\right)}{e_{i, s}+\sum_{j=N_{i}} \exp \left(e_{i, j}\right)},其中 e_{i, j} 表示两个节点间的 energy logits,e_{i, s} 表示前哨向量的 energy logits
-
energy logits 利用 query 和 key 向量计算得到,e_{i, j}=\frac{\left(z_{i} W_{h}^{Q_{N}}\right)\left(z_{j} W_{h}^{K_{N}}\right)^{T}}{\sqrt{d_{k}}}+P_{h}(\mathcal{A}),为显示捕捉边缘信息,加入基于图传播过程的 P_{h}(\mathcal{A})。
-
流入(注意力头是奇数序号)的 P_{2 m+1}(\mathcal{A})=\sum_{k=0}^{K} \beta_{h}^{k} *\left(D_{I}^{-1} \mathcal{A}^{T}\right)^{k};流出(偶数序号)的 P_{2 m}(\mathcal{A})=\sum_{k=0}^{K} \beta_{h}^{k} *\left(D_{O}^{-1} \mathcal{A}\right)^{k},其中 K 是扩散过程的传播步数,D_I 是入度矩阵,D_O 是出度矩阵,\beta_{h}^{k} 是第 k 步的第 h 注意力头的权重,是个超参数。
-
计算完每个注意力头的输出之后,拼到一起 z_{i}^{*}=\operatorname{concat}\left(o_{i}^{1}, \ldots, o_{i}^{H}\right) W^{O_{N}}
3.5 Temporal Attention
和空间注意力部分不同的是:
- 没有前哨向量,没有传播部分
- 时间注意关注每个节点的重要时间步骤,而空间注意关注每个时间步骤的重要节点。
3.6 Decoder Architecture

- 右侧(绿色)整个是Decoder部分,包含一个Embedding层、四个同样结构的Decoder层。
- 一个Decoder层中包含一个空间注意力层、两个时间注意力层和前馈层。
- 整体和Encoder部分差不多一样,只是这部分有两个时间注意力层(这两个不同),一个是masked attention layer,另一个是encoder-decoder(E-D) attention layer。(注:为什么这么安排,去看Tranformer的原始文章就好了,跟那个结构一样。也可以看李宏毅老师的课)
4. EVALUATION
(待补充)
