神经网络驱动的交通流量预测可视分析方法

2019-09-21 01:39孙国道曹帝胄2梁荣华
浙江工业大学学报 2019年5期
关键词:交通流量过滤器神经元

孙国道,曹帝胄2,梁荣华

(1.浙江工业大学 信息工程学院,浙江 杭州 310023;2.浙江工业大学 计算机科学与技术学院,浙江 杭州 310023)

随着城市化的快速推进,国民经济飞速发展,城市机动车保有量快速增长。根据公安部交管局统计的数据得知:截止到2016 年底,全国机动车保有量达2.9 亿辆,其中汽车1.94 亿辆,机动车驾驶人3.6 亿人,其中汽车驾驶人超过3.1 亿人,并且这个数据还在快速增长。汽车化进程的快速发展是导致城市交通拥堵的最主要原因之一。由于城市空间以及建设资金的有限性,解决城市道路拥堵不能单单依靠基础道路建设,通过建设城市智能交通系统来挖掘道路潜力是必不可少的[1-2]。同时随着智能城市的发展,道路卡口设备的安装已经十分普及,这些设备采集到的多维度交通时空数据可以为智能城市的建设提供帮助。交通流量预测是智能城市交通控制系统中重要的一环。交通流预测是指通过获取的动态道路交通流量数据来推测未来时间段的交通流量数据[3]。交通流量预测在智能城市交通控制系统中可帮助系统实现城市交通诱导,交通控制以及交通管理功能。交通流量具有时空分布特性,流量大小随时间和空间的变化而变化。与此同时,传统的神经网络训练方法在对交通流量预测应用方面也存在一些缺点和不足,比如网络训练出的结果具有一定的局限性,大部分只适用于输入数据所在的路段,并且由于神经网络的输入输出过程为“黑盒”,对中间的训练结果进行观察十分困难,难以对神经网络模型结构进行实时调整,因此使用交互式可视分析技术与神经网络结合的方法,可为研究人员提供一套可视交互分析工具,方便研究人员对交通数据进行神经网络方面的研究[4]。

笔者将可视分析技术和神经网络相结合,提出了利用可视分析技术构建用于交通流量预测的神经网络模型的新方法,并设计了一套基于B/S架构的可视交互交通流量预测系统。该系统通过查询语言可视化将一些交通特征进行抽象并生成不同的过滤器,用户通过使用过滤器工具来针对特定路口,特定时间段等需求进行训练数据的选取。同时用户可以通过设置隐藏层,激励函数等神经网络的相关参数构建神经网络,并通过对神经网络中间结果可视分析来实时调节神经网络参数。同时系统允许用户使用流量时序图等可视分析工具对预测结果进行可视分析并与历史数据作比对,来帮助验证模型的有效性。系统采用Key/Value型数据库储数据,通过建立时间和空间索引减少数据I/O时间,因此使用本系统用户可以省去构建复杂SQL语句以及神经网络模型的编程时间,从而减少构建一个神经网络模型所需要的时间成本,并且通过对神经网络训练中间结果的观察来优化神经网络结构。笔者的主要贡献在于提出使用可视分析技术与神经网络相结合的方法来解决交通流量预测问题,通过使用查询语言可视化帮助用户得到合适的训练数据,并对神经网络训练过程和结果进行可视化来帮助用户构建合理的神经网络模型。

1 相关工作

1.1 交通流量预测

交通流量预测是根据当前和历史的交通流量数据,并通过构建合理的数学模型对未来一段时间的交通流量进行预测[5]。交通流量虽然在同样的路段同样的时间段内有一定的波动,但是从整体来看具有周期性的变化。这种周期性变化为交通流量预测提供了可行性[6]。朱征宇等[7]提出了一种结合SVM与卡尔曼滤波的短时交通流预测模型,金成均等[8]提出了基于IPSO的模糊神经网络优化模型来进行交通流量预测。以上方法着重于对机器学习模型的优化,而笔者提出将可视分析技术与神经网络相结合,从数据过滤和数据展示的角度上帮助用户更有效率地构建一个神经网络来进行交通流量预测。

