POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next

POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next

  • 摘要
  • 1 INTRODUCTION
  • 2 RELATED WORK
    • 2.1 Next POI Recommendation
    • 2.2 Graphs in Location-based Recommendation
  • 3 PROBLEM FORMULATION
  • 4 OUR APPROACH:GETNEXT
    • 4.1 Model Structure Overview
    • 4.2 Learning with Trajectory Flow Map
      • 4.2.1 POI Embedding
      • 4.2.2 Transition Attention Map
    • 4.3 Contextual Embedding Module
      • 4.3.1 POI-User Embeddings Fusion
      • 4.3.2 Time-Category Embeddings Fusion
    • 4.4 Transformer Encoder and MLP Decoders
      • 4.4.1 Transformer Encoder
      • 4.4.2 MLP Decoders
      • 4.4.3 Loss
  • 5 EXPERIMENTS
    • 5.1 Experimental Setup
      • 5.1.1 Datasets
      • 5.1.2 Evaluation metrics
      • 5.1.3 Baselines
      • 5.1.4 Experiment Settings
    • 5.2 Results
    • 5.3 Inspecting the Trajectory Flow Map
      • 5.3.1 Inactive users and active users
      • 5.3.2 Short trajectories and long trajectories
      • 5.3.3 Removing trajectory flow map
  • 6 CONCLUSION

摘要

来源: SIGIR '22: The 45th International ACM SIGIR Conference on Research and Development in Information Retrieval Madrid Spain July 11 - 15, 2022
时间:2022
作者: Song Yang, Jiamou Liu, Kaiqi Zhao
关键词:Next POI Recommendation、Graph Neural Networks、Transformer
下一个POI推荐旨在根据用户的当前状态和历史信息来预测用户的近期移动,这对用户和服务提供商都有很大的价值。文章提出了一个用户不可知的全局轨迹流图和一个新的图增强Transformer模型:GETNext来进行下一个POI的预测以及缓解冷启动问题。GETNext将全局迁移模式、用户的一般偏好、时空上下文和时间感知的类别嵌入到Transformer模型中,以预测用户的未来移动。

1 INTRODUCTION

常见的预测POI解决思路是将POI推荐视为一个序列预测 任务,用各种形式的RNN进行时空信息编码,但是具有三个局限性。第一个是此类模型在短轨迹上的表现显著下降,第二个是对于有些用户只在少量的POI上签到的这种情况即冷启动问题处理效果不好,第三个是现有模型无法在POI类别和时间之间建立连接。文章认为利用其他用户的集体信息构建全局的轨迹流图可以缓解以上限制。使用这些轨迹流图需要解决三个问题:
1.如何从签到序列中聚合提取信息形成全局轨迹流图
2.如何在轨迹流图中保留下重要的上下文信息外也保存下如类别信息以及用户偏好等
3.如何同时结合集体的移动规律和个性化偏好
对于问题1,文章构建了一个用户不可知的轨迹流图,图中POI节点属性包括地理位置、类别和签到次数。处理方式为:如果一个POI与另一个POI在同一个签到轨迹中先后访问,就用一条有向边将这俩POI连接,边的权重代表它们俩的共同访问频率。这个轨迹流图可以捕捉POI之间过渡的影响。使用图卷积网络GCN将POI嵌入到一个保持POI之间全局转换的潜在空间,就是对于每个POI的嵌入都通过其邻近节点的聚合来进行更新,这样每个POI的嵌入都会受到其前例的影响从而保留全局转变信息。这样一来即使不知道user的历史签到信息也可以推荐当前POI最可能的一个邻居节点。对于较大的k,使用全局流图会提高top-k精度。
对于问题2,用嵌入层来捕获用户的一般偏好、POI类别嵌入以及用time2vec模型来完成时间嵌入。另外POI类别通常与时间有较大的关系,为联系在一起将类别和时间嵌入合并送入一个融合模块来产生一个与时间有关系的POI类别上下文嵌入。
对于问题3,GETNext采用了Transformer编码器和几个MLP解码器来融合这个POI嵌入和其他个性化嵌入中编码了的隐式全局流模式。另外全局流模式也通过一个学习过后的transition注意力map进入到最后的预测。

2 RELATED WORK

2.1 Next POI Recommendation

早期研究采用其他序列推荐任务中被广泛使用的办法比如马尔科夫链。
最近研究又转向了深度学习和嵌入方法比如使用RNN变体。

2.2 Graphs in Location-based Recommendation

