时空图卷积网络:用于交通流量预测的深度学习框架-1

news2024/12/23 14:24:05

摘要

准确的交通预测对于城市交通控制和引导至关重要。由于交通流的高度非线性和复杂性,传统方法无法满足中长期预测任务的需求,且往往忽略了空间和时间的依赖关系。本文提出一种新的深度学习框架——时空图卷积网络(STGCN)来解决交通领域的时间序列预测问题。本文没有应用常规的卷积和递归单元,而是在图上形式化问题,并构建具有完整卷积结构的模型,以较少的参数实现更快的训练速度。实验表明,所提出模型STGCN通过对多尺度交通网络进行建模有效地捕获了全面的时空相关性,并在各种真实世界的交通数据集上始终优于最先进的基线。

介绍

交通在每个人的日常生活中起着至关重要的作用。根据2015年的一项调查,美国司机每天花在开车上的时间平均约为48分钟在这种情况下,准确的实时交通状况预测对道路使用者、私营部门和政府都至关重要。广泛应用的交通服务,如流量控制、路线规划、导航等,也在很大程度上依赖于高质量的交通状态评价。多尺度交通预测是城市交通控制与诱导的前提和基础,也是智能交通系统(Intelligent Transportation System, ITS)的主要功能之一。

在交通研究中,通常选择交通流的基本变量,即速度、容量和密度作为监测当前交通状况和预测未来的指标。根据预测时间的长短,交通预测分为短期(5 ~ 30分钟)、中期和长期(30分钟以上)。大多数流行的统计方法(例如,线性回归)能够在短区间预测中表现良好。然而,由于交通流的不确定性和复杂性,这些方法对于相对长期的预测效果较差。

现有的中长期流量预测研究大致可分为动态建模和数据驱动两大类。动态建模使用数学工具(如微分方程)和物理知识通过计算模拟来制定交通问题[Vlahogianni, 2015]。为了达到稳态,模拟过程不仅需要复杂的系统编程,而且需要消耗巨大的计算能力。不切实际的假设和模型之间的简化也会降低预测精度。因此,随着交通数据采集和存储技术的快速发展,一大批研究人员开始将注意力转向数据驱动的方法。经典的统计模型和机器学习模型是数据驱动方法的两个主要代表。在时间序列分析中,自回归综合移动平均(ARIMA)及其变体是基于经典统计的最综合的方法之一[Ahmed and Cook, 1979;Williams和Hoel, 2003]。然而,这类模型受限于时间序列的平稳性假设,且未能考虑到时间序列的时空相关性。因此,这些方法对高度非线性的交通流具有有限的表征能力。近年来,经典的统计模型在交通预测任务上受到机器学习方法的挑战。这些模型可以实现更高的预测精度和更复杂的数据建模,如k近邻算法(KNN)、支持向量机(SVM)和神经网络(NN)。

深度学习方法已经被广泛成功地应用于各种交通任务中。相关工作取得了重大进展,例如深度信念网络(DBN) [Jia等人,2016;黄等人,2014],栈式自编码器(SAE) [Lv等人,2015;陈等,2016]。然而,这些Dense网络很难从输入中联合提取空间和时间特征。此外,在空间属性受限甚至完全缺失的情况下,这些网络的代表能力将受到严重阻碍。

为了充分利用空间特征,一些研究人员使用卷积神经网络(convolutional neural network, CNN)捕获交通网络之间的相邻关系,并在时间轴上使用循环神经网络(recurrent neural network, RNN)。Wu和Tan[2016]通过结合长短期记忆(LSTM)网络[Hochreiter和Schmidhuber, 1997]和一维CNN,提出了一种用于短期流量预测的特征级融合架构CLTFP。尽管CLTFP采用了一种直接的策略,但它仍然首次尝试对齐空间和时间规律。之后,Shi等人[2015]提出了卷积LSTM,这是一种嵌入卷积层的扩展全连接LSTM (FC-LSTM)。然而,常规的卷积操作限制了模型只能处理网格结构(例如图像、视频),而不是一般的领域。同时,用于序列学习的递归网络需要迭代训练,会逐步引入误差累积。此外,众所周知,基于RNN的网络(包括LSTM)很难训练,计算量很大。

为了克服这些问题,提出了多种策略来有效地建模交通流的时间动态和空间依赖关系。为了充分利用空间信息,本文将交通网络建模为一个整体图,而不是将其单独处理(如网格或分段)。为了解决递归网络固有的缺陷,在时间轴上采用了全卷积结构。提出了一种新的深度学习架构——时空图卷积网络,用于交通预测任务。该架构包括几个时空卷积块,它们是图卷积层[Defferrard等人,2016]和卷积序列学习层的组合,以对空间和时间依赖性进行建模。这是首次在交通研究中应用纯卷积结构同时从图结构时间序列中提取时空特征。在两个真实世界的交通数据集上评估了所提出的模型。实验表明,所提出框架在具有多个预设预测长度和网络规模的预测任务中优于现有基线。

