写点什么

深度学习在高德驾车导航历史速度预测中的探索与实践

  • 2019-08-17
  • 本文字数:3233 字

    阅读完需:约 11 分钟

深度学习在高德驾车导航历史速度预测中的探索与实践

1. 导读

驾车导航服务是数字地图提供的核心功能。通常而言,用户在发起导航之前会对比高德前端展示的三条路线(如下图),以决定按照哪条路线行驶。



而预估到达时间是用户参考的最为重要的指标之一。给定一条路线,对应的预估到达时间的计算需要两组信息输入,分别是实时路况信息和历史速度信息(历史速度信息指的是对应的平均通行时间)。其中实时路况信息,对短时(例如 60 分钟以内)路况预测帮助较大;而历史速度信息对长时(例如 60 分钟以上)路况预测帮助较大。一般来说,对于未来 2 小时以上的路况预测而言,当前时刻的路况信息帮助十分有限,也可以理解为历史速度信息基本处于绝对主导的地位。


因此在长距离路线的预估到达时间计算中,历史速度至关重要,其预测的准确性直接影响预估到达时间,进而影响用户选择及体验。我们希望能够通过建模的方式提高历史速度的预测准确率。

2. 历史平均法的不足

以往预测历史速度的方式是历史平均值法,主要是将历史上过去某时间段同一特征日同一时间段(例如 8:00-8:10)经过同一条路段的所有车辆的用时求平均,这种方法的假设是“历史即未来”。该方法对于 3 个月内常发性震荡走势比较适合,但针对有特定趋势的走势(如上升走势),效果不会太好。


该方法不足之处有以下三点:


  • 对于异常点敏感

  • 无法利用时域序列的演化趋势(trend)信息

  • 无法利用去年同期的车辆行驶规律


下面我们用一个分析过的 badcase 来具体说明,如下图:



上图显示了北京市某路段在过去连续若干周里确定特征日(周五)及确定时间批次(12:10-12:20)上各自的平均旅行时间。如图所示,近期旅行时间已逐渐升高,且去年同期旅行时间也已经升高,但是使用历史平均值法计算的历史速度信息却显著偏小,与未来一周对应时间段的真实旅行时间偏差近三倍。


通过前期的 case 调研分析,发现部分路段的历史速度曲线呈现出时效性、年度周期性特征。



上图为某段道路从 20170501 到 20190103 期间某个时间批次的旅行时间变化,可以发现,每到暑假期间,该路段旅行时间显著增大,呈现出明显的年度周期性。


本项目旨在解决历史平均值法存在的不足,其中,由于年度周期性问题导致的恶劣 badcase 占比较大,故着重解决年度周期性问题。

3. 机器学习解题

3.1 基于 TCN 模型的历史速度问题建模

历史平均值方法简单粗暴,但也能取得相当不错的效果,对于具有年度周期性 &时效性的路段,仅仅通过统计近期的信息会损失一定的精度,这时把去年的相关信息融合进来就显得特别重要,该问题是个典型的时序建模问题,本文基于 TCN 构建历史速度周期性问题解决方案。


我们的目标是构建一个基于历史信息(某时间段 &去年同期:同一段道路、确定特征日、确定时间批次)和道路属性来预测未来一周历史速度的机器学习模型,解决历史平均值法存在的问题,从历史速度信息维度提高预估到达时间的准确率,解决恶劣 bacase。

3.2 TCN 简介

时间卷积网络(TCN)可以作为一般的序列建模架构,且拥有非常好的效果。TCN 显著的特点有如下几点:


  • 架构中的卷积存在因果关系,这意味着从未来到过去不会存在信息泄漏。

  • 卷积架构可以将任意长度的序列映射到固定长度的序列。

  • 利用残差模块和空洞卷积来构建长期依赖关系。



TCN 论文图:TCN 架构的组成元素。左图为空洞系数 d=1,2,4、卷积核大小 k=3 的空洞因果卷积,感受野能覆盖输入序列中的所有值。右图为 TCN 残差块,当残差输入和输出有不同的维度,我们会添加一个 1x1 的卷积。

3.3 网络架构


上图为整个模型的框架图,主要分为动态特征提取模块和静态特征模块,其中动态特征的提取基于 TCN 模型实现,而静态特征则直接和提取出的动态特征进行连接之后使用。具体说明见下文。

