Uber 是如何使用深度学习预计到达时间的?

简介: 在 Uber,令人惊叹的客户体验依赖于准确的预计到达时间(ETA)。我们利用 ETA 来计算票价,估计接载时间,为乘客和司机牵线搭桥,安排送货,等等。传统的路由引擎计算是通过将道路网络划分为若干个小的路段(由图中的加权边表示)来计算 ETA。

在 Uber,令人惊叹的客户体验依赖于准确的预计到达时间(ETA)。我们利用 ETA 来计算票价,估计接载时间,为乘客和司机牵线搭桥,安排送货,等等。传统的路由引擎计算是通过将道路网络划分为若干个小的路段(由图中的加权边表示)来计算 ETA。它们利用最短路径算法来寻找通过该图的最佳路径,然后将权重相加计算出来 ETA。但是大家都清楚,地图并非地形:道路图仅仅是一个模型,并不能很好地反映出地表的状况。另外,我们也不知道具体的乘客和司机将会选择哪条路线到达目的地。基于道路图预测,对机器学习模型进行了训练,并将历史数据和实时信号结合起来,对 ETA 进行了完善,使其能够更好地预测真实世界的结果。

image.png

在过去的数年中,Uber 利用梯度提升决策树对 ETA 的预测进行了改进。ETA 模型及其训练数据随着每个版本的发布而稳步增长。为了跟上这个增长的步伐,Uber 的 Apache Spark™ 团队对 XGBoost 进行了上游改进,使模型不断深入发展,成为当时世界上最大、最深的 XGBoost 组合之一。最终,我们达到了一个点,即使用 XGBoost 增加数据集和模型的大小变得难以维持。为了继续扩大模型的规模并提高准确性,我们决定深入研究深度学习,因为使用数据并行的 SGD 相对容易扩展到大数据集。为了证明转向深度学习的合理性,我们需要克服三个主要挑战:

  • 延迟性:该模型必须在最多几毫秒内返回 ETA。
  • 准确性:平均绝对误差(MAE)必须比现有的 XGBoost 模型有明显改善。
  • 通用性:该模型必须在全球范围内提供 ETA 预测,包括 Uber 的所有业务线,如移动和交付。为了应对这些挑战,Uber AI 与 Uber 的地图团队合作开展了一个名为 DeepETA 的项目,为全球 ETA 预测开发一种低延迟的深度神经网络架构。在这篇博文中,我们将带领大家了解一些帮助 DeepETA 成为 Uber 新的生产 ETA 模型的经验和设计选择。

问题陈述

近年来,人们对世界的物理模型与深度学习相结合的系统产生了浓厚的兴趣。我们在 Uber 也采取了类似的方法来预测 ETA。我们的物理模型是一个路由引擎,它使用地图数据和实时交通测量来预测 ETA,作为两点之间最佳路径的分段遍历时间的总和。然后,我们利用机器学习来预测路由引擎 ETA 和现实世界观测结果之间的残差。我们称这种混合方法为 ETA 后处理,而 DeepETA 是后处理模型的一个例子。从实用的角度来看,通过更新后处理模型来吸纳新的数据源,并适应快速变化的业务需求,通常比重构路由引擎本身更容易。

image.png

图 1:基于机器学习模型的 ETA 后处理混合方法

为了能够预测 ETA 残差,一个后处理的机器学习模型考虑到了空间和时间特征,例如请求的出发地、目的地和时间,以及实时交通信息和请求的性质,例如是上门送货还是搭车接人,如图 1 所示。这个后处理模型是 Uber 最高的 QPS(queries per second,每秒查询次数)模型。这个模型需要快速,以免给 ETA 请求增加太多的延迟,而且它们需要提高 ETA 的准确性,这是由不同段数据的平均绝对误差(mean absolute error,MAE)衡量的。

我们如何使它准确?

DeepETA 团队对 7 种不同的神经网络架构进行了测试,并对其进行了优化:MLP、NODE、TabNet、Sparsely Gated Mixture-of-Experts、HyperNetworks、Transformer 和 Linear Transformer。我们发现,具有自注意力的编码器-解码器架构能够提供最好的准确性。图 2 显示了我们所设计的高级架构。此外,我们测试了不同的特征编码,结果表明,将所有的输入离散化并嵌入到模型中,其效果明显要好于替代方案。

image.png

图 2:DeepETA 模型管道概述

具有自注意力的编码器

