【论文阅读】Hierarchical multi-task graph recurrent network for next POI recommendation
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 = { u 1 , u 2 , ⋯ , u M } U = \{ u_1, u_2, \cdots, u_M \} U = { u 1 , u 2 , ⋯ , u M } 以及 POI 集合L = { l 1 , l 2 , ⋯ , l Q } L = \{ l_1, l_2, \cdots, l_Q \} L = { l 1 , l 2 , ⋯ , l Q } 。
(user trajectory )用户轨迹是由特定用户的一系列时间顺序的签到记录来定义的,即s u m = { ( l t 1 , l o c t 1 , t i m e t 1 ) , ( l t 2 , l o c t 2 , t i m e t 2 ) , ⋯ , ( l t i , l o c t i , t i m e t i ) } 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}) \} s u m = {( l t 1 , l o c t 1 , t im e t 1 ) , ( l t 2 , l o c t 2 , t im e t 2 ) , ⋯ , ( l t i , l o c t i , t im e t i )} ,其中l t i , l o c t i , t i m e t i l_{t_i}, loc_{t_i}, time_{t_i} l t i , l o c t i , t im e t i 分别表示在t i t_i t i 个时间步访问的 POI,POI 坐标,以及访问时间戳。所有用户的访问轨迹为S = { s u 1 , s u 2 , ⋯ , s u M } S=\{s_{u_1}, s_{u_2}, \cdots, s_{u_M}\} S = { s u 1 , s u 2 , ⋯ , s u M } 。每个用户的访问序列被划分为训练集s u m t r a i n s_{u_m}^{train} s u m t r ain 和测试集s u m t e s t s_{u_m}^{test} s u m t es t 。
(next POI recommendation )给定训练集s u m t r a i n = { ( l t 1 , l o c t 1 , t i m e t 1 ) , ( l t 2 , l o c t 2 , t i m e t 2 ) , ⋯ , ( l t i − 1 , l o c t i − 1 , t i m e t i − 1 ) } 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}}) \} s u m t r ain = {( l t 1 , l o c t 1 , t im e t 1 ) , ( l t 2 , l o c t 2 , t im e t 2 ) , ⋯ , ( l t i − 1 , l o c t i − 1 , t im e t i − 1 )} ,预测用户u u u 下一个访问地点l t i l_{t_i} l t i 。
OverView
在以前的工作中,用户-POI 矩阵的高度稀疏性,使得学习变得困难,预测的准确率受到影响。
用户通常只访问数据集中少量的 POI。
论文将公开的地理位置编码系统Geohash 对 POI 位置进行编码,G @ P G@P G @ P 将其映射到各自的网格单元,可以发现,随着P P P 的减小,稀疏度(矩阵中 0 的占比)也随之减小,另外一方面,从一些区域预测(预测下一个 POI 所在的区域)任务上看,随着P P P 的减小,准确率不断提高。
G @ P = 2 ( 1251 k m × 625 k m ) G@P=2 (1251km\times 625km) G @ P = 2 ( 1251 km × 625 km ) > G @ P = 3 ( 156 k m × 156 k m ) G@P=3 (156km\times 156km) G @ P = 3 ( 156 km × 156 km ) > G @ P = 4 ( 39 k m × 19.5 k m ) G@P=4 (39km\times 19.5km) G @ P = 4 ( 39 km × 19.5 km ) > G @ P = 5 ( 4.9 k m × 4.9 k m ) G@P=5 (4.9km\times 4.9km) G @ P = 5 ( 4.9 km × 4.9 km ) > G @ P = 6 ( 1.2 k m × 0.61 k m ) G@P=6 (1.2km\times 0.61km) G @ P = 6 ( 1.2 km × 0.61 km )
因此,论文希望通过学习下一个 POI 区域的分布,并以此更好地进行下一个 POI 的推荐任务。提出 Hierarchical Multi-Task Graph Recurrent Network (HMT-GRN),以多任务的形式学习用户-POI 矩阵和用户-G @ P G@P G @ P 矩阵,并预测下一个 POI 以及G @ P G@P G @ P 区域,使用 Hierarchical Beam Search (HBS)进行分层搜索,减小搜索空间,更好地预测下一个 POI。
此外,论文通过 Graph Recurrent Network (GRN)学习序列之间的依赖关系以及全局的 POI-POI 时空关系。
主要贡献如下:
提出了 HMT-GRN 模型学习用户-POI 矩阵和用户-G @ P G@P G @ P 矩阵,缓解数据的稀疏性问题;
使用 HBS 作为搜索空间缩减方法,提出选择层以平衡个性化与推荐之间的关系,GRN 模型学习序列之间的依赖关系以及全局的 POI-POI 时空关系。
HMT-GRN
模型架构如下图所示:
HMT-RN
Learning next POI and region distributions
就像前面提到的,论文的主要目的在于学习稀疏矩阵,用户-POI 矩阵和用户-G @ P G@P G @ P 矩阵,以此更好地预测下一个 POI。因此论文在预测 POI 的基础上,同时进行 POI 所在区域G @ P G@P G @ P 的预测,因此共包括 6 个任务T K = { G @ 2 , G @ 3 , G @ 4 , G @ 5 , G @ 6 , P O I } TK=\{G@2, G@3, G@4, G@5, G@6, POI\} T K = { G @2 , G @3 , G @4 , G @5 , G @6 , PO I } 。
在t i t_i t i 个时间步中,给定当前用户u m u_m u m ,上一个位置l t i − 1 l_{t_{i-1}} l t i − 1 以及区域位置l t i − 1 G @ P l_{t_{i-1}}^{G@P} l t i − 1 G @ P ,使用多模态 Embedding 层进行向量化表示:
u ⃗ m , l ⃗ t i − 1 , l ⃗ t i − 1 G @ P = E W ( u m , l t i − 1 , l t i − 1 G @ 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})
u m , l t i − 1 , l t i − 1 G @ P = E W ( u m , l t i − 1 , l t i − 1 G @ P )
W ∈ { W u , W l , W G @ 2 , W G @ 3 , W G @ 4 , W G @ 5 , W G @ 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} \}
W ∈ { W u , W l , W G @2 , W G @3 , W G @4 , W G @5 , W G @6 }
其中W u ∈ R ∣ U ∣ × δ , W l ∈ R ∣ L ∣ × δ , W G @ P ∈ R ∣ L G @ 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} W u ∈ R ∣ U ∣ × δ , W l ∈ R ∣ L ∣ × δ , W G @ P ∈ R ∣ L G @ P ∣ × δ 分别为用户,POI,G @ P G@P G @ P 的可学习矩阵,P ∈ { 2 , 3 , 4 , 5 , 6 } P\in\{2,3,4,5,6\} P ∈ { 2 , 3 , 4 , 5 , 6 } ,δ \delta δ 为 embedding 维度。
接着使用 LSTM 学习 POI 序列之间的依赖关系,加入u ⃗ m \vec{u}_m u m 作为个性化的推荐:
h ⃗ t i = L S T M ( l ⃗ t i − 1 ) \vec{h}_{t_i} = LSTM(\vec{l}_{t_{i-1}})
h t i = L STM ( l t i − 1 )
t k P O I = s o f t m a x ( D L W L 1 ( D O ( h ⃗ t i ⊕ u ⃗ m ) ) ) tk^{POI} = softmax(DL_{\mathbf{W}_{L1}}(DO(\vec{h}_{t_i}\oplus\vec{u}_m)))
t k PO I = so f t ma x ( D L W L 1 ( D O ( h t i ⊕ u m )))
其中h ⃗ t i ∈ R h d i m \vec{h}_{t_i}\in\mathbb{R}^{hdim} h t i ∈ R h d im 为隐藏层表示,D O DO D O 表示 dropout,D L DL D L 表示全连接层W L 1 ∈ R h d i m + δ × ∣ L ∣ \mathbf{W}_{L1}\in\mathbb{R}^{hdim+\delta\times\vert L\vert} W L 1 ∈ R h d im + δ × ∣ L ∣ ,⊕ \oplus ⊕ 为连接操作。通过 softmax 得到下一个 POI 的分布概率t k P O I = P ( l t i ∣ l t i − 1 ) tk^{POI}=P(l_{t_i} \vert l_{t_{i-1}}) t k PO I = P ( l t i ∣ l t i − 1 ) ,得到概率最高的 top-k k k 个 POI。
对于其他预测任务,即下一个区域l t i G @ P l_{t_i}^{G@P} l t i G @ P ,进行类似的操作,主要区别是将u ⃗ m \vec{u}_m u m 更换为l ⃗ t i − 1 G @ P ) \vec{l}_{t_{i-1}}^{G@P}) l t i − 1 G @ P ) ,预测下一个区域的分布概率t k G @ P = P ( l t i G @ P ∣ l t i − 1 ) tk^{G@P}=P(l_{t_i}^{G@P} \vert l_{t_{i-1}}) t k G @ P = P ( l t i G @ P ∣ l t i − 1 ) :
t k G @ P = s o f t m a x ( D L W L @ P ( D O ( h ⃗ t i ⊕ l ⃗ t i − 1 G @ 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\}
t k G @ P = so f t ma x ( D L W L @ P ( D O ( h t i ⊕ l t i − 1 G @ P ))) , P ∈ { 2 , 3 , 4 , 5 , 6 }
对于所有任务T K TK T K ,共享隐藏层表示h ⃗ t i \vec{h}_{t_i} h t i 。
Training
对于每个任务t k ∈ { G @ 2 , G @ 3 , G @ 4 , G @ 5 , G @ 6 , P O I } tk\in\{G@2, G@3, G@4, G@5, G@6, POI\} t k ∈ { G @2 , G @3 , G @4 , G @5 , G @6 , PO I } ,使用交叉熵损失函数:
L t k = − ∑ v = 1 N t r a i n log ( p b v ) \mathcal{L}_{tk} = -\sum_{v=1}^{N_{train}}\log(pb_{v})
L t k = − v = 1 ∑ N t r ain log ( p b v )
其中p b v pb_v p b v 为预测概率,N t r a i n N_{train} N t r ain 为训练样本数量。
总体损失进行相同的权重分配:
L = 1 ∣ T K ∣ ∑ L t k \mathcal{L} = \frac{1}{\vert TK\vert}\sum \mathcal{L}_{tk}
L = ∣ T K ∣ 1 ∑ L t k
Hierarchical Beam Search
接着,论文并不是利用之前训练的 LSTM 模型直接进行预测t k P O I = P ( l t i ∣ l t i − 1 ) tk^{POI}=P(l_{t_i} \vert l_{t_{i-1}}) t k PO I = P ( l t i ∣ l t i − 1 ) ,而是根据前面一系列任务学习到的分布{ t k 1 G @ 2 , t k 2 G @ 3 , ⋯ , t k i − 1 G @ 6 , t k i P O I } \{tk_1^{G@2},tk_2^{G@3},\cdots,tk_{i-1}^{G@6},tk_i^{POI}\} { t k 1 G @2 , t k 2 G @3 , ⋯ , t k i − 1 G @6 , t k i PO I } ,计算联合概率分布P ( G @ 2 , G @ 3 , ⋯ , G @ 6 , l t i ∣ l t i − 1 ) P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}}) P ( G @2 , G @3 , ⋯ , G @6 , l t i ∣ l t i − 1 ) ,对 POI 的搜索空间进行排序并进行预测。
(Hierarchial Spatial Graph )空间层次图表示为G h s = ( V h s , E h s ) G_{hs}=(V_{hs}, E_{hs}) G h s = ( V h s , E h s ) ,其中V h s , E h s V_{hs}, E_{hs} V h s , E h s 分别表示所有任务的顶点集合和边集合。G h s G_{hs} G h s 将多个任务表示为具有空间层次结构的图,并按粒度排序{ t k 1 G @ 2 , t k 2 G @ 3 , ⋯ , t k i − 1 G @ 6 , t k i P O I } \{tk_1^{G@2},tk_2^{G@3},\cdots,tk_{i-1}^{G@6},tk_i^{POI}\} { t k 1 G @2 , t k 2 G @3 , ⋯ , t k i − 1 G @6 , t k i PO I } ,其中G @ 2 G@2 G @2 的每个顶点连接到G @ 3 G@3 G @3 的顶点,同样,G @ 3 G@3 G @3 的每个顶点连接到G @ 4 G@4 G @4 的顶点,以此类推,直到最后一个 POI 层。每个顶点v h s ∈ V h s v_{hs}\in V_{hs} v h s ∈ V h s 根据概率计算权重,用于后续搜索。
通过将任务分布表示为一个空间层次图,可以执行穷举搜索或者广度优先搜索(BFS),通过搜索每一条路径来计算联合概率分布P ( G @ 2 , G @ 3 , ⋯ , G @ 6 , l t i ∣ l t i − 1 ) P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}}) P ( G @2 , G @3 , ⋯ , G @6 , l t i ∣ l t i − 1 ) 。
虽然预测的事件不是独立的,但我们使用多任务学习框架,通过独立建模分布来有效地缓解稀疏性问题。
为了效率,论文提出了一种分层光束搜索方法(HBS),即在遍历期间只扩展每个任务分布的 top-β \beta β 个有希望的顶点,其中β \beta β 为光束宽度。具体来说,对于每对任务( t k i − 1 , t k i ) (tk_{i-1}, tk_i) ( t k i − 1 , t k i ) :
t k i β = f ( { log ( t k i − 1 , b β ) + log ( t k i , j ) ∣ t k i , j ∈ N ( t k i − 1 , 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)
t k i β = f ( { log ( t k i − 1 , b β ) + log ( t k i , j ) ∣ t k i , j ∈ N ( t k i − 1 , b β ) , b ∈ { 1 , 2 , ⋯ , β } } )
其中t k i − 1 β , t k i β tk_{i-1}^\beta, tk_i^\beta t k i − 1 β , t k i β 分别表示任务t k i − 1 , t k i tk_{i-1},tk_i t k i − 1 , t k i 的 top-β \beta β 部分解,一个部分解是在其路径上遍历的所有顶点的对数概率的和。
对于前一个输入任务t k i − 1 , b β tk_{i-1,b}^\beta t k i − 1 , b β 的每个光束b ∈ { 1 , 2 , ⋯ , β } b\in\{1,2,\cdots,\beta\} b ∈ { 1 , 2 , ⋯ , β } ,根据下一个任务t k i tk_i t k i 定义其邻居t k i , j ∈ N ( t k i − 1 , b β ) tk_{i,j}\in\mathcal{N}(tk_{i-1,b}^\beta) t k i , j ∈ N ( t k i − 1 , b β ) ,并计算每个分层连接的j j j 顶点的对数概率之和log ( t k i − 1 , b β ) + log ( t k i , j ) \log(tk_{i-1,b}^\beta) + \log(tk_{i,j}) log ( t k i − 1 , b β ) + log ( t k i , j ) 。
在计算了当前迭代的所有部分解之后,使用函数f ( ⋅ ) f(\cdot) f ( ⋅ ) 只考虑 top-β \beta β 部分解作为t k i β tk_i^\beta t k i β ,它保留了其遍历顶点的对数概率之和,并将用于下一次迭代。
通过 HBS 方法,可以显著地减少搜索空间来降低噪声,并提高计算效率。
Selectivity Layer
为了在个性化和探索之间取得平衡,论文提出了一个新的选择性层,预测用户之前是否访问过下一个 POI。预测下一个 POI 是用户已访问过的(l t i ∈ s u m t r a i n l_{t_i}\in s_{u_m}^{train} l t i ∈ s u m t r ain )还是未访问过的(l t i ∉ s u m t r a i n l_{t_i}\notin s_{u_m}^{train} l t i ∈ / s u m t r ain )POI。为了减少参数,论文使用任务t k P O I tk^{POI} t k PO I 中预测的位置,即l ^ t i = argmax l t i ( t k P O I ) \hat{l}_{t_i}=\text{argmax}_{l_{t_i}}(tk^{POI}) l ^ t i = argmax l t i ( t k PO I ) ,具体来说:
y t i = { Ψ ( P ( l t i ∣ l t i − 1 ) ) l ^ t i ∈ s u m t r a i n Ψ ( P ( G @ 2 , G @ 3 , ⋯ , G @ 6 , l t i ∣ l t i − 1 ) ) otherwise y_{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}
y t i = { Ψ ( P ( l t i ∣ l t i − 1 )) Ψ ( P ( G @2 , G @3 , ⋯ , G @6 , l t i ∣ l t i − 1 )) l ^ t i ∈ s u m t r ain otherwise
其中y t i y_{t_i} y t i 为下一个访问 POI 的概率,Ψ ( ⋅ ) \Psi(\cdot) Ψ ( ⋅ ) 为降序排序操作。
总的来说也就是:① 如果预测的下一个 POI 用户之前访问过,那么根据P ( l t i ∣ l t i − 1 ) P(l_{t_i} \vert l_{t_{i-1}}) P ( l t i ∣ l t i − 1 ) 计算下一个 POI,不考虑区域预测;否则 ② 根据P ( G @ 2 , G @ 3 , ⋯ , G @ 6 , l t i ∣ l t i − 1 ) P(G@2,G@3,\cdots,G@6,l_{t_i} \vert l_{t_{i-1}}) P ( G @2 , G @3 , ⋯ , G @6 , l t i ∣ 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]} [ 2 ] 进行拓展。添加(a)循环结构并(b)通过利用区域和时隙来连接时空图中的 POI 来缓解数据的稀疏性。DGAT 定义如下:
α ⃗ l t i − 1 , j = exp ( L e a k y R e L U ( a [ W p l ⃗ t i − 1 ⊕ W p j ⃗ ] ) ) ∑ k ⃗ ∈ N ^ G [ l t i − 1 ] exp ( L e a k y R e L U ( a [ W p l ⃗ t i − 1 ⊕ W p k ⃗ ) \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)}
α l t i − 1 , j = ∑ k ∈ N ^ G [ l t i − 1 ] exp ( L e ak y R e LU ( a [ W p l t i − 1 ⊕ W p k ) exp ( L e ak y R e LU ( a [ W p l t i − 1 ⊕ W p j ]) )
p t i = ∑ j ⃗ ∈ N ^ G [ l t i − 1 ] α ⃗ l t i − 1 , j ⊙ W p j ⃗ p_{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}
p t i = j ∈ N ^ G [ l t i − 1 ] ∑ α l t i − 1 , j ⊙ W p j
其中W p ∈ R δ × h d i m \mathbf{W}_p\in\mathbb{R}^{\delta\times hdim} W p ∈ R δ × h d im 为输入预测;a \mathbf{a} a 为一个线性层,用来预测上一个 POI l t i − 1 l_{t_{i-1}} l t i − 1 和它的邻居 POI j ⃗ ∈ N ^ [ l t i − 1 ] \vec{j}\in\hat{N}[l_{t_{i-1}}] j ∈ N ^ [ l t i − 1 ] 的注意力权重α ⃗ l t i − 1 , j ∈ R h d i m \vec{\alpha}_{l_{t_{i-1}},j}\in\mathbb{R}^{hdim} α l t i − 1 , j ∈ R h d im ;l ⃗ t i − 1 , j ⃗ ∈ R δ \vec{l}_{t_{i-1}}, \vec{j}\in\mathbb{R}^\delta l t i − 1 , j ∈ R δ 为 POI Embedding。接着使用权重计算各个邻居的加权和,得到p t i p_{t_i} p t i 。
与[2]不同的是,论文采用 POI-Region 和 POI-Timeslot 关系矩阵,以减少数据稀疏性的影响:
(Spatial Graph )POI-POI 无向无权图G s = ( V s , E s ) G_s=(V_s,E_s) G s = ( V s , E s ) ,如果每对 POI 在G @ 4 G@4 G @4 网格中有邻接关系,则认为两者相邻。
(Temporal Graph )POI-POI 无向无权图G t = ( V t , E t ) G_t=(V_t,E_t) G t = ( V t , E t ) 。首先将一天划分为 8 个时间段,每个时间段 3 个小时,共 56 个时间段(7 天),并将时间戳对应到时间段,每个顶点得到时间段v t s l o t v_t^{slot} v t s l o t ,如果每对 POI 的雅卡尔相似系数(Jaccard similarity)∣ v t i s l o t ∩ v t j s l o t ∣ ∣ v t i s l o t ∪ v t j s l o t ∣ > 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 ∣ v t i s l o t ∪ v t j s l o t ∣ ∣ v t i s l o t ∩ v t j s l o t ∣ > 0.9 ,则认为两者相邻。
论文通过使用 DGAT 对G s , G t G_s,G_t G s , G t 进行聚合并获取 POI-POI 全局信息:
p t i G s = D G A T s ( l t i − 1 ⃗ ) p t i G t = D G A T t ( l t i − 1 ⃗ ) \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}
p t i G s p t i G t = D G A T s ( l t i − 1 ) = D G A T t ( l t i − 1 )
此外,为了学习全局依赖关系,对 LSTM 中的公式进行进行如下计算修改:
i t i = σ ( W i x t i + U i h t i − 1 + b i + V i p t i G s + Z i p t i G t ) f t i = σ ( W f x t i + U f h t i − 1 + b f + V f p t i G s + Z f p t i G t ) o t i = σ ( W o x t i + U o h t i − 1 + b o + V o p t i G s + Z o p t i G t ) c ~ t i = tanh ( W c x t i + U c h t i − 1 + b c + V c p t i G s + Z c p t i G t ) \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}
i t i f t i o t i c ~ t i = σ ( W i x t i + U i h t i − 1 + b i + V i p t i G s + Z i p t i G t ) = σ ( W f x t i + U f h t i − 1 + b f + V f p t i G s + Z f p t i G t ) = σ ( W o x t i + U o h t i − 1 + b o + V o p t i G s + Z o p t i G t ) = tanh ( W c x t i + U c h t i − 1 + b c + V c p t i G s + Z c p t i G t )
其中V i , V f , V o , V c ∈ R δ × h d i m \mathbf{V}_i,\mathbf{V}_f,\mathbf{V}_o,\mathbf{V}_c \in\mathbb{R}^{\delta\times hdim} V i , V f , V o , V c ∈ R δ × h d im ,Z i , Z f , Z o , Z c ∈ R δ × h d i m \mathbf{Z}_i,\mathbf{Z}_f,\mathbf{Z}_o,\mathbf{Z}_c\in\mathbb{R}^{\delta\times hdim} Z i , Z f , Z o , Z c ∈ R δ × h d im 为可学习权重。
原始 LSTM 公式如下:
i t i = σ ( W i x t i + U i h t i − 1 + b i ) f t i = σ ( W f x t i + U f h t i − 1 + b f ) o t i = σ ( W o x t i + U o h t i − 1 + b o ) c ~ t i = tanh ( W c x t i + U c h t i − 1 + b c ) c t i = f t i ⊙ c t i − 1 + i t i ⊙ c ~ t i h ⃗ t i = o t i ⊙ tanh ( c t i ) \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}
i t i f t i o t i c ~ t i c t i h t i = σ ( W i x t i + U i h t i − 1 + b i ) = σ ( W f x t i + U f h t i − 1 + b f ) = σ ( W o x t i + U o h t i − 1 + b o ) = tanh ( W c x t i + U c h t i − 1 + b c ) = f t i ⊙ c t i − 1 + i t i ⊙ c ~ t i = o t i ⊙ tanh ( c t i )
实验
Datasets
Results
Ablation Study
Importance of proposed tasks
Search space reduction
Selectivity layer
Case Study
最后论文举了一个例子来说明模型的优点,其中图中 ✅ 位置和 ❌ 位置分别为使用 HMT-GRN 模型以及直接使用稀疏 POI 矩阵得到的 POI 预测,虽然类型正确但是区域错误。
总结
总结一下,论文主要是通过多任务的形式,学习用户-POI 矩阵和用户-G @ P G@P G @ P 矩阵,预测下一个 POI 以及 POI 所在区域,并根据预测区域对 POI 进行指导;另一方面,具体模型中,还是通过在 LSTM 中隐藏层更新过程中加入全局时间以及空间信息。
参考资料