1.背景
下面所介绍是2018年发表在IJCAI上的一论文,其主要解决的问题是预测接下来几个时间间隔内,某条道路上车辆行驶的平均速度。其关键点在于作者提出了用"look-up"这一方法来构造由每条道路及其相连接道路所形成的速度矩阵,接着用CNN来提取相邻“道路速度”的空间依赖关系,然后进一步采用LSTM从时间序列的角度来提取特征;最后融合天气和周期信息等最为整个网络的输出。
我们知道在实际情况中,道路的连接是丛横交错的;并且存在对于某两个地点来说是单向通行的。因此论文中采用了有向图来描绘道路结构,如下图左边所示;对于每条路上在某个时间间隔 内的平均速度为右图边上的权重,且用一个速度向量来表示。
论文中所需要解决的问题就是:给定历史数据 (即历史速度向量),来预测 时刻的速度向量(即下一(或几个)个时刻每条道路可能的速度)。
2.数据处理
首先需要根据道路拓扑结构(topology)得到一个邻接道路矩阵(adjacent road matrix) 。这个矩阵记录了每条道路的所有相邻道路,其规则为: 。一句话就是首位相连(不能首首或尾尾),然后对于所有的 构成一个大的集合 ,如下图左边所示。
接着,根据 很容易的就得到了矩阵 ,其中 表示与第 条路所有相连接的道路,其维度 ;同时为了方便后面构造同样大小的速度矩阵进行卷积,对应如果与某条路相连接的道路数小于 ,则用自身补齐(上图右边红色编号)。
3.网络构造
整个网络结构图如下所示,下面我们分别对每个小的模块进行大致说明一下:
3.1 "look-up"操作
进一步要做的就是如何构造每条道路对应的速度矩阵(由多个相邻时刻的速度向量构成),也就是论文所指的"look-up"操作,如下图所示。
说明:
①红色实线表示的是"look-up",操作,即用
时刻的前4个时间构成的速度矩阵根据M来索引得到每条道路相邻的所有道路的速度,并构成一个矩阵;
②对第①步得到的矩阵分别进行卷积操作,并且对于用同一个卷积核作用得到每一列构成一个通道(
),也就是说以上图为例仅仅采用了两个卷积核提取特征。
3.2 LSTM部分
假设经过"look-up"操作后得到的输出
,也就是说这三个维度分别代表了时间间隔数,道路总数,卷积后的通道数。假设输出得到的
形状为
,即一共4个时刻,5条道路,2个通道(如p0078图所示)。论文中说到先要通过下面这个公式reshape后才能喂给LSTM,那这到底是怎么在reshape呢?我们先来看reshape后第一条道路的4个时刻所对应的数据是什么样的:
由此可知,time_step=4,dim=2,batch_size=5
,例如在Tensorflow中只需要将
变成[5,4,2]
就行,具体情况可自行分析。接着就是对LSTM的最后一个时刻输出结果做一个非线性变换。
3.3 周期模拟及额外因素
对于这种时空数据,一般来说都会受到这两方面的影响。在这篇论文中,作者采用了两个全连接来分别模拟近几天和近几周的周期规律。对于天气和节假日等额外因素,作者在论文中提到也是使用了两个全连接进行的处理。当然最后就是融合了,其融合方式同上一篇介绍的论文中的方式一样,都是基于权重的融合方式。
4. 总结
个人认为这篇文章的创新点在于提出了"look-up"这以方式来对相邻“道路速度”建立一个空间上的关系,然后利用CNN进行特征提取,接着用LSTM进行处理。其它因素的处理,以及整个网络的框架都与"Deep Spatio-Temporal Residual Networks for Citywide Crowd Flows Prediction" 这篇论文都很相似。