由于 Transformer 在自然语言处理和计算机视觉中的应用,许多人对其体系结构很熟悉,但是 Transformer 在诸如 ETA 预测这样的表格数据问题上的应用并不是很清楚。Transformer 的决定性创新是自注意力机制。自注意力是一个序列到序列的运算,它接收一个向量序列并产生一个重新加权的向量序列。详情可参阅 Transformer 论文。

在语言模型中,每个向量代表一个单词标记,而在 DeepETA 中,每个向量代表一个特征,如行程的起点或者一天中的时间。自注意力通过明确计算成对点积的 K*K 注意力矩阵,再利用这些缩放点积的 softmax 对特征进行重新加权,从而发现表格数据集中的 K 个特征之间的成对互动关系。当自注意力层处理每个特征时,它查看输入中的每一个其他特征的线索,并将这个特征的表示输出为所有特征的加权和。这个过程如图 3 所示。通过这种方式,我们可以将对所有时间和空间特征的理解烘托到当前正在处理的一个特征中,并将注意力集中在重要的特征上。与语言模型相比,由于特征的顺序并不重要,所以 DeepETA 不存在位置编码。

image.png

图 3:自注意力的注意力矩阵

以一次从出发地 A 到目的地 B 的行程为例,自注意力层根据一天中的时间、出发地和目的地、交通状况等因素来衡量特征的重要性。图 4 显示了自注意力的可视化(由 Tensor2Tensor 生成),8 种颜色对应于 8 个注意力头,所占份额对应于随机生成的注意力权重。

image.png

图 4:输入特征的成对点积的说明:颜色对应于注意力头,颜色份额对应于随机生成的注意力权重。

特征编码

连续和分类的特征

DeepETA 模型嵌入了所有的分类特征,并在嵌入之前对所有的连续特征进行了桶化。有点反直觉的是,连续特征的桶化导致了比直接使用连续特征更好的准确性。虽然桶化并不是严格必要的,因为神经网络可以学习任何非线性的不连续函数,但具有桶化特征的网络可能有一个优势,因为无需花费任何参数运算,就可以学会如何划分输入空间。就像梯度增强决策树神经网络的论文一样,我们发现使用分位桶比等宽桶具有更高的准确性。我们认为,分位桶之所以能够表现很好,是因为它们将熵最大化:对于任何固定数量的桶,分位桶传递的关于原始特征的信息都比任何其他的桶要多(以比特为单位)。

地理空间嵌入

后处理模型以纬度和经度的形式接收行程的起点和终点。因为这些起点和终点对于预测 ETA 非常重要,DeepETA 对它们的编码与其他连续特征不同。位置数据在全球范围内的分布非常不均匀,并且包含多种空间分辨率的信息。因此,我们将地点分位为基于经纬度的多个分辨率网格。随着分辨率的提高,不同网格单元的数量呈指数级增长,而每个网格单元的平均数据量则成比例减少。我们探索了三种不同的策略来将这些网格映射到嵌入中:

  • 精确索引,它将每个网格单元映射到一个专门的嵌入。这占用了最多的空间。
  • 特征哈希,它使用哈希函数将每个网格单元映射到一个紧凑的仓位范围。缓冲区的数量比精确索引要小得多。
  • 多重特征哈希,通过使用独立的哈希函数将每个网格单元映射到多个紧凑的 bin 范围,从而扩展了特征哈希。见图 5:

image.png

图 5:利用独立哈希函数 H1 和 H2 进行多要素哈希的多分辨率位置格网的图示

实验结果显示,尽管与精确索引相比,特征哈希节省了空间,但是由于网格的分辨率不同,其准确度也会有一定的差别。这可能是因为哈希碰撞导致一些信息丢失。与精确索引相比,多特征哈希提供了最好的准确性和延迟,同时仍然节省了空间。这意味着网络能够结合来自多个独立哈希桶的信息,以消除单桶碰撞的负面影响。

我们是如何让它变得快速的

DeepETA 对服务延迟的要求十分苛刻。尽管可以利用专用的硬件或者经过训练的优化来加快推理速度,但在本节中,我们将会介绍如何帮助 DeepETA 最小化延迟的架构设计决策。

快速 Transformer

尽管基于 Transformer 的编码器可以达到最好的准确性,但是对于在线实时服务的延迟要求来说,它的速度还是太慢了。原始的自注意力模型具有二次复杂度,因为它从 K 个输入计算出 K 个注意矩阵。已经有多个研究工作将自注意力计算线性化,例如线性 Transformer、Linformer、Performer。通过实验,我们选择了线性 Transformer,它使用内核技巧来避免计算注意力矩阵。

为了说明时间复杂度,我们用下面的例子来说明:假设我们有 K 个维度为 d 的输入,原始 Transformer 的时间复杂度为 :

