丁新宇,施 佺,2+
(1.南通大学 信息科学技术学院,江苏 南通 226019, 2.南通大学 交通与土木工程学院,江苏 南通 226019)
针对交通流数据具有的高度非线性、时间相关性和不确定性等特点,国内外研究者分别从各自的角度对交通流特性进行了分析,建立了许多交通流理论和模型。邵毅明等[1]运用熵权法确定各评价指标的权重,依据权重选用TOPSIS法计算有限个评价对象与最优向量的贴近度。成云等[2]针对交通流预测精度不高的局限性,提出了一种基于差分自回归滑动平均(ARIMA)和小波神经网络(WNN)的组合模型预测方法。郑义彬等[3]使用支持向量机通过非线性映射把低维非线性问题转化为高维线性问题,降低了交通流预测的误差。邓箴等[4]基于交通数据流固有的时变性、非线性型和空间上下游路口的关联性等特征,建立了一种基于多条件随机场的交通流预测模型。熊亭等[5]使用SARIMA模型提取交通数据的周期性变化并结合随机森林模型的强大预测能力,提出SARIMA-RF模型。
随着深度学习的深入研究,越来越多的深度学习理论与方法被应用在交通流预测上。叶景等[6]提出一种基于CNN-XGBoost的短时交通流预测方法。结合短时交通流数据的时间相关性和空间相关性,将本路段和邻近路段的数据输入进行预测,并使用果蝇算法对CNN模型参数进行优化。温惠英等[7]使用LSTM预测高速路的交通流,并且通过遗传算法对数据时间窗的步长进行优化调参。晏臻等[8]通过卷积网络(CNN)挖掘相邻路口交通流的空间关联性,通过LSTM模型挖掘交通流的时序特征,将提取的时空特征进行特征融合,实现短期流量预测。桂智明等[9]利用卷积神经网络(CNN)和门控循环单元(GRU)提取交通流的时空特征,预测误差相比其它模型降低9%。
然而,现有针对交通流预测的深度学习方法,如长短时记忆人工神经网络[10](LSTM),在解决海量数据规模的城市路网交通流预测问题时主要存在两个方面的缺点:一是LSTM的输入数据必须是连续的时间序列,若希望输入数据包含邻近性和周期性,则输入的数据必须非常长,若仅用最近两个小时或近两天的数据作为输入,则不可能体现周期性。然而若把过去一个星期甚至一个月的数据作为LSTM输入,该模型将会变得非常复杂难以训练。二是LSTM预测路网交通流时,没有考虑空间相关性,它需要将一帧的数据Reshape为一个向量,这样会丢失路段与路段之间的空间相关性。
因此,本文在充分考虑路网的空间性、交通流数据的邻近性和周期性的前提下,针对海量数据规模的城市路网交通流数据,提出了一种基于深度时空残差网络的路网短时交通流预测模型DST-ResNet(deep spatio-temporal residual network)。
通过文献分析,目前路网短时交通流预测问题存在以下几个难点:
(1)空间依赖性。道路R5的交通流(如图1所示)受到附近道路(例如R1、R2、R3、R4、R6)以及更远处区域道路车辆流动的影响,同样,R5的交通流也会影响其它路段的交通流。
(2)时间依赖性。一条路段中当前时刻的交通流会受到近期该路段交通流的影响。例如,早晨8点的交通拥堵会影响到9点的交通流。工作日早高峰时段的交通状况可能类似,每24小时重复一次,此外周末和工作日的交通流按时间分布不同。
(3)海量数据规模复杂性。要体现交通流数据的周期性,则模型至少要输入连续一个星期的历史数据,然而海量数据规模会导致模型计算异常复杂。
(4)特殊事件的不确定性。某些特殊事件,例如异常天气和节假日,会极大地改变城市中的车辆流动,给预测带来不确定性。
针对上述问题,本文提出了基于深度时空残差网络的路网短时交通流模型DST-ResNet,该模型的设计步骤如下:
步骤1 将路网历史车流量数据按时段划分成二维的数据帧,数据帧中的每个元素都代表在该时段里一条路段通过的车流量,现实中相邻路段在数据帧中也相邻。采用数据帧的形式进行分析,既可以一次预测整个路网的交通流,更重要的是可保留路段与路段之间的空间依赖性。
步骤2 为体现交通流数据的邻近性与周期性,并且减少模型的计算量,采用抽取关键帧的方式。研究邻近性时,只抽取前h个时段的数据帧;研究周期性时,只抽取前d天相同时刻的数据帧。相比将d天所有时段数据输入模型的方法,抽取关键帧不仅可减少模型的计算量,而且更能体现数据的时间属性。
步骤3 使用卷积神经网络(CNN)对海量数据规模的城市中任意两个路段的空间依赖关系进行建模,同时添加残差单元(Residual Block)将卷积网络变为残差网络(Residual Networks),确保网络的深层结构不会对模型的预测准确性产生影响。这里对时间属性邻近性和周期性分别使用两个残差网络进行建模。
步骤4 DST-ResNet为两个残差网络分支分配不同的权重,动态聚合两个残差网络的输出,并将结果与外部因素再进行一次融合。
步骤5 使用实际的路网数据、天气数据、节假日数据以及交通流数据评估提出方法的有效性。
将城市路网进行逻辑映射可以保留城市路网之间的空间依赖性,这样进行卷积操作时更容易捕获路段之间的相关性。一个数据帧表示一个时段里整个路网的交通流。
如图2所示,右侧矩阵中R1、R2…的值,代表城市在某个时段里对应路段的交通流。
图2 城市路网的逻辑映射
短时交通流预测的时段大小通常有5 min、10 min、15 min,这里选取15 min作为时段大小,预测第i时段的交通流可以转换为预测矩阵RoadNetwork(i)(记为R(i))的值。
交通流数据存在两个时间属性:邻近性和周期性,假设目标时段为i,分别从以上两个角度来进行数据帧抽取:
邻近数据集,Recent(i)={R(i-h),…,R(i-3),R(i-2),R(i-1)},h值表示数据帧个数,在网络里表示输入数据帧的通道数,实际意义是将前h个时段的交通流数据提取出来作为输入数据,根据需要h值可自由确定;
周期数据集,Period(i)={R(i-d*p),…,R(i-3*p),R(i-2*p),R(i-1*p)}, 其中p表示一天的跨度,因为选取15 min作为时段大小,这时p取固定值96;d表示周期大小,通常以一个星期的长度为一个周期的大小,这时d值取7。具体意义是将昨天、前天、…前一个星期中与i时段所在时间一致的交通流数据提取出来。
提取规则如图3所示。
图3 数据帧的抽取过程
其次,提取影响路网车流量的外部因素,异常天气和节假日:Ex(i)={Weather(i),Holiday(i)}。
路网交通流的预测过程就是使用Recent(i)、Period(i)、Ex(i)数据帧预测R(i)值的过程。
DST-ResNet网络的结构主要由2个网络组成:交通流数据分析网络、外部因素分析网络。其中交通流数据分析网络由邻近性分析网络和周期性分析网络组成。如图4所示。
图4 模型的整体框架
首先将城市路网每个时段通过的交通流,转换为数据帧的形式。
其次从数据帧中以两个时间特性:邻近性和周期性,进行数据抽取;将两种特性数据帧分别输入各自的残差网络中,通过卷积捕获城市路网之间的空间依赖性,两个网络的输出分别记为XR1、XR2。
再次,从外部数据集中提取一些特征,如异常天气和节假日,将它们输入全连接神经网络,输出XE。
然后,将两个残差网络的输出XR1与XR2,结合参数矩阵进行一次聚合,结果记为XR。并且XR还会与外部因素分析网络的输出XE融合在一起记为X。
最后,通过Tanh函数将X映射到[-1,1],与目标进行损失值计算,使用反向传播的方式优化模型参数。
该网络主要对交通流的历史数据从邻近性和周期性两个角度进行分析,并且邻近性和周期性两个分析子网络具有相同的结构。其中分析子网络主要由两个部分组成:卷积网络和残差单元,下面将从两个方面进行分析设计。
3.2.1 卷积网络的设计
卷积神经网络(convolutional neural networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(feedforward neural networks),是深度学习(deep learning)的代表算法之一,它具有强大的分层捕获空间结构信息的能力。在城市路网中,相邻路段的车流在短时间内会相互影响,即相邻路段之间的交通流具有潜在的相关性,而卷积神经网络正好可以挖掘其潜在的规律,因此使用卷积捕获相邻路段交通流的依赖关系。此外,由于汽车速度通常较快,在相邻时段内同一辆车的物理位置可以相距很远,从而使两条相距较远的路段之间的交通流也可能存在某种相关性。因此,需要设计一个具有多层的卷积神经网络用于捕获远距离路段的空间相关性。多个卷积可以进一步捕获更远距离甚至是整个城市范围内路段间的依赖。
数据帧的尺寸代表着城市路网的大小,模型最终输出的数据尺寸需要与输入数据尺寸保持一致,而通常的卷积网络输出为一维,因此需要对网络的输出结构进行改进。
这里可以有两种解决方案确保卷积网络的输入与输出大小不变:
第一种:每一层卷积的输入输出保持相同的尺寸,同时不进行下采样,这样网络最后输出可以与最开始输入保持一样的尺寸;
第二种:在网络的末尾添加反卷积(转置卷积)层,卷积以及下采样会导致图像尺寸变小,而反卷积可以将图像的尺寸变大,设置合适的参数即可将最后输出图像的尺寸大小调整为输入的大小,这样可以让输出与输入保持一致。
使用下采样+反卷积会丢失一部分数据内容,导致模型的误差率变高。而直接卷积不进行下采样,会加大计算量,但优点是可以进行多次卷积。为使模型具有更高的准确率,这里不使用下采样+反卷积,而是采取直接卷积的方案。
卷积前后数据尺寸变化公式
O=(I+2*P-K)/S+1
(1)
其中,I表示输入数据尺寸,O表示输出数据尺寸,K为卷积核尺寸,P为填充大小,S为步长。
由上述公式可得,若将P、S设置为1,K设置为3,则满足I=O的条件。
3.2.2 残差单元的应用
当采取直接卷积方案时,每经过一个卷积层后数据帧的尺寸一直保持不变,这样的网络在理论上可以无限延长下去。而本文的目标是预测整个城市路网的交通流,因此只需要一个较深层次的网络来捕获整个城市路网范围内的依赖关系即可,且路网规模越大,所需的网络层数越多。
训练集LOSS一般会随着网络层数的增多而逐渐下降,但是当网络层数大于某个值时,若再增加网络深度,训练集LOSS反而会增大,这就是卷积网络中经常出现的梯度消失(爆炸)现象。
在卷积网络里添加残差单元[11]可以有效解决因网络过深而导致的网络准确率下降(误差上升)问题。其原理是如果一个卷积网络以恒等映射的方式来增加它的层数,那么层数变多后的网络训练误差是不会大于它未增加恒等映射层时的误差。即网络添加残差单元后,误差不会变大,而且极有可能减小。
一个残差单元可以用图5表示。
图5 残差单元
为了避免由于网络层数过多而导致的网络退化问题,在图4的卷积网络后面堆叠残差单元,如下
X(l+1)=F(X(l);θ(l))+X(l),l=1,…,L
(2)
其中,F是残差函数(即图5的残差单元),而θ(l)包括第l个残差单元中的所有可学习参数。通过在卷积网络中添加残差单元将网络变为残差网络可以有效解决梯度消失(爆炸)问题。
从日常生活经验中可以得知,城市道路交通流的大小可能会受到许多复杂外部因素的影响,如节假日、天气和公共突发事件。
通过分析美国波特兰大都会地区在工作日和节假日期间城市路网交通流数据,验证了节假日会对交通流产生较大影响。如图6所示,实线表示工作日期间(2019年12月16日~20日)的交通流曲线,虚线表示节假日期间(2019年12月23日~27日,全美最大法定节假日圣诞节)的交通流曲线。通过分析图中相邻两周交通流的变化趋势可以看出,节假日对交通流的大小有着重要影响。
图6 某路段节假日与工作日交通流对比
接着,分析异常天气对交通流的影响,选取2019年2月19日~21日、2月26日~28日两段数据。在2月19日~21日期间,城市天气良好,而2月26日~28日期间,只有第一天是晴天,剩余两天均在雨天。如图7所示,与前一周同天相比,雨水显著减少了当日的交通流。
图7 某路段雨天与晴天交通流对比
在实现中,因为公共突发事件具有极大的不确定性难以定量分析,因此模型考虑的外部因素主要是异常天气以及节假日。节假日数据可以直接获取,但是未来时段t天气未知,只能使用前一个时段的天气数据代替未来的天气情况。
外部因素分析网络由一个输入层和两个全连接层组成。第一个全连接层接收输入数据并进行第一步特征融合。第二层用于将网络的输出扩大至路网的尺寸以便进行后续的融合操作。
模型需要将3个子网络的输出进行融合,如图4所示。首先将邻近性分析网络的输出XR1与周期性分析网络的输出XR2进行融合。然而对于不同的路段,邻近性和周期性对自身交通流的影响程度并不相同,对于某些路段周期性很重要,而对另一些路段邻近性可能更加重要,如景点和公园附近的交通流相比邻近性,更容易受到周期性和节假日的影响。
总之,不同道路都受邻近性和周期性的影响,但各条道路受到这两种因素影响的程度又有所不同。因此,本文设计了一种基于参数矩阵的融合方法,将模型的交通流数据分析网络(即邻近子网络、周期子网络)融合如下
XR=Wt∘XR1+Wp∘XR2
(3)
其中,∘是Hadamard乘积(即矩阵逐元素乘积)。对每一条路段均有两个可学习的参数用于调整邻近性和周期性对该路段的影响,并将整个路网的可学习参数组合在一个矩阵里形成参数矩阵Wt,Wp。
其次融合外部组件,将前两个组件的输出XR与外部组件输出XE直接合并。
最后,第t个时段的路网交通流预测值可表示为
(4)
其中,Tanh激活函数的作用是确保输出值在-1和1之间。
实验数据来自波特兰-温哥华大都会地区的官方数据,http://new.portal.its.pdx.edu:8080/downloads/,选取其中80条主干道组成城市路网,数据采样时间间隔为15 min,训练集数据选择2019年4月30日~6月2日的交通流数据,共计3264条;测试集数据选择2019年6月3日~6月9日的交通流数据,共计672条;并且统计出该城市在此期间所有的天气数据及节假日。
(1)均方根误差
均方根误差(root mean square error,RMSE)能够很好地反映回归模型预测值与真实值的偏离程度,其值越小说明拟合效果越好。定义如下
(5)
(2)确定系数
确定系数(coefficient of determination,R2)的定义为回归平方和与总平方和的比值,故确定系数R2
(6)
即
(7)
R2的正常取值范围为[0,1],越接近1,表明这个模型对数据拟合的越好。
本文基于PyTorch深度学习框架搭建DST-ResNet模型,将数据集进行预处理后放入模型中训练。经过多次实验仿真调试,选择模型训练参数见表1。
表1 模型主要参数预设值
其中,ResNet1表示邻近性分析子网络,ResNet2表示周期性分析子网络。使用参数矩阵将两个子网络进行融合,利用损失函数计算当前网络的损失度,最后使用优化器进行模型参数调优。设置批处理大小100,迭代200次。模型训练完毕后,将测试数据集放入模型中运行得到最终预测结果。
图8展示了从80条路段中随机选取的一条路段,在7天内其交通流的预测值与真实值的比较图。
图8 某路段7日内交通流真实值与预测值对比
从图8中可以看出模型对该路段交通流的预测结果较好地拟合了真实的交通流情况,并且准确反映了从日高峰期到日低峰期之间的变化,尤其对交通流7天内的周期性变化预测得较为准确。
接着,从测试集里随机选取某一中午时段(代表高峰期)和夜晚时段(代表低峰期)的路网交通流数据,并对其进行预测,预测结果如图9所示。可以看出不管在高峰期还是低峰期,模型均能较好地拟合整个路网的交通流。
图9 路网高、低峰期交通流真实值与预测值对比
为更好地分析模型的优劣,本文添加一组对照实验——使用LSTM对路网交通流进行预测。分别对所有待预测时段使用DST-ResNet和LSTM模型进行预测,并使用两个回归评价指标RMSE和R2对预测结果进行计算,计算结果见表2。
其中,RMSE的值越大表示对路网的交通流预测越不准确,并且低峰期的RMSE值通常小于高峰期的RMSE值。R2的值在0和1之间,越接近1表明这个模型的路网交通流预测值和真实交通流拟合的越好,模型越优秀。统计7天共计672个测试集时段的结果比较见表3。
从以上分析可以看出,本文提出的基于深度时空残差网络的路网短时交通流预测模型DST-ResNet不管是对单一路段还是整体路网,不管是在高峰期还是低峰期,都能较为准确地预测下个时段的交通流。同时经过与LSTM模型对比发现,本文所提出的DST-ResNet模型优于LSTM模型的时段个数占90%以上,模型在性能上有着明显的优势。
表2 DST-ResNet与LSTM评价指标部分结果对比
表3 DST-ResNet与LSTM统计结果对比
本文在理论和数据上对交通流特性进行详尽分析,充分把握交通流时空特性的内在联系。在使用数据和构建模型上时全面地考虑了交通流特性和路网的复杂性。实验结果表明,本文提出的基于深度时空残差网络的路网短时交通流预测DST-ResNet模型,对城市路网短时交通流预测问题而言是一个优秀的解决方案。此外,本文尚未考虑更加复杂的突发事件对模型施加的影响,未来将加强模型的鲁棒性,使其能适用于更加复杂的应用场景。