【论文阅读】STAN: Spatio-Temporal Attention Network for Next Location Recommendation
authors:: Yingtao Luo, Qiang Liu, Zhaocheng Liu
container:: Proceedings of the Web Conference 2021
year:: 2021
DOI:: 10.1145/3442381.3449998
rating:: ⭐⭐⭐
share:: false
comment:: 通过双层Attention的方式,对Attention公式进行修改,聚合时间以及距离信息。通过线性插值代替 GPS 网格进行空间/时间离散化。
前言
仍然是 POI 推荐的一篇论文。
2021 年 WWW 上的一篇论文:STAN: Spatio-Temporal Attention Network for Next Location Recommendation
Overview
现有问题:
- 没有充分考虑非相邻位置和非相邻访问之间的相关性;
- 采用空间离散化分层网格对空间距离不敏感;
- 忽略了 personalized item frequency (PIF)。
对于第一个问题,论文给出了这样一个例子:下图中,0,1,2 分别代表家,工作单位,商场;3,4,5,6 代表餐厅。在这个例子中,用户实际上已经对非相邻的餐厅进行了两次非连续的访问。也就是所谓的非相邻位置和非相邻访问。
这篇论文利用,通过双层 Attention,首先聚合了相关的位置,对不同的访问赋予不同的权重,然后通过第二个 Attention 考虑 PIF 从候选位置中召回。
主要贡献:
- 结合时空相关性来学习非相邻位置和非相邻访问之间的规律;
- 用一种简单的线性插值技术代替 GPS 网格进行空间离散化,它可以恢复空间距离,反映用户的空间偏好,而不仅仅是聚合邻居;
- 建立双层注意力网络更好地考虑 PIF 信息。
Preliminaries
分别给定用户集合U={u1,u2,⋯,uU}, POI 集合L={l1,l2,⋯,lL},时间集合T={t1,t2,⋯,tT}。
每个用户的 check-in 轨迹可以表示为:
tra(ui)={r1,r2,⋯,rn}
其中rk=(ui,lk,tk)。
Trajectory Spatio-Temporal Relation Matrix
轨迹时空关系矩阵。轨迹时间关系矩阵为访问轨迹上的两个 POI 之间的访问时间间隔,轨迹空间关系矩阵为访问轨迹上的两个 POI 之间的球面距离:
Δi,jt=∣ti−tj∣∈Rn×n
Δi,js=Haversine(GPSi,GPSj)∈Rn×n
Δt,s=Δ11t,sΔ21t,s⋮Δn1t,sΔ12t,sΔ22t,s⋮Δn2t,s⋯⋯⋱⋯Δ1nt,sΔ2nt,s⋮Δnnt,s
论文中将两个矩阵写在一起了,其实是两个矩阵。
Candidate Spatio-Temporal Relation Matrix
候选时空关系矩阵。候选时间关系矩阵为,候选空间关系矩阵为所有候选位置i∈[1,L]与访问轨迹上的位置j∈[1,n]之间的球面距离:
Ni,jt=∣tm+1−tj∣∈RL×n
Nijs=Haversine(GPSi,GPSj)∈RL×n
Nt,s=N11t,sN21t,s⋮Nn1t,sN12t,sN22t,s⋮Nn2t,s⋯⋯⋱⋯N1nt,sN2nt,s⋮Nnnt,s
候选时间关系矩阵没有很懂,看代码里好像是用户访问轨迹上 POI 两两之间的访问时间间隔。这两个矩阵貌似和代码里的都有差别。
Spatio-Temporal Attention Network
Architecture
Multimodal Embedding Module
User Trajectory Embedding Layer
首先对 user,POI,time 进行 Embedding,其中 time 为 hour of week。之后再将三者相加:
er=eu+el+et∈Rd
Spatio-Temporal Embedding Layer
以每小时和每一百米作为基本单位,对时空关系矩阵进行嵌入,映射到一个欧氏空间。
{eijΔteijΔs=Δijt×eΔt=Δijs×eΔs
此外,论文也提出了一种插值嵌入的方法:
⎩⎨⎧eijΔteijΔs=Upper(Δt)−Lower(Δt)eΔtsup(Upper(Δt)−Δt)+eΔtinf(Δt−Lower(Δt))=Upper(Δs)−Lower(Δs)eΔssup(Upper(Δs)−Δs)+eΔsinf(Δs−Lower(Δs))
经过求和得到最终的嵌入:
{E(Δ)=Sum(E(Δt))+Sum(E(Δs))∈Rn×nE(N)=Sum(E(Nt))+Sum(E(Ns))∈RL×n
Self-Attention Aggregation Layer
首先是第一个 Attention,主要用用来考虑轨迹中有不同距离和时间间隔的两次 check-in 的关联程度,对轨迹内的访问分配不同的权重,具体来说:
S(u)=Attention(E(u)WQ,E(u)WK,E(u)WV,E(Δ),M)
其中,
Attention(Q,K,V,Δ,M)=(M∗softmax(dQKT+Δ))V
其中M为 mask 矩阵。
Attention Matching Layer
第二个 Attention 的作用是根据用户轨迹,在候选位置中召回最合适的 POI,并计算概率。
A(u)=Matching(E(l),E(u),E(N))
其中,
Matching(Q,K,N)=Sum(softmax(dQKT+N))
Balanced Sampler
因为正负样本不均衡,优化交叉熵损失不再有用。这篇论文将交叉熵损失中使用的负样本数量设置为超参数s,在训练的每一步随机采样负样本,称为平衡采样器。
−i∑mi∑logσ(ak)+(j1,j2,⋯,js)∈[1,L](j1,j2,⋯,js)=k)∑log(1−σ(aj))
Experiments
Datasets
Ablation Study
总结
总体来说还是比较经典的一个方法吧,在很多其他论文的 Baseline 里都能看到,算是基于 Attention 的方法里比较好的一个模型了。
参考资料