3.4 动态特征提取

该模块的主要目标是通过 TCN 模型去学习旅行时间的曲线走势特征,这里的动态特征指的是从今年和去年对应的一定数量的平均旅行时间构成的序列中提取出的走势特征。


本文将今年和去年对应的平均旅行时间序列作为一个双通道序列放进 TCN 模型中学习,旨在利用 TCN 强大的时序建模能力,同时结合今年和去年的走势特征,更加准确的预测未来一周的走势(上升、下降或震荡)。


针对该类序列建模问题,已有成熟的 RNN 技术,而且目前更新的 TCN 技术也已出现。在项目开展过程中,分别使用了 RNN、LSTM 和 TCN 来做序列建模,实验结果表明,使用 TCN 进行序列特征提取效果最好,相对于 RNN 约有 1.39%的效果收益,相对于 LSTM 约有 0.83%的效果收益,而且由于 TCN 模型是基于卷积网络实现的,训练速度更快,所以本项目中采用 TCN 进行动态特征提取。

3.5 静态特征

这里的静态特征主要指一些人工提取的特征,用以加强模型表达能力。具体如下:


道路属性特征路长、路宽、车道数、车道宽度、最大限速等
时间属性特征前三天对应时间批次旅行时间、前七天对应时间批次旅行时间均值、去年同期前后两个平均旅行时间(同一特征日&同一时间批次)


道路属性特征主要考虑不同的道路通行能力不一样,会在一定程度上影响车辆通行速度。


时间属性特征主要分三方面:


  • 前三天对应时间批次旅行时间-考虑到时效性问题,越靠近预测天则可靠性越大,例如,最近几天道路施工,车道速度受到影响;但该特征也会对基于特征日的建模产生一定影响,因为车辆出行规律大部分情况下跟周几特征日有关,而与非特征日的关联较小(除特别情况,如活动举办、连续数天施工)。案例见下图。



图中为某段道路连续 85 天某时间批次上的旅行时间变化趋势图,从图中可以看到,该曲线呈现先平稳后上升的趋势,第 85 天的旅行时间与前面的关系不大,而与近期关系较大(近期一直较拥堵),尤其是近三天。


  • 前七天对应时间批次旅行时间均值-该特征为近期旅行时间的一个统计指标,旨在反映近一周的通行状况,作用同上。

  • 去年同期前后两个平均旅行时间(同一特征日 &同一时间批次)

4. 模型效果

本文所采用的基于 TCN 建模方法,能够从动态和静态特征中提取出驾驶规律信息,包括异常点的识别过滤、旅行时间的趋势变化信息和年度周期信息,给出更符合预期的预测值,较好的解决当前历史平均值法的弊端,可以部分解决恶劣 badcase 发生的问题。具体效果说明如下:

4.1 异常值自动过滤


上图中 case,从整体上来看,旅行时间在 70s 上下浮动,而局部某些点是异常偏大的(当天可能发生了交通事故等),属于异常点,在预测未来历史速度信息走势的时候,应该忽略,TCN 模型成功的忽略了这些异常点,但历史均值法则会将其纳入计算,导致算出的平均旅行时间偏大。

4.2 趋势信息提取


上图中 case,从曲线走势来看,旅行时间近期有所上升,所以下周的平均旅行时间大概率还是会延续这种趋势,可以看出,TCN 模型比较好的学习到了这种趋势信息,预测效果较好,但历史平均值法,由于前期很长一段时间旅行时间都很小,导致算出的平均旅行时间也偏小。

4.3 年度周期性的引入


上图中 case,从图中可以看出,今年前 11 周都比较平稳,第 12 周旅行时间突然上升,但只从今年信息中我们无法得知第 12 周这天是否是异常值,从而模型无法准确给出第 13 周的预测值,但从去年对应的 13 周的数据中可以发现,去年对应的时间在第 12 和 13 周都上升了,从而模型可以确定今年第 13 周大概率还是会继续升高(根据年度周期性),但使用历史平均值法给出的平均旅行时间则明显偏小。

5. 评测结果

该项目在某一周的 case 集合上的评测效果:


  • 基线-历史平均值法的 badcase 率为 11.0‰;

  • 对照-基于 TCN 的方法的 badcase 率为 10.1‰。