1.2 查询语言可视化

设计直观有效的视觉查询语言一直是研究的热点[9-10]。 Draper等[11]提出了用于查询多元数据的交互式系统,该系统支持将可视化交互操作形成SQL语言并传递给数据库。此外,将现有的一些基本可视化组件进行组合可以产生复杂而强大的可视化效果[12-14], Claessen等[15]提出了一个将原子和轴进行结合的可视化技术FLINA。FLINA允许用户通过结合数字、分类和表格数据等来对各种数据进行不同的可视化。Gratzl等[16]提出了一种复合形式的可视化技术Domino。与FLINA类似,Domino允许用户探索数字和分类的数据组合,并且用户可以通过系统提供的综合工具进行更深度的探索,例如对不同数据的组合进行子集提取。上述论文没有针对某个特定领域进行具体的拆分和抽象,笔者吸收领域专家的知识和经验以及视觉查询语言的思想,总结出交通数据中数值和种类的特征并结合可视化技术方便用户对数据进行过滤。

1.3 神经网络可视化

机器学习已经成功应用于各种各样的领域,从信息检索、数据挖掘和语音识别到信息检索计算机图形学、可视化和人机交互。然而,大多数用户将机器学习模型训练过程视为黑盒,因此,学术研究人员和工业从业人员需要更透明,解释性更好的系统来理解和分析机器学习模型,尤其需要理解它们的工作机制[17]。在图像处理领域中Zeiler等[18]集中于分析输入模式与神经网络类别判断的相关性。Srivastava等[19]直接可视化卷积神经网络第一层卷积核的参数来观察神经元的学习模式。上述工作主要是针对图像处理方面的研究,而笔者是对时空数据中的交通流量数据神经网络训练过程进行可视分析研究。

2 交通流量的BP 神经网络预测模型

2.1 交通流量预测原理

交通流预测一般是指由道路交通流量数据的时间序列推测未来时间段的交通流量数据,所以交通流量预测的模型为

yi=f(xi)

(1)

式中:yi为流量预测值;xi为时间序列。由于神经网络具有识别复杂非线性系统的特性,广泛用于解决非线性的分类预测问题,因此十分适合用于交通流量预测。BP神经网络(Back propagation neural networks)是一种典型的多层前馈网络[20],包括输入层、隐藏层和输出层,每层都由若干人工神经元节点构成。输入层为第一层,用于接受输入信号,输出层为最后一层,用于生成输出信号,而位于输入和输出层中间的为隐藏层,隐藏层用于学习网络输入与输出间的映射关系可以为一层或多层。

神经网络模型进行交通流预测的大致过程:首先确定网络结构;之后用历史流量数据作为训练集来训练模型;最后将预测时间单位之前的流量数据输入到训练好的模型中,得到预测结果。

2.2 交通流量预测神经网络模型

本系统的神经网络大致模型如图1所示,输入输出为交通流量数据。输入数据由用户通过可视数据过滤工具进行过滤。隐藏层层数,输入输出数据的时间范围,及训练参数的选择都通过用户设定。图1中t表示训练数据的起始时间;t+nΔt表示训练数据的终止时间,其中n表示输入输出神经元个数,Δt表示相邻的两个输入神经元的时间间隔;τ是由用户进行设置的输出与输入的时延,单位为min。例如,当τ为1 440 min时,表示输出的流量为输入1 d之后,也就表示该神经网络用于预测1 d之后的流量。为了防止一些不必要的数值问题以及使网络更快速的收敛,对数据进行了归一化处理,其计算式为

(2)

式中:x为该时段交通流量;xmin为最小交通流量;xmax为最大交通流量。

图1 神经网络结构图Fig.1 Neural network structure diagram

3 系统介绍

