好文分享 |【VLDB 2023】路径行程时间估计:异质性、邻近性、周期性、动态性
论文标题:Route Travel Time Estimation on A Road Network Revisited: Heterogeneity, Proximity, Periodicity and Dynamicity
作者:袁海涛,李国良,鲍芝峰
机构:清华大学,皇家墨尔本理工大学(RMIT)
论文发表:49th International Conference on Very Large Data Bases(VLDB 2023)
引用格式:Yuan H, Li G, Bao Z. Route Travel Time Estimation on A Road Network Revisited: Heterogeneity, Proximity, Periodicity and Dynamicity[J]. Proceedings of the VLDB Endowment, 2022, 16(3): 393-405.
论文链接:https://www.vldb.org/pvldb/vol16/p393-yuan.pdf
代码:https://github.com/yuanhaitao/STHR_CODE
本文从异质性(heterogeneity)、邻近性(proximity)、周期性(periodicity)和动态性(dynamicty)四个方面对路网中的路线行程时间估计问题进行了研究,旨在通过捕获和利用时空特征来提高其准确性。
1 .空间异质性:至少表现在两个方面。首先,路网中不同路段之间的转弯方式是异构的,这使得同一路段的行程时间是不同的(在本文中,把两个路段之间的转弯/等待时间转化为前一路段的行程时间)。以图1 ( b )中的路线 R 1 R_1 R1和 R 2 R_2 R2为例, R 1 R_1 R1在经过路段 l 3 l_3 l3后保持直行,而 R 2 R_2 R2在经过路段 l 3 l_3 l3后左转,因此这两条路线的 l 3 l_3 l3行程时间完全不同。其次,不同的路段包含异质属性(例如,不同路段的限速不同),因此内在地对应着不同的行程时间。
2.空间邻近性和时间周期性:首先,相邻路段受到路网的拓扑约束,体现了空间邻近性的影响。例如,图1 ( d )中的上图显示了四个相邻路段 ( l 10 , l 12 , l 13 , l 3 ) (l_{10}, l_{12},l_{13},l_3) (l10,l12,l13,l3)的行程时间,可以发现它们具有相似的模式。其次,如图1 ( d )中的下图所示,每条路段的行程时间呈现出一周的周期性振荡特征,这是由于时间背景(例如,高峰时间)的周期性造成的。总结:行程时间应该包括一个静态部分,它是基于路网中的空间邻近性和时间周期性推导出来的。
3.动态交通路况:它们是指一个路网的交通状态,其中平均旅行速度是一个自然指标。如图1 ( c )所示,道路网络上的交通状态随时间而变化,这反映了所谓的动态上下文的影响。因此,通过对过去时间的交通状态序列进行编码来捕获交通状态的变化趋势是非常重要的
现有方法不足**:统计方法**忽视了动态交通状态。基于学习的方法在编码相关特征时忽略了空间异质性。更糟糕的是,它们不能区分静态特征(例如,静态邻近性和周期性)和动态特征(例如,动态交通状态)的影响。
设计一个通用的学习框架来整合上述所有关键方面仍然是一个开放的问题,原因有三:
为解决上述挑战,作者做了如下设计:
路网:有向图 < V , L >
路线: R = < l 1 , l 2 , . . . , l m > R=
路段连接图(Link-Connection Graph,LCG):是异质图,右上图所示,LCG构建在路网上,同时构建一个有向图 G = < L , E > G=
路线邻居图(route neighboring graph,RNG):给定一个行驶路线,它所经过的路段为路线路段;把与这些路线路段相邻的路段称为路线邻居路段。记作 G ( R ) = < L ( R ) , E ( R ) > G(R)=
L ( R ) ⊆ L , E ( R ) ⊆ E L(R)\subseteq L,E(R)\subseteq E L(R)⊆L,E(R)⊆E,因此RNG是LCG的子图
行程时间和行程速度直方图( Histogram ):给定路段 l l l,假设其行程时间为 t l t_l tl,则相应的行程速度为 v = ∣ l ∣ ∣ t l ∣ v = \frac{|l|}{|{t_l}|} v=∣tl∣∣l∣,其中 ∣ l ∣ |l| ∣l∣表示路段l的长度.使用行程速度的原因是每个路段的速度对应一个范围,而行程时间的范围难以确定。考虑到速度范围(例如: 0 ~ 60km / h),将其拆分成 k k k个互不相交的部分(记为 p 1 , ⋅ ⋅ ⋅ , p k p_1 , · · · , p_k p1,⋅⋅⋅,pk)来近似速度分布 h i s t = [ α 1 , ⋅ ⋅ ⋅ , α k ] hist = [α_1 , · · · , α_k] hist=[α1,⋅⋅⋅,αk],其中 0 ≤ α i ≤ 1 0≤α_i≤1 0≤αi≤1且 ∑ i = 1 k = α i = 1 ∑_{i=1}^k = α_i = 1 ∑i=1k=αi=1。例如,给定5个速度值(即5,2,12,15,20)和2个部分 p 1 = [ 0 , 10 ) p_1 = [0,10) p1=[0,10)和 p 2 = [ 10 , 20 ] p_2 = [10,20] p2=[10,20],对应的直方图为 h i s t = [ 2 5 , 3 5 ] hist = [\frac{2}{5},\frac{3}{5}] hist=[52,53]。此外,每个速度值 v v v可以通过速度直方图 h i s t = [ α 1 , ⋅ ⋅ ⋅ , α k ] hist = [α_1,··· ,α_k] hist=[α1,⋅⋅⋅,αk]和偏差序列 Δ = [ δ 1 , . . . , δ k ] ( 0 ≤ δ i ≤ 1 ) \Delta= [\delta_1,...,\delta_k](0\le\delta_i\le1) Δ=[δ1,...,δk](0≤δi≤1)
v = ∑ i = 1 k α i ( p i ◃ + δ i d i ) v=\sum_{i=1}^k\alpha_i(p_i^\triangleleft+\delta_id_i)\\ v=i=1∑kαi(pi◃+δidi)
p i ◃ p_i^\triangleleft pi◃和 p i ▹ p_i^\triangleright pi▹分别表示左值和右值,值域为 d i = p i ▹ − p i ◃ d_i=p_i^\triangleright-p_i^\triangleleft di=pi▹−pi◃
请求和行程时间估计(TTE): r e q = ( R , s ) req=(R,s) req=(R,s),表示 s s s时刻出发,路线是 R R R,TTE是估计时刻 S S S路线 R R R的行程时间。
历史交通状态(时空特征):过去时间步路段中行驶速度的最大值、最小值、平均值、中位数记作( v ˋ , v ˊ , v ˉ , v ~ \grave v,\acute v,\bar v,\widetilde v vˋ,vˊ,vˉ,v )。时间步表示 Δ t \Delta t Δt,默认为5min,过去时间步数设置数表示为 p p p,默认为12。每个路线 R R R,考虑局部路况,对应RNG ( G ( R ) = < L ( R ) , E ( R ) > ) (G(R)=
路网(空间特征):使用包含异构关系的LCG来表示道路网的图结构: G = < L , E > G=
时间背景(时间特征):时间背景信息(如高峰时间,工作日和其它时间相关信息)作为特征。时间步 j j j的信息记为 x j x^j xj。每个样本中存在 p + 1 p+1 p+1个时间步(过去 p p p步和出发时刻 s s s所在时间步)。时间背景信息: X = { x j } j ∈ [ s − p : s ] X=\{x^j\}^{j\in [s-p:s]} X={xj}j∈[s−p:s]。为捕获时间周期性,考虑一周的全部时间步,将出发时刻 s s s的时间步信息投影到一周内每一个时间步。所有时间步: T = { T j } [ 1 , ∣ T ∣ ] T=\{T^j\}^{[1,|T|]} T={Tj}[1,∣T∣],投影时间步: T s T^s Ts。
总结:
进一步划分为2类,样本共性(sample-wise-general)和样本特性(sample-wise-special)。
( 1 )由于 F , G 和 T F,G和T F,G和T是独立于样本的,所以称它们是样本共性
( 2 )其他依赖于样本的特征被称为样本特性
问题定义:请求 r e q = < R , s > req=
TTE任务:路线 R R R利用特征通过模型 M M M估计行程时间 y y y。
y = M ( C , F ( R ) , G ( R ) , X , T s ; F , G , T ) y=\mathcal{M}(C,F(R),G(R),X,T^s;F,G,T)\\ y=M(C,F(R),G(R),X,Ts;F,G,T)
流水线:
r e q ⟶ ① C , F ( R ) , G ( R ) , X , T s , F , G , T ⟶ ② h i s t l l 1 s ⋯ hist l m s , Δ l 1 s ⋯ Δ l m s ⟶ ③ t ^ l 1 ⋯ t ^ l m ⟶ ④ t ^ R = ∑ i = 1 m t ^ l i . \begin{aligned} r e q & \stackrel{①}{\longrightarrow} C, F(R), G(R), X, T^{s}, F, G, T \stackrel{\text { ② }}{\longrightarrow} h_{i s t} l_{l_{1}}^{s} \cdots \text { hist }_{l_{m}}^{s}, \Delta_{l_{1}}^{s} \cdots \Delta_{l_{m}}^{s} \\ & \stackrel{③}{\longrightarrow} \hat{t}_{l_{1}} \cdots \hat{t}_{l_{m}} \stackrel{\text { ④ }}{\longrightarrow} \hat{t}_{R}=\sum_{i=1}^{m} \hat{t}_{l_{i}} . \end{aligned}\\ req⟶①C,F(R),G(R),X,Ts,F,G,T⟶ ② histll1s⋯ hist lms,Δl1s⋯Δlms⟶③t^l1⋯t^lm⟶ ④ t^R=i=1∑mt^li.
首先估计每天经过路段的速度直方图 h i s t l i s {hist}^s_{l_i} histlis和偏差序列 Δ l i s \Delta^s_{l_i} Δlis,然后推导出时间 t ^ l i \hat t_{l_i} t^li,具体的 h i s t l i s {hist}^s_{l_i} histlis分为两部分,静态直方图 h i s t ˉ l i s \bar {hist}^s_{l_i} histˉlis和动态矩阵 P l i s P^s_{l_i} Plis.其中 h i s t l i s ∈ R k {hist}^s_{l_i}\in\mathbb{R}^k histlis∈Rk独立于样本 P l i s ∈ R k × k P^s_{l_i}\in \mathbb{R}^{k\times k} Plis∈Rk×k依赖于样本。
h i s t l i s = h i s t ˉ l i s × s o f t m a x ( P l i s ) hist^s_{l_i}=\bar {hist}^s_{l_i}\times softmax(P^s_{l_i}) histlis=histˉlis×softmax(Plis)
如下图流水线:
第1步**:静态生成**,共性生成全局静态直方图 { h i s t l i j } l ∈ L j ^ ∈ [ 1 , ∣ T ∣ ] \{hist^j_{l_i}\}^{\hat j \in [1,|T|]}_{l\in L} {histlij}l∈Lj^∈[1,∣T∣]
第2步:路线 R R R和出发时间步 T s T^s Ts,从全局静态直方图(global)提取局部静态直方图() { h i s t ˉ l i s } l i ∈ R \{\bar {hist}^s_{l_i}\}_{l_i\in R} {histˉlis}li∈R。
第3步**:动态生成**,特性特征和局部静态直方图生成动态矩阵 P l i s P^s_{l_i} Plis和偏差序列 { Δ l i s } l i ∈ R \{\Delta^s_{l_i}\}_{l_i\in R} {Δlis}li∈R
最终(第4步):行程时间生成:利用局部静态直方图,动态矩阵和偏差序列来推断行程时间
STHR本质上是一个序列编码器-解码器框架。在序列编码部分,将所有的时空特征看作一个时间序列,其长度为历史时间步数,因此编码部分称为时间编码器(temporal encoder)。对于序列解码部分,目标是生成给定路线中每条路段的速度/时间。因此,将路线看作是一个路段序列,序列长度为路段中的路段数,因此将解码部分称为空间解码器(spatial decoder)。
共性: ( F , G , T ) (F,G,T) (F,G,T),特性: ( C , F ( R ) , G ( R ) , X , T s ) (C,F(R),G(R),X,T^s) (C,F(R),G(R),X,Ts)
准备数据:给定请求 r e q = < R , s > req=
编码历史交通状态包含三个阶段
阶段1: C C C从 RNG中获得。设计交通状态融合将 C j = { ( v ˋ l j , v ˊ l j , v ˉ l j , v ~ l j ) } l ∈ L ( R ) C^j=\{(\grave v_l^j,\acute v_l^j,\bar v_l^j,\widetilde v_l^j)\}_{l\in L(R)} Cj={(vˋlj,vˊlj,vˉlj,v lj)}l∈L(R)转换为隐藏表示 h ˉ c j = < h ˉ c s − p , . . . , h ˉ c s − 1 > \bar h_c^j=<\bar h_c^{s-p},...,\bar h_c^{s-1}> hˉcj=<hˉcs−p,...,hˉcs−1>
阶段2:捕获时间相关性,时间自注意力机制。 h ^ c j \hat h^j_c h^cj转换为¥ h ^ c j \hat h_c^j h^cj。得到 h ^ C = < h ^ c s − p , . . . , h ^ c s − 1 > \hat h_C=<\hat h_c^{s-p},...,\hat h_c^{s-1}> h^C=<h^cs−p,...,h^cs−1>
阶段3:不同历史时间步的交通状态会对当前时间步产生不同影响。设置*时间步注意力聚会模块(Time-Slot-Attention Fusion)*进一步融合 h ^ c \hat h_c h^c和 X X X,得到 h c = < h C s − p , . . . , h c s − 1 > h_c=
生成局部静态直方图。对应**”静态生成“和”fetch“**。目的是生成给定出发时间步下给定路线的每一个路段的静态直方图。分为2阶段
阶段1:全局静态直方图生成器实现静态生成。全局静态直方图: h i s t ˉ = { h i s t l i j } l ∈ L j ^ ∈ [ 1 , ∣ T ∣ ] \bar{hist}=\{hist^j_{l_i}\}^{\hat j \in [1,|T|]}_{l\in L} histˉ={histlij}l∈Lj^∈[1,∣T∣]。大小为 ∣ L ∣ × ∣ T ∣ |L|\times|T| ∣L∣×∣T∣
阶段2:通过路线 R = < l 1 , . . . , l m > R=
解码动态矩阵和偏差序列。对应**”动态生成“**。通过空间序列 h i s t ˉ R s \bar {hist}^s_R histˉRs和时间编码序列 h C h_C hC生成 P l i s P^s_{li} Plis和 Δ l i s \Delta^s_{l_i} Δlis。分为2阶段
阶段1:时空注意力(Spatio-Temporal Attention)聚合时空序列, h i s t ˉ l i s \bar {hist}^s_{l_i} histˉlis利用注意力转换为 h l i s h^s_{l_i} hlis,并聚合 h C h_C hC,得到包含全部时空特征的最终序列 h R s = < h l i s , . . . , h l m s > h_R^s=
阶段2:*动态速度生成器(Dynamic-Speed Generator)*基于 h l i s h^s_{l_i} hlis生成 P l i s P^s_{l_i} Plis和 Δ l i s \Delta^s_{l_i} Δlis
推理行程时间:对应图中“行程时间生成”。估计每个路段行程时间 t ^ l i \hat t_{l_i} t^li。通过得到的直方图 h i s t l i s hist_{l_i}^s histlis和速度 v ^ l i \hat v_{l_i} v^li。计算 t ^ l i = ∣ l i ∣ v ^ l i \hat t_{l_i}=\frac{|l_i|}{\hat v_{l_i}} t^li=v^li∣li∣。
计算损失:一方面,衡量每个路段行程时间的损失,记为Link-wise Loss。另一方面,对整个路线的行程时间进行了损失度量,记为Route Loss。
时间编码器的三个关键组成部分:交通状态融合(Traffic Condition Fusion);时间自注意(Temporal Self-Attention);时间步注意力融合(ime-SlotAttention Fusion)。首先,解释了如何结合RNG即 G ( R ) G(R) G(R)及其路段特征 F ( R ) F(R) F(R)来编码每个历史时间步 j j j的交通状态 C j C_j Cj。这里对每个时间步的所有路段的交通状态进行融合,得到融合结果 h ˉ C = h ˉ c s − p , . . . , h ˉ c s − 1 \bar h_C = {\bar h^{s-p}_c,...,\bar h^{s-1}_c } hˉC=hˉcs−p,...,hˉcs−1。其次,为了捕获时间相关性,解释了如何利用自注意力机制将 h ˉ C \bar h_C hˉC进一步编码为 h ^ C \hat h_C h^C最后,说明如何通过融合时间信息包含了历史时间步对当前时间步的不同影响的 X X X来进一步编码得到 h C h_C hC。
从历史交通信息 C = { C s − p , . . . , C s − 1 } C=\{C^{s-p},...,C^{s-1}\} C={Cs−p,...,Cs−1},中生成 h ˉ c j = < h ˉ c s − p , . . . , h ˉ c s − 1 > \bar h_c^j=<\bar h_c^{s-p},...,\bar h_c^{s-1}> hˉcj=<hˉcs−p,...,hˉcs−1>。包含2个步骤:编码RNG中每个路段的交通状态和聚合路段表示。
编码交通状态:捕获异质图 G ( R ) = ⟨ L ( R ) , E ( R ) ⟩ G(R)=\langle L(R),E(R) \rangle G(R)=⟨L(R),E(R)⟩的邻近性。使用2层图注意力(GAT)。对于每个时间步 j ( s − q ≤ j ≤ s − 1 ) j(s-q\le j \le s-1) j(s−q≤j≤s−1)的,每个路段 l i ( 1 ≤ i ≤ ∣ L ( R ) ∣ ) l_i(1\le i \le |L(R)|) li(1≤i≤∣L(R)∣)。生成对应的表示 h ˉ c j [ l i ] \bar h^j_c[l_i] hˉcj[li]
h g 1 j [ i ] = W g 1 ⋅ [ v ~ l i j , v ^ l i j , v ~ l i j , v ˉ l i j ] e g 1 I ( i 1 , 2 ) [ i 1 , i 2 ] = W e 1 I ( i 1 , 2 ) ⋅ [ F ( l i 1 ) , F ( l i 2 ) ] , ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) α g 1 j [ i 1 , i 2 ] = exp ( e g 1 I ( i 1 , 2 ) [ i 1 , i 2 ] ⋅ [ h g 1 j [ i 1 ] , h g 1 j [ i 2 ] ] ) ∑ i 3 ∈ N ( i 2 ) exp ( e g 1 I ( i 3 , 2 ) [ i 3 , i 2 ] ⋅ [ h g 1 j [ i 3 ] , h g 1 j [ i 2 ] ] ) , ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) α g 1 j [ i 1 , i 2 ] = exp ( e g 1 I ( i 1 , 2 ) [ i 1 , i 2 ] ⋅ [ h g 1 j [ i 1 ] , h g 1 j [ i 2 ] ] ) ∑ i 3 ∈ N ( i 2 ) exp ( e g 1 I ( i 3 , 2 ) [ i 3 , i 2 ] ⋅ [ h g 1 j [ i 3 ] , h g 1 j [ i 2 ] ] ) , ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) h g 2 j [ i ] = W g 2 ( h g 1 j [ i ] + ∑ i 1 ∈ N ( i ) α g 1 [ i 1 , i ] h g 1 j [ i 1 ] ) e g 2 I ( i 1 , 2 ) [ i 1 , i 2 ] = W e 2 I ( i 1 , 2 ) ⋅ [ F ( l i 1 ) , F ( l i 2 ) ] , ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) α g 2 j [ i 1 , i 2 ] = exp ( e g 2 I ( i 1 , 2 ) [ i 1 , i 2 ] ⋅ [ h g 2 j [ i 1 ] , h g 2 j [ i 2 ] ] ) ∑ i 3 ∈ N ( i 2 ) exp ( e g 2 I ( i 3 , 2 ) [ i 3 , i 2 ] ⋅ [ h g 2 j [ i 3 ] , h g 2 j [ i 2 ] ] ) ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) h ˉ c j [ l i ] = h g 2 j [ i ] + ∑ i 1 ∈ N ( i ) α g 2 j [ i 1 , i ] h g 2 j [ i 1 ] \begin{aligned} h_{g_{1}}^{j}[i] & =W_{g_{1}} \cdot\left[\tilde{v}_{l_{i}}^{j}, \hat{v}_{l_{i}}^{j}, \tilde{v}_{l_{i}}^{j}, \bar{v}_{l_{i}}^{j}\right] \\ e_{g_{1}}^{I\left(i_{1,2}\right)}\left[i_{1}, i_{2}\right]&=W_{e_{1}}^{I\left(i_{1,2}\right)} \cdot\left[F\left(l_{i_{1}}\right), F\left(l_{i_{2}}\right)\right], \quad\left\langle l_{i_{1}}, l_{i_{2}}\right\rangle \in E(R) \\ \alpha_{g_{1}}^{j}\left[i_{1}, i_{2}\right] & =\frac{\exp \left(e_{g_{1}}^{I\left(i_{1,2}\right)}\left[i_{1}, i_{2}\right] \cdot\left[h_{g_{1}}^{j}\left[i_{1}\right], h_{g_{1}}^{j}\left[i_{2}\right]\right]\right)}{\sum_{i_{3} \in \mathcal{N}\left(i_{2}\right)} \exp \left(e_{g_{1}}^{I\left(i_{3,2}\right)}\left[i_{3}, i_{2}\right] \cdot\left[h_{g_{1}}^{j}\left[i_{3}\right], h_{g_{1}}^{j}\left[i_{2}\right]\right]\right)},\\ \left\langle l_{i_{1}}, l_{i_{2}}\right\rangle &\in E(R) \\ \alpha_{g_{1}}^{j}\left[i_{1}, i_{2}\right] & =\frac{\exp \left(e_{g_{1}}^{I\left(i_{1,2}\right)}\left[i_{1}, i_{2}\right] \cdot\left[h_{g_{1}}^{j}\left[i_{1}\right], h_{g_{1}}^{j}\left[i_{2}\right]\right]\right)}{\sum_{i_{3} \in \mathcal{N}\left(i_{2}\right)} \exp \left(e_{g_{1}}^{I\left(i_{3,2}\right)}\left[i_{3}, i_{2}\right] \cdot\left[h_{g_{1}}^{j}\left[i_{3}\right], h_{g_{1}}^{j}\left[i_{2}\right]\right]\right)},\\ \left\langle l_{i_{1}}, l_{i_{2}}\right\rangle &\in E(R) \\ h_{g_{2}}^{j}[i]&=W_{g_{2}}\left(h_{g_{1}}^{j}[i]+\sum_{i_{1} \in \mathcal{N}(i)} \alpha_{g_{1}}\left[i_{1}, i\right] h_{g_{1}}^{j}\left[i_{1}\right]\right) \\ e_{g_{2}}^{I\left(i_{1,2}\right)}\left[i_{1}, i_{2}\right]&=W_{e_{2}}^{I\left(i_{1,2}\right)} \cdot\left[F\left(l_{i_{1}}\right), F\left(l_{i_{2}}\right)\right],\left\langle l_{i_{1}}, l_{i_{2}}\right\rangle \in E(R) \\ \alpha_{g_{2}}^{j}\left[i_{1}, i_{2}\right]&=\frac{\exp \left(e_{g_{2}}^{I\left(i_{1,2}\right)}\left[i_{1}, i_{2}\right] \cdot\left[h_{g_{2}}^{j}\left[i_{1}\right], h_{g_{2}}^{j}\left[i_{2}\right]\right]\right)}{\sum_{i_{3} \in \mathcal{N}\left(i_{2}\right)} \exp \left(e_{g_{2}}^{I\left(i_{3,2}\right)}\left[i_{3}, i_{2}\right] \cdot\left[h_{g_{2}}^{j}\left[i_{3}\right], h_{g_{2}}^{j}\left[i_{2}\right]\right]\right)} \\ \left\langle l_{i_{1}}, l_{i_{2}}\right\rangle &\in E(R) \\ \bar{h}_{c}^{j}\left[l_{i}\right]&=h_{g_{2}}^{j}[i]+\sum_{i_{1} \in \mathcal{N}(i)} \alpha_{g_{2}}^{j}\left[i_{1}, i\right] h_{g_{2}}^{j}\left[i_{1}\right] \\ \end{aligned} hg1j[i]eg1I(i1,2)[i1,i2]αg1j[i1,i2]⟨li1,li2⟩αg1j[i1,i2]⟨li1,li2⟩hg2j[i]eg2I(i1,2)[i1,i2]αg2j[i1,i2]⟨li1,li2⟩hˉcj[li]=Wg1⋅[v~lij,v^lij,v~lij,vˉlij]=We1I(i1,2)⋅[F(li1),F(li2)],⟨li1,li2⟩∈E(R)=∑i3∈N(i2)exp(eg1I(i3,2)[i3,i2]⋅[hg1j[i3],hg1j[i2]])exp(eg1I(i1,2)[i1,i2]⋅[hg1j[i1],hg1j[i2]]),∈E(R)=∑i3∈N(i2)exp(eg1I(i3,2)[i3,i2]⋅[hg1j[i3],hg1j[i2]])exp(eg1I(i1,2)[i1,i2]⋅[hg1j[i1],hg1j[i2]]),∈E(R)=Wg2 hg1j[i]+i1∈N(i)∑αg1[i1,i]hg1j[i1] =We2I(i1,2)⋅[F(li1),F(li2)],⟨li1,li2⟩∈E(R)=∑i3∈N(i2)exp(eg2I(i3,2)[i3,i2]⋅[hg2j[i3],hg2j[i2]])exp(eg2I(i1,2)[i1,i2]⋅[hg2j[i1],hg2j[i2]])∈E(R)=hg2j[i]+i1∈N(i)∑αg2j[i1,i]hg2j[i1]
其中, W g 1 ∈ R d g 1 × 4 W_{g_1}\in \mathbb{R}^{d_{g_1}\times4} Wg1∈Rdg1×4和 W e 1 ∈ R 2 d g 1 × 2 ∣ F ( ⋅ ) ∣ , I ( ⋅ ) ∈ { 1 , 2 , 3 , 4 } W_{e_1}\in \mathbb{R}^{2d_{g_1}\times2|F(·)|},I ( · )\in\{ 1,2,3,4\} We1∈R2dg1×2∣F(⋅)∣,I(⋅)∈{1,2,3,4}为边类型指示符。 W g 2 ∈ R d g 2 × d g 1 W_{g_2}\in \mathbb{R}^{d_{g_2}\times d_{g_1}} Wg2∈Rdg2×dg1和 W e 1 ∈ R 2 d g 2 × 2 ∣ F ∣ W_{e_1}\in \mathbb{R}^{2d_{g_2}\times2|F|} We1∈R2dg2×2∣F∣。 ∣ F ∣ |F| ∣F∣表示路段特征维数。考虑边与边之间的约束 ⟨ l i 1 , l i 2 ⟩ ∈ E ( R ) \left\langle l_{i_{1}}, l_{i_{2}}\right\rangle \in E(R) ⟨li1,li2⟩∈E(R)。 i 3 ∈ N ( i 2 ) i_3\in \mathcal{N}(i_2) i3∈N(i2)表示 l i 3 l_{i_3} li3和 l i 2 l_{i_2} li2相邻且 < l i 2 , l i 3 >
h ˉ c j [ l i ] = G A T ( l i , G ( R ) , F ( R ) ∣ W g 1 , W e 1 , W g 2 , W e 2 ) \bar h^j_c[l_i]=GAT(l_i,G(R),F(R)|W_{g_1},W_{e_1},W_{g_2},W_{e_2})\\ hˉcj[li]=GAT(li,G(R),F(R)∣Wg1,We1,Wg2,We2)
聚合路段:每个时间步 j j j得到对于RNG即 G ( R ) G(R) G(R)编码集合 h ˉ c j [ G ( R ) ] = [ h ˉ c j [ l 1 ] , . . . ] \bar h_c^j[G(R)]=[\bar h^j_c[l_1],...] hˉcj[G(R)]=[hˉcj[l1],...],需要将 h ˉ c j \bar h_c^j hˉcj设置到固定长度。直观思路是用平均池化。但是不同路段在 G ( R ) G(R) G(R)中有着不同的影响。直观上,影响自然依赖于路段特征 F ( R ) F(R) F(R),因而衡量路段的余弦相似度 c o s ( f l i , f l i ′ ) cos(f_{l_i},f_{l_{i'}}) cos(fli,fli′)。然后通过平均每个路段与其他路段的相似度来衡量每个路段的影响力得分:
s c o r e ( l i ) = a v g ( ∑ l i ′ ∈ L ( R ) c o s ( f l i , f l i ′ ) ) score(l_i)=avg(\sum_{l_{i'\in L(R)}}cos(f_{l_i},f_{l_{i'}}))\\ score(li)=avg(li′∈L(R)∑cos(fli,fli′))
最后利用 S o f t m a x Softmax Softmax函数归一化每个路段的影响力得分 s c o r e ˉ ( l i ) = s c o r e ( l i ) ∑ s c o r e ( l i ′ ) \bar {score}(l_i)=\frac{score(l_i)}{\sum score(l_{i'})} scoreˉ(li)=∑score(li′)score(li),接着通过加权求和得到聚合后固定长度的向量 h ˉ c j = ∑ l i ∈ L ( R ) s c o r e ˉ ( l i ) h ˉ c j [ l i ] \bar h_c^j=\sum_{l_i\in L(R)}\bar{score}(l_i)\bar h^j_c[l_i] hˉcj=∑li∈L(R)scoreˉ(li)hˉcj[li]
加入位置编码 h o j ∈ R d g 2 h^j_o \in \mathbb{R}^{d_{g_2}} hoj∈Rdg2, h ˉ c j = h ˉ c j ⊕ h o j \bar h_c^j=\bar h_c^j \oplus h^j_o hˉcj=hˉcj⊕hoj。接下来用B个自注意力块来将 h ˉ c j \bar h^j_c hˉcj转换为 h ^ c j \hat h^j_c h^cj。
h o j [ 2 d ] = s i n ( j 100 0 2 d d g 2 ) , h o j [ 2 d + 1 ] = c o s ( j 100 0 2 d d g 2 ) h^j_o[2d]=sin(\frac{j}{1000^{\frac{2d}{d_{g_2}}}}),\qquad h^j_o[2d+1]=cos(\frac{j}{1000^{\frac{2d}{d_{g_2}}}})\\ hoj[2d]=sin(1000dg22dj),hoj[2d+1]=cos(1000dg22dj)
每个块包含如下步骤:
简化上述4步,第 i i i个块表示为函数 S A B i ( ⋅ ) SAB_i(·) SABi(⋅),输入 h s a b i − 1 h_{sab_{i-1}} hsabi−1输出 h s a b i h_{sab_i} hsabi。则有 h s a b 0 = h ˉ C h_{sab_0}=\bar h_C hsab0=hˉC, h s a b B = h ^ C h_{sab_B}=\hat h_C hsabB=h^C,即 h ^ C = S A B B ( S A B B − 1 ( . . . S A B 1 ( h ˉ C ) . . . ) ) \hat h_C=SAB_B(SAB_{B-1}(...SAB_1(\bar h_C)...)) h^C=SABB(SABB−1(...SAB1(hˉC)...))
到目前为止,已经对交通状态进行了编码,并捕获了它们在历史时间步的时空相关性。然而,不同的历史时间步对应着对出发时间步的不同影响。一种理想的方法是衡量出发时刻与其他时刻的交通状态之间的相关性,但不能立即统计出发时刻的交通状态。为了解决这个问题,利用时间背景信息 X X X。判断不同时间步之间的相似性,从而可以间接测量历史时间步对出发时间步的影响。因此,如时间编码器所示,计算出发时间步 s s s的时间背景信息 x s x^s xs和每个历史时间步的时间背景信息 x j x^j xj的余弦相似度 w x j = c o s ( x s , x j ) w^j_x=cos(x^s,x^j) wxj=cos(xs,xj)。根据相似度来计算每个历史时间步的影响得到 h c j = ( w x j h ^ c j ) ⊕ h ^ c j 2 h^j_c=\frac{(w_x^j\hat h_c^j)\oplus \hat h^j_c}{2} hcj=2(wxjh^cj)⊕h^cj。 w x j ∈ [ − 1 , 1 ] w^j_x \in [-1,1] wxj∈[−1,1]来重塑不同历史时间步对出发时间步的影响。最终得到 h C = [ h c s − p , . . . , h c s − 1 ] h_C=[h^{s-p}_c,...,h^{s-1}_c] hC=[hcs−p,...,hcs−1]
空间解码器三个组成模块:全局静态直方图生成器,局部静态直方图提取器和时空注意力。
先通过LCG G = < L , E > G=
进一步从全局中查询局部静态直方图。通过路线 R = < l 1 , . . . l m > R=
利用时空注意力模型来聚合时间编码 h C = [ h c s − p , . . . , h c s − 1 ] h_C=[h^{s-p}_c,...,h^{s-1}_c] hC=[hcs−p,...,hcs−1],从而得到考虑路线和出发时间的时空表示序列 h R s = [ h l 1 s , . . . , h l m s ] h^s_R=[h^s_{l_1},...,h^s_{l_m}] hRs=[hl1s,...,hlms]。
利用共性特征 ( G , F , T ) (G,F,T) (G,F,T)去生成全局静态直方图,再通过请求的相关信息从中获取局部静态直方图。
生成全局静态直方图:全局指的是路网中的全部路段。一个直接的方法是设计一个函数,将每个路段特征转化为一个隐藏表示;然而,它无法捕捉不同路段之间的相关性。这里仍然利用GAT,来解决相关性建模的问题。 h L ′ [ l i ] = G A T ( l i , G , F ∣ W g 1 ′ , W e 1 ′ , W g 2 ′ , W e 2 ′ ) h'_L[l_i]=GAT(l_i,G,F|W_{g'_1},W_{e'_1},W_{g'_2},W_{e'_2}) hL′[li]=GAT(li,G,F∣Wg1′,We1′,Wg2′,We2′)
时间上,“全局”指的是一周内所有时间段。将时间步拆分为两部分,“周中天” h W ∈ R 7 × d w h_W\in\mathbb{R}^{7\times d_w} hW∈R7×dw和“天中时” h D ∈ R ∣ h D ∣ × d s h_D\in\mathbb{R}^{|h_D|}\times d_s hD∈R∣hD∣×ds, ∣ h D ∣ = 24 × 60 Δ t |h_D|=\frac{24\times60}{\Delta t} ∣hD∣=Δt24×60。
通过笛卡尔积将空间编码 h ˉ L ′ \bar h'_L hˉL′和两个时间编码 h W h_W hW和 h D h_D hD结合得到时空嵌入 h S T ∈ ( ∣ L ∣ × 7 × ∣ h D ∣ ) × ( d g ′ + d d + d w ) h_{ST}\in^{(|L|\times7\times|h_D|)\times(d_{g'}+d_d+d_w)} hST∈(∣L∣×7×∣hD∣)×(dg′+dd+dw)。进一步得到直方图 h i s t ˉ [ i ] = S o f t m a x ( W s t h S T [ i ] + b s t ) \bar {hist}[i]=Softmax(W_{st}h_{ST}[i]+b_{st}) histˉ[i]=Softmax(WsthST[i]+bst),其中 W s t ∈ R k × ( d g ′ + d d + d w ) W_{st}\in \mathbb{R}^{k\times(d_{g'}+d_d+d_w)} Wst∈Rk×(dg′+dd+dw)
局部静态直方图获取:给定路线 R = < l 1 , . . . l m > R=
h ^ l i s = R e L U ( W h r h i s t ˉ ) \hat h_{l_i}^s=ReLU(W_{hr}\bar {hist}) h^lis=ReLU(Whrhistˉ),加入位置编码更新 h ˉ l i s = h ˉ l i s ⊕ h o i \bar h^s_{l_i}=\bar h^s_{l_i}\oplus h^i_o hˉlis=hˉlis⊕hoi,得到更新后的所有序列 h ˉ R s \bar h^s_R hˉRs。为了捕获时间编码器的影响。通过注意力机制聚合 h C h_C hC和 h ˉ R s \bar h^s_R hˉRs。设计了 B B B个时空注意力块,每个块包含两个子块:空间自注意力子块和编码器-解码器注意力子块。
总结:第 i i i个时空块中的过程可以表示 h ^ R s = E D A i ′ ( S A B i ′ ( h ^ R s ) , h C ) \hat h^s_R=EDA'_i(SAB'_i(\hat h^s_R),h_C) h^Rs=EDAi′(SABi′(h^Rs),hC)。第 B B B个块的输出对应于最终的时空序列 h R s h^s_R hRs。
解释了如何基于时空序列 h R s h^s_R hRs和局部静态直方图 h i s t ˉ R s \bar {hist}^s_R histˉRs生成行程时间,然后描述了训练过程。
设计动态速度生成器和行程时间生成器,通过 h R s h^s_R hRs和图 h i s t ˉ R s \bar {hist}^s_R histˉRs生成行程时间。动态速度生成器生成速度动态因素(即动态矩阵 { P l i s } i ∈ [ 1 , m ] \{P^s_{l_{i}}\}_{i \in [1,m]} {Plis}i∈[1,m]和偏差序列 { Δ l i s } i ∈ [ 1 , m ] \{\Delta^s_{l_{i}}\}_{i \in [1,m]} {Δlis}i∈[1,m])。行程时间生成器首先利用静态直方图 h i s t ˉ l i s \bar {hist}^s_{l_i} histˉlis为每个路段 l i l_i li生成速度和速度动态因素( P l i s P^s_{l_{i}} Plis和 Δ l i s \Delta^s_{l_{i}} Δlis))然后根据生成的行程速度和行程距离推理其行程时间。
P l i s = Reshape ( W P h l i s + b P , k × k ) Δ l i s = Sigmoid ( W Δ h l i s + b Δ ) \begin{aligned} P_{l_{i}}^{s} & =\operatorname{Reshape}\left(W_{P} h_{l_{i}}^{s}+b_{P}, k \times k\right) \\ \Delta_{l_{i}}^{s} & =\operatorname{Sigmoid}\left(W_{\Delta} h_{l_{i}}^{s}+b_{\Delta}\right) \end{aligned}\\ PlisΔlis=Reshape(WPhlis+bP,k×k)=Sigmoid(WΔhlis+bΔ)
其中 R e s h a p e ( A , k × k ) Reshape(A,k\times k) Reshape(A,k×k)将 A ∈ R k 2 A\in \mathbb{R}^{k^2} A∈Rk2转换为 k × k k\times k k×k的矩阵。 S i g m o i d ( z = 1 1 + e − z ) Sigmoid(z=\frac{1}{1+e^{-z}}) Sigmoid(z=1+e−z1)保证 Δ l i s \Delta^s_{l_i} Δlis约束在 0 ≤ δ l i s ≤ 1 0\le\delta^s_{l_i}\le1 0≤δlis≤1
离线训练:算法1概述了训练过程。首先,提取全局时空特征 ( G 、 F 、 T ) ( G、F、T) (G、F、T)。具体来说, G G G和 F F F是从整个道路网络中提取的,而 T T T是根据给定时间步大小 Δ t \Delta t Δt计算的。接下来,用正态分布(第1 ~ 3行)初始化整个模型的所有参数 θ e n c , θ d e c 和 θ e s t θ_{enc},θ_{dec}和θ_{est} θenc,θdec和θest。然后用给定的epoch (第4 ~ 5行)对整个模型进行迭代训练。
ModelTrain解释了每个epoch的训练过程。首先根据给定的批次大小 b s b_s bs计算训练迭代次数 T I TI TI,然后对所有训练数据 Z , Y Z,Y Z,Y进行打乱(第1行)。在每次迭代中,从 Z , Y Z,Y Z,Y中提取 b s b_s bs训练数据。 Z Z Z的每个元素由请求(路线 R R R和出发时间 s s s)、历史交通状况 C C C和时间背景信息 X X X组成。构建了局部图RNG$ ( G ( R ) ) ,并基于全局信息 ,并基于全局信息 ,并基于全局信息G,F,T 和每个元素的 和每个元素的 和每个元素的R 和 和 和s$ (第2 ~ 5行)提取局部路段特征 ( F ( R ) ) ( F ( R ) ) (F(R))和当前时间步 ( T s ) ( T^s ) (Ts)。特别地,首先使用 M e n c M_{enc} Menc生成编码 h C h_C hC来表示空间编码结果,然后使用 M d e c M_{dec} Mdec 对表示 h R s h^s_R hRs进行解码。然后使用 M e s t M_{est} Mest生成每个路段行程时间估计,然后计算给定路线(第6 ~ 8行)的整体行程时间。最后,设计了如下的损失函数:
l o s s = ∑ ( λ ∑ j ∣ t ^ j − y [ j ] ∣ m + ( 1 − λ ) ∣ t ^ R − ∑ j y [ j ] ∣ ) loss =\sum(\lambda\frac{\sum_j|\hat t_j-y[j]|}{m}+(1-\lambda)|\hat t_R-\sum_jy[j]|) loss=∑(λm∑j∣t^j−y[j]∣+(1−λ)∣t^R−j∑y[j]∣)
它由两类平均绝对误差(MAE)损失组成:路段损失和路线损失。前者可以帮助模型以细粒度的方式进行学习。利用Adam Optimizer 通过最小化总损失(第9 ~ 10行)来优化所有参数。
请求和交通状态:收集的成都( CD )和西安 ( XA )的出租车订单提取请求。每个订单对应一条轨迹,可以提取它的请求和离开时