关注我们,一起学习~
title:Disentangling Long and Short-Term Interests for Recommendation
link:https://arxiv.53yu.com/pdf/2202.13090.pdf
code:https://github.com/tsinghua-fib-lab/CLSR
from:WWW 2022
1. 导读
本文结合自监督方法提出CLSR模型来挖掘用户的长短期兴趣,并进行进一步的解耦。
1. 首先提出了两个独立的编码器来独立捕获不同时间尺度的用户兴趣。
2. 然后从交互序列中提取长期和短期兴趣代理,作为用户兴趣的伪标签。
3. 然后设计成对对比任务来监督兴趣表征与其相应兴趣代理之间的相似性。
4. 最后由于长期和短期兴趣的重要性是动态变化的,通过基于注意力的网络自适应地聚合它们进行预测。
2. 定义
令商品数为N,用户数为M,以
\{x^u\}_{u=1}^M 表示用户的交互数据集合,
x^u=[x_1^u,...,x_{T_u}^u] 表示用户
x^u 的交互数据,即商品列表。
输入:交互序列
输出:是否会点击商品的概率
3. 方法
3.1 用户兴趣建模 由于用户的长短期兴趣随时间的动态变化很大,因此将这两个方面分别建模而不是使用统一的表征来表达它们。长期兴趣是相对稳定的,而短期兴趣是动态的、经常变化的 。并且每次交互都由这两个方面以及目标商品决定。利用以下三个机制来建模,其中f1(),f2(),f3()分别对用户长期兴趣,短期兴趣和交互进行建模。其中U是用户,V为商品,Y表示交互。当前时间表示t,前一时刻表示为t-1。U中包含了用户ID和交互序列,三者的关系如图所示。
\zeta=\left\{\begin{array}{l}
U_{l}=f_{1}(U) \\
U_{s}^{(t)}=f_{2}\left(U_{s}^{(t-1)}, V^{(t-1)}, Y^{(t-1)}, U\right) \\
Y^{(t)}=f_{3}\left(U_{l}, U_{s}^{(t)}, V^{(t)}, U\right)
\end{array}\right. image.png
长期兴趣:长期兴趣相对稳定,因此这里是从整个序列中提取。 短期兴趣:随着用户不断与推荐商品进行交互,短期兴趣会不断变化。例如,用户可能会在点击某个商品后建立新的兴趣。同时,用户也可能逐渐失去某些兴趣。也就是说,短期利益是时间相关的变量,因此利用前一时刻的兴趣来建模当前时刻的兴趣。 交互预测:利用长短期兴趣和交互数据进行预测。 3.2 自监督实现 在本节中设计了两个独立的编码器来实现 𝑓1 和 𝑓2,它们学习长短期兴趣的表征。然后以通过自我监督来实现解耦。最后,基于注意力机制的自适应融合模型来完成𝑓3。CLSR 的概述如图 2 所示。
3.2.1 为长短期兴趣生成查询向量 \begin{array}{l}
q_{l}^{u}=\operatorname{Embed}(u) \\
q_{s}^{u, t}=\operatorname{GRU}\left(\left\{x_{1}^{u}, \cdots, x_{t}^{u}\right\}\right)
\end{array} 先对用户特征做embedding,经过GRU捕获随时间变化的关系。长短期兴趣分属于不同的编码器
\phi ,
\psi ,分别利用上述得到的两个embedding与交互序列,输入到两个编码器可以得到长短期兴趣表征,公式如下,
\begin{aligned}
\boldsymbol{u}_{l}^{t} &=\phi\left(\boldsymbol{q}_{l}^{u},\left\{x_{1}^{u}, \cdots, x_{t}^{u}\right\}\right) \\
\boldsymbol{u}_{s}^{t} &=\psi\left(\boldsymbol{q}_{s}^{u, t},\left\{x_{1}^{u}, \cdots, x_{t}^{u}\right\}\right)
\end{aligned} 3.2.2 长期兴趣编码器 图2(B)中是长期兴趣编码器
\phi 的过程,使用注意力机制,公式如下,其中W为可学习参数,
\tau_l 表示多层MLP,||表示拼接,E(x)表示商品的embedding。
\begin{aligned}
v_{j} &=\boldsymbol{W}_{\boldsymbol{l}} \boldsymbol{E}\left(x_{j}^{u}\right) \\
\alpha_{j} &=\tau_{l}\left(v_{j}\left\|\boldsymbol{q}_{l}^{u}\right\|\left(v_{j}-q_{l}^{u}\right) \|\left(v_{j} \cdot q_{l}^{u}\right)\right) \\
a_{j} &=\frac{\exp \left(\alpha_{j}\right)}{\sum_{i=1}^{t} \exp \left(\alpha_{i}\right)}
\end{aligned} 得到系数后,对序列中的embedding加权求和,公式如下,
u_l^t=\sum_{j=1}^t{a_j \cdot E(x^u_j)}
3.2.3 短期兴趣编码器 利用循环神经网络 捕获短期兴趣,其中W为可学习参数,ρ表示循环神经网络模型,例如LSTM,GRU等。
\begin{array}{l}
\left\{o_{1}^{u}, \ldots, o_{t}^{u}\right\}=\rho\left(\left\{E\left(x_{1}^{u}\right), \ldots, E\left(x_{t}^{u}\right)\right\}\right) \\
v_{j}={W}_{s} \boldsymbol{o}_{j}^{u}
\end{array} 利用长期兴趣中计算注意力系数的方式可以同样利用现有的v可以求得短期兴趣的注意力系数b。加权求和后得到短期兴趣embedding,如下,
u_s^t=\sum_{j=1}^t{b_j \cdot o_j}
3.2.4 自监督解耦长短期兴趣 因为上面是通过无监督的方式提取出长短期兴趣表征的,无法确保长短期兴趣的解耦,因此这一节采用自监督的方法来进行解耦。
计算整个交互历史的平均表征作为长期兴趣的代理,并使用最近𝑘次交互的平均表征作为短期兴趣的代理。利用代理来监督解耦,公式如下,其中E(x)表示交互序列中的商品embedding。
\begin{array}{l}
\boldsymbol{p}_{l}^{u, t}=\operatorname{MEAN}\left(\left\{x_{1}^{u}, \cdots, x_{t}^{u}\right\}\right)=\frac{1}{t} \sum_{j=1}^{t} E\left(x_{j}^{u}\right) \\
\boldsymbol{p}_{s}^{u, t}=\operatorname{MEAN}\left(\left\{x_{t-k+1}^{u}, \cdots, x_{t}^{u}\right\}\right)=\frac{1}{k} \sum_{j=1}^{k} E\left(x_{t-j+1}^{u}\right)
\end{array} 仅在序列长度大于阈值
l_t 时才计算代理,因为如果整个序列仅包含几个商品,则无需区分长期和短期。
l_t 和𝑘是超参数。
使用代理作为标签,可以利用它们来监督长短期兴趣的解耦。在编码器输出和代理之间进行对比学习,这要求学习到的长短期兴趣表征与其对应的代理更相似,而不是相反的代理。在图 2 (A) 中说明了对比任务。公式如下,以长期兴趣为例,长期兴趣保证和长期兴趣代理表征的相似度要大于长期兴趣和短期兴趣的表征,并且大于短期兴趣和长期兴趣代理之间的相似度。
\begin{array}{l}
\operatorname{sim}\left(u_{l}^{t}, p_{l}^{u, t}\right)>\operatorname{sim}\left(u_{l}^{t}, p_{s}^{u, t}\right) \\
\operatorname{sim}\left(p_{l}^{u, t}, u_{l}^{t}\right)>\operatorname{sim}\left(p_{l}^{u, t}, u_{s}^{t}\right) \\
\operatorname{sim}\left(u_{s}^{t}, p_{s}^{u, t}\right)>\operatorname{sim}\left(u_{s}^{t}, p_{l}^{u, t}\right) \\
\operatorname{sim}\left(p_{s}^{u, t}, u_{s}^{t}\right)>\operatorname{sim}\left(p_{s}^{u, t}, u_{l}^{t}\right)
\end{array} 本文采用BPR损失或Triplet loss来对上述的约束关系构建损失函数,公式如下,将上述u,p,q带入即可构建四个相应的损失函数。在BPR中sim()函数为内积,Triplet loss中为欧氏距离。
\begin{array}{l}
\mathcal{L}_{\mathrm{bpr}}(a, p, q)=\sigma(\langle a, q\rangle-\langle a, p\rangle) \\
\mathcal{L}_{\mathrm{tri}}(a, p, q)=\max \{d(a, p)-d(a, q)+m, 0\}
\end{array} 损失函数就是把四个损失函数相加,如下,其中f()表示两种损失函数之一。
\mathcal{L}_{\text {con }}^{u, t}=f\left(u_{l}, \boldsymbol{p}_{l}, \boldsymbol{p}_{s}\right)+f\left(\boldsymbol{p}_{l}, \boldsymbol{u}_{l}, \boldsymbol{u}_{s}\right)+f\left(\boldsymbol{u}_{s}, \boldsymbol{p}_{s}, \boldsymbol{p}_{l}\right)+f\left(\boldsymbol{p}_{s}, \boldsymbol{u}_{s}, \boldsymbol{u}_{l}\right)
3.2.5 自适应兴趣融合 长短期兴趣那个发挥更重要的作用取决于历史序列。例如,用户在不断浏览同一类别的商品时,主要受短期兴趣的驱动。同时,也取决于目标商品。例如,运动爱好者可能由于长期兴趣而点击推荐的自行车,即使在他/她浏览了几本书之后。因此,将历史序列 和目标商品 都包含在聚合器的输入中,其中历史序列用 GRU 压缩。基于注意力的自适应融合模型如图 2 (D) 所示,自适应的动态融合长短期兴趣。公式如下,其中σ为sigmoid函数,
\tau_f 表示MLP。
\begin{array}{l}
\boldsymbol{h}_{t}^{u}=\operatorname{GRU}\left(\left\{\boldsymbol{E}\left(x_{1}^{u}\right), \ldots, \boldsymbol{E}\left(x_{t}^{u}\right)\right\}\right) \\
\alpha=\sigma\left(\tau_{f}\left(\boldsymbol{h}_{t}^{u}\left\|\boldsymbol{E}\left(x_{t+1}^{u}\right)\right\| \boldsymbol{u}_{l}^{t} \| \boldsymbol{u}_{s}^{t}\right)\right. \\
\boldsymbol{u}^{t}=\alpha \cdot \boldsymbol{u}_{\boldsymbol{l}}^{t}+(1-\alpha) \cdot \boldsymbol{u}_{s}^{t}
\end{array} 最后经过两层MLP(图2 E)进行预测,公式如下,
\hat{y}^{t+1}{u,v}=MLP(u^t||E(v))
损失函数如下,
\mathcal{L}_{\mathrm{rec}}^{u, t}=-\frac{1}{N} \sum_{v \in O} y_{u, v}^{t+1} \log \left(\hat{y}_{u, v}^{t+1}\right)+\left(1-y_{u, v}^{t+1}\right) \log \left(1-\hat{y}_{u, v}^{t+1}\right)
结合之前的对比学习损失函数,总的损失函数如下,
\mathcal{L}=\sum_{u=1}^{M} \sum_{t=1}^{T_{u}}\left({\mathcal{L}}_{\mathrm{rec}}^{u, t}+\beta{\mathcal{L}}_{\mathrm{con}}^{u, t}\right)+\lambda\|\Theta\|_{2}
4. 结果