【论文阅读】Spatio-Temporal Hypergraph Learning for Next POI Recommendation

Metadata

authors:: Xiaodong Yan, Tengwei Song, Yifeng Jiao, Jianshan He, Jiaotuan Wang, Ruopeng Li, Wei Chu
container:: Proceedings of the 46th international ACM SIGIR conference on research and development in information retrieval
year:: 2023
DOI:: 10.1145/3539618.3591770
rating:: ⭐⭐⭐⭐
share:: true
comment:: 超图聚合,关注用户间和用户内的 POI 重叠访问信息


前言

今年 SIGIR 最新的论文:Spatio-Temporal Hypergraph Learning for Next POI Recommendation

问题描述

给定用户集合U={u1,u2,,uU}U=\{u_1, u_2, \cdots,u_{\vert U\vert}\},POI 集合P={p1,p2,,pP}P=\{p_1, p_2, \cdots, p_{\vert P\vert} \}以及类别集合C={c1,c2,,cC}C=\{c_1,c_2,\cdots, c_{\vert C\vert} \}

check-in)check-in 记录表示为Q={q1,q2,,qQ}Q=\{ q_1, q_2, \cdots, q_{\vert Q\vert} \},其中q=u,p,c,g,tq=\langle u,p,c,g,t \rangle,即用户uutt时刻访问地点pp,POI 的类别为cc,位置为g=latitude,longitudeg=\langle latitude,longitude \rangle

trajectoriesS={s1,s2,,sS}S=\{ s_1, s_2, \cdots, s_{\vert S\vert} \}表示轨迹集合,根据某个时间间隔进行划分,本文为 24 小时。

intra-user correlated)若同一个用户的两条轨迹访问过同一个 POI,则称这两条轨迹是用户内部相关的,记为smsns_m \sim s_n

inter-user collaborated)若不同用户的两条轨迹访问过同一个 POI 并且Jaccard(sm,sn)ηJaccard(s_m, s_n) \ge \eta,则称这两条轨迹是用户间相关的,记为smsns_m \approx s_n

Jaccard(s,s)=ssssJaccard(s,s') = \frac{\vert s \cap s' \vert}{\vert s \cup s' \vert}

即,重叠的访问数量 / 访问总量

Hypergraph)超图可以表示为G=(V,E)\mathcal{G}=(\mathcal{V},\mathcal{E}),其中V\mathcal{V}E\mathcal{E}分别表示点集和超边集。每条超边eEe \in \mathcal{E}都包含两个或以上的顶点vVv\in\mathcal{V}

对于当前用户uu,我们的任务是预测用户的下一个访问地点,即next POI(Point-of-Interest) recommendation

Hypergraph Construction

关于论文中超图的一些说明。

超图的定义

论文使用H(1)RQ×S\mathcal{H}^{(1)} \in \mathbb{R}^{\vert Q\vert\times\vert S\vert}H(2)RS×S\mathcal{H}^{(2)} \in \mathbb{R}^{\vert S\vert\times\vert S\vert}分别表示VE\mathcal{V} \rightarrow \mathcal{E}关系矩阵和EE\mathcal{E} \rightarrow \mathcal{E}超边邻接矩阵。

由于关系EE\mathcal{E} \rightarrow \mathcal{E}是异构的,因此使用rmn\mathbf{r}_{mn}表示 intra-user 和 inter-user 关系。

H(1)\mathcal{H}^{(1)}很好理解,就是点和边的关系矩阵,每一个签到节点唯一对应一个轨迹节点

H(2)\mathcal{H}^{(2)}为满足smsns_m \sim s_nsmsns_m \approx s_n的边,即用户内和用户间被重复访问的 POI。

时空信息

论文使用ΔtVE\Delta t_{\mathcal{V} \rightarrow \mathcal{E}}ΔsVE\Delta s_{\mathcal{V} \rightarrow \mathcal{E}}分别表示签到和轨迹之间的时间间隔以及空间距离,使用ΔtEE\Delta t_{\mathcal{E} \rightarrow \mathcal{E}}ΔsEE\Delta s_{\mathcal{E} \rightarrow \mathcal{E}}分别表示轨迹之间的时间间隔以及空间距离。

对于轨迹节点的时间戳和位置信息,使用其对应的签到节点的均值来表示。