文章旨在利用基于图的方法进行下一个POI的推荐。基于图的方法比如LBSN以及GGLR。
文章指出上述研究是针对传统的POI推荐不是nextPOI推荐。GETNext是第一个在next POI推荐任务中使用基于图的学习来编码POI的通用过渡信息的模型。

3 PROBLEM FORMULATION

U = u 1 , u 2 . . . , u M U={u_1,u_2...,u_M} U=u1,u2...,uM是一个用户的集合, P = p 1 , p 2 . . . p N P={p_1,p_2...p_N} P=p1,p2...pN是一个POI的集合, T = t 1 , t 2 . . . t K T={t_1,t_2...t_K} T=t1,t2...tK是一个时间戳集合,M、N、K都是正整数。对于集合P中的每一个POI–p都被定义为一个元组 p = < l a t , l o n , c a t , f r e q > p= p=<lat,lon,cat,freq>即纬度、经度、类别和签到频率。下面定义几个特别的概念尤其是cat是从POI的固定种类列表中摘出来的。
定义3.1 一个签到是一个元组 q = < u , p , t > ∈ U × P × T q=\in U × P × T q=<u,p,t>U×P×T,表示用户u在时间戳p访问兴趣点p。用户u 的所有签到活动就形成了一个签到序列 Q u = ( q u 1 , q u 2 , q u 3 , . . . ) Q_u=(q^1_{u},q^2_{u},q^3_{u},...) Qu=(qu1,qu2,qu3,...)其中 q u i q^i_{u} qui是第i个签到记录。定义所有用户的签到序列为 Q U = Q u 1 , Q u 1 . . . Q u M Q_U={Q_{u_{1}},Q_{u_{1}}...Q_{u_{M}}} QU=Qu1,Qu1...QuM.
在数据预处理部分,分割每个用户u 的签到序列Qu成为一个连续轨迹的集合,即 Q u = S u 1 ⊕ S u 2 ⊕ . . Q_u=S^1_u\oplus S^2_u\oplus .. Qu=Su1Su2..,⊕表示串接。这些轨迹的长度可能是不一样的并且他们中的每一个都包括一系列的具有短时间间隔比如24h的签到记录。
下一个POI推荐的目标就是通过从当前轨迹和所有user的历史签到记录得到一系列user下一步可能要去的POI。即:给定一个历史轨迹集合 S U I i ∈ N , u ∈ U {S^I_U} i\in\Bbb{N},u\in{U} SUIiNuU和一个特定的user- u i ∈ U u_i\in U uiU当前轨迹 S ′ = ( q 1 , q 2 . . . . , q m ) S^{'} = (q_1,q_2....,q_m) S=(q1,q2....,qm),预测未来ui最可能的访问的下k个POI q m + 1 , . . . q m + k q_{m+1},...q_{m+k} qm+1,...qm+k

4 OUR APPROACH:GETNEXT

POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第1张图片

4.1 Model Structure Overview

模型名字叫GETNEXT,轨迹流程图通过两种方式影响POI的输出,第一种是图神经网络GCN再轨迹流图上进行训练,生成POI嵌入,同时结合POI的类别、位置和签到频率。每个POI上编码用户的通用移动模式;第二种方式是注意模块以轨迹流图和节点特征的邻接矩阵为输入,生成transition-attention图。然后定义了上下文模块来获得用户编码,POI编码和时间编码(通过time2vector模型),在此基础上就产生了一个单一的签到编码向量,然后使用transformer编码器和MLP来预测POI,同时通过有残差连接的transition-attention map来进行调整。

4.2 Learning with Trajectory Flow Map

4.2.1 POI Embedding

不同的个体可能共享相似的轨迹片段,同一个人也可以多次重复一条轨迹,为此构建了用户不可知的轨迹流图。
定义4.1 轨迹流图 给定一个历史轨迹 S = S u i i ∈ N , u ∈ U S = {S^i_u} {i\in\Bbb{N},u\in{U}} S=SuiiNuU,一个轨迹流图就是一个属性加权有向图 G = ( V , E , l , w ) \mathcal{G} = (V,E,l,w) G=V,E,l,w
V=P 即v是节点集合也是POI集合。
l ( p ) l(p) l(p)其中p∈P, l l l包括lat,lon,category,freq;lat和lon是p的坐标(经纬度),category是p的种类,freq是p出现在轨迹S中的数量。
如果p1p2在一条轨迹 S u i {S^i_u} Sui中被连续访问,那么就会有一条有向边从p1指向p2。
p1p2边的权重等价于(p1,p2)出现在任何轨迹中的数量。
如果两个POI相距很远它们就不太可能被连续访问。对于给定的轨迹流图G下一步要学习POI的矢量化表示,这种表示要对POI的一般过渡和属性进行编码,为此利用GCN。又为了利用图G的所有拓扑关系,采用 spectral GCN。

4.2.2 Transition Attention Map

通过从图G中学习到的POI embedding捕捉到的移动规律是隐式的,为了放大影响提出了新颖的transition attention map。给定节点特征和 G \mathcal{G} G,则可得到attention map:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第2张图片

4.3 Contextual Embedding Module

4.3.1 POI-User Embeddings Fusion

POI嵌入是从轨迹流图中学的,为了捕捉user的个性化偏好,训练一个嵌入层将每个用户投影到一个低维向量,每个user的嵌入是从其历史签到序列中学习的。
而后将POI嵌入和个性化偏好嵌入串联起来送入一个致密层进行微调融合嵌入并增加表达能力。

4.3.2 Time-Category Embeddings Fusion

由于数据的稀疏以及噪音,个体POI的时间模式规律远不如POI类别的模式规律清晰和稳定,所以探讨POI的类别。
对POI和时间进行编码采用了time2vector。即将一天划分为48个小时,将一个(标量)时间映射到其中一个时隙。编码方式如下:其中et表示一个时间间隙,长度为k+1的向量,i表示第i 个元素,φ和ω都是可以学习的参数。
在这里插入图片描述
对POI种类的编码如下:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第3张图片
接着将et和ec用一个致密层融合:
在这里插入图片描述

4.4 Transformer Encoder and MLP Decoders

4.4.1 Transformer Encoder

在编码器部分使用了transformer块后面接了几个MLP,没有使用transformer解码器,并且在编码层维度保持不变以方便残差连接和层堆叠。
对于一个编码层l,首先使用多头(实验中为2head)自注意力机制进行变换,则第一个头的输出如下所示:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第4张图片
然后,堆叠不同的注意力头的结果并使用另一个线性变换来合并来自不同注意力空间的结果:
在这里插入图片描述
另外还应用了LayerNorm,在每个编码层后面都跟了一个FC层做一个ReLU。
在这里插入图片描述
在这里插入图片描述
第l个编码层的输出为:
在这里插入图片描述

4.4.2 MLP Decoders

χ [ l ∗ ] \chi^{[l^*]} χ[l]是编码层的输出,则MLP解码部分:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第5张图片
对于 Y ^ p o i \hat{Y}_{poi} Y^poi只关注其最后一行,再结合4.2.2定义的transition attention map,最终的结果为:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第6张图片
除了处理POI的head还有Time和category的head。

4.4.3 Loss

POI用交叉熵损失,时间的预测用MSE损失。为了平衡和其他Loss 的梯度量级对于时间loss×10,最终的loss为:
在这里插入图片描述

5 EXPERIMENTS

5.1 Experimental Setup

5.1.1 Datasets

使用了FourSquare-NYC,FourSquare-TKY和Gowalla-CA。

5.1.2 Evaluation metrics

准确率评估采用了acc@k和mrr,计算公式如下:

POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第7张图片

5.1.3 Baselines

MF,FPMC,LSTM,PRME,ST-RNN,STGN,STGCN,PLSPL,STAN

5.1.4 Experiment Settings

用了两个transformer块,优化器是adam 学习率1e-3,权重衰退率是5e-4,在GCN和transformer都采用了丢弃率为0.3的dropout方法。另外时间loss乘10用来匹配POI和种类的loss,epoch200,batchsize20

5.2 Results

POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第8张图片

5.3 Inspecting the Trajectory Flow Map

这一部分阐述轨迹流图的优势。

5.3.1 Inactive users and active users

构建的全局轨迹流图试图利用其他用户的序列改善非活跃用户的推荐结果。解决冷启动问题的结果如下:
POI推荐文献阅读笔记2: GETNext:Trajectory Flow Map Enhanced Transformer for Next_第9张图片

5.3.2 Short trajectories and long trajectories

GETNext对在长短轨迹的表现上差异不大,证明其在轨迹长短方面具有较好的鲁棒性。

5.3.3 Removing trajectory flow map

消融实验证明去除了轨迹流图后表现下降。

6 CONCLUSION

对于未来的工作,将进一步探讨和区分时间模式,例如工作日和周末。未来的另一个工作是根据用户的行为对用户进行分类,并为每类用户构建轨迹流图。

你可能感兴趣的:(transformer,深度学习,人工智能)