系统是采用B/S架构的一个基于神经网络的交通流量预测可视分析系统,前端可视分析工具主要使用了D3.JS和ECHARTS.JS等可视化库进行开发。笔者使用的数据为杭州市城市卡口数据。系统界面如图2所示,用户先通过数据查询可视化组件来设置数据的查询条件,系统根据设置对数据进行过滤并将过滤后的数据进行可视分析,用户在观察数据可视化结果后,可通过系统进行神经网络模型结构的搭建并设置测试数据集来对数据进行训练及测试,最后系统会对训练结果进行可视化展示。系统界面如图3所示,系统的界面主要分成4 块区域:右上区域主要用于数据过滤可视化,允许用户通过对过滤器组件进行拖拽交互来达到对数据进行过滤的目的,并可以对过滤后的数据进行可视化展示;左上区域主要用来展示地图,并允许用户对进行对数据的空间范围过滤的交互,以及在地图上进行数据可视化;右下区域为可视化展示区域,在该区域用户可以使用流量时序变化图等可视分析工具来观察流量随时间的变化关系;左下区域为神经网络模型的结构,用户可以通过与神经网络可视分析组件进行交互来调节神经网络的输入输出层,隐藏层的结构等等。

图2 系统流程图Fig.2 System flow chart

图3 系统界面Fig.3 System interface

3.1 数据的存储

采用杭州市道路交叉上的监控摄像机上采集的交通监控数据。监测数据包括1.2 亿条记录(2014 年9 月),在数据库中占用10 GB左右的存储空间。其中每个记录包含以下属性:过车的车牌号、卡口摄像机的经纬度、车辆被捕捉到的时间、车身颜色、即时速度和车辆的方向等。使用Key/Value型数据库MongoDB来存储数据,因为对于像笔者采用这种大容量数据时,使用NOSQL型的数据库进行查询搜索的效率相对SQL型数据库更高。同时对数据建立了多层次网格空间索引,网格索引的基本原理是将空间范围进行多次划分,首先将整个区域分为4 个象限左下为00,左上为01,右下为10,右上为11,之后继续划分4 个象限,由此来组成该点的Geohash。如图4所示,X的象限坐标为[2,3]故其Geohash为1011。在系统中划分次数为26 次,之后每个点就有1 个52 位的Geohash。不建立索引查找的时间复杂度为o(n),而建立空间索引后时间复杂度为o(logn),因此随着数据量的增大通过建立空间索引的节省时间会大幅减少。

图4 空间索引示意图Fig.4 Spatial index illustration

3.2 数据的预处理

同时由于监控设备故障,数据集中可能存在错误数据,因此需要对数据进行清洗,需要清洗的主要数据为

1) 车牌未识别:由于车牌遮挡或者天气可见度低等原因,卡口拍摄的图片无法正确识别车牌号,导致该条数据的车牌号属性为未识别。对于这类无效数据,需要预先对其进行删除,以避免造成程序处理的异常,这部分数据占比小于万分之一。

2) 车辆属性错误:由于卡口拍摄的图像的质量问题,可能导致识别出来的信息出现错误,比如1 辆车经过第1 个卡口时为白色,而到第2 个卡口时为灰色,遇到这种情况一般以出现次数多的属性为准并对数据进行校准,比如白色出现的次数多就将该车牌号为灰色的数据颜色改为白色。如果次数相同则随机选取1 个,为排除车主更换车辆,一般以天为单位进行修改。

4 数据可视分析技术

4.1 数据过滤的可视交互技术

吸收领域专家的知识和经验以及视觉查询语言的思想将交通数据中的基本特征进行提取,并运用可视分析技术方便用户对数据进行查询过滤。如图5所示,过滤器主要有两种:一种为类型过滤器(例如车牌、车辆类别),另一种为数值过滤器(例如频率、时间)。

图5 查询语言可视化组件Fig.5 Query language visualization components

