【论文阅读】DisenPOI: Disentangling sequential and geographical influence for point-of-interest recommendation
authors:: Yifang Qin, Yifan Wang, Fang Sun, Wei Ju, Xuyang Hou, Zhe Wang, Jia Cheng, Jun Lei, Ming Zhang
container:: Proceedings of the sixteenth ACM international conference on web search and data mining
year:: 2023
DOI:: 10.1145/3539597.3570408
rating:: ⭐⭐⭐⭐
share:: true
comment:: 分别建立序列图和地理图进行聚合,并使用自监督进行解构处理。
前言
2023 年,WSDM 的一篇论文:DisenPOI: Disentangling sequential and geographical influence for point-of-interest recommendation
问题描述
分别给定用户集合U = { u 1 , u 2 , ⋯ , u ∣ U ∣ } \mathcal{U} = \{ u_1, u_2, \cdots, u_{\vert \mathcal{U} \vert} \} U = { u 1 , u 2 , ⋯ , u ∣ U ∣ } 以及 POI 集合V = { v 1 , v 2 , ⋯ , v ∣ V ∣ } \mathcal{V} = \{ v_1, v_2, \cdots, v_{\vert \mathcal{V} \vert} \} V = { v 1 , v 2 , ⋯ , v ∣ V ∣ } ,其中每个位置v i v_i v i 都有一个对应的( l a t , l o n ) (lat, lon) ( l a t , l o n ) 坐标相关联。
(check-in )一个 check-in 可以表示为c = ( u , v , t ) c=(u,v,t) c = ( u , v , t ) ,即用户u u u 在t t t 时刻访问地点v v v 。
(user trajectory )用户轨迹是由特定用户的一系列时间顺序的签到记录来定义的,即T u i = { c 1 , c 2 , ⋯ , c m } T_{u_i} = \{ c_1, c_2, \cdots, c_m \} T u i = { c 1 , c 2 , ⋯ , c m } 。
(next POI recommendation )给定知识图G \mathcal{G} G ,每个用户u i u_i u i 的的活动轨迹T u i T_{u_i} T u i ,预测用户u i u_i u i 最可能去的 POI top-k k k 。
OverView
论文认为「序列影响」和「地理影响」这两个在 POI 推荐中非常重要的因素应该是平等的,是 POI 推荐的两个主要驱动力。以前的研究并没有对这两种因素进行区分,没有明确捕获用户偏好中的序列影响和地理影响。
面对用户偏好的双重影响,论文想要通过解耦的方式对两种因素进行更精细粒度的描述。论文提出了 DisenPOI,对顺序关系和地理位置进行建模,并构建了两个解耦的 POI 图:「基于空间亲和力的地理图」和「基于交互历史的序列图」,通过距离感知和序列感知的 GNN 进行特征提取,以自监督的方式进行图的解构。
论文的主要贡献如下:
根据用户的访问交互构造对偶图,以联合利用序列和地理关系,分别为两个图设计序列和地理感知传播方案,以提高 embedding 质量。
提出提取序列和地理影响的解耦表示。这是第一个基于图的 POI 推荐框架,可以得到解耦的序列和地理表示。
主要内容
模型整体结构如下图所示:
简单说一下模型的整体思路:经过 Embedding 层之后,分别建立序列图和地理图,并使用两个聚合模块进行聚合,在 Target Attention 层中提取偏好信息,同时引入了一个辅助损失函数来帮助获取解构的信息。
Two Disentangled Graphs
Geographical Graph
地理位置图是根据 POI 建立的一张无向图G g = { V , ε g , A g } \mathcal{G}_g = \{ \mathcal{V}, \varepsilon_g, A_g \} G g = { V , ε g , A g } ,若v i v_i v i 和v j v_j v j 之间的距离小于阈值Δ \Delta Δ ,那么则用边e g = ( v i , v j ) ∈ ε g e_g = (v_i, v_j) \in \varepsilon_g e g = ( v i , v j ) ∈ ε g 表示。边权重矩阵A g ( i , j ) A_g(i,j) A g ( i , j ) 记录 POI v i v_i v i 和v j v_j v j 之间的距离。建立图G g \mathcal{G}_g G g 是基于用户通常会访问距离较近的 POI。
Sequential Graph
根据访问序列建立序列图G s , u = { V s , u , ε s , u } \mathcal{G}_{s,u} = \{ \mathcal{V}_{s,u}, \varepsilon_{s,u} \} G s , u = { V s , u , ε s , u } ,其中s u s_u s u 为用户历史访问轨迹,边e s = ⟨ v i , v j ⟩ ∈ G s e_s = \langle v_i, v_j \rangle \in \mathcal{G_s} e s = ⟨ v i , v j ⟩ ∈ G s 表示存在v i v_i v i 到v j v_j v j 的转移关系。
Propagation on Disentangled Graphs
Geographical Graph Propagation Layer
论文使用 GNN 对地理图G g \mathcal{G}_g G g 进行聚合:
m j ← i ( l ) = f d ( h i ( l − 1 ) , h j ( l − 1 ) ) m_{j\leftarrow i}^{(l)} = f_d(h_i^{(l-1)}, h_j^{(l-1)})
m j ← i ( l ) = f d ( h i ( l − 1 ) , h j ( l − 1 ) )
其中f d ( ⋅ ) f_d(\cdot) f d ( ⋅ ) 为消息传播函数,l l l 为循环层数。为了更好地表现地理位置信息,论文的传播函数中加入了距离信息:
m j ← i ( l ) = 1 ∣ N i ∣ ∣ N j ∣ ( W 1 ( l ) h i ( l − 1 ) + w ( d i j ) W 2 ( l ) h i ( l − 1 ) ⊙ h j ( l − 1 ) ) m_{j \leftarrow i}^{(l)} = \frac{1}{\sqrt{\vert \mathcal{N}_i \vert \vert \mathcal{N}_j \vert}}(W_1^{(l)}h_i^{(l-1)} + w(d_{ij})W_2^{(l)}h_{i}^{(l-1)} \odot h_{j}^{(l-1)})
m j ← i ( l ) = ∣ N i ∣∣ N j ∣ 1 ( W 1 ( l ) h i ( l − 1 ) + w ( d ij ) W 2 ( l ) h i ( l − 1 ) ⊙ h j ( l − 1 ) )
其中W 1 , W 2 ∈ R D × D W_1, W_2 \in \mathbb{R}^{D\times D} W 1 , W 2 ∈ R D × D 为可学习参数矩阵,w ( d i j ) = e − d i , j 2 w(d_{ij}) = e^{-d_{i,j}^2} w ( d ij ) = e − d i , j 2 表示v i v_i v i 和v j v_j v j 的距离信息。最终的消息传播函数为:
h j ( l ) = LeakyReLU ( m j ← i + ∑ i ∈ N u m j ← i ) h_{j}^{(l)} = \text{LeakyReLU}(m_{j \leftarrow i} + \sum_{i\in\mathcal{N}_u} m_{j \leftarrow i})
h j ( l ) = LeakyReLU ( m j ← i + i ∈ N u ∑ m j ← i )
经过L L L 层传播之后,得到地理位置编码的 POI 表示:
H g = [ h 1 ( L ) ; h 2 ( L ) ; ⋯ ; h ∣ V ∣ ( L ) ] H_g = [h_1^{(L)}; h_2^{(L)}; \cdots; h_{\vert\mathcal{V}\vert}^{(L)}]
H g = [ h 1 ( L ) ; h 2 ( L ) ; ⋯ ; h ∣ V ∣ ( L ) ]
对于具有签到历史s u s_u s u 的用户u u u ,论文假设他/她的地理偏好可以通过聚合他/她的签到历史中 POIs 的高级地理邻居来捕获。
Sequential Graph Propagation Layer
另一方面,用户访问序列不仅包含了用户对 POI 的偏好,还包含了用户的兴趣的演变历史,这暗示了用户对下一个 POI 访问的倾向。根据顺序关系图G s , u \mathcal{G}_{s,u} G s , u ,论文使用Gated Graph Neural Networks (GGNNs)进行聚合:
h v ( 1 ) = [ x i ⊤ , 0 ] ⊤ a v t = A v ⊤ [ h 1 ( t − 1 ) ⊤ , ⋯ , h ∣ V ∣ ( t − 1 ) ⊤ ] ⊤ + b z v t = σ ( W z a v ( t ) + U z h v ( t − 1 ) ) r v t = σ ( W r a v ( t ) + U r h v ( t − 1 ) ) h v ( t ) ~ = tanh ( W o a v ( t ) + U o ( r v t ⊙ h v ( t − 1 ) ) ) h v ( t ) = ( 1 − z v t ) ⊙ h v ( t − 1 ) + z v t ⊙ h v ( t ) ~ \begin{aligned}
h_v^{(1)} &= [x_i^\top, 0]^\top \\
a_v^t &= A_v^\top [h_1^{(t-1)\top}, \cdots, h_{\vert\mathcal{V}\vert}^{(t-1)\top}]^\top + b \\
z_v^t &= \sigma(W^z a_v^{(t)} + U^z h_v^{(t-1)}) \\
r_v^t &= \sigma(W^r a_v^{(t)} + U^r h_v^{(t-1)}) \\
\widetilde{h_v^{(t)}} &= \tanh(W_o a_v^{(t)} + U_o(r_v^t \odot h_v^{(t-1)})) \\
h_v^{(t)} &= (1 - z_v^t) \odot h_v^{(t-1)} + z_v^t \odot \widetilde{h_v^{(t)}}
\end{aligned}
h v ( 1 ) a v t z v t r v t h v ( t ) h v ( t ) = [ x i ⊤ , 0 ] ⊤ = A v ⊤ [ h 1 ( t − 1 ) ⊤ , ⋯ , h ∣ V ∣ ( t − 1 ) ⊤ ] ⊤ + b = σ ( W z a v ( t ) + U z h v ( t − 1 ) ) = σ ( W r a v ( t ) + U r h v ( t − 1 ) ) = tanh ( W o a v ( t ) + U o ( r v t ⊙ h v ( t − 1 ) )) = ( 1 − z v t ) ⊙ h v ( t − 1 ) + z v t ⊙ h v ( t )
简单去了解了一下 GGNN,主要特点在于使用 GRU 单元,并且将循环展开层数固定为T T T ,上面的公式中,z v t z_v^t z v t 和r v t r_v^t r v t 可以理解为 update gate 和 reset gate。
最后得到顺序关系编码的 POI 表示:
H s , u = [ h u , 1 ( t ) , h u , 2 ( t ) , ⋯ , h u , ∣ s u ∣ ( t ) ] H_{s,u} = [h_{u,1}^{(t)}, h_{u,2}^{(t)}, \cdots, h_{u, \vert s_u\vert}^{(t)}]
H s , u = [ h u , 1 ( t ) , h u , 2 ( t ) , ⋯ , h u , ∣ s u ∣ ( t ) ]
Soft-attention Mechanism
在对用户访问序列中构建的两个图进行编码后,论文引入了一种软注意机制,根据当前目标 POI v t v_t v t 更好地聚合编码。对于地理图表示H g , u = [ h 1 , h 2 , ⋯ , h ∣ s u ∣ ] H_{g,u} = [h_1, h_2, \cdots, h_{\vert s_u\vert}] H g , u = [ h 1 , h 2 , ⋯ , h ∣ s u ∣ ] ,使用v t v_t v t 对应的隐藏层表示h t h_t h t 作为 query:
w i = α g ⊤ σ ( Q g h t + K g h i ) e g , u = ∑ i = 1 ∣ s u ∣ w i h i \begin{aligned}
w_i &= \alpha_g^\top \sigma(Q_gh_t + K_gh_i) \\
e_{g,u} &= \sum_{i=1}^{\vert s_u \vert} w_ih_i
\end{aligned}
w i e g , u = α g ⊤ σ ( Q g h t + K g h i ) = i = 1 ∑ ∣ s u ∣ w i h i
其中α \alpha α 表示 sigmoid 函数,Q g , K g ∈ R D × D Q_g,K_g\in\mathbb{R}^{D\times D} Q g , K g ∈ R D × D 分别为 query 和 key。类似地,对于H s , u = [ h 1 ′ , h 2 ′ , ⋯ , h ∣ s u ∣ ′ ] H_{s,u} = [h'_1, h'_2, \cdots, h'_{\vert s_u\vert}] H s , u = [ h 1 ′ , h 2 ′ , ⋯ , h ∣ s u ∣ ′ ] ,使用v t v_t v t 对应的初始化 Embedding 表示x t x_t x t 作为 query:
w i ′ = α s ⊤ σ ( Q s x t + K s h i ′ ) e s , u = ∑ i = 1 ∣ s u ∣ w i ′ h i ′ \begin{aligned}
w'_i &= \alpha_s^\top \sigma(Q_sx_t + K_sh'_i) \\
e_{s,u} &= \sum_{i=1}^{\vert s_u \vert} w'_ih'_i
\end{aligned}
w i ′ e s , u = α s ⊤ σ ( Q s x t + K s h i ′ ) = i = 1 ∑ ∣ s u ∣ w i ′ h i ′
Self-supervised Disentanglement
由于序列效应和地理效应对相邻访问的 POI 有不同的影响,因此必须将e g , u e_{g,u} e g , u 和e s , u e_{s,u} e s , u 这两种表示相互分离。具体来说,论文使用两个 readout 函数处理图传播层的输出。论文选择均值池作为 readout 函数,分别得到带有地理位置偏好的p g , u p_{g,u} p g , u 和带有用户历史兴趣偏好的p s , u p_{s,u} p s , u 。
p g , u = READOUT ( { x j ∣ v j ∈ N s u } ) = 1 ∑ v i ∈ s u ∣ N i ∣ ∑ v i ∈ s u ∑ v j ∈ N i x j p s , u = READOUT ( { x i ∣ v i ∈ s u } ) = 1 ∣ s u ∣ ∑ v i ∈ s u x i \begin{aligned}
p_{g,u} &= \text{READOUT}(\{ x_j \vert v_j \in \mathcal{N}_{s_u} \}) = \frac{1}{\sum_{v_i\in s_u}\vert\mathcal{N}_i\vert} \sum_{v_i\in s_u} \sum_{v_j \in \mathcal{N}_i} x_j \\
p_{s,u} &= \text{READOUT}(\{ x_i \vert v_i \in s_u \}) = \frac{1}{\vert s_u \vert} \sum_{v_i \in s_u} x_i
\end{aligned}
p g , u p s , u = READOUT ({ x j ∣ v j ∈ N s u }) = ∑ v i ∈ s u ∣ N i ∣ 1 v i ∈ s u ∑ v j ∈ N i ∑ x j = READOUT ({ x i ∣ v i ∈ s u }) = ∣ s u ∣ 1 v i ∈ s u ∑ x i
接着为每个解构表示设计投影头,映射到另一个空间,获得不同方面的信息:
e g , u ′ = proj g ( e g , u ) , p g , u ′ = proj g ( p g , u ) e s , u ′ = proj s ( e s , u ) , p s , u ′ = proj g ( p s , u ) \begin{aligned}
e'_{g,u} &= \text{proj}_g(e_{g,u}), p'_{g,u} = \text{proj}_g(p_{g,u}) \\
e'_{s,u} &= \text{proj}_s(e_{s,u}), p'_{s,u} = \text{proj}_g(p_{s,u})
\end{aligned}
e g , u ′ e s , u ′ = proj g ( e g , u ) , p g , u ′ = proj g ( p g , u ) = proj s ( e s , u ) , p s , u ′ = proj g ( p s , u )
其中proj g , proj s : R D → R D \text{proj}_g,\text{proj}_s: \mathbb{R}^D \rightarrow \mathbb{R}^D proj g , proj s : R D → R D 为线性变换。
接着论文引入了如下对比损失:
L c o n = f ( e g , u ′ , p g , u ′ , p s , u ′ ) + f ( e s , u ′ , p s , u ′ , p g , u ′ ) \mathcal{L}_{con} = f(e'_{g,u},p'_{g,u},p'_{s,u}) + f(e'_{s,u},p'_{s,u},p'_{g,u})
L co n = f ( e g , u ′ , p g , u ′ , p s , u ′ ) + f ( e s , u ′ , p s , u ′ , p g , u ′ )
其中f ( ⋅ ) f(\cdot) f ( ⋅ ) 表示贝叶斯个性化排序损失(Bayesian Personalized Ranking, BPR):
f ( a , p , q ) = Softplus ( ⟨ a , q ⟩ − ⟨ a , p ⟩ ) f(a,p,q) = \text{Softplus}(\langle a,q \rangle - \langle a,p \rangle)
f ( a , p , q ) = Softplus (⟨ a , q ⟩ − ⟨ a , p ⟩)
BPR Loss 的主要思想就是让正样本和负样本的得分之差尽可能达到最大。
Location-based CTR Prediction Layer
在获得用户历史访问的解构表示e g , u , e s , u e_{g,u},e_{s,u} e g , u , e s , u 后,将其与 embedding x t x_t x t 和地理位置表示h t h_t h t 拼接并送入 MLP,得到预测结果:
y ^ = σ ( MLP ( CONTAT ( e g , u , e s , u , x t , h t ) ) ) \hat{y} = \sigma(\text{MLP}(\text{CONTAT}(e_{g,u},e_{s,u},x_t,h_t)))
y ^ = σ ( MLP ( CONTAT ( e g , u , e s , u , x t , h t )))
仔细看了一下代码,才反应过来,预测结果并不是去每个 POI 的概率,而是去 target POI 的概率,感觉好奇怪,这一下子也变得太简单了吧?真实场景是不可能知道 next POI 的吧。
使用交叉熵损失函数计算损失预测损失:
L r e c = − ∑ ( u , v ) y log y ^ + ( 1 − y ) log ( 1 − y ^ ) \mathcal{L}_rec = - \sum_{(u,v)} y\log\hat{y} + (1-y)\log(1-\hat{y})
L r ec = − ( u , v ) ∑ y log y ^ + ( 1 − y ) log ( 1 − y ^ )
最终的损失函数为:
L = L r e c + β ∗ L c o n \mathcal{L} = \mathcal{L}_rec + \beta*\mathcal{L}_{con}
L = L r ec + β ∗ L co n
为了优化模型,论文提出了一种课程学习方法,使训练过程遵循一个简单到难的过程。具体来说,使用动态增长对比损失权重作为 warm-up 来训练模型:
β = max { α , γ ∗ k } \beta = \max\{ \alpha, \gamma * k \}
β = max { α , γ ∗ k }
其中α \alpha α 和γ \gamma γ 均为超参数,k k k 表示当前课程数量。
实验
RQ1:与目前最好的基于位置的 CTR 预测相比,DisenPOI 的表现如何?DisenPOI 如何使用解构信息来缓解数据稀疏性问题?
RQ2:解构地理和顺序影响是影响模型性能的关键吗?不同的超参数的影响是什么?
RQ3:DisenPOI 如何有效地解构 POI 信息?DisenPOI 是否如预期对 POI 信息进行了解构?
CTR:click-through rate
Dataset
Result
不知道为什么,对比实验的模型大多都不是专门 POI 的推荐模型,而且评价指标也没有 Recall 之类的。
为了研究顺序和地理影响是否有助于缓解冷启动问题,论文随机将每个用户的访问序列划分为 5 份,对应 20%、40%、60%、80%、全列组。实验结果如下图所示:
Effectiveness of Dual Graphs
两张图的消融实验,以及探究距离阈值Δ d \Delta d Δ d 的影响
Difference Between Graph Propagation Methods
聚合方式的消融实验,以及 GNN 层数关系
Influence of Disentanglement And Curriculum Learning
Visualization and Case Study
总结
论文的主要想法是将顺序关系和地理位置关系进行解构,但实际上来看就是通过两个 GNN 进行单独处理,最后预测的时候拼接进行预测,以及一个辅助的对比损失,感觉并不是很有「解构」的味道?最后实验部分的内容感觉相当完善。
参考资料