【论文阅读】Hierarchical multi-task graph recurrent network for next POI recommendation

Metadata

authors:: Nicholas Lim, Bryan Hooi, See-Kiong Ng, Yong Liang Goh, Renrong Weng, Rui Tan
container:: Proceedings of the 45th international ACM SIGIR conference on research and development in information retrieval
year:: 2021
DOI:: 10.1145/3477495.3531989
rating:: ⭐⭐⭐⭐
share:: false
comment:: 框架为 LSTM,在隐藏层加入全局时空信息,以多任务预测的形式同时预测 POI 以及 POI 所在区域,并通过区域对 POI 预测进行指导,建立层次结构预测 POI。


前言

SIGIR 2022:Hierarchical multi-task graph recurrent network for next POI recommendation

问题描述

分别给定用户集合U={u1,u2,,uM}U = \{ u_1, u_2, \cdots, u_M \}以及 POI 集合L={l1,l2,,lQ}L = \{ l_1, l_2, \cdots, l_Q \}

user trajectory)用户轨迹是由特定用户的一系列时间顺序的签到记录来定义的,即sum={(lt1,loct1,timet1),(lt2,loct2,timet2),,(lti,locti,timeti)}s_{u_m} = \{ (l_{t_1}, loc_{t_1}, time_{t_1}),(l_{t_2}, loc_{t_2}, time_{t_2}), \cdots, (l_{t_i}, loc_{t_i}, time_{t_i}) \},其中lti,locti,timetil_{t_i}, loc_{t_i}, time_{t_i}分别表示在tit_i个时间步访问的 POI,POI 坐标,以及访问时间戳。所有用户的访问轨迹为S={su1,su2,,suM}S=\{s_{u_1}, s_{u_2}, \cdots, s_{u_M}\}。每个用户的访问序列被划分为训练集sumtrains_{u_m}^{train}和测试集sumtests_{u_m}^{test}

next POI recommendation)给定训练集sumtrain={(lt1,loct1,timet1),(lt2,loct2,timet2),,(lti1,locti1,timeti1)}s_{u_m}^{train} = \{ (l_{t_1}, loc_{t_1}, time_{t_1}),(l_{t_2}, loc_{t_2}, time_{t_2}), \cdots, (l_{t_{i-1}}, loc_{t_{i-1}}, time_{t_{i-1}}) \},预测用户uu下一个访问地点ltil_{t_i}

OverView

在以前的工作中,用户-POI 矩阵的高度稀疏性,使得学习变得困难,预测的准确率受到影响。

用户通常只访问数据集中少量的 POI。

论文将公开的地理位置编码系统Geohash对 POI 位置进行编码,G@PG@P将其映射到各自的网格单元,可以发现,随着PP的减小,稀疏度(矩阵中 0 的占比)也随之减小,另外一方面,从一些区域预测(预测下一个 POI 所在的区域)任务上看,随着PP的减小,准确率不断提高。

G@P=2(1251km×625km)G@P=2 (1251km\times 625km) > G@P=3(156km×156km)G@P=3 (156km\times 156km) > G@P=4(39km×19.5km)G@P=4 (39km\times 19.5km) > G@P=5(4.9km×4.9km)G@P=5 (4.9km\times 4.9km) > G@P=6(1.2km×0.61km)G@P=6 (1.2km\times 0.61km)

因此,论文希望通过学习下一个 POI 区域的分布,并以此更好地进行下一个 POI 的推荐任务。提出 Hierarchical Multi-Task Graph Recurrent Network (HMT-GRN),以多任务的形式学习用户-POI 矩阵和用户-G@PG@P矩阵,并预测下一个 POI 以及G@PG@P区域,使用 Hierarchical Beam Search (HBS)进行分层搜索,减小搜索空间,更好地预测下一个 POI。

此外,论文通过 Graph Recurrent Network (GRN)学习序列之间的依赖关系以及全局的 POI-POI 时空关系。

主要贡献如下:

  1. 提出了 HMT-GRN 模型学习用户-POI 矩阵和用户-G@PG@P矩阵,缓解数据的稀疏性问题;
  2. 使用 HBS 作为搜索空间缩减方法,提出选择层以平衡个性化与推荐之间的关系,GRN 模型学习序列之间的依赖关系以及全局的 POI-POI 时空关系。

HMT-GRN

模型架构如下图所示:

HMT-RN

Learning next POI and region distributions

