Spatial-Temporal Trajectory Similarity Learning in Road Networks
作者:Ziquan Fang, Yuntao Du, Xinjun Zhu, Danlei Hu, Lu Chen, Yunjun Gao, Christian S.Jensen
论文解读
Introduction
- 轨迹的定义,轨迹相似度的应用
轨迹相似度的指标计算
(1)基于原始的轨迹计算
- free space:代表性的方法是基于轨迹点匹配(pointwise matching)的时间动态规整(DTW),以及它延伸的方法:LCSS, Hausdorff, ERP。方法的缺陷在于时间复杂度太高,多数是平方阶。
- road network measure:代表性方法是基于分治的时间优先匹配(系列算法都发表在VLDB,涉及数据库底层的join操作)
时间优先匹配(TF-Matching)是一个简单的基线方法来计算TS-Join。首先,我们使用层次网格结构来索引时域。然后通过计算轨迹对的时空相似性来细化同一叶节点上的轨迹对(章节3.2和3.3)。通过将叶子节点的结果归并到根节点,当到达根节点时,就会得到连接结果
(2)基于轨迹嵌入计算
- 学习到轨迹的嵌入,两个嵌入向量的内积就是相似度.
- 对原始轨迹 𝑇 𝑏 𝑇_𝑏 Tb添加噪声、下采样为轨迹 𝑇 𝑎 𝑇_𝑎 Ta,希望轨迹 𝑇 𝑎 𝑇_𝑎 Ta 能够生成原始轨迹 𝑇 𝑏 𝑇_𝑏 Tb .
- 基于轨迹嵌入,计算轨迹的相似度,也存在一些方法:t2vec
(3)基于度量学习,用轨迹嵌入拟合原始的指标
- 学习度量函数 f ( ⋅ , ⋅ ) f(·,·) f(⋅,⋅), 让 f ( e t r 1 , e t r 2 ) f(e_{tr1},e_{tr2}) f(etr1,etr2) 逼近 M ( t r 1 , t r 2 ) M(tr1,tr2) M(tr1,tr2), M M M是任意的原始的轨迹相似度计算指标,如DTW等。
- 代表性方法:NeuTraj, NT-no-SAM, Traj2SimVec, TrajGAT等。
- 本质上也依赖于学习到的嵌入的好坏。
本文使用的是第二类:基于轨迹的嵌入计算。
轨迹嵌入的挑战
作者引用了4篇文章:
GTS (KDD 2021)
- https://dl.acm.org/doi/epdf/10.1145/3447548.3467337
T3s(ICDE 2021)
- https://ieeexplore.ieee.org/document/9458934
NeuTraj (ICDE 2019)
- https://ieeexplore.ieee.org/document/8731427
Traj2SimVec (IJCAI 2020)
- https://www.ijcai.org/proceedings/2020/0444.pdf
以上文章多数都只考虑了空间层面,少数考虑了时间层面,都没有显式地建模时空相关性。
文章进一步指出,在交通规划和监控的实际应用中,时空相似性是非常重要的。
- 轨迹的相似度计算可以服务于轨迹聚类,用于拥堵检测。
针对以上的现状,作者提出了3个挑战:
(1)针对于轨迹相似度计算任务,如何捕获时空相关性?
- 对时间进行“网格化”编码是不现实的,因为时间是连续而不停止的
- 轨迹的时间周期性需要建模
- 作者认为:对于每个轨迹点,做时间嵌入,再送入序列模型的方法是低效的(赞同)
- 因此:作者设计了一个通用的时间建模模块(Temporal Modelling Module, TMM)
(2)针对于轨迹相似度计算任务,如何做时空特征的融合?
- 作者观察到:不同的应用场景,对时间和空间的权重偏好是不一样的。
- 在【区域功能估计】(论文:[WWW2018] CoPFun: an urban co-occurrence pattern mining scheme based on regional function discovery,基于用户的移动模式等信息发现区域的语义特征)领域,偏好于建模轨迹的区域特征。
- 做【共享单车需求估计】时(论文:[AI 2021] Zone pAth Construction (ZAC) based Approaches for Effective Real-Time Ridesharing),也需要通过用户的移动模式发现某区域对自行车的需求,更偏好于建模轨迹的时序特征。
- 作者希望时空融合模块能通用于下游任务,具备更好的鲁棒性,提出了时空共同融合模块(Spatio-temporal co-attention fusion module, STCF)。
(3)如何保证嵌入学习的效率和精度?
- 引入了Triplet Loss:
- 轨迹相似度计算任务的样本构造方法:对原始轨迹 𝑇 𝑏 𝑇_𝑏 Tb添加噪声、下采样为轨迹 𝑇 𝑎 𝑇_𝑎 Ta,希望轨迹 𝑇 𝑎 𝑇_𝑎 Ta 能够生成原始轨迹 𝑇 𝑏 𝑇_𝑏 Tb,
- 𝑇 𝑏 𝑇_𝑏 Tb与 T a T_a Ta为正样本,与其它轨迹样本、其对应下采样的样本为负样本
- 引入了:
- 课程学习:从“容易”的样本开始学(调整了样本的顺序),过渡到复杂的样本
- 源自强化学习领域的优化方法:Bengio, Yoshua, et al. “Curriculum learning.”Proceedings of the 26th annual international conference on machine learning. ACM, 2009.
问题定义
-
路网是一个有向图 G = ( L , E ) G=(L,E) G=(L,E)
-
L L L是节点集合,每个节点 l i l_i li是一个二元组$ (x_i,y_i) \in L$,代表着路段的端点或者路口
-
E ⊆ L × L E \subseteq L\times L E⊆L×L是路段的集合,每个路段 e l i , l j ∈ E e_{l_i,l_j}\in E eli,lj∈E是一个从节点 l i l_i li到节点 l j l_j lj的有向边
-
原始的GPS轨迹是经纬度+时间的序列: T = < ( g 1 , t 1 ) , ( g 2 , t 2 ) , . . . , ( g m , t m ) > T=<(g_1,t_1),(g_2,t_2),...,(g_m,t_m)> T=<(g1,t1),(g2,t2),...,(gm,tm)>,其中: g i = ( l o n , l a t ) g_i=(lon,lat) gi=(lon,lat).
-
本文中,我们认为轨迹都是进行了道路匹配的序列: T = < ( l 1 , t 1 ) , ( l 2 , t 2 ) , . . . , ( l m , t m ) > , l i ∈ L T=<(l_1,t_1),(l_2,t_2),...,(l_m,t_m)>, l_i \in L T=<(l1,t1),(l2,t2),...,(lm,tm)>,li∈L是一个路网图上的一个节点
-
对于轨迹 T T T,定义: T ( s ) = < l 1 , l 2 , . . . , l m > , T ( t ) = < t 1 , t 2 , . . . , t m > T^{(s)} = <l_1,l_2,...,l_m>, T^{(t)} = <t_1,t_2,...,t_m> T(s)=<l1,l2,...,lm>,T(t)=<t1,t2,...,tm>.
为了实现通用、鲁邦的轨迹相似度计算,作者重新定义轨迹相似度为空间相似度和时间相似度的加权:
D ( T i , T j ) = λ ⋅ D S ( T i ( s ) , T j ( s ) ) + ( 1 − λ ) ⋅ D T ( T i ( t ) , T j ( t ) ) \mathcal{D}(T_i,T_j) = \lambda· \mathcal{D}_S(T_i^{(s)},T_j^{(s)}) + (1-\lambda)· \mathcal{D}_T(T_i^{(t)},T_j^{(t)}) D(Ti,Tj)=λ⋅DS(Ti(s),Tj(s))+(1−λ)⋅DT(Ti(t),Tj(t))
注:
(1)作者认为之前路网约束下的轨迹相似度计算方式都可以统一到这个相似度的定义中,但是没有进一步说明。
(2)
λ
\lambda
λ是一个参数,根据应用需求而定。
(3)这个公式用于定义两个轨迹相似度的ground truth,与模型的设计无关。
轨迹相似度的计算问题的定义如下:
学习一个模型 G ( ⋅ , ⋅ ) G(·,·) G(⋅,⋅),使得 G ( v T i , v T j ) G(v_{T_i},v_{T_j}) G(vTi,vTj)逼近 T i T_i Ti和 T j T_j Tj的真实相似度 D ( T i , T j ) \mathcal{D}(T_i,T_j) D(Ti,Tj) ;其中: v T v_{T} vT为对应轨迹 T T T的嵌入表示。
时间表示的Benchmark模型设计
在介绍ST2vec之前,作者还设计了两个辅助模型作为基准:
- A1:对时间设置窗口,进行时间片划分,将时间离散化。粒度粗糙。
- A2:将时间直接作为特征送入RNN模型,没有捕捉到相关性和周期性。
(对比的模型较为简单)
ST2Vec的模型设计
时间编码模块(TMM)
分为三个阶段:时间的嵌入(Cosine编码)、时间序列的嵌入(LSTM)、时间上的自注意力(Attention)。
时间的周期性&语义性编码
-
时间的嵌入:对于每个时间点,用余弦做绝对位置的编码:
-
其中: t ′ [ i ] t'[i] t′[i]是时间嵌入 t ′ t' t′的第i个元素, w 0 , . . . , w q w_0,...,w_q w0,...,wq和 w = φ 0 , . . . , φ q w=\varphi_0,...,\varphi_q w=φ0,...,φq均为可学习的参数(用于学习同一位置的不同语义)。
-
c o s ( ⋅ , ⋅ ) cos(·,·) cos(⋅,⋅)是周期性的激活函数。在间隔为 T i = 2 π / w i T_i=2\pi/w_i Ti=2π/wi处, t ′ [ i ] t'[i] t′[i]具有相同的值。
-
轨迹的时间: < t 1 , t 2 , . . . , t m > <t_1,t_2,...,t_m> <t1,t2,...,tm> 被编码为: < t 1 ′ , t 2 ′ , . . . , t m ′ > <t_1',t_2',...,t_m'> <t1′,t2′,...,tm′>
-
作者没有解释有没有做时间片的划分,应该是送入的原始时间点。
时间的序列性编码
将上一步得到的
<
t
1
′
,
t
2
′
,
.
.
.
,
t
m
′
>
<t_1',t_2',...,t_m'>
<t1′,t2′,...,tm′>序列送入LSTM:
h
i
=
L
S
T
M
(
t
i
′
,
h
i
−
1
)
h_i = LSTM(t_i',h_{i-1})
hi=LSTM(ti′,hi−1)
最终的输出 h t h_t ht为轨迹时间信息的 T ( t ) T^{(t)} T(t)的最终表示。
解耦的注意力
为了体现不同时间点对轨迹相似度的作用差异,定义了时间上的自注意力机制:
- 对Query向量
h
i
h_i
hi和所有的Key向量
h
k
h_k
hk,用addition model计算打分函数
α
i
,
k
\alpha_{i,k}
αi,k(没有用常见的点积):
- 打分函数做softmax,得到注意力权重:
- 注意力权重与Value加权求和,得到过自注意力层后的表示:
空间建模模块
多数轨迹的表示是在自由空间上,用RNN类的模型做嵌入。
第一篇提出在路网约束空间下计算轨迹相似度的文章:
- Peng Han, Jin Wang, Di Yao, Shuo Shang, and Xiangliang Zhang. 2021. A graph approach for trajectory similarity computation in networks
- GNN + LSTM,主要是基于POI序列信息的相似度计算,忽略了POI信息一致,但是细粒度的路径不同的轨迹的相似度计算情况。
类似的,空间建模模块设计包括三个阶段:地点嵌入(node2vec+GCN)、空间序列嵌入(LSTM)和空间上的自注意力(attention).
地点嵌入
原始的空间轨迹: T ( s ) = < l 1 , l 2 , . . . , l m > T^{(s)} = <l_1,l_2,...,l_m> T(s)=<l1,l2,...,lm>
通过node2vec将每一个节点映射到初始特征: l i ↦ n i l_i\mapsto n_i li↦ni
通过GCN做节点特征的聚合、更新,将
T
(
s
)
=
<
l
1
,
l
2
,
.
.
.
,
l
m
>
T^{(s)} = <l_1,l_2,...,l_m>
T(s)=<l1,l2,...,lm> 映射为$ <l_1’,l_2’,…,l_m’>$
空间序列性编码、解耦的自注意力
如果去掉co-attention module,和时间的序列嵌入性编码和自注意力处理方式完全一致;所以这里省略了进一步的介绍。
时空互注意力融合(STCF)模块
文章将GCN提取的地点嵌入和cosine编码得到的时间嵌入做注意力融合。
首先提出了第一种可能的融合,直接通过两种LSTM的输出相加:(SF)
- 不足:两组序列模型,参数量大,训练收敛慢
接着提出第二种:
首先对输入的时间嵌入序列 τ ( t ) = < t 1 ′ , t 2 ′ , . . , t m ′ > \tau^{(t)}=<t_1',t_2',..,t_m'> τ(t)=<t1′,t2′,..,tm′>和空间嵌入序列 τ ( s ) = < l 1 ′ , l 2 ′ , . . , l m ′ > \tau^{(s)}=<l_1',l_2',..,l_m'> τ(s)=<l1′,l2′,..,lm′>使用同一套参数做变换,得到对应的表示:
时间维度的表示: z τ 1 = W F τ ( t ) z_{\tau}^1 = W_F \tau^{(t)} zτ1=WFτ(t)
空间维度的表示: z τ 2 = W F τ ( s ) z_{\tau}^2 = W_F \tau^{(s)} zτ2=WFτ(s)
时空同时做注意力:
-
β \beta β是注意力系数,计算注意力系数的时候,Query (i)是选定的表示,可以是时间,可以是空间;而Key(j)既有时间,又有空间。
-
依次计算QKV分别为(时间,时间,时间)、(时间、空间,空间)的注意力,得到时空交互注意力分数,过FFN。这里的 τ ( t ^ ) \tau^{(\hat{t})} τ(t^)是指融合了时空交互注意力的时间特征表示。
-
最终将融合了时空交互注意力的两种特征表示拼接过LSTM,得到每个轨迹点嵌入做时空交互注意力之后的表示。
模型的训练和优化
回顾:轨迹相似度计算问题是希望学习一个模型 G ( ⋅ , ⋅ ) G(·,·) G(⋅,⋅),使得 G ( v T i , v T j ) G(v_{T_i},v_{T_j}) G(vTi,vTj)逼近 T i T_i Ti和 T j T_j Tj的真实相似度 D ( T i , T j ) \mathcal{D}(T_i,T_j) D(Ti,Tj) ;其中: v T v_{T} vT为对应轨迹 T T T的嵌入表示。
定义: G ( v T i , v T j ) = v T i T v T j G(v_{T_i},v_{T_j}) = v_{T_i}^{T}v_{T_j} G(vTi,vTj)=vTiTvTj
目标函数:给定数据集 T \mathcal{T} T,选取1条轨迹作文anchor T a T_a Ta,采样与其相似的一条轨迹作为正样本 T p T_p Tp,与其不相似的一条轨迹作为负样本集 T b T_b Tb,希望最大化符合“正样本间的相似度大于负样本间相似度的pair的数量”。
模型的优化:
-
文章认为,随机地安排样本的顺序会让模型收敛变慢。因此,引入课程学习机制。给定轨迹anchor T a T_a Ta,以及它的所有正负样本。首先选择 T a T_a Ta最不相似和最相似的样本构成三元组 D ( T a , T p , T n ) D(T_a,T_p,T_n) D(Ta,Tp,Tn)。
-
此外,文章对时间编码模块(Eq.2)做了预训练,以加快收敛。
实验
数据集&预处理:
评估指标: 命中率(Hit Ratio),源自推荐系统领域。
- HR@10: 模型计算出的相似度最高的10条轨迹中,具有ground truth最相似的样本的样本数量。
- R10@50: 模型计算出的相似度最高的50条轨迹中,具有ground truth最相似的前10条样本的样本数量。
Groud-truth的构建:直接使用传统方法计算出的top-k指标,包括TP,DITA,LCRS,NetERP.
对比模型: 由于之前的多数模型没有考虑时间维度,作者为之前的模块手动构建了三种时间编码方式进行比较:
- w:通过time window划分为时间片,将时间片id作为特征
- l: 直接拼接时间特征送入LSTM
- t:作者使用的基于余弦嵌入的时间编码模块
实验结果
性能实验
- 从时间编码上看:用作者设计的TMM模块(t)的计算模型具有优势。
- ST2Vec模型在各个类别上的效果都是最好的。
其它实验
运行时间评估:
时空权重评估:变化不大,趋于稳定
关于时空融合的消融:
收敛速度实验:
样例分析
TS2Vec效果和期望拟合的非学习类指标一致。
文章创新点小结
- 作者观察到现有的轨迹相似度计算模型都没有建模时间相似性,从时空分离的角度重新定义了轨迹相似度的概念。
- 在轨迹的空间嵌入和时间嵌入时,作者提出了时空的共同融合模块,显式地建模了轨迹的时空相关性。
- 在考虑模块的重构时,作者每次都是先提出最简单的可行方案,再分析其缺陷,再迭代,使得对比实验具有很好的说服力。
- 作者对前人工作的总结非常充分,introduction提及的分布式的海量轨迹挖掘算法、轨迹相似度计算的应用的介绍是很新颖的。