预备知识

道路图上的交通预测与图卷积

交通预测是一个典型的时间序列预测问题,即在给定前M个交通观测值的情况下,预测未来H个时间步内最可能的交通测量值(如速度或交通流量)。

【这里介绍了道路图的预测方式及数据表示、图卷积,不进行赘述】

提出模型

网络结构

在本节中,我们详细介绍了所提出的时空图卷积网络(STGCN)架构。如图2所示,STGCN由多个时空卷积块组成,每个时空卷积块形成一个“三明治”结构,中间有两个门控序列卷积层和一个空间图卷积层。每个模块的详细描述如下。

图2:时空图卷积网络架构

 STGCN框架由两个时空卷积块(ST-Conv块)和一个全连接输出层组成。每个ST-Conv块中间包含两个时间门控卷积层和一个空间图卷积层。在每个块内部采用残差连接和瓶颈策略。输入vt−M+1,…,通过ST-Conv块对vt进行统一处理,以一致地探索空间和时间依赖关系。综合特征通过输出层集成以生成最终预测vˆ。

提取空间特征的图卷积网络

交通网络一般以图的形式组织。道路网络的数学表示是自然而合理的。然而,以往的研究忽略了交通网络的空间属性:将交通网络划分为多个区段或网格,忽略了网络的连通性和全局性。即使是网格上的二维卷积,由于数据建模的妥协,也只能粗略地捕获空间局部性。因此,在该模型中,直接在图结构数据上使用图卷积,以提取空间域中高度有意义的模式和特征。虽然通过等式(2)计算图卷积中的核Θ可能由于与图傅里叶基的乘法O(n2)而非常昂贵,但采用了两种近似策略来克服这个问题:切比雪夫多项式近似和一阶近似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「MyBatis」图书管理系统 v1.0

🎇个人主页:Ice_Sugar_7 🎇所属专栏:JavaEE 🎇欢迎点赞收藏加关注哦! 图书管理系统 v1.0 🍉登录🍉图书操作🍌图书类🍌页面信息🍌操作 &#x1f34…

Java中的经典排序算法:快速排序、归并排序和计数排序详解(如果想知道Java中有关快速排序、归并排序和计数排序的知识点,那么只看这一篇就足够了!)

前言:排序算法在计算机科学中占有重要地位,不同的算法适用于不同的场景。本文将深入探讨快速排序、归并排序和计数排序。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下本文大致的讲解内…

新生在线分班查询,用这个小程序制作仅需一分钟!

今天许多学校已陆续开学,老师们又开始忙碌起来。他们需要将新生的分班信息逐一通知给每位家长,这不仅是一项繁琐的工作,而且效率也不高。传统的方法是通过电话、短信或邮件一一通知,这不仅耗时耗力,还容易出现信息传递…

百度文库文章-暂存下-------题 目: 链式简单选择排序