就像前面提到的,论文的主要目的在于学习稀疏矩阵,用户-POI 矩阵和用户-G@PG@P矩阵,以此更好地预测下一个 POI。因此论文在预测 POI 的基础上,同时进行 POI 所在区域G@PG@P的预测,因此共包括 6 个任务TK={G@2,G@3,G@4,G@5,G@6,POI}TK=\{G@2, G@3, G@4, G@5, G@6, POI\}

tit_i个时间步中,给定当前用户umu_m,上一个位置lti1l_{t_{i-1}}以及区域位置lti1G@Pl_{t_{i-1}}^{G@P},使用多模态 Embedding 层进行向量化表示:

um,lti1,lti1G@P=EW(um,lti1,lti1G@P)\vec{u}_m, \vec{l}_{t_{i-1}}, \vec{l}_{t_{i-1}}^{G@P} = E_\mathbf{W}(u_m, l_{t_{i-1}}, l_{t_{i-1}}^{G@P})

W{Wu,Wl,WG@2,WG@3,WG@4,WG@5,WG@6}\mathbf{W} \in \{ \mathbf{W}_u, \mathbf{W}_l, \mathbf{W}_{G@2}, \mathbf{W}_{G@3}, \mathbf{W}_{G@4}, \mathbf{W}_{G@5}, \mathbf{W}_{G@6} \}

其中WuRU×δ,WlRL×δ,WG@PRLG@P×δ\mathbf{W}_u\in\mathbb{R}^{\vert U\vert\times\delta},\mathbf{W}_l\in\mathbb{R}^{\vert L\vert\times\delta},\mathbf{W}_{G@P}\in\mathbb{R}^{\vert L^{G@P}\vert\times\delta}分别为用户,POI,G@PG@P的可学习矩阵,P{2,3,4,5,6}P\in\{2,3,4,5,6\}δ\delta为 embedding 维度。

接着使用 LSTM 学习 POI 序列之间的依赖关系,加入um\vec{u}_m作为个性化的推荐:

hti=LSTM(lti1)\vec{h}_{t_i} = LSTM(\vec{l}_{t_{i-1}})

tkPOI=softmax(DLWL1(DO(htium)))tk^{POI} = softmax(DL_{\mathbf{W}_{L1}}(DO(\vec{h}_{t_i}\oplus\vec{u}_m)))

其中htiRhdim\vec{h}_{t_i}\in\mathbb{R}^{hdim}为隐藏层表示,DODO表示 dropout,DLDL表示全连接层WL1Rhdim+δ×L\mathbf{W}_{L1}\in\mathbb{R}^{hdim+\delta\times\vert L\vert}\oplus为连接操作。通过 softmax 得到下一个 POI 的分布概率tkPOI=P(ltilti1)tk^{POI}=P(l_{t_i} \vert l_{t_{i-1}}),得到概率最高的 top-kk个 POI。

对于其他预测任务,即下一个区域ltiG@Pl_{t_i}^{G@P},进行类似的操作,主要区别是将um\vec{u}_m更换为lti1G@P)\vec{l}_{t_{i-1}}^{G@P}),预测下一个区域的分布概率tkG@P=P(ltiG@Plti1)tk^{G@P}=P(l_{t_i}^{G@P} \vert l_{t_{i-1}})

tkG@P=softmax(DLWL@P(DO(htilti1G@P))),P{2,3,4,5,6}tk^{G@P} = softmax(DL_{\mathbf{W}_{L@P}}(DO(\vec{h}_{t_i}\oplus\vec{l}_{t_{i-1}}^{G@P}))), P\in\{2,3,4,5,6\}

对于所有任务TKTK,共享隐藏层表示hti\vec{h}_{t_i}

Training

对于每个任务tk{G@2,G@3,G@4,G@5,G@6,POI}tk\in\{G@2, G@3, G@4, G@5, G@6, POI\},使用交叉熵损失函数:

Ltk=v=1Ntrainlog(pbv)\mathcal{L}_{tk} = -\sum_{v=1}^{N_{train}}\log(pb_{v})

其中pbvpb_v为预测概率,NtrainN_{train}为训练样本数量。

总体损失进行相同的权重分配:

L=1TKLtk\mathcal{L} = \frac{1}{\vert TK\vert}\sum \mathcal{L}_{tk}