可以看出,本文所采用的方法相对基线恶劣 badcase 率下降幅度较大,说明引入年度周期性可以解决部分恶劣 badcase。

6. 小结

本文将 TCN 模型进行工业化实践,帮助建模历史速度问题,并结合特征工程(提取动态、静态特征,引入年度周期性等),成功的解决了现有模型的不足,并在实际应用中取得了不错的效果,为将来的时序性问题探索了一条可行的路径。对现有 TCN 模型框架所做改动较小,后续可进一步探索,针对特定问题做一些定制化的改进。


本文转载自公众号高德技术(ID:amap_tech)


原文链接


https://mp.weixin.qq.com/s/DXMyXfuUtUGcgB33Jvn8YQ


2019-08-17 08:003943

评论

发布
暂无评论
发现更多内容

网络攻击的高频出现,高防服务器是最佳的选择

九河云安全

当 CloudQuery 遇到大数据

BinTools图尔兹

大数据 hive ES 数据库管理

破解三大安防视频痛点,看华为4大硬核视频上云技术

华为云开发者联盟

视频 华为云视频 安防 摄像头 安防视频

从0开始的TypeScriptの三:TS的类型

空城机

typescript 大前端 8月日更

TCP如何保证数据的可靠传输

W🌥

计算机网络 TCP/IP 8月日更

同为电动小车热门,欧拉白猫比拼零跑T03,谁更胜一筹?

科技热闻

WeLink的杀手锏和远程办公软件的另一面

华为云开发者联盟

远程办公 华为云 welink 视频会议 数字化办公

Vue进阶(二十三):Promise 详解

No Silver Bullet

Vue Promise 异步请求 8月日更

写作 7 堂课——【5. 结构化写作】

LeifChen

写作技巧 8月日更 结构化

卷向字节码-Java异常到底是怎么被处理的?

why技术

Java JVM

c++ list 详解

若尘

c++ List 8月日更

Prometheus 监控SpringCloud微服务

Rubble

Prometheus SpringCloud 8月日更

百度AI原生云实践: 基于容器云打造 AI 开发基础设施

百度开发者中心

AI 最佳实践 方法论 云原生

索信达控股:打造新一代中小银行智能营销平台体系的道与术

索信达控股

带你了解Go怎样实现二级缓存

Regan Yue

redis 二级缓存 Go 语言 8月日更

四色建模:用户转化率 KPI

escray

学习 极客时间 如何落地业务建模 8月日更 四色建模

百度BaikalDB在同程艺龙的成功应用实践剖析

百度Geek说

数据库 架构 后端

“互联网+”大赛之AI创新应用赛题攻略:大胆脑洞,共绘智慧生活蓝图

华为云开发者联盟

AI HarmonyOS 大赛 互联网+ HMS Core

Apache APISIX 在移动云的应用

API7.ai 技术团队

开源 网关 APISIX

教你如何使用FusionInsight SqoopShell

华为云开发者联盟

sqoop Shell FusionInsight 脚本 Loader

【LeetCode】0~n-1中缺失的数字Java题解

Albert

算法 LeetCode 8月日更

带你读AI论文:基于Transformer的直线段检测

华为云开发者联盟

模型 目标检测 Transformer 线段检测 LETR

趁着课余时间学点Python(九)函数的进阶 生成器 装饰器的理解

ベ布小禅

8月日更

模型训练语料少?知识蒸馏解决烦恼

LigaAI

人工智能 神经网络 深度学习 模型训练 nlp

探究Presto SQL引擎(1)-巧用Antlr

vivo互联网技术

sql 编译器 presto antlr4

Go 学习笔记之 Goroutines

架构精进之路

Go 语言 8月日更

中间件运维之故障自愈

安第斯智能云

运维 后端 中间件

生产环境全链路压测平台Takin

TakinTalks稳定性社区

开源 高可用 全链路压测 性能压测

Vue进阶(二十一):ES6 知识储备

No Silver Bullet

Vue ES6 8月日更

淘宝杨宽:淘宝直播低延迟架构演进和实践丨ECUG Meetup 回顾

七牛云

音视频 淘宝 ECUG 七牛云

Compose管理状态

Changing Lin

8月日更

深度学习在高德驾车导航历史速度预测中的探索与实践_AI&大模型_沐亦_InfoQ精选文章