题 目: 链式简单选择排序 初始条件: 理论:学习了《数据结构》课程,掌握了基本的数据结构和常用的算法; 实践:计算机技术系实验室提供计算机及软件开发环境。 要求完成的主要任务: (包括课程设计工作量…

如何用pytorch进行图像分类

如何用pytorch进行图像分类 使用PyTorch进行图像分类是深度学习中的一个常见任务,涉及一系列步骤,从数据预处理到模型训练和评估。下面将详细描述每个步骤,从零开始构建一个图像分类器。 1. 安装必要的库 在开始之前,首先需要确…

驱动(RK3588S)第四课时:模块化编程

目录 一、什么是模块化编程二、怎么把自己编译代码给加载到开发板上运行三、驱动编程的框架四、驱动编程具体实例1、编写单模块化驱动代码2、编写多模块化驱动代码3、编写向模块传参驱动代码4、编写多模块化驱动代码另一种方式 一、什么是模块化编程 在嵌入式里所谓的模块化编…

Vue——day07之条件渲染、列表渲染以及监测数据

目录 1.template标签 2.条件渲染 3.列表渲染 4.v-for中的key的作用以及原理 5.列表过滤 placeholder 前端空字符串 使用数据监视watch实现 使用计算属性实现 6.列表排序 7.Vue更新数据检测失败 原因 总结 1.template标签 template标签是Vue.js中的一个特殊元素&am…

kube-scheduler调度策略之预选策略(三)

一、概述 摘要:本文我们继续分析源码,并聚焦在预选策略的调度过程的执行。 二、正文 说明:基于 kubernetes v1.12.0 源码分析 上文我们说的(g *genericScheduler) Schedule()函数调用了findNodesThatFit()执行预选策略。 2.1 findNodesTha…

Truncated incorrect max_connections value: ‘999999‘

MySQL 的最大连接数(max_connections)可以设置的上限值在不同的资料中有所不同。以下是一些关键信息: 默认值和默认范围: MySQL 的默认最大连接数通常为 100 。一些资料提到默认值为 151 。 最大允许值: MySQL 的最大…

ant-design-vue:a-table表格中插入自定义按钮

本文将介绍如何使用ant-design-vue在a-table表格中加入自定义按钮和图标的代码。 结果如下图所示&#xff0c; 一、简单示例 <template><a-table:columns"columns":data-source"data":row-selection"rowSelection":ellipsis"tru…

对称密码学

1. 使用OpenSSL 命令行 在 Ubuntu Linux Distribution (发行版&#xff09;中&#xff0c; OpenSSL 通常可用。当然&#xff0c;如果不可用的话&#xff0c;也可以使用下以下命令安装 OpenSSL: $ sudo apt-get install openssl 安装完后可以使用以下命令检查 OpenSSL 版本&am…

深度学习基础案例4--构建CNN卷积神经网络实现对猴痘病的识别(测试集准确率86.5%)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 下一周会很忙&#xff0c;更新可能不及时&#xff0c;请大家见谅这个项目我感觉是一个很好的入门案例&#xff0c;但是自己测试的时候测试集准确率只比较…

mcu loader升级固件原理与实现

1 mcu loader升级固件原理 mcu 固件有两部分&#xff0c;如下图所示&#xff0c;一部分是 loader.bin&#xff0c;一部分是 app.bin&#xff0c;将两部分的固件合并在一起烧录进 mcu 的 flash 当中。mcu 上电进入loader 模式执行 loader.bin 部分的程序&#xff0c;然后读取 fl…

前端踩坑记录:javaScript复制对象和数组,不能简单地使用赋值运算

问题 如图&#xff0c;编辑table中某行的信息&#xff0c;发现在编辑框中修改名称的时候&#xff0c;表格中的信息同步更新。。。 检查原因 编辑页面打开时&#xff0c;需要读取选中行的信息&#xff0c;并在页面中回显。代码中直接将当前行的数据对象赋值给编辑框中的表单对…

51单片机——I2C总线

1、I2C总线简介 I2C总线&#xff08;Inter IC BUS&#xff09;是由Philips公司开发的一种通用数据总线 两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09; 同步、半双工&#xff0c;带数据应答 通用的I2C总线&#…

Linux基础(包括centos7安装、linux基础命令、vi编辑器)

一、安装CentOS7 需要&#xff1a;1、VMware Workstation&#xff1b;2、CentOS7镜像 1、安装镜像 2、虚拟机配置 开启虚拟机&#xff0c;鼠标从vm中移出来用快捷键ctrlalt 点击开始安装&#xff0c;设置密码&#xff0c;等待安装完成,&#xff0c;重启。 3、注意事项 如果没…

通往RAG之路(二):版面结构检测方法介绍

一、基于yolov5的版面结构检测 AG系统搭建过程中&#xff0c;版面分析是不可缺少的一个步骤&#xff0c;本文介绍用yolov5进行版面结构信息识别&#xff0c;后续再搭配表格识别、公式识别、文字识别等模块进行版面还原&#xff0c;完成PDF结构化输出。 1.1、环境搭建 conda c…

解决方案:在autodl环境下为什么已安装torch打印出来版本号对应不上

文章目录 一、现象二、解决方案 一、现象 平台&#xff1a;autodl 镜像&#xff1a;PyTorch 2.0.0 Python 3.8(ubuntu20.04) Cuda 11.8 GPU&#xff1a;A40(48GB) * 1 CPU&#xff1a;15 vCPU AMD EPYC 7543 32-Core Processor 内存&#xff1a;80GB 安装torch:1.13.0环境&a…

深入理解指针(6)

目录&#xff1a; 1.字符指针变量 2.数组指针变量 3.二维数组传参本质 4.函数指针变量 5.函数指针的应用 1.字符指针变量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {char a w;char* p &a;printf("%p ", p);} 当我们想取出…

UE 【材质编辑】自定义材质节点

使用UE的材质编辑器&#xff0c;蓝图提供了大量的节点函数&#xff1a; 实际上&#xff0c;这是一段封装好的包含一串HLSL代码的容器。打开“Source/Runtime/Engine/Classes/Material”&#xff0c;可以看到很多不同节点的头文件&#xff1a; 照葫芦画瓢 以UMaterialExpressi…