用户可以自由拖动分类/数值过滤器进入下方空间,过滤器将停留在那个空间。如果使用数值过滤器,则会出现一个环绕过滤器的圆弧表示相应属性的范围。圆弧上的点可以沿着圆弧拖动,为这个数值选择一个特定的范围属性,比如对速度进行限定。如果拖动的是一个分类过滤器,用户可以设置或输入指定的类别。比如,系统允许用户对车牌进行筛选,用户在车牌过滤器中输入“浙A”,则会对所有车牌中含有“浙A”的车牌号进行模糊匹配,同时如果用户对车牌查询有较复杂的要求,车牌过滤器允许用户使用正则表达式对车牌进行过滤,例如杭州市工作日实行尾号错峰现行,用户可以使用正则表达式对尾号作限制,如“(浙Aw((w{3}3)|(w{2}3[A-Z])|(w3[A-Z]{2}) |(3[A-Z]{3})))”表示杭州市车牌尾号为3的车辆,如果用户的输入被小括号包围,系统则认为用户使用正则表达式搜索而不是模糊搜索。复杂的过滤条件可以通过对过滤器的组合来实现,将一个过滤器拖动到另一个过滤器上创建一个新的过滤器,新过滤器的过滤条件就是对组合的两个过滤器的过滤条件进行操作。

由于用户可以自由拖拽过滤器来创建复杂的树状可视化,因此构造一个可读性强的树结构至关重要。例如,在图6的虚线区域中,中间节点两边都有一个兄弟节点,分别为左节点和右节点,因此如果将过滤器拖到中间节点上,产生的子节点可能与左右节点重合。为了解决这个问题,算法在原始树之外创建一个分离的树,向现有树添加节点的操作顺序,其具体算法如下:

输入数据:nt表示新树,et表示已存在的树,en表示et树上待连接的节点

Procedure TreeLayout(nt,et,en)

Lp=levelPosition(en)

If lp==“none” then //“none”表示没有兄弟节点

If lnumber(en)>rnumber(en) then

PlaceRight(nt,en)

else

PlaceLeft(nt,en)

End if

End if

If lp==“left” then //left表示en为该树的最左节点

PlaceLeft(nt,en)

End if

If lp==“right”then //right表示en为该树的最右节点

PlaceRight(nt,en)

End if

If lp==“middle”then

//middle 表示en同时有左右的兄弟节点

Extrace(nt,et,en)

End if

End procedure

图6 避免交叉的节点添加算法示意图Fig.6 Illustration of node adding algorithm to avoid link crossing

4.2 神经网络可视分析

在选择完训练数据后,本系统允许用户对神经网络结构和训练中间结果可视化,方便用户观察神经网络的训练过程,探索输入数据和网络结构对训练的影响。如图7所示,系统允许用户设定训练样本的时间范围,和输入输出的神经元个数,每个输入神经元的输入范围会根据设定的时间范围进行均分,另外还允许用户自定义神经网络结构,例如中间隐藏层的层数和神经元个数,神经网络的参数以及中间层的激励函数。对给定隐藏层或输出层神经元j的净输入是连接该单元的每个输入乘以其对应的权,然后求和,即

(3)

式中:wij为由上一层的单元到单元的连接权重;oi为上一层的单元的输出,单元的偏差值。当用户通过鼠标点击隐藏层的神经元时,相应的神经元会高亮并展示其输入输出的中间结果,图7中神经元其颜色的透明度按照Ij大小进行映射,线条的粗细大小为wij的映射。如图8所示,用户可以通过折线图可视分析工具来观察权重值wij随迭代次数的变化。用户还可以通过折线图组件对不同神经元参数进行对比,同时如图8所示,鼠标放在相应的神经元和神经元连线,在折线图的对应折线会高亮,系统中的折线图都采用ECHARTS.JS在浏览器前端进行绘制。通过对神经网络中间结果进行观察,可以帮助用户调节神经网络结构,例如中间隐藏层的某个神经元的对下一层的所有神经元的输出权重都很小,那可能是这个神经元的激励函数不适合或者神经个数设置不合理,可以考虑通过改变神经元激励函数或者改变该层隐藏层神经元个数来改善这种情况。

BP神经网络通过将输出误差通过隐藏层向输入层反转来修正各神经元的权值,因此权值修正一定程度能反映该层的活跃程度。下面计算过程中:wijk表示神经网络第i层第j个神经元到第i+1层第k个神经元的连接权值;oij表示第i层第j个神经元输出;netij表示第i层第j个神经元总输入;dj表示神经元j的期望数据;yj表示神经元j的实际输出;E表示损失函数;Ni表示第i层神经元个数。

图7 神经网络结构可视分析工具Fig.7 Neural network structure visual analysis tool