ΔtVE={qsmtqktHkm(1)=1}ΔtEE={smtsntHmn(2)=1}ΔsVE={d(qsmlqkl)Hkm(1)=1}ΔsEE={d(smlsnlHmn(2)=1}\begin{aligned} \Delta t_{\mathcal{V} \rightarrow \mathcal{E}} &= \{ q_{\vert s_m \vert}^t - q_k^t \vert \mathcal{H}_{km}^{(1)} = 1 \} \\ \Delta t_{\mathcal{E} \rightarrow \mathcal{E}} &= \{ s_m^t - s_n^t \vert \mathcal{H}_{mn}^{(2)} = 1 \} \\ \Delta s_{\mathcal{V} \rightarrow \mathcal{E}} &= \{ d(q_{\vert s_m \vert}^l - q_k^l) \vert \mathcal{H}_{km}^{(1)} = 1 \} \\ \Delta s_{\mathcal{E} \rightarrow \mathcal{E}} &= \{ d(s_m^l - s_n^l \vert \mathcal{H}_{mn}^{(2)} = 1 \} \\ \end{aligned}

其中qk=u,p,c,g,tq_k=\langle u,p,c,g,t \rangleqkt=t,qkl=gq_k^t = t, q_k^l = gd(,)d(\cdot, \cdot)表示 Haversine 距离。

Overview

现有方法大多只关注 POI 之间的关系,而忽略了包括用户轨迹在内的高阶信息以及轨迹之间的协作关系。

为了有效捕捉从细粒度签到到粗粒度轨迹的用户运动模式之间的高阶关系,论文通过引入超图,提出了时空超图卷积网络(STHGCN)。STHGCN 对轨迹内签到之间的高阶关系以及轨迹之间的相关性进行建模,同时考虑到时空背景。

论文主要贡献:

  1. 提出了一种时空超图卷积网络,它整合了复杂的高阶信息和轨迹之间的全局协作关系。
  2. 利用基于相似性的范式来识别轨迹之间的相关性。此外,还引入了超图转换器,将用户间和用户内的协作信息以及时空背景信息同时结合起来。

STHGCN

Neighbor Sampler

首先,邻居采样器会获取中心轨迹的子超图,其中包含中心轨迹的协作轨迹以及属于每个轨迹的签到节点。

最下面的轨迹节点为什么只包含了 2 个签到节点?不应该是 3 个吗?H(1)\mathcal{H}^{(1)} 应该没什么约束才对,不知道是不是画错了。

由于每跳邻居都涉及到轨迹和 check-ins,因此论文采用了两阶段的邻居采样流程,分别获取轨迹和 check-ins 邻居。

个人理解,论文应该是将超边都抽象成了轨迹节点。

论文将 trajectory 和 check-in 都看作是独立的节点,根据前面的定义,每一个轨迹节点以 24 小时为单位进行分割。

由于签到节点都是包含时间信息的,因此每个签到节点都是唯一的,整体类似树结构。轨迹节点主要的作用应该就是聚合每个签到节点的信息。
但这样是不是就忽略了每个轨迹节点内的顺序关系?

简单来说就是,先选择当前轨迹节点的多跳邻居,同时考虑约束条件Jaccard(sm,sn)ηJaccard(s_m, s_n) \ge \eta,接着选择每个轨迹节点的1 跳签到节点。

Spatio-Temporal Encoder

其次,使用时空编码器对时间差和空间距离进行编码,并在超图卷积阶段合并这些信息。

对于时间信息,论文利用相对时间编码器^[1],将连续的时间映射到dtd_t维向量空间:

Φ(Δt)i=cos(Δt/10idt)t=WtΦ(Δt)\begin{aligned} \Phi(\Delta t)_i &= \cos(\Delta t/10^{\frac{i}{d_t}}) \\ \mathbf{t} &= \mathbf{W}_t \Phi(\Delta t) \end{aligned}

其中t\mathbf{t} 表示时间向量,WtRdt×dt\mathbf{W}_t\in\mathbb{R}^{d_t\times d_t}为可训练参数。

对于空间信息,利用单元嵌入层和插值嵌入层^[2],分别对应论文的 simple linear 和 linear interpolation。

simple linear 只利用一个单位向量ws\mathbf{w}_s

s=Δs×ws\mathbf{s} = \Delta s \times \mathbf{w}_s

linear interpolation 初始化可学习的上界sus_u和下界sls_l,计算公式如下:

s=su(ΔsuΔs)+sl(ΔsΔsl)ΔsuΔsl\mathbf{s} = \frac{\mathbf{s}_u(\Delta s^u - \Delta s) + \mathbf{s}_l(\Delta s - \Delta s^l)}{\Delta s^u - \Delta s^l}

其中Δsu\Delta s^uΔsl\Delta s^\mathcal{l}分别表示空间距离的上界和下界。

Hypergraph Transformer

最后,论文提出了一种基于消息传递神经网络(MPNN)的 hypergraph transformer,它能够在忽略时空背景信息的情况下,学习不同邻居的注意力权重。

消息传递函数可以表示为:

hi(l+1)=PropagatejN(i){Message(hj(l)),rij,tij,sij}\mathbf{h}_i^{(l+1)} = \underset{\forall j \in \mathcal{N}(i)}{\mathbf{Propagate}} \{ \mathbf{Message}(\mathbf{h}_j^{(l)}), \mathbf{r}_{ij}, \mathbf{t}_{ij}, \mathbf{s}_{ij} \}

其中iijj分别为目标节点和源节点的索引,N(i)\mathcal{N}(i)为节点ii的邻居集合,hi(l+1)\mathbf{h}_i^{(l+1)}为目标节点第(l+1)(l+1)层的隐藏层。

论文利用四种 “translation” 的组合算子来组合节点隐藏表示和边类型向量:

Addition(Add):ϕ(hj,rij)=hj+rijSubtraction(Sub):ϕ(hj,rij)=hjrijMultiplication(Mult):ϕ(hj,rij)=hjrijCircular-correlation(Corr):ϕ(hj,rij)=hjrij\begin{aligned} &\mathbf{Addition (Add)}: \phi(\mathbf{h}_j, \mathbf{r}_{ij}) = \mathbf{h}_j + \mathbf{r}_{ij} \\ &\mathbf{Subtraction (Sub)}: \phi(\mathbf{h}_j, \mathbf{r}_{ij}) = \mathbf{h}_j - \mathbf{r}_{ij} \\ &\mathbf{Multiplication (Mult)}: \phi(\mathbf{h}_j, \mathbf{r}_{ij}) = \mathbf{h}_j * \mathbf{r}_{ij} \\ &\mathbf{Circular\text{-}correlation (Corr)}: \phi(\mathbf{h}_j, \mathbf{r}_{ij}) = \mathbf{h}_j \star \mathbf{r}_{ij} \end{aligned}

然后将时间向量和距离向量相加,得到消息向量mijRdh\mathbf{m}_{ij}\in\mathbb{R}^{d_h}

mij(l)=ϕ(hj(l),rij)+tij+sij\mathbf{m}_{ij}^{(l)} = \phi(\mathbf{h}_j^{(l)}, \mathbf{r}_{ij}) + \mathbf{t}_{ij} + \mathbf{s}_{ij}

接着进行 Attention,以hi(l+1)\mathbf{h}_i^{(l+1)}作为QQmij(l)\mathbf{m}_{ij}^{(l)}作为K,VK, V

Q(k,l)=WQ(k,l)hi(k,l),K(k,l)=WK(k,l)mij(k,l),V(k,l)=WV(k,l)mij(k,l)hi(l+1)=k=1hSoftmax(Q(k,l)(K(k,l))Tdh)V(k,l)\begin{aligned} \mathbf{Q}^{(k,l)} &= \mathbf{W}_Q^{(k,l)}\mathbf{h}_i^{(k,l)}, \mathbf{K}^{(k,l)} = \mathbf{W}_K^{(k,l)}\mathbf{m}_{ij}^{(k,l)}, \mathbf{V}^{(k,l)} = \mathbf{W}_V^{(k,l)}\mathbf{m}_{ij}^{(k,l)} \\ \mathbf{h}_i^{(l+1)} &= \Vert_{k=1}^h \mathbf{Softmax} \left ( \frac{\mathbf{Q}^{(k,l)}(\mathbf{K}^{(k,l)})^T}{\sqrt{d_h}} \right) \mathbf{V}^{(k,l)} \end{aligned}

其中\Vert表示连接操作,kk表示 Attention 头号。

Hyperedge Learning and Prediction

超边缘(轨迹)表征学习由三部分组成:原始签到特征、
通过聚合来自邻近签到的轨迹特征,通过协作轨迹的信息传递更新轨迹隐藏特征。

原始签到特征:除了时间戳信息之外,论文引入 hour 信息以及 day-of-week 信息进行拼接:

x=i{u,p,c,th,td}fembed(i)\mathbf{x} = \Vert_{\forall i\in \{ u,p,c,t_h,t_d\}} f_{embed}(i)

由于轨迹节点一开始并没有原始的特征,因此θk=1hθ(k)\theta \triangleq \Vert_{k=1}^h \theta^{(k)}表示所有的轨迹在聚合邻居消息之前都共享相同的初始嵌入:

mij(0)=ϕ(xj,rij)+tij+sijQ(k,0)=θ(k),K(k,0)=WK(k,0)mij(0),V(k,0)=WV(k,0)mij(0)hi(1)=k=1hSoftmax(Q(k,0)(K(k,0))Tdh)V(k,0)\begin{aligned} \mathbf{m}_{ij}^{(0)} &= \phi(\mathbf{x}_j, \mathbf{r}_{ij}) + \mathbf{t}_{ij} + \mathbf{s}_{ij} \\ \mathbf{Q}^{(k,0)} &= \theta^{(k)}, \mathbf{K}^{(k,0)} = \mathbf{W}_K^{(k,0)}\mathbf{m}_{ij}^{(0)}, \mathbf{V}^{(k,0)} = \mathbf{W}_V^{(k,0)}\mathbf{m}_{ij}^{(0)} \\ \mathbf{h}_i^{(1)} &= \Vert_{k=1}^h \mathbf{Softmax} \left( \frac{\mathbf{Q}^{(k,0)}(\mathbf{K}^{(k,0)})^T}{\sqrt{d_h}} \right) \mathbf{V}^{(k,0)} \end{aligned}

论文使用残差连接和层归一化技能来避免初始信息的丢失,然后使用多层感知器(MLP)嵌入到dhd_h特征空间:

hi(1)=LN(θ+hi(1))hi(1)=Norm(σ(hi(1)W0(0)+b0(0))W1(0)+b1(0))\begin{aligned} \mathbf{h}_i^{(1)} &= \mathbf{LN}(\theta + \mathbf{h}_i^{(1)}) \\ \mathbf{h}_i^{(1)} &= \mathbf{Norm} (\sigma(\mathbf{h}_i^{(1)} \mathbf{W}_0^{(0)} + \mathbf{b}_0^{(0)})\mathbf{W}_1^{(0)} + \mathbf{b}_1^{(0)} ) \end{aligned}

其中LN\mathbf{LN}Norm{Norm}分别表示 layer normalization 和 L2 normalization,σ\sigma为 ReLU 激活函数

除了在第一层使用 “Add & LayerNorm” 用来平衡信息之外,其他层使用 “linear + gated residual”:

gi(l+1)=Hypergraph Transformer(hi(l),hj(l),rij,sij)hi(l+1)=β(hi(l)W2(l)+b2(l))+(1β)gi(l+1)hi(l+1)=Norm(σ(hi(l+1)W0(l)+b0(l))W1(l)+b1(l))\begin{aligned} \mathbf{g}_i^{(l+1)} &= \mathbf{Hypergraph\text{ }Transformer}(\mathbf{h}_i^{(l)}, \mathbf{h}_j^{(l)}, \mathbf{r}_{ij}, \mathbf{s}_{ij}) \\ \mathbf{h}_i^{(l+1)} &= \beta(\mathbf{h}_i^{(l)}\mathbf{W}_2^{(l)} + \mathbf{b}_2^{(l)}) + (1-\beta)\mathbf{g}_i^{(l+1)} \\ \mathbf{h}_i^{(l+1)} &= \mathbf{Norm}(\sigma(\mathbf{h}_i^{(l+1)}\mathbf{W}_0^{(l)} + \mathbf{b}_0^{(l)})\mathbf{W}_1^{(l)} + \mathbf{b}_1^{(l)}) \end{aligned}

其中β\beta为超参数,表示残差权重。

最后将隐藏层表示映射到 POI ID 空间得到预测结果:

y^i=Softmax(hi(L)Wo+bo)\hat{\mathbf{y}}_i = \mathbf{Softmax}(\mathbf{h}_i^{(L)}\mathbf{W}_o + \mathbf{b}_o)

交叉熵损失函数计算损失:

L=1Ni=1Np=1Pyilogy^i\mathcal{L} = -\frac{1}{N}\sum_{i=1}^N \sum_{p=1}^{\vert P\vert} \mathbf{y}_i \log \hat{\mathbf{y}}_i

实验

Results

Global Collaborative Effect

Spatio-temporal Encoder Variants

User cold-start Analysis

Behavior Diversity Analysis

Hyperparameter Sensitivity Study

Ablation Study

总结

论文将主要的关注点放在用户间和用户内的 POI 重叠访问信息,并使用超图进行表示、聚合。此外,在超图构建时,将轨迹节点和签到节点独立表示,轨迹节点用来抽象其内部签到节点总体信息,但这样是不是也损失了轨迹内的顺序信息,个人感觉说不好吧。

参考资料