image.png

更多的嵌入,更少的层数

另外一个让 DeepETA 迅速发展的秘诀就是利用特征稀疏性。尽管该模型包含数以亿计的参数,但任何一个预测都只触及其中很小的一部分,大约是 0.25%。我们是如何做到这一点的呢?

首先,模型本身是比较浅的,只有少数几层。绝大多数的参数都存在于嵌入的查找表中。通过将输入离散化并将其映射到嵌入,我们避免了对未使用的嵌入表参数进行评估。

相对于其他实现方式,输入的离散化给我们带来了明显的速度优势。以图 5 中的地理空间嵌入为例。为了将经度和纬度映射到嵌入,DeepETA 简单地将坐标进行分位并执行哈希查询,这需要

image.png

的查找时间。从这个角度看,离散化和嵌入输入只是计算机科学中经典的空间与时间权衡的一个实例:通过以训练中学习的大型嵌入表的形式对部分答案进行预计算,从而减少了服务时间所需的计算量。

我们是如何做到通用的

DeepETA 的设计目标之一是提供一个通用的 ETA 模型,为 Uber 在全球的所有业务线服务。由于不同业务线的需求和数据分布情况不同,因此这将成为一项具有挑战性的工作。整体模型结构如下图 6 所示。

image.png

图 6:DeepETA 模型结构图解

偏置调整解码器

一旦我们学会了有意义的特征表征,下一步就是对它们进行解码并进行预测。在我们的案例中,解码器是一种全连接神经网络,它具有分段偏置调整层。绝对误差的分布在送货行程与乘车行程、长行程与短行程、上客行程与下客行程之间有很大的不同,在全球大区域之间也是如此。添加偏差调整层来调整每个不同细分市场的原始预测,可以考虑到它们的自然变化,反过来提高 MAE。这种方法比简单地在模型中添加分段特征表现得更好。我们之所以实施偏见调整层而非多任务解码器,是因为延时的限制。我们还运用了一些技巧,例如在输出端使用 ReLU 来强制预测 ETA 为正,并通过钳制来降低极端值的影响,从而进一步提高预测的准确性。

非对称 Huber 损失

不同的业务用例需要不同类型的 ETA 点估计,并且在其数据中也会有不同比例的离群值。例如,我们想估计一个用于计算票价的平均 ETA,但需要控制离群值的影响。其他用例可能需要 ETA 分布的特定分位数。为了适应这种多样性,DeepETA 使用了一个参数化的损失函数,即非对称的 Huber 损失,它对离群值具有健壮性,可以支持一系列常用的点估计。

非对称 Huber 损失有两个参数,delta 和 omega,分别控制对离群值的稳健程度和不对称程度。通过改变 delta(如图 7 所示),平方误差和绝对误差可以平滑地插值,后者对离群值不太敏感。通过改变 omega,你可以控制预测不足与预测过度的相对成本,这在晚一分钟比早一分钟更糟糕的情况下很有用。这些参数不仅可以模仿其他常用的回归损失函数,而且还可以对模型产生的点估计进行调整,以满足不同的业务目标。

image.png

图 7:非对称 Huber 损失

我们如何训练和服务模型

我们使用了 Uber 的机器学习平台的 Canvas 框架,即 Michelangelo,对模型进行了训练和部署。我们的原型的具体架构基本在图 8 中描述。在模型经过训练并部署到 Michelangelo 之后,我们就需要将这些预测结果提供给用户,以便进行实时 ETA 预测。高级架构如下图 9 所示。Uber 消费者的请求通过各种服务被路由到 uRoute 服务。uRoute 服务作为所有路由查询的前端。它向路由引擎提出请求,以产生路由线和 ETA。它使用这个 ETA 和其他模型特征向 Michelangelo 在线预测服务提出请求,以获得来自 DeepETA 模型的预测结果。定期的自动再训练工作流程被设置为再训练和验证模型。

image.png

图 8:模型再训练和部署管道

image.png

图 9:在线服务的高级系统图

总结与展望

我们已经将这个 DeepETA 模型投入生产,用于全球汽车 ETA 预测。DeepETA 模型的推出使训练和服务大规模的深度学习模型成为可能,而且效率很高,这些模型对 ETA 的预测比 XGBoost 方法更好。DeepETA 为生产中的指标提供了直接的改善,并建立了一个可以重复使用的模型基础,用于多个消费者用例。

