【论文阅读】Learning Graph-based Disentangled Representations for Next POI Recommendation
authors:: Zhaobo Wang, Yanmin Zhu, Haobing Liu, Chunyang Wang
container:: Proceedings of the 45th International ACM SIGIR Conference on Research and Development in Information Retrieval
year:: 2022
DOI:: 10.1145/3477495.3532012
rating:: ⭐⭐⭐⭐
share:: false
comment:: 将 POI 分解为多个维度进行表示,利用 GCN 进行特征提取,采用多头注意力对各个分解维度进行处理
前言
2022 年 SIGIR:Learning Graph-based Disentangled Representations for Next POI Recommendation
问题描述
分别给定用户集合U = { u 1 , u 2 , ⋯ , u M } \mathcal{U} = \{ u_1, u_2, \cdots, u_M \} U = { u 1 , u 2 , ⋯ , u M } 以及 POI 集合L = { l 1 , l 2 , ⋯ , l N } \mathcal{L} = \{ l_1, l_2, \cdots, l_N \} L = { l 1 , l 2 , ⋯ , l N } ,其中每个位置l i l_i l i 都有一个对应的( l a t , l o n ) (lat, lon) ( l a t , l o n ) 坐标相关联。
(user trajectory )用户轨迹是由特定用户的一系列时间顺序的签到记录来定义的,即H ( u ) = { ( l i u , t l i u ) ∣ i = 1 , 2 , ⋯ , m } H(u) = \{ (l_i^u, t_{l_i^u}) \vert i=1,2,\cdots,m \} H ( u ) = {( l i u , t l i u ) ∣ i = 1 , 2 , ⋯ , m } ,表示用户u u u 在t l i u t_{l_i^u} t l i u 时刻访问位置l i u l_i^u l i u 。
(next POI recommendation )给定每个用户u u u 的活动轨迹H H H ,预测用户下一时刻最可能去的 POI top-k k k 。
OverView
论文认为,以前的合并地理信息的方法不能模拟 POI 对用户的复杂影响:
首先,用户到某个 POI 的各种潜在因素没有被有效地分解开。
例如用户u 1 u_1 u 1 去l 3 l_3 l 3 的主要原因是个人偏好,尽管l 3 l_3 l 3 距离他当前的位置l 1 l_1 l 1 较远。另外一方面,用户u 2 u_2 u 2 更关注l 3 l_3 l 3 本身的作用(例如为餐厅),并且更关心距离。然而现有方法大多专注于黑盒模型的训练,将这些因素忽略了。
其次,在以往的大多数方法中,POI 的基于距离的影响也过于简化了。
例如l 3 l_3 l 3 和l 4 l_4 l 4 作用相同,l 4 l_4 l 4 甚至距离l 2 l_2 l 2 更近,但或许由于物理因素的影响(例如河流),用户还是选择了l 3 l_3 l 3 。因此,POI 之间的距离影响可能包含多种因素,仅仅基于距离的表示并不合理。
为了解决上面这些问题,论文专注于对 POI 进行更好地表征,提出了一个新的 Disentangled Representation-enhanced Attention Network (DRAN),将 POI 表示分解为多个独立的分量;提出了 Disentangled Graph Convolution Network (DGCN) 学习 POI 表征,并对 self-Attention 进行拓展,以及建模用户偏好。论文主要贡献如下:
明确了 POI 包含的多方面因素并进行分解,并提出 DGCN 进行实现;
提出 DRAN,充分利用 POI 全局信息并学习用户的动态偏好。
准备工作
Graph Convolution
图卷积运算可以看作是一种节点表示学习方法,它通过聚合邻居节点的信息来更新节点表示。
关于 GCN 的内容可以看我的另一篇文章:简单理解图神经网络 GNN ,这里只进行简单的说明:对于一幅无向图G = ( V , E , A ) G=(V,E,\boldsymbol{A}) G = ( V , E , A ) ,其中V , E V,E V , E 分别表示节点和边,A ∈ R n × n \boldsymbol{A}\in\mathbb{R}^{n\times n} A ∈ R n × n 为带权重的邻接矩阵。GCN 首先在A \boldsymbol{A} A 加上单位矩阵I \boldsymbol{I} I 进行自连接:
A ^ = A + I \hat{\boldsymbol{A}} = \boldsymbol{A + I}
A ^ = A + I
接着对m m m 维的节点进行更新操作:
X u p d a t e = ( D + I ) − 1 / 2 A ^ ( D + I ) − 1 / 2 X Θ = A ~ X Θ \boldsymbol{X}^{update} = (\boldsymbol{D} + \boldsymbol{I})^{-1/2}\hat{\boldsymbol{A}}(\boldsymbol{D} + \boldsymbol{I})^{-1/2}\boldsymbol{X\Theta} = \tilde{\boldsymbol{A}}\boldsymbol{X\Theta}
X u p d a t e = ( D + I ) − 1/2 A ^ ( D + I ) − 1/2 X Θ = A ~ X Θ
其中Θ \boldsymbol{\Theta} Θ 为可学习权重矩阵,D \boldsymbol{D} D 为度矩阵。
Disentangled Representation
POI 的分解表示x ∈ R d x\in\mathbb{R}^d x ∈ R d 由几个独立的部分组成。假定分解为K K K 部分,则可以将其表示为:
x i = ( x i 1 , x i 2 , ⋯ , x i K ) x_i = (x_{i_1}, x_{i_2}, \cdots, x_{i_K})
x i = ( x i 1 , x i 2 , ⋯ , x i K )
其中x i j ∈ R d K x_{i_j}\in\mathbb{R}^{\frac{d}{K}} x i j ∈ R K d 表示 POI 的第j j j 个部分
DRAN
模型的架构如下图所示:
Graph-based Disentangled Representation Modeling
POI Relation Graph Construction
为了更好地学习 POI 的内在特征,论文提出了两个 POI 全局关系图来更好地进行特征学习:距离矩阵 和转移矩阵 。
Distance-based relation graph:G d = ( V d , E d , A d ) G_d=(V_d,E_d,\boldsymbol{A}_d) G d = ( V d , E d , A d ) 是一个无向图,分别表示 POI 节点、边以及邻接矩阵。若两个 POI 之间的距离小于Δ d = 2 k m \Delta d=2km Δ d = 2 km ,那么A d ( i , j ) = 1 \boldsymbol{A}_d(i,j)=1 A d ( i , j ) = 1 ,否则A d ( i , j ) = 0 \boldsymbol{A}_d(i,j)=0 A d ( i , j ) = 0 。
Transition-based relation graph:G t = ( V t , E t , A t ) G_t=(V_t,E_t,\boldsymbol{A}_t) G t = ( V t , E t , A t ) 是一个带权图,其中A t ( i , j ) = f r e q ( l i , l j ) \boldsymbol{A}_t(i,j)=freq(l_i,l_j) A t ( i , j ) = f re q ( l i , l j ) ,表示两个 POI 之间有直接的转移关系,f r e q ( l i , l j ) freq(l_i,l_j) f re q ( l i , l j ) 为转移频次。
Disentangled Representation Propagation
论文希望利用 GCN 从 POI 关系矩阵中学习其分解表示,同时保持不同部分的独立。计算如下:
X u p d a t e ( m , n ) = ∑ i = 1 N A ( m , i ) ( ∑ j = 1 N X ( i , j ) Θ ( j , n ) ) \boldsymbol{X}^{update}(m,n) = \sum_{i=1}^{N}\boldsymbol{A}(m,i)(\sum_{j=1}^N \boldsymbol{X}(i,j)\Theta(j,n))
X u p d a t e ( m , n ) = i = 1 ∑ N A ( m , i ) ( j = 1 ∑ N X ( i , j ) Θ ( j , n ))
在上面的公式中,x m \boldsymbol{x}_m x m 的每个维度与其他维度都具有非常强的关联,这限制了 POI 分解表示的能力。因此,论文只将同个 POI 内的不同维度相互关联:
X u p d a t e ( m , n ) = ∑ i = 1 N A ( m , i ) ( ∑ j = i n d e x ( x m k ( 1 ) ) i n d e x ( x m k ( f i n ) ) X ( i , j ) Θ ( j , n ) ) \boldsymbol{X}^{update}(m,n) = \sum_{i=1}^{N}\boldsymbol{A}(m,i)(\sum_{j=index(x_{m_k}(1))}^{index(x_{m_k}(fin))} \boldsymbol{X}(i,j)\Theta(j,n))
X u p d a t e ( m , n ) = i = 1 ∑ N A ( m , i ) ( j = in d e x ( x m k ( 1 )) ∑ in d e x ( x m k ( f in )) X ( i , j ) Θ ( j , n ))
其中i n d e x ( x m k ( 1 ) ) , i n d e x ( x m k ( f i n ) ) index(x_{m_k}(1)), index(x_{m_k}(fin)) in d e x ( x m k ( 1 )) , in d e x ( x m k ( f in )) 分别表示x m k \boldsymbol{x}_{m_k} x m k 第一个维度和最后一个维度的索引。
此外,论文将全局权重矩阵Θ \boldsymbol{\Theta} Θ 推广到了块对角权重矩阵Θ b l o c k \boldsymbol{\Theta}_{block} Θ b l oc k ,论文提出的 DGCN 可以表示为:
X u p d a t e = A ~ X Θ b l o c k Θ b l o c k = d i a g ( Θ 1 , Θ 2 , ⋯ , Θ K ) , Θ i ∈ R d K × d K \begin{aligned}
\boldsymbol{X}^{update} &= \tilde{\boldsymbol{A}}\boldsymbol{X\Theta}_{block} \\
\boldsymbol{\Theta}_{block} &= diag(\boldsymbol{\Theta}_1, \boldsymbol{\Theta}_2, \cdots, \boldsymbol{\Theta}_{K}), \boldsymbol{\Theta}_i\in\mathbb{R}^{\frac{d}{K}\times\frac{d}{K}}
\end{aligned}
X u p d a t e Θ b l oc k = A ~ X Θ b l oc k = d ia g ( Θ 1 , Θ 2 , ⋯ , Θ K ) , Θ i ∈ R K d × K d
这保证了在更新x i j u p d a t e x_{i_j}^{update} x i j u p d a t e 的过程中,只计算x i x_i x i 的第j j j 个部分。
接着,论文使用 DGCN 分别计算之前提到的两个 POI 关系矩阵:基于距离的分解表示x d ∈ X d x_d\in\boldsymbol{X}_d x d ∈ X d 和基于转移的分解表示x t ∈ X t x_t\in\boldsymbol{X}_t x t ∈ X t 。论文同时对 DGCN 进行了多次堆叠,具体来说:
{ X d ( l + 1 ) = tanh ( A ~ X d l Θ b l o c k , d l ) X t ( l + 1 ) = tanh ( A ~ X t l Θ b l o c k , t l ) \begin{cases}
\boldsymbol{X}_d^{(l+1)} &= \tanh(\tilde{\boldsymbol{A}}\boldsymbol{X}_d^l\boldsymbol{\Theta}_{block,d}^l) \\
\boldsymbol{X}_t^{(l+1)} &= \tanh(\tilde{\boldsymbol{A}}\boldsymbol{X}_t^l\boldsymbol{\Theta}_{block,t}^l)
\end{cases}
{ X d ( l + 1 ) X t ( l + 1 ) = tanh ( A ~ X d l Θ b l oc k , d l ) = tanh ( A ~ X t l Θ b l oc k , t l )
其中l l l 为层数。
Representation Aggregation
在 POI 关系矩阵上应用了L L L 层的 DGCN 之后,使用聚合策略将多层表示进行聚合,论文中直接相加:
{ X d = S u m ( X d 0 , X d 1 , ⋯ , X d L ) X t = S u m ( X t 0 , X t 1 , ⋯ , X t L ) \begin{cases}
\boldsymbol{X}_d &= Sum(\boldsymbol{X}_d^0, \boldsymbol{X}_d^1, \cdots, \boldsymbol{X}_d^L) \\
\boldsymbol{X}_t &= Sum(\boldsymbol{X}_t^0, \boldsymbol{X}_t^1, \cdots, \boldsymbol{X}_t^L)
\end{cases}
{ X d X t = S u m ( X d 0 , X d 1 , ⋯ , X d L ) = S u m ( X t 0 , X t 1 , ⋯ , X t L )
在对两个 POI 关系矩阵进行适当表示,以模拟K K K 个部分的分解表示之后,一个简单的想法是这将两个部分串联起来最为最终的表示。但是论文考虑到两个原因并没有这么做:
需要引入超参数来平衡两者之间的比例,可能无法保持不同类型的影响;
POI 本身就包含不同因素的影响,只表示为一种特殊类型可能会限制其能力。
POI l i l_i l i 的最终表示x i ∈ X f i n x_i\in\boldsymbol{X}_{fin} x i ∈ X f in 分别对各个分解部分进行加权处理:
{ x i = ( x i 1 , x i 2 , ⋯ , x i K ) x i j = ω j x d , i j + ( 1 − ω j ) x t , i j \begin{cases}
x_i &= (x_{i_1}, x_{i_2}, \cdots, x_{i_K}) \\
x_{i_j} &= \omega_j x_{d,i_j} + (1-\omega_j)x_{t,i_j}
\end{cases}
{ x i x i j = ( x i 1 , x i 2 , ⋯ , x i K ) = ω j x d , i j + ( 1 − ω j ) x t , i j
其中ω j \omega_j ω j 为可学习参数,控制两个部分的权重。
User Spatial-Temporal Preference Modeling
在得到到了 POI 的分解表示X f i n \boldsymbol{X}_{fin} X f in 之后,开始对用户轨迹H ( u ) = { ( l i u , t l i u ) ∣ i = 1 , 2 , ⋯ , m } H(u) = \{ (l_i^u, t_{l_i^u}) \vert i=1,2,\cdots,m \} H ( u ) = {( l i u , t l i u ) ∣ i = 1 , 2 , ⋯ , m } 进行编码,得到用户u u u 的访问序列S ( u ) = { x 1 u , x 2 u , ⋯ , x n u } , x i u ∈ X f i n S(u)=\{x_1^u, x_2^u,\cdots,x_n^u\}, x_i^u\in\boldsymbol{X}_{fin} S ( u ) = { x 1 u , x 2 u , ⋯ , x n u } , x i u ∈ X f in 。
Personalized Spatial-Temporal Interval Encoding
通常来说,用户对 POI 的偏好很大程度上受空间距离的限制,用户更愿意访问附近的 POI。此外,用户的历史轨迹也在一定程度上反映出了用户偏好。因此论文明确了 POI 之间的时间空间关系进行建模,时间间隔矩阵M t u ∈ N n × n \boldsymbol{M}_t^u\in\mathbb{N}^{n\times n} M t u ∈ N n × n ,以及空间间隔矩阵M s u ∈ N n × n \boldsymbol{M}_s^u\in\mathbb{N}^{n\times n} M s u ∈ N n × n 表示如下:
M t u = [ t 1 , 1 u t 1 , 2 u ⋯ t 1 , n u t 2 , 1 u t 2 , 2 u ⋯ t 2 , n u ⋯ ⋯ ⋯ ⋯ t n , 1 u t n , 2 u ⋯ t n , n u ] M s u = [ s 1 , 1 u s 1 , 2 u ⋯ s 1 , n u s 2 , 1 u s 2 , 2 u ⋯ s 2 , n u ⋯ ⋯ ⋯ ⋯ s n , 1 u s n , 2 u ⋯ s n , n u ] \boldsymbol{M}_t^u =
\begin{bmatrix}
t_{1,1}^u & t_{1,2}^u & \cdots & t_{1,n}^u \\
t_{2,1}^u & t_{2,2}^u & \cdots & t_{2,n}^u \\
\cdots & \cdots & \cdots & \cdots \\
t_{n,1}^u & t_{n,2}^u & \cdots & t_{n,n}^u
\end{bmatrix}
\quad
\boldsymbol{M}_s^u =
\begin{bmatrix}
s_{1,1}^u & s_{1,2}^u & \cdots & s_{1,n}^u \\
s_{2,1}^u & s_{2,2}^u & \cdots & s_{2,n}^u \\
\cdots & \cdots & \cdots & \cdots \\
s_{n,1}^u & s_{n,2}^u & \cdots & s_{n,n}^u
\end{bmatrix}
M t u = t 1 , 1 u t 2 , 1 u ⋯ t n , 1 u t 1 , 2 u t 2 , 2 u ⋯ t n , 2 u ⋯ ⋯ ⋯ ⋯ t 1 , n u t 2 , n u ⋯ t n , n u M s u = s 1 , 1 u s 2 , 1 u ⋯ s n , 1 u s 1 , 2 u s 2 , 2 u ⋯ s n , 2 u ⋯ ⋯ ⋯ ⋯ s 1 , n u s 2 , n u ⋯ s n , n u
其中t i , j u = ⌊ ∣ t i − t j ∣ t m i n u ⌋ t_{i,j}^u = \left\lfloor \frac{\vert t_i -t_j \vert}{t_{min}^u} \right\rfloor t i , j u = ⌊ t min u ∣ t i − t j ∣ ⌋ 表示访问地点i i i 和j j j 的时间间隔;t m i n u t_{min}^u t min u 表示用户u u u 的最小时间间隔;s i , j u = ⌊ h a v e r s i n e ( l i u , l j u ) s m i n u ⌋ s_{i,j}^u = \left\lfloor \frac{haversine(l_i^u, l_j^u)}{s_{min}^u} \right\rfloor s i , j u = ⌊ s min u ha v ers in e ( l i u , l j u ) ⌋ 与t i , j u t_{i,j}^u t i , j u 类似,表示两个地点之间的空间间隔。
假设在较大的时间间隔内的访问可能是冗余的,论文也规定了最大时间/空间间隔:
t i , j u = m i n ( t i , j u , Δ t ) s i , j u = m i n ( s i , j u , Δ s ) t_{i,j}^u = min(t_{i,j}^u, \Delta t) \quad s_{i,j}^u = min(s_{i,j}^u, \Delta s)
t i , j u = min ( t i , j u , Δ t ) s i , j u = min ( s i , j u , Δ s )
之后将M t u , M s u \boldsymbol{M}_t^u,\boldsymbol{M}_s^u M t u , M s u 分别转化为嵌入矩阵E t u ∈ R n × n × d , E s u ∈ R n × n × d \boldsymbol{E}_t^u\in\mathbb{R}^{n\times n\times d},\boldsymbol{E}_s^u\in\mathbb{R}^{n\times n\times d} E t u ∈ R n × n × d , E s u ∈ R n × n × d :
E t u = [ e 1 , 1 u , t e 1 , 2 u , t ⋯ e 1 , n u , t e 2 , 1 u , t e 2 , 2 u , t ⋯ e 2 , n u , t ⋯ ⋯ ⋯ ⋯ e n , 1 u , t e n , 2 u , t ⋯ e n , n u , t ] E s u = [ e 1 , 1 u , s e 1 , 2 u , s ⋯ e 1 , n u , s e 2 , 1 u , s e 2 , 2 u , s ⋯ e 2 , n u , s ⋯ ⋯ ⋯ ⋯ e n , 1 u , s e n , 2 u , s ⋯ e n , n u , s ] \boldsymbol{E}_t^u =
\begin{bmatrix}
\boldsymbol{e}_{1,1}^{u,t} & \boldsymbol{e}_{1,2}^{u,t} & \cdots & \boldsymbol{e}_{1,n}^{u,t} \\
\boldsymbol{e}_{2,1}^{u,t} & \boldsymbol{e}_{2,2}^{u,t} & \cdots & \boldsymbol{e}_{2,n}^{u,t} \\
\cdots & \cdots & \cdots & \cdots \\
\boldsymbol{e}_{n,1}^{u,t} & \boldsymbol{e}_{n,2}^{u,t} & \cdots & \boldsymbol{e}_{n,n}^{u,t}
\end{bmatrix}
\quad
\boldsymbol{E}_s^u =
\begin{bmatrix}
\boldsymbol{e}_{1,1}^{u,s} & \boldsymbol{e}_{1,2}^{u,s} & \cdots & \boldsymbol{e}_{1,n}^{u,s} \\
\boldsymbol{e}_{2,1}^{u,s} & \boldsymbol{e}_{2,2}^{u,s} & \cdots & \boldsymbol{e}_{2,n}^{u,s} \\
\cdots & \cdots & \cdots & \cdots \\
\boldsymbol{e}_{n,1}^{u,s} & \boldsymbol{e}_{n,2}^{u,s} & \cdots & \boldsymbol{e}_{n,n}^{u,s}
\end{bmatrix}
E t u = e 1 , 1 u , t e 2 , 1 u , t ⋯ e n , 1 u , t e 1 , 2 u , t e 2 , 2 u , t ⋯ e n , 2 u , t ⋯ ⋯ ⋯ ⋯ e 1 , n u , t e 2 , n u , t ⋯ e n , n u , t E s u = e 1 , 1 u , s e 2 , 1 u , s ⋯ e n , 1 u , s e 1 , 2 u , s e 2 , 2 u , s ⋯ e n , 2 u , s ⋯ ⋯ ⋯ ⋯ e 1 , n u , s e 2 , n u , s ⋯ e n , n u , s
Disentangled Self-Attention Aggregation
为了捕获签到序列的多层次规律,论文提出了一种拓展的 self-attention。具体来说,将每个部分分为一个单独的注意力头:
S ( u ) k = { x 1 k u , x 2 k u , ⋯ , x n k u } S(u)_k = \{ x_{1_k}^u, x_{2_k}^u, \cdots, x_{n_k}^u \}
S ( u ) k = { x 1 k u , x 2 k u , ⋯ , x n k u }
其中1 ≤ k ≤ K , x i k u ∈ R d K 1\leq k\leq K,x_{i_k}^u\in\mathbb{R}^\frac{d}{K} 1 ≤ k ≤ K , x i k u ∈ R K d 表示x i u x_i^u x i u 的第k k k 个部分。同时将b o l d s y m b o l E t u boldsymbol{E}_t^u b o l d sy mb o l E t u 的每个单元分为k k k 个部分:e i , j u = ( e i , j , 1 u , e i , j , 2 u , ⋯ , e i , j , K u ) \boldsymbol{e}_{i,j}^u=(\boldsymbol{e}_{i,j,1}^u, \boldsymbol{e}_{i,j,2}^u, \cdots, \boldsymbol{e}_{i,j,K}^u) e i , j u = ( e i , j , 1 u , e i , j , 2 u , ⋯ , e i , j , K u ) ,并根据下面的公式计算新序列R ( u ) k = { r 1 k u , r 2 k u , ⋯ , r n k u } R(u)_k=\{\boldsymbol{r}_{1_k}^u, \boldsymbol{r}_{2_k}^u, \cdots, \boldsymbol{r}_{n_k}^u\} R ( u ) k = { r 1 k u , r 2 k u , ⋯ , r n k u } :
r i k u = ∑ j = 1 i α i j ( x j k u W V + e i , j , k u , t + e i , j , k u , s + p j ) \boldsymbol{r}_{i_k}^u = \sum_{j=1}^i \alpha_{ij}(x_{j_k}^u\boldsymbol{W}^V + \boldsymbol{e}_{i,j,k}^{u,t} + \boldsymbol{e}_{i,j,k}^{u,s} + \boldsymbol{p}_j)
r i k u = j = 1 ∑ i α ij ( x j k u W V + e i , j , k u , t + e i , j , k u , s + p j )
其中W V ∈ R d K × d K \boldsymbol{W}^V\in\mathbb{R}^{\frac{d}{K}\times\frac{d}{K}} W V ∈ R K d × K d 为可学习矩阵;p j ∈ R d K \boldsymbol{p}_j\in\mathbb{R}^\frac{d}{K} p j ∈ R K d 为 position embedding;α i j \alpha_{ij} α ij 表示权重系数,并由下式确定:
{ α i j = exp a i j ∑ m = 1 i exp a i m a i j = x i k u W Q ( x j k u W K + e i , j , k u , t + e i , j , k u , s + p j ) T d K \begin{cases}
\alpha_{ij} = \frac{\exp a_{ij}}{\sum_{m=1}^{i}\exp a_{im}} \\
a_{ij} = \frac{x_{i_k}^u\boldsymbol{W}^Q (x_{j_k}^u\boldsymbol{W}^K + \boldsymbol{e}_{i,j,k}^{u,t} + \boldsymbol{e}_{i,j,k}^{u,s} + \boldsymbol{p}_j)^T}{\sqrt{\frac{d}{K}}}
\end{cases}
⎩ ⎨ ⎧ α ij = ∑ m = 1 i e x p a im e x p a ij a ij = K d x i k u W Q ( x j k u W K + e i , j , k u , t + e i , j , k u , s + p j ) T
其中W Q , W K ∈ R d K × d K \boldsymbol{W}^Q, \boldsymbol{W}^K\in\mathbb{R}^{\frac{d}{K}\times\frac{d}{K}} W Q , W K ∈ R K d × K d 为可学习矩阵
论文提到,将e i , j u \boldsymbol{e}_{i,j}^u e i , j u 拆分的主要目的在于降维;与另一种方法相比,将e i , j u \boldsymbol{e}_{i,j}^u e i , j u 映射到一个维度为R d K \mathbb{R}^\frac{d}{K} R K d 的向量,两者的性能接近,为了避免过多参数,论文选择了前一种方法。
接着在 self-attention 层之后使用前馈神经网络(FFN),基于模型非线性特征:
z i k u = F F N ( r i k u ) = R e L U ( r i k u W 1 k + b 1 k ) W 2 k + b 2 k z_{i_k}^u = FFN(\boldsymbol{r}_{i_k}^u) = ReLU(\boldsymbol{r}_{i_k}^u\boldsymbol{W}_{1_k} + \boldsymbol{b}_{1_k})\boldsymbol{W}_{2_k} + \boldsymbol{b}_{2_k}
z i k u = FFN ( r i k u ) = R e LU ( r i k u W 1 k + b 1 k ) W 2 k + b 2 k
其中W 1 k , W 2 k ∈ R d K × d K , b 1 k , b 2 k ∈ R d K \boldsymbol{W}_{1_k}, \boldsymbol{W}_{2_k}\in\mathbb{R}^{\frac{d}{K}\times\frac{d}{K}}, \boldsymbol{b}_{1_k}, \boldsymbol{b}_{2_k}\in\mathbb{R}^\frac{d}{K} W 1 k , W 2 k ∈ R K d × K d , b 1 k , b 2 k ∈ R K d 为可学习矩阵。同时使用 dropout,normalization 和残差连接缓解过拟合问题,加快模型训练。
在叠加了几个注意块后,得到了输出序列Z ( u ) k = { z 1 k u , z 2 k u , ⋯ , z n k u } Z(u)_k=\{z_{1_k}^u,z_{2_k}^u,\cdots,z_{n_k}^u\} Z ( u ) k = { z 1 k u , z 2 k u , ⋯ , z n k u } ,包含 POI,位置,时间和空间等信息,可以看做是用户对于 POI 第k k k 个部分的偏好表示。为了完整考虑 POI 每个部分的影响,将所有的K K K 个输出序列集成到一个整体的序列Z ( u ) Z(u) Z ( u ) 中,以表示用户u u u 的整个签到行为:
Z ( u ) = C o n c a t ( Z ( u ) 1 , Z ( u ) 2 , ⋯ , Z ( u ) K ) = ( z 1 u , z 2 u , ⋯ , z n u ) Z(u) = Concat(Z(u)_1, Z(u)_2, \cdots, Z(u)_K) = (z_1^u, z_2^u, \cdots, z_n^u)
Z ( u ) = C o n c a t ( Z ( u ) 1 , Z ( u ) 2 , ⋯ , Z ( u ) K ) = ( z 1 u , z 2 u , ⋯ , z n u )
其中C o n c a t ( ⋅ ) Concat(\cdot) C o n c a t ( ⋅ ) 表示连接操作,z i u = [ z i 1 u , z i 2 u , ⋯ , z n K u ] z_i^u=[z_{i_1}^u,z_{i_2}^u,\cdots,z_{n_K}^u] z i u = [ z i 1 u , z i 2 u , ⋯ , z n K u ] 。
User Preference Estimation
得到了用户u u u 的偏好序列Z ( u ) Z(u) Z ( u ) 之后,为了估计用户对下一次访问的 POI 的偏好,使用 softmax 函数计算每个候选位置的偏好得分:
y ^ t + 1 , l u = exp ( z t u x l T ) ∑ i = 1 L exp ( z t u x i T ) \hat{y}_{t+1,l}^u = \frac{\exp(z_t^ux_l^T)}{\sum_{i=1}^\mathbb{L}\exp(z_t^ux_i^T)}
y ^ t + 1 , l u = ∑ i = 1 L exp ( z t u x i T ) exp ( z t u x l T )
其中z t u ∈ Z ( u ) z_t^u\in Z(u) z t u ∈ Z ( u ) 表示用户在t t t 时刻的偏好,x ∈ X f i n x\in X_{fin} x ∈ X f in 为位置l l l 的分解表示。此外上面的式子也可以重写为:
exp ( z t u x l T ) = exp ( ∑ k = 1 K ∑ i = 1 d K z t k u ( i ) ⋅ , x k ( i ) ) \exp(z_t^ux_l^T) = \exp(\sum_{k=1}^K\sum_{i=1}^{\frac{d}{K}} z_{t_k}^u(i) \cdot, x_k(i))
exp ( z t u x l T ) = exp ( k = 1 ∑ K i = 1 ∑ K d z t k u ( i ) ⋅ , x k ( i ))
将偏好得分看作是通过和操作对不同成分的综合偏好。
Model Optimization
使用交叉熵损失函数计算损失:
J = − ∑ u ∈ U ∑ i ∈ H ( u ) ∑ j = 1 N y i , j u log ( y ^ i , j u ) + λ ∥ Θ ∥ 2 \mathbb{J} = - \sum_{u\in\mathcal{U}} \sum_{i\in H(u)}\sum_{j=1}^N y_{i,j}^u \log(\hat{y}_{i,j}^u) + \lambda \Vert\Theta\Vert_2
J = − u ∈ U ∑ i ∈ H ( u ) ∑ j = 1 ∑ N y i , j u log ( y ^ i , j u ) + λ ∥Θ ∥ 2
其中y i , j u y_{i,j}^u y i , j u 为预测概率,∥ Θ ∥ 2 \Vert\Theta\Vert_2 ∥Θ ∥ 2 表示对所有参数计算二范式。
实验
Datasets
Result
Ablation Study
D R A N n G DRAN_{nG} D R A N n G :去除 DGCN 层
D R A N n d DRAN_{nd} D R A N n d :去除基于距离的 POI 关系矩阵
D R A N n t DRAN_{nt} D R A N n t :去除基于转移的 POI 关系矩阵
In-depth Study
进一步地,论文展示了不同 GCN 模型下的效果比较:
另一方面,为了证明 DRAN 可以有效地用 DGCN 学习 POI 的分解表示,论文计算了两个数据集上,维数的相关性,并进行了可视化展示。可以看出,结果显示了四个明显的对角线块,这表明模型具有很强的区分潜在成分的能力:
总结
论文的内容挺多,最主要的想法就是将 POI 进行分解,从不同部分对其进行表示,从最后的可视化效果图来看确实有一定作用。
参考资料