【论文阅读】Next point-of-interest recommendation with auto-correlation enhanced multi-modal transformer network
authors:: Yanjun Qin, Yuchen Fang, Haiyong Luo, Fang Zhao, Chenxing Wang
container:: Proceedings of the 45th international ACM SIGIR conference on research and development in information retrieval
year:: 2021
DOI:: 10.1145/3477495.3531905
rating:: ⭐⭐⭐⭐
share:: false
comment:: 框架为 Transformer,计算序列自相关性,并考虑访问子序列,同时预测 POI 及其类别
前言
2022,SIGIR: Next point-of-interest recommendation with auto-correlation enhanced multi-modal transformer network
问题描述
分别给定用户集合U = { u 1 , u 2 , ⋯ , u ∣ U ∣ } U = \{ u_1, u_2, \cdots, u_{\vert U \vert} \} U = { u 1 , u 2 , ⋯ , u ∣ U ∣ } 以及 POI 集合L = { l 1 , l 2 , ⋯ , l ∣ L ∣ } L = \{ l_1, l_2, \cdots, l_{\vert L \vert} \} L = { l 1 , l 2 , ⋯ , l ∣ L ∣ } ,其中每个位置l i l_i l i 都有一个对应的( l a t , l o n ) (lat, lon) ( l a t , l o n ) 坐标相关联。
(check-in )一个 check-in 可以表示为c = ( u , l t , τ t ) c=(u,l_t,\tau_t) c = ( u , l t , τ t ) ,即用户u u u 在τ t \tau_t τ t 时刻访问地点l t l_t l t 。
(user trajectory )用户轨迹是由特定用户的一系列时间顺序的签到记录来定义的,即L u = { ( u , l t , τ t ) ∣ t = 1 , 2 , ⋯ , N } L_u = \{ (u, l_t, \tau_t) \vert t = 1,2,\cdots,N \} L u = {( u , l t , τ t ) ∣ t = 1 , 2 , ⋯ , N } 。类似地,有类别序列C u = { ( u , c t , τ t ) ∣ t = 1 , 2 , ⋯ , N } C_u = \{ (u, c_t, \tau_t) \vert t = 1,2,\cdots,N \} C u = {( u , c t , τ t ) ∣ t = 1 , 2 , ⋯ , N } 。
(next POI recommendation )给定每个用户u u u 的的活动轨迹L u , C u L_u, C_u L u , C u ,预测用户u u u 最可能去的 POI top-k k k 。
OverView
之前工作中存在的问题:
以往基于 RNN 的方法仅限于短期的连续访问,也就是说,它们几乎没有对时间线上远处的访问之间的隐性联系进行建模。
相似子序列在以前的方法中没有被重视。如图所示,绿圈和红圈中出现了相似的访问子序列。
POI 的类别和位置之间的交互是很重要的,因为下一个位置会受到类别的影响,如上图中用户购物后去了同一个酒吧。然而,现有的绝大多数算法都无法捕捉到 POI 和类别之间的跨模式知识。
论文提出了 auto-correlation enhanced multi-modal Transformer network (AutoMTN) 模型。论文使用 Transformer 来捕获 POI 层面的序列连续关系,同时,为了预测下一个 POI 的类别,论文使用了一个双通道的 Transformer 来同时预测 POI 及其类别。
此外,通过对 Transformer 中的 self-attention 进行修改,以捕获子序列之间的依赖关系。
最后,模型的核心是方向性的跨模式自动相关,它关注不同时间步骤的 POI 和类别序列之间的相互作用,并潜移默化地将子序列的信息从一种模式调整到另一种模式。
AutoMTN
模型架构如下图所示:
Embedding Layer
嵌入层将用户、类别、位置和时间信息进行编码,分别为e u ∈ R d , e l ∈ R d , e c ∈ R d , e τ ∈ R d e^u\in\mathbb{R}^d, e^l\in\mathbb{R}^d, e^c\in\mathbb{R}^d, e^\tau\in\mathbb{R}^d e u ∈ R d , e l ∈ R d , e c ∈ R d , e τ ∈ R d 。其中时间信息维度为 24,即将一天分为 24 个时间戳。POI 和类别的 embedding 为:
e P = e u + e l + e τ ∈ R d e C = e u + e c + e τ ∈ R d \begin{aligned}
e^P = e^u + e^l + e^\tau \in\mathbb{R}^d \\
e^C = e^u + e^c + e^\tau \in\mathbb{R}^d
\end{aligned}
e P = e u + e l + e τ ∈ R d e C = e u + e c + e τ ∈ R d
最后得到:
E ( L u ) = { e 1 P , e 2 P , ⋯ , e N P } ∈ R N × d E ( C u ) = { e 1 C , e 2 C , ⋯ , e N C } ∈ R N × d \begin{aligned}
E(L_u) = \{ e_1^P, e_2^P, \cdots, e_N^P \} \in\mathbb{R}^{N\times d} \\
E(C_u) = \{ e_1^C, e_2^C, \cdots, e_N^C \} \in\mathbb{R}^{N\times d}
\end{aligned}
E ( L u ) = { e 1 P , e 2 P , ⋯ , e N P } ∈ R N × d E ( C u ) = { e 1 C , e 2 C , ⋯ , e N C } ∈ R N × d
Auto-Correlation Layer
以往的工作主要是基于递归结构的,这总是忽略了非连续访问你的信息。尽管 self-attention 可以捕获点对点的相互作用,但它并不能提取子序列层面的相关信息。因此,论文通过 auto-correlation 来发现子序列之间的依赖关系,聚合类似的子序列。
Dependencies of Sub-sequences
自相关 可以反映一个 POI 序列与其ϵ \epsilon ϵ 滞后序列之间的时间延迟模式。序列X \mathcal{X} X 的延迟为ϵ \epsilon ϵ 的自相关R X X ( ϵ ) \mathcal{R}_{\mathcal{XX}}(\epsilon) R XX ( ϵ ) 为:
R X X ( ϵ ) = l i m N → ∞ 1 N ∑ t = 1 N X t X t − ϵ \mathcal{R}_{\mathcal{XX}}(\epsilon) = \underset{N\rightarrow\infty}{lim} \frac{1}{N} \sum_{t=1}^{N} \mathcal{X}_t\mathcal{X}_{t-\epsilon}
R XX ( ϵ ) = N → ∞ l im N 1 t = 1 ∑ N X t X t − ϵ
Time Delay Aggregation
论文计算所有滞后长度的自相关性,从中选择自相关性最高的k k k 个滞后长度,然后将这些选定的子序列对齐。聚合过程如下:
ϵ 1 , ⋯ , ϵ k = a r g T o p k ϵ ∈ { 1 , ⋯ , N } ( R Q , K ( ϵ ) ) R ~ Q , K ( ϵ 1 ) , ⋯ , R ~ Q , K ( ϵ k ) = S M ( R Q , K ( ϵ 1 ) , ⋯ , R Q , K ( ϵ k ) ) A C ( Q , K , V ) = ∑ i = 1 k R o l l ( V , ϵ i ) R ~ Q , K ( ϵ i ) \begin{aligned}
\epsilon_1, \cdots, \epsilon_k &= \underset{\epsilon\in\{1,\cdots,N\}}{argTopk}(\mathcal{R_{Q,K}}(\epsilon)) \\
\tilde{\mathcal{R}}_{\mathcal{Q,K}}(\epsilon_1), \cdots, \tilde{\mathcal{R}}_{\mathcal{Q,K}}(\epsilon_k) &= SM(\mathcal{R_{Q,K}}(\epsilon_1), \cdots, \mathcal{R_{Q,K}}(\epsilon_k)) \\
AC(\mathcal{Q,K,V}) &= \sum_{i=1}^{k} Roll(\mathcal{V, \epsilon_i})\tilde{\mathcal{R}}_{\mathcal{Q,K}}(\epsilon_i)
\end{aligned}
ϵ 1 , ⋯ , ϵ k R ~ Q , K ( ϵ 1 ) , ⋯ , R ~ Q , K ( ϵ k ) A C ( Q , K , V ) = ϵ ∈ { 1 , ⋯ , N } a r g T o p k ( R Q , K ( ϵ )) = SM ( R Q , K ( ϵ 1 ) , ⋯ , R Q , K ( ϵ k )) = i = 1 ∑ k R o ll ( V , ϵ i ) R ~ Q , K ( ϵ i )
其中A C ( ⋅ ) , S M ( ⋅ ) AC(\cdot), SM(\cdot) A C ( ⋅ ) , SM ( ⋅ ) 分别表示 auto-correlation 和 softmax;论文中的k k k 为log N \log N log N ;R o l l ( X , ϵ ) Roll(\mathcal{X},\epsilon) R o ll ( X , ϵ ) 将序列X \mathcal{X} X 与其ϵ \epsilon ϵ 延时序列对齐。
对于 POI 和类别序列的嵌入,其自相关机制可以表述为:
A P = A C ( E ( L u ) W Q P 1 , E ( L u ) W K P 1 , E ( L u ) W V P 1 ) A C = A C ( E ( C u ) W Q C 1 , E ( C u ) W K C 1 , E ( C u ) W V C 1 ) \begin{aligned}
A^P &= AC(E(L_u)W^{Q^{P_1}}, E(L_u)W^{K^{P_1}}, E(L_u)W^{V^{P_1}}) \\
A^C &= AC(E(C_u)W^{Q^{C_1}}, E(C_u)W^{K^{C_1}}, E(C_u)W^{V^{C_1}})
\end{aligned}
A P A C = A C ( E ( L u ) W Q P 1 , E ( L u ) W K P 1 , E ( L u ) W V P 1 ) = A C ( E ( C u ) W Q C 1 , E ( C u ) W K C 1 , E ( C u ) W V C 1 )
其中W Q P 1 , W K P 1 , W V P 1 , W Q C 1 , W K C 1 , W V C 1 ∈ R d × d W^{Q^{P_1}}, W^{K^{P_1}}, W^{V^{P_1}}, W^{Q^{C_1}}, W^{K^{C_1}}, W^{V^{C_1}} \in \mathbb{R}^{d\times d} W Q P 1 , W K P 1 , W V P 1 , W Q C 1 , W K C 1 , W V C 1 ∈ R d × d 为可学习矩阵,A P , A C ∈ R N × d A^P, A^C\in\mathbb{R}^{N\times d} A P , A C ∈ R N × d 分别为 POI 和类别的输出。
Cross-Model Auto-Correlation Layer
与以往的并行计算 POI 以及类别的方法不同的是,论文采用了跨模态自相关方法,使得一种模式能够从另一种模式中获取信息,即 POI 和类别能够从对方那里获得辅助信息。具体来说,将 POI 序列作为 query,类别作为 key 和 value,类别也是类似的:
M P = A C ( A P W Q P 2 , A C W K C 2 , A C W V C 2 ) M C = A C ( A C W Q C 2 , A P W K P 2 , A P W V P 2 ) \begin{aligned}
M^P &= AC(A^PW^{Q^{P_2}}, A^CW^{K^{C_2}}, A^CW^{V^{C_2}}) \\
M^C &= AC(A^CW^{Q^{C_2}}, A^PW^{K^{P_2}}, A^PW^{V^{P_2}})
\end{aligned}
M P M C = A C ( A P W Q P 2 , A C W K C 2 , A C W V C 2 ) = A C ( A C W Q C 2 , A P W K P 2 , A P W V P 2 )
其中W Q P 2 , W K P 2 , W V P 2 , W Q C 2 , W K C 2 , W V C 2 ∈ R d × d W^{Q^{P_2}}, W^{K^{P_2}}, W^{V^{P_2}}, W^{Q^{C_2}}, W^{K^{C_2}}, W^{V^{C_2}} \in \mathbb{R}^{d\times d} W Q P 2 , W K P 2 , W V P 2 , W Q C 2 , W K C 2 , W V C 2 ∈ R d × d 为可学习矩阵,M P , M C ∈ R N × d M^P, M^C\in\mathbb{R}^{N\times d} M P , M C ∈ R N × d 分别为 POI 和类别的输出。
Attention Predictor
论文基于M P , M C ∈ R N × d M^P, M^C\in\mathbb{R}^{N\times d} M P , M C ∈ R N × d 的学习表示来计算候选 POI 和类别的概率。
给定 POI 候选集合E ( L ) = { e 1 l , ⋯ , e ∣ L ∣ l } ∈ R ∣ L ∣ × d E(L) = \{ e_1^l, \cdots, e_{\vert L \vert}^l \} \in\mathbb{R}^{\vert L\vert\times d} E ( L ) = { e 1 l , ⋯ , e ∣ L ∣ l } ∈ R ∣ L ∣ × d ,类别候选集合E ( C ) = { e 1 c , ⋯ , e ∣ C ∣ c } ∈ R ∣ C ∣ × d E(C) = \{ e_1^c, \cdots, e_{\vert C \vert}^c \} \in\mathbb{R}^{\vert C\vert\times d} E ( C ) = { e 1 c , ⋯ , e ∣ C ∣ c } ∈ R ∣ C ∣ × d 以及 POI 距离矩阵D N × ∣ L ∣ D^{N\times\vert L\vert} D N × ∣ L ∣ ,计算如下:
Y ^ P = S ( S M ( E ( L ) M P T + D T d ) ) Y ^ C = S ( S M ( E ( C ) M C T d ) ) \begin{aligned}
\hat{Y}^P &= S(SM(\frac{E(L)M^{P^T} + D^T}{\sqrt{d}})) \\
\hat{Y}^C &= S(SM(\frac{E(C)M^{C^T}}{\sqrt{d}}))
\end{aligned}
Y ^ P Y ^ C = S ( SM ( d E ( L ) M P T + D T )) = S ( SM ( d E ( C ) M C T ))
其中S ( ⋅ ) S(\cdot) S ( ⋅ ) 表示最后一个维度的加权和。
最后使用交叉熵损失函数:
L = − 1 B ∑ b = 1 B y b P T log ( y ^ b P ) + η y b C T log ( y ^ b C ) \mathcal{L} = -\frac{1}{B} \sum_{b=1}^B y_b^{P^T} \log(\hat{y}_b^P) + \eta y_b^{C^T} \log(\hat{y}_b^C)
L = − B 1 b = 1 ∑ B y b P T log ( y ^ b P ) + η y b C T log ( y ^ b C )
其中y b P , y b C y_b^P, y_b^C y b P , y b C 分别为 POI 和类别的真实值,η \eta η 为超参数。
实验
Datasets
Results
总结
模型利用自相关关注较长时间的 POI 访问轨迹,并把访问子序列纳入考虑,算是主要的创新点,感觉想法还是挺好的。另外在同时预测 POI 和类别的时候,将两者交叉,从消融实验来看确实是有进步,但重点还是在自相关吧。
参考资料