2.1 ST-ResNet[20]
ST-ResNet是Zhang等人于2017年提出的用于城市区域流量(Crowd Flow,包括车流、人流等)预测的深度学习模型。这篇文章是基于深度学习的道路交通状态时空序列预测研究的重要开山之作之一,它成为后来很多学者跟踪研究的对象。
2.1.1 问题提出
在城市区域被网格化之后,每个网格单元的交通状态观测包括入流(inflow)和出流(outflow)(交通观测特征数F=2)。该模型的任务是:基于历史一系列时段内的全部网格单元的交通状态(inflow和outflow)观测序列,预测未来一个时段的全部网格单元的交通状态(inflow和outflow),也就是寻找一个预测函数,从而实现
式中,表示含当前时段t的前个历史时段的交通状态切片序列;N为网格单元的数目;分别表示时段t内第i个网格单元的inflow和outflow,即;表示当前时段的下一个时段(也就是t+1时段)交通状态切片预测值。
2.1.2 历史交通状态切片数据的获取
想要获取行人的inflow和outflow,可以通过行人的手机信令数据提取他们的轨迹数据,然后将轨迹数据匹配到相应的网格单元中,就可以获取历史时段内每个网格单元行人的inflow和outflow;对于车流,可以通过车载GPS定位数据,获取车辆的轨迹数据,然后将轨迹匹配到相应的网格单元中,就可以获取历史时段内每个网格单元的车辆inflow和outflow,如图2-2所示(r1, r2, r3, r4为4个网格单元)。
图2-2 inflow和outflow的观测
任意一个考察对象(行人、机动车等)的轨迹Tr由一系列的定位点组成,即
式中,表示第k个定位点,表示轨迹上的定位点总数。所有的考察对象轨迹构成的集合表示为。
任意时段t内,假定收集的轨迹数据集合为,则任意一个网格单元i的inflow和outflow,依据轨迹数据的统计结果表示为
式中,分别表示定位点k所在的位置处于和不处于网格单元i内;|·|表示集合“.”所包含元素的个数。
2.1.3 预测模型
ST-ResNet整体的预测模型架构如图2-3所示。模型的整体架构包括4个模块:external、trend、period和closeness,它们分别反映了外部信息和3个尺度上对未来交通状态有影响的历史交通状态。
图2-3 ST-ResNet整体的预测模型架构(Zhang, et al, 2017)
(1)external模块。该模块负责对外部信息特征的提取。
(2)trend模块。该模块负责对交通状态演化的长期历史趋势(如季度趋势、月趋势)特征进行提取。
(3)period模块。该模块负责对交通状态演化的短期历史趋势(如周趋势)特征进行提取。
(4)closeness模块。该模块负责对交通状态演化的近期历史趋势(如待预测时段的前几个相邻时段的趋势)特征进行提取。
4个模块分别提取到的高阶特征均是影响未来交通状态预测的重要因素,需要将它们按照某种方式融合起来,从而构成整合的高阶特征,最后基于该整合的高阶特征做出对未来交通状态的预测。
1. external模块
外部信息,如天气条件、事件等均会对交通状态产生影响。这里采用的外部信息包括:DayOfWeek、Weekend/Weekday、Holidays及Weather Conditions(temperature、Wind Speed等)。
首先,将这些外部信息通过一个Feature Extraction模块,进行数值编码。对于DayOfWeek、Weekend/Weekday、Holidays这些离散的外部信息,采用One-Hot Encoding的方式进行编码,对于temperature、Wind Speed等连续的外部信息,通过Min-Max标准化的方式将其缩放到[0,1]。
在获得外部信息数值编码后,使其通过一个两层的全连接神经网络,将原始的数值编码嵌入(embedding)到新的表征空间。
这里值得注意的是,外部信息的编码也都是网格化的,也就是每个网格单元对应一个原始的外部信息编码向量,也对应一个转换后的新的表征向量。可以试着将这种编码后的网格化外部信息视为一种特殊的“外部信息特征image”。t时段外部信息特征表达为Et。
2. trend模块
该模块负责捕获交通状态序列中的长期历史趋势特征。因为要预测的是t+1时段的交通状态Xt+1,所以,希望能够了解过去每个长期周期内,对应t+1时段的交通状态变化趋势,从而更好地辅助当前的预测。
假定trend模块负责监测的每个长期周期的时长为q,考虑历史上lq个长期周期,那么能够反映长期周期趋势性的时间序列表示为
如前文所述,在时间维度上,将 aggregate起来,构成一张包含个channel的大image,它表示了原始的输入,为了说明方便,将其表示为。在这张大image上,采用多层2D图卷积的操作,充分地提取其时空相关性,最终生成能够反应交通状态变化长期趋势的综合特征,具体做法为:首先,将大image输入到一个卷积层“Conv1”中,将其每个网格单元的特征维度变换到适当的维度,得到,进而将其输出依次通过L个残差连接单元“ResUnit”,充分地提取其时空相关性,得到,最终再将输出通过一个卷积层“Conv2”,得到高阶特征表征。其中,任意第l=1,…,L层的ResUnit如图2-4所示。
图2-4 任意第l个ResUnit
3. period模块
该模块负责捕获交通状态序列中的短期历史趋势特征。因为要预测的是t+1时段的交通状态Xt+1,所以,希望能够了解过去每个短期周期内,对应t+1时段的交通状态变化趋势,从而更好地辅助当前的预测。
假定period模块负责监测的每个短期周期的时长为p,考虑历史上lp个短期周期,那么能够反映短期周期趋势性的时间序列表示为
然后,采用与trend模块同样的方式,捕获该短期交通状态序列的时空相关性,最后获取高阶特征表征。
4. closeness模块
该模块负责捕获交通状态序列中的近期历史趋势特征。因为要预测的是t+1时段的交通状态Xt+1,所以,希望能够了解其紧邻的过去一系列时段的交通状态变化趋势,从而更好地辅助当前的预测。在这里,反映近期趋势的时间序列表示为
采用与trend模块同样的方式,捕获该近期交通状态序列的时空相关性,最后获取高阶特征表征。
通过上述4个模块,分别提取到用于预测未来t+1时段交通状态的高阶特征表征,那么接下来,需要按照某种方式,将这些分别得到的高阶特征表征融合起来,从而生成一个综合的高阶特征表征,进一步用于做出对未来的预测。
首先,对于trend、period和closeness 3个模块输出的高阶特征表征进行参数加权的融合,具体过程如下:
式中,分别为参数化矩阵,其中的参数可以通过深度神经网络模型的训练学习得到;⊙为Hadamard积。
然后,将3个时间周期高阶特征表征融合得到的综合高阶特征表征XRes与外部信息表征Et+1直接进行加和,作为最终的高阶特征表征:
最终的预测模块非常简单,直接将通过一个tanh层,就得到了预测输出:
通过式(2-10)可以看出,所有的网格单元共用同一组参数,即{Wintegrated, bintegrated}的预测神经网络。这种方式称为共享的预测器(Shared Predictor)。在后面的研究中,会看到可以为每个网格单元设计独立参数的预测模块(Region-Specific Predictor)。
这里采用平方差(Squared Error)作为损失函数,表示如下:
式中,L(·)为损失函数;Θ为所有待学习参数构成的集合;‖·‖2为2-范数。
2.1.4 训练算法
算法2-1给出了深度模型训练算法的整体流程,主要分为两个部分:①构建训练数据集(1~7行);②从训练数据集中任意选取一个小batch的训练集,采用反向传播算法和Adam优化器,进行参数学习(8~12行)。
算法2-1 ST-ResNet训练算法