DeepETA 使 ETA 团队能够探索不同的模型架构,并输出多种 ETA,为每个消费者量身定做。更多的工作进行中,通过研究建模过程的各个方面,包括数据集、特征、转换、模型架构、训练算法、损失函数和工具/基础设施的改进,进一步扩大它所能提供的准确性。在未来,该团队将探索增强功能,如连续的、增量的训练,这样 ETA 就可以利用更新鲜的数据进行训练。

作者介绍:
Xinyu Hu,Uber AI 的高级研究员,专注于大规模机器学习在时空问题和因果推理方面的应用。拥有哥伦比亚大学生物统计学博士学位。

Olcay ciri,Uber AI 的研究员,主要研究机器学习系统和大规模的深度学习问题。曾在谷歌从事广告定位工作。

Tanmay Binaykiya,地图 ETA 预测团队的高级软件工程师,专注于机器学习和系统交叉的项目。

Ramit Hora,Uber AI & Maps 的技术项目管理主管,致力于推动 Uber 技术系统和产品体验的创新。

目录
相关文章
|
机器学习/深度学习 人工智能 算法
AI大事件 | 人类理解行为数据集推出,Uber发布自家分布式深度学习框架
呜啦啦啦啦啦大家好呀,又到了本周的AI大事件时间了。过去的一周中AI圈都发生了什么?大佬们互撕了哪些问题?研究者们发布了哪些值得一读的论文?又有哪些开源的代码和数据库可以使用了?文摘菌带你盘点过去一周AI大事件! 新闻 AlphaGo Zero: 从零开始的学习 来源:DEEPMIND.
1647 0
|
14天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
63 5
|
6天前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
41 19
|
6天前
|
机器学习/深度学习 传感器 人工智能
探索深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文深入探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过介绍卷积神经网络(CNN)的基本原理和架构设计,阐述了深度学习如何有效地从图像数据中提取特征,并在多个领域实现突破性进展。同时,文章也指出了训练深度模型时常见的过拟合问题、数据不平衡以及计算资源需求高等挑战,并提出了相应的解决策略。
43 7
|
16天前
|
机器学习/深度学习 自动驾驶 算法
深度学习在图像识别中的应用
本文将探讨深度学习技术在图像识别领域的应用。我们将介绍深度学习的基本原理,以及如何利用这些原理进行图像识别。我们将通过一个简单的代码示例来演示如何使用深度学习模型进行图像分类。最后,我们将讨论深度学习在图像识别领域的未来发展趋势和挑战。
|
16天前
|
机器学习/深度学习 数据采集 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的基本原理、优势以及面临的主要挑战。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率,同时指出了数据质量、模型泛化能力和计算资源等关键因素对性能的影响。
|
16天前
|
机器学习/深度学习 计算机视觉
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用及其面临的挑战。通过分析深度学习模型如卷积神经网络(CNN)的工作原理,我们揭示了这些模型如何有效地处理和识别图像数据。同时,文章也指出了当前深度学习在图像识别中遇到的一些主要问题,包括过拟合、数据集偏差和模型解释性等,为读者提供了对这一领域全面而深入的理解。
|
17天前
|
机器学习/深度学习 计算机视觉
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,分析了当前主流的深度学习模型及其在图像识别中的优势和面临的挑战。通过具体案例分析,揭示了深度学习如何推动图像识别技术的边界,并讨论了未来可能的发展方向。
31 4
|
16天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的革命性应用####
本文不采用传统摘要形式,直接以一段引人入胜的事实开头:想象一下,一台机器能够比人类更快速、更准确地识别出图片中的对象,这不再是科幻电影的情节,而是深度学习技术在图像识别领域带来的现实变革。通过构建复杂的神经网络模型,特别是卷积神经网络(CNN),计算机能够从海量数据中学习到丰富的视觉特征,从而实现对图像内容的高效理解和分类。本文将深入探讨深度学习如何改变图像识别的游戏规则,以及这一技术背后的原理、关键挑战与未来趋势。 ####
41 1
|
16天前
|
机器学习/深度学习 传感器 边缘计算
基于深度学习的图像识别技术在自动驾驶中的应用####
随着人工智能技术的飞速发展,深度学习已成为推动自动驾驶技术突破的关键力量之一。本文深入探讨了深度学习算法,特别是卷积神经网络(CNN)在图像识别领域的创新应用,以及这些技术如何被集成到自动驾驶汽车的视觉系统中,实现对复杂道路环境的实时感知与理解,从而提升驾驶的安全性和效率。通过分析当前技术的最前沿进展、面临的挑战及未来趋势,本文旨在为读者提供一个全面而深入的视角,理解深度学习如何塑造自动驾驶的未来。 ####
67 1
下一篇
DataWorks