图8 折线图可视分析工具Fig.8 Line chart visual analysis tool

1) 第i层第j个神经元总输入为

(4)

2) 第i层第j个神经元输出为

oij=f(netij)

(5)

3) 损失函数为

(6)

4) 经数学推导BP算法的权值调整公式为

(7)

其中

(8)

通过Δw可得到每层的活跃度为

(9)

式中n为该层所有的连接。用户同样可以通过折线图组件对活跃度变化进行可视化,并且根据活跃度调节权值初始化方法,训练周期次数等。

4.3 交通流量预测可视分析

系统允许用户通过一些基本的可视化组件如流量密度图,流量时序变化图对筛选后的数据进行可视分析,以挖掘数据蕴含的信息。密度图常用于展示空间数据的密度信息,因此系统采用密度图来呈现交通流量的空间分布。如图9所示,通过流量密度图可以明显看出交通流量集中在市中心的几条主干道,由于有些路口位置没有安装卡口监控,或者卡口监控损坏,故没有流量显示。同时,系统采用流量时序变化图来展示路口随着时间变化的流量变化情况。图10为流量时序变化可视分析工具,该工具由折线图构成,横坐标为时间,纵坐标为流量,通过将不同路口的流量时序变化图放在一起方便用户进行对比。从图10可以看出:2014 年9 月的流量变化,天目山路古墩路口的周期性最明显,说明它受工作日和双休日的影响最大。

图9 流量密度可视分析工具Fig.9 Traffic flow density visual analysis tool

图10 路口流量可视分析工具Fig.10 Intersection flow visual analysis tool

如图11所示,用户可以利用系统提供的折线图绘制工具对交通流量的预测结果进行可视化,用户数据为天目山路古墩路口尾号为3的车流量,训练数据为2014 年9 月前2 周的数据,测试数据为第3 周的数据。图11中的流量时序变化a使用的是原始数据,图11中的流量时序变化b使用的是神经网络预测数据,从图11中可以明显看出在周三时车流量相对较少,这是因为杭州市实行错峰限行政策,杭州市尾号为3的车辆在周三的早晚高峰时段不得驶入车流量高峰地段,实线的预测结果也基本符合规律。如图12所示,系统可以通过饼图可视分析工具来展示预测结果的整体正确率,1 圈表示1 d的时间,每块扇形的长度表示准确率,同时扇形个数由神经网络输出层神经元数量决定,如本例中为8 个。通过该工具绘制的饼图,用户可以直观的得到总体训练结果的准确率。

图11 交通流量预测结果与原始数据对比Fig.11 Comparison of traffic flow forecast results with original data

图12 饼图可视分析工具Fig.12 Pie chart visual analysis tool

5 结 论

设计了一套基于神经网络进行交通流量预测的可视化系统。相对于传统的神经网络训练方法,本系统集成了可视化组件帮助用户观察数据,并动态地根据用户需求对数据进行过滤,同时将神经网络中间结果进行可视化,使用户能够观察神经网络训练的过程,帮助用户对神经网络结构进行观察学习和调整,并通过对预测结果的可视化使得用户可以更容易对神经网络模型进行判断,并且本系统的使用不需要用户掌握编程知识,因此通过本系统可以大量缩短搭建针对特定要求进行交通流量预测的神经网络模型的时间。同时本系统基于B/S架构实现,前端通过Http请求访问云端服务器,具有较强的可移植性。如何对神经网络模型进行扩展,增加用户的操作空间是下一步工作的重点。

猜你喜欢
交通流量过滤器神经元
基于简单递归单元网络的高速公路交通流量预测
AI讲座:神经网络的空间对应
三步拆卸洋马YH880/1180 收割机变速箱内过滤器
基于XGBOOST算法的拥堵路段短时交通流量预测
提高中央空调高效过滤器使用寿命的几点思考
仿生芯片可再现生物神经元行为
采用GCaMP6 在体大规模记录感觉神经元的活动
污染控制—燃料电池的使能技术
燕山路与曹雪芹西道交叉口运行有轨电车可行性研究
新型纳米材料过滤器