接着,论文并不是利用之前训练的 LSTM 模型直接进行预测tkPOI=P(ltilti1)tk^{POI}=P(l_{t_i} \vert l_{t_{i-1}}),而是根据前面一系列任务学习到的分布{tk1G@2,tk2G@3,,tki1G@6,tkiPOI}\{tk_1^{G@2},tk_2^{G@3},\cdots,tk_{i-1}^{G@6},tk_i^{POI}\},计算联合概率分布P(G@2,G@3,,G@6,ltilti1)P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}}),对 POI 的搜索空间进行排序并进行预测。

Hierarchial Spatial Graph)空间层次图表示为Ghs=(Vhs,Ehs)G_{hs}=(V_{hs}, E_{hs}),其中Vhs,EhsV_{hs}, E_{hs}分别表示所有任务的顶点集合和边集合。GhsG_{hs}将多个任务表示为具有空间层次结构的图,并按粒度排序{tk1G@2,tk2G@3,,tki1G@6,tkiPOI}\{tk_1^{G@2},tk_2^{G@3},\cdots,tk_{i-1}^{G@6},tk_i^{POI}\},其中G@2G@2的每个顶点连接到G@3G@3的顶点,同样,G@3G@3的每个顶点连接到G@4G@4的顶点,以此类推,直到最后一个 POI 层。每个顶点vhsVhsv_{hs}\in V_{hs}根据概率计算权重,用于后续搜索。

通过将任务分布表示为一个空间层次图,可以执行穷举搜索或者广度优先搜索(BFS),通过搜索每一条路径来计算联合概率分布P(G@2,G@3,,G@6,ltilti1)P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}})

虽然预测的事件不是独立的,但我们使用多任务学习框架,通过独立建模分布来有效地缓解稀疏性问题。

为了效率,论文提出了一种分层光束搜索方法(HBS),即在遍历期间只扩展每个任务分布的 top-β\beta个有希望的顶点,其中β\beta为光束宽度。具体来说,对于每对任务(tki1,tki)(tk_{i-1}, tk_i)

tkiβ=f({log(tki1,bβ)+log(tki,j)tki,jN(tki1,bβ),b{1,2,,β}})tk_i^\beta = f \left( \left\{ \log(tk_{i-1,b}^\beta) + \log(tk_{i,j}) \vert tk_{i,j} \in \mathcal{N}(tk_{i-1,b}^\beta), b \in \{1,2,\cdots,\beta\} \right\} \right)

其中tki1β,tkiβtk_{i-1}^\beta, tk_i^\beta分别表示任务tki1,tkitk_{i-1},tk_i的 top-β\beta部分解,一个部分解是在其路径上遍历的所有顶点的对数概率的和。

对于前一个输入任务tki1,bβtk_{i-1,b}^\beta的每个光束b{1,2,,β}b\in\{1,2,\cdots,\beta\},根据下一个任务tkitk_i定义其邻居tki,jN(tki1,bβ)tk_{i,j}\in\mathcal{N}(tk_{i-1,b}^\beta),并计算每个分层连接的jj顶点的对数概率之和log(tki1,bβ)+log(tki,j)\log(tk_{i-1,b}^\beta) + \log(tk_{i,j})

在计算了当前迭代的所有部分解之后,使用函数f()f(\cdot)只考虑 top-β\beta部分解作为tkiβtk_i^\beta,它保留了其遍历顶点的对数概率之和,并将用于下一次迭代。

通过 HBS 方法,可以显著地减少搜索空间来降低噪声,并提高计算效率。

Selectivity Layer

为了在个性化和探索之间取得平衡,论文提出了一个新的选择性层,预测用户之前是否访问过下一个 POI。预测下一个 POI 是用户已访问过的(ltisumtrainl_{t_i}\in s_{u_m}^{train})还是未访问过的(ltisumtrainl_{t_i}\notin s_{u_m}^{train})POI。为了减少参数,论文使用任务tkPOItk^{POI}中预测的位置,即l^ti=argmaxlti(tkPOI)\hat{l}_{t_i}=\text{argmax}_{l_{t_i}}(tk^{POI}),具体来说:

yti={Ψ(P(ltilti1))l^tisumtrainΨ(P(G@2,G@3,,G@6,ltilti1))otherwisey_{t_i} = \begin{cases} \Psi( P(l_{t_i} \vert l_{t_{i-1}})) &\hat{l}_{t_i} \in s_{u_m}^{train} \\ \Psi( P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}})) &\text{otherwise} \end{cases}

其中ytiy_{t_i}为下一个访问 POI 的概率,Ψ()\Psi(\cdot)为降序排序操作。

总的来说也就是:① 如果预测的下一个 POI 用户之前访问过,那么根据P(ltilti1)P(l_{t_i} \vert l_{t_{i-1}})计算下一个 POI,不考虑区域预测;否则 ② 根据P(G@2,G@3,,G@6,ltilti1)P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}})计算下一个 POI。

能大概理解为什么要弄这么一个选择层,但是用户本身就很少访问未访问的 POI,是不是大部分走的都是 ①?而 ② 做了那么多工作是不是大部分其实就不进行?虽然看后面的实验部分确实是加了效果更好。

Graph Recurrent Network

接下来,论文提出了 GRN 模块来替换前面 HMT-RN 模型中的 LSTM,增加对全局 POI-POI 关系的学习。

在现有的工作中,递归模型(如 LSTM)被证明在学习每个用户 POI 序列的顺序依赖关系方面是有效的,然而,与图神经网络(例如,GAT)相比,它并没有直接学习全局 POI-POI 关系。另一方面 GAT 也无法学习到序列之间的依赖关系。

因此论文通过 GRN 来学习:① 序列之间的依赖关系;② 全局 POI-POI 关系。具体来说,论文对 Dimensional GAT (DGAT)[2]^{[2]}进行拓展。添加(a)循环结构并(b)通过利用区域和时隙来连接时空图中的 POI 来缓解数据的稀疏性。DGAT 定义如下:

αlti1,j=exp(LeakyReLU(a[Wplti1Wpj]))kN^G[lti1]exp(LeakyReLU(a[Wplti1Wpk)\vec{\alpha}_{l_{t_{i-1}},j} = \frac{\exp\left( LeakyReLU(\mathbf{a}[\mathbf{W}_p \vec{l}_{t_{i-1}} \oplus \mathbf{W}_p\vec{j}]) \right)}{\sum_{\vec{k} \in \hat{N}_G[l_{t_{i-1}}]} \exp\left( LeakyReLU(\mathbf{a}[\mathbf{W}_p \vec{l}_{t_{i-1}} \oplus \mathbf{W}_p\vec{k} \right)}

pti=jN^G[lti1]αlti1,jWpjp_{t_i} = \sum_{\vec{j} \in \hat{N}_G[l_{t_{i-1}}]} \vec{\alpha}_{l_{t_{i-1}},j} \odot \mathbf{W}_p\vec{j}

其中WpRδ×hdim\mathbf{W}_p\in\mathbb{R}^{\delta\times hdim}为输入预测;a\mathbf{a}为一个线性层,用来预测上一个 POI lti1l_{t_{i-1}}和它的邻居 POI jN^[lti1]\vec{j}\in\hat{N}[l_{t_{i-1}}]的注意力权重αlti1,jRhdim\vec{\alpha}_{l_{t_{i-1}},j}\in\mathbb{R}^{hdim}lti1,jRδ\vec{l}_{t_{i-1}}, \vec{j}\in\mathbb{R}^\delta为 POI Embedding。接着使用权重计算各个邻居的加权和,得到ptip_{t_i}

与[2]不同的是,论文采用 POI-Region 和 POI-Timeslot 关系矩阵,以减少数据稀疏性的影响:

Spatial Graph)POI-POI 无向无权图Gs=(Vs,Es)G_s=(V_s,E_s),如果每对 POI 在G@4G@4网格中有邻接关系,则认为两者相邻。

Temporal Graph)POI-POI 无向无权图Gt=(Vt,Et)G_t=(V_t,E_t)。首先将一天划分为 8 个时间段,每个时间段 3 个小时,共 56 个时间段(7 天),并将时间戳对应到时间段,每个顶点得到时间段vtslotv_t^{slot},如果每对 POI 的雅卡尔相似系数(Jaccard similarity)vtislotvtjslotvtislotvtjslot>0.9\frac{\vert v_{t_i}^{slot} \cap v_{t_j}^{slot} \vert}{\vert v_{t_i}^{slot} \cup v_{t_j}^{slot} \vert} > 0.9,则认为两者相邻。

论文通过使用 DGAT 对Gs,GtG_s,G_t进行聚合并获取 POI-POI 全局信息:

ptiGs=DGATs(lti1)ptiGt=DGATt(lti1)\begin{aligned} p_{t_i}^{G_s} &= DGAT_s(\vec{l_{t_{i-1}}}) \\ p_{t_i}^{G_t} &= DGAT_t(\vec{l_{t_{i-1}}}) \end{aligned}

此外,为了学习全局依赖关系,对 LSTM 中的公式进行进行如下计算修改:

iti=σ(Wixti+Uihti1+bi+ViptiGs+ZiptiGt)fti=σ(Wfxti+Ufhti1+bf+VfptiGs+ZfptiGt)oti=σ(Woxti+Uohti1+bo+VoptiGs+ZoptiGt)c~ti=tanh(Wcxti+Uchti1+bc+VcptiGs+ZcptiGt)\begin{aligned} i_{t_i} &= \sigma(\mathbf{W}_i x_{t_i} + \mathbf{U}_i h_{t_{i-1}} + \mathbf{b}_i + \mathbf{V}_i p_{t_i}^{G_s} + \mathbf{Z}_i p_{t_i}^{G_t}) \\ f_{t_i} &= \sigma(\mathbf{W}_f x_{t_i} + \mathbf{U}_f h_{t_{i-1}} + \mathbf{b}_f + \mathbf{V}_f p_{t_i}^{G_s} + \mathbf{Z}_f p_{t_i}^{G_t}) \\ o_{t_i} &= \sigma(\mathbf{W}_o x_{t_i} + \mathbf{U}_o h_{t_{i-1}} + \mathbf{b}_o + \mathbf{V}_o p_{t_i}^{G_s} + \mathbf{Z}_o p_{t_i}^{G_t}) \\ \tilde{c}_{t_i} &= \tanh(\mathbf{W}_c x_{t_i} + \mathbf{U}_c h_{t_{i-1}} + \mathbf{b}_c + \mathbf{V}_c p_{t_i}^{G_s} + \mathbf{Z}_c p_{t_i}^{G_t}) \end{aligned}

其中ViVf,Vo,VcRδ×hdim\mathbf{V}_i,\mathbf{V}_f,\mathbf{V}_o,\mathbf{V}_c \in\mathbb{R}^{\delta\times hdim}Zi,Zf,Zo,ZcRδ×hdim\mathbf{Z}_i,\mathbf{Z}_f,\mathbf{Z}_o,\mathbf{Z}_c\in\mathbb{R}^{\delta\times hdim}为可学习权重。

原始 LSTM 公式如下:

iti=σ(Wixti+Uihti1+bi)fti=σ(Wfxti+Ufhti1+bf)oti=σ(Woxti+Uohti1+bo)c~ti=tanh(Wcxti+Uchti1+bc)cti=fticti1+itic~tihti=otitanh(cti)\begin{aligned} i_{t_i} &= \sigma(\mathbf{W}_i x_{t_i} + \mathbf{U}_i h_{t_{i-1}} + \mathbf{b}_i) \\ f_{t_i} &= \sigma(\mathbf{W}_f x_{t_i} + \mathbf{U}_f h_{t_{i-1}} + \mathbf{b}_f) \\ o_{t_i} &= \sigma(\mathbf{W}_o x_{t_i} + \mathbf{U}_o h_{t_{i-1}} + \mathbf{b}_o) \\ \tilde{c}_{t_i} &= \tanh(\mathbf{W}_c x_{t_i} + \mathbf{U}_c h_{t_{i-1}} + \mathbf{b}_c) \\ c_{t_i} &= f_{t_i} \odot c_{t_{i-1}} + i_{t_i} \odot \tilde{c}_{t_i} \\ \vec{h}_{t_i} &= o_{t_i} \odot \tanh(c_{t_i}) \end{aligned}

实验

Datasets

Results

Ablation Study

Importance of proposed tasks

Search space reduction

Selectivity layer

Case Study

最后论文举了一个例子来说明模型的优点,其中图中 ✅ 位置和 ❌ 位置分别为使用 HMT-GRN 模型以及直接使用稀疏 POI 矩阵得到的 POI 预测,虽然类型正确但是区域错误。

总结

总结一下,论文主要是通过多任务的形式,学习用户-POI 矩阵和用户-G@PG@P矩阵,预测下一个 POI 以及 POI 所在区域,并根据预测区域对 POI 进行指导;另一方面,具体模型中,还是通过在 LSTM 中隐藏层更新过程中加入全局时间以及空间信息。

参考资料