image.png
Learning Dual Dynamic Representations on Time-Sliced User-Item Interaction Graphs for Sequential Recommendation
https://dl.acm.org/doi/pdf/10.1145/3459637.3482443
1. 背景
本文是图神经网络应用于序列推荐方向的文章,利用图神经网络挖掘用户和item之间的动态时序关系,主要包含以下创新点:
- 本文提出时间切片的图神经网络,从全局角度对丰富且高阶的用户-item交互进行建模,以获得更好的动态用户和项目表示。
- 将连续时间片的时序预测整合到整个模型中,以此捕获细粒度的时间信息。
2. 问题定义
R=\{r_{ui}\}_{M\times N}表示用户与item的交互,M和N表示User和Item的集合大小,有交互则为1,反之则为0
User:
u\in U
item:
i\in I
交互三元组:
\mathcal{T}=\{(u,i,t)\}
根据等时间差将
\mathcal{T}分为多个时间片
\mathcal{T}=\{\mathcal{T}^1,...,\mathcal{T}^T\}
一些用户和item在一个时间片内可能没有任何交互。在这种情况下,相应的用户和item表征将在该时间片内保持不变。
本文的推荐问题可以定义为下式:
\hat{y}_{ui}=f(u,i,\mathcal{T};\Theta)
3. 方法
如图所示为所提方法DRL-SRe的整体框架图,时间切片的图神经网络用于从序列数据中学习user和item的表征。将从时间序列中得到的表征和静态表征结合后用于预测。
3.1 时间切片的图神经网络
T个时间切片的图可以构建为
\mathcal{G}=\{\mathcal{G}^1,...,\mathcal{G}^s,...,\mathcal{G}^T\},
\mathcal{G}^s在第s时间段的
\mathcal{T}^s上构建。假设在第s个时间片中存在
M^s个User和
N^s个item,则节点特征矩阵为
X^s\in \mathbb{R}^{(M^s + N^s)\times d},邻接矩阵为
A^s\in \{0,1\}^{(M^s+N^s)\times (M^s+N^s)}。对于每一个时间切片的图数据,我们可以直接对其进行相应的GNN操作,然后对信息进行传播,如下式:
X_{l+1}^{s}=\hat{A}^{s} X_{l}^{s}
其中,
\hat{A}^{s}=D^{-0.5} A^{s} D^{-0.5}这里是典型的GCN公式,这里就不赘述了。经过多层的信息传播后,我们可以得到每一层的输出,即
\tilde{\boldsymbol{X}}^{s}=\left[\boldsymbol{X}_{0}^{s} ; \boldsymbol{X}_{1}^{s} ; \ldots ; \boldsymbol{X}_{L}^{s}\right]。不同层包含不同的语义,本文采用GRU从这些表征中得到User和Item的序列表征
\bar{X}_U^{s},\bar{X}_I^{s},公式如下,其中
GRU()|_{L+1}表示第L+1个迭代后的GRU的输出,
\Theta为可学习参数,
\tilde{X}_U^s,\tilde{X}_I^s的最初输入都为
\tilde{X}^s。
\bar{X}_{U}^{s}=\left.\operatorname{GRU}\left(\tilde{X}_{U}^{s} ; \Theta_{U}^{1}\right)\right|_{L+1}, \quad \bar{X}_{I}^{s}=\left.\operatorname{GRU}\left(\tilde{X}_{I}^{s} ; \Theta_{I}^{1}\right)\right|_{L+1}
将不同时间切片的都按照上式计算完毕后可以得到
\bar{X}_{U}=\left[\bar{X}_{U}^{1} ; \bar{X}_{U}^{2} ; \ldots ; \bar{X}_{U}^{T}\right]和
\overline{\boldsymbol{X}}_{I}=\left[\overline{\boldsymbol{X}}_{I}^{1} ; \overline{\boldsymbol{X}}_{I}^{2} ; \ldots ; \overline{\boldsymbol{X}}_{I}^{T}\right]。然后再用两个GRU来对动态变化的时间关系进行建模,如下式:
H_{U}=\operatorname{GRU}\left(\bar{X}_{U} ; \Theta_{U}^{2}\right), \quad H_{I}=\operatorname{GRU}\left(\bar{X}_{I} ; \Theta_{I}^{2}\right)
3.2 预测与训练
从时间切片的GNN中可以得到
H_U,H_I,对于User u和Item i可以得到
\boldsymbol{H}_{u}=\left[\boldsymbol{h}_{u}^{1} ; \boldsymbol{h}_{u}^{2} ; \ldots ; \boldsymbol{h}_{u}^{T}\right]和
\boldsymbol{H}_{i}=\left[\boldsymbol{h}_{i}^{1} ; \boldsymbol{h}_{i}^{2} ; \ldots ; \boldsymbol{h}_{i}^{T}\right],取时间片中最后一个时间步的表征作为user和item的动态表征,再结合静态表征,即用户画像这些特征,最后输入到全连接层进行预测,公式如下,激活函数采用ReLU,其中h是动态表征,e是静态表征。
\hat{y}_{u i}=\sigma\left(\operatorname{MLPs}\left(\boldsymbol{h}_{u}^{T} \oplus \boldsymbol{h}_{i}^{T} \oplus \boldsymbol{e}_{u} \oplus \boldsymbol{e}_{i} ; \Theta^{M L P}\right)\right)
损失函数依旧采用交叉熵损失函数,如下式:
\mathcal{L}_{c}=-\left(y_{u i} \log \hat{y}_{u i}+\left(1-y_{u i}\right) \log \left(1-\hat{y}_{u i}\right)\right)
3.3 辅助任务
为了捕获更细致的时序信息,防止得到的动态表征是次优的,这里提出了一个辅助时序任务来解决这个问题。本节所采用的的辅助任务为时序点建模,时序点建模可以在时间域上对序列数据进行建模,条件强度函数(
\lambda^*(t))是进行时序点建模的关键部分,密度函数如下,其中
t_j表示上一次事件或开始事件发生的时间。
f^{*}(t)=\lambda^{*}(t) \exp \left(-\int_{t_{j}}^{t} \lambda^{*}(\epsilon) d \epsilon\right)
在本文中,把时间片序列中的前一次的交互作为事件,即上式中的
t_j。用
[t_u^1,...,t_u^T]和
[t_i^1,...,t_i^T]表示用户和item的时间序列信息,以第s个时间片为例,构建两者的条件强度函数为下式,其中w,b为可学习参数
\begin{gathered}
\lambda_{u}^{*}(t)=\exp \left(w_{U} \boldsymbol{h}_{u}^{s}+\omega_{U}\left(t-t_{u}^{s}\right)+b_{U}\right) \\
\lambda_{i}^{*}(t)=\exp \left(w_{I} \boldsymbol{h}_{i}^{s}+\omega_{I}\left(t-t_{i}^{s}\right)+b_{I}\right)
\end{gathered}以第s个时间片为例,user的密度函数为下式,item的密度函数计算和user同理。
\begin{aligned}
&f_{u}^{*}(t)=\lambda_{u}^{*}(t) \exp \left(-\int_{t_{u}}^{t} \lambda_{u}^{*}(\epsilon) d \epsilon\right) \\
&=\exp \left\{\boldsymbol{w}_{U} \boldsymbol{h}_{u}^{s}+\omega_{U}\left(t-t_{u}^{s}\right)+b_{U}+\frac{1}{\omega_{U}} \exp \left(\boldsymbol{w}_{U} \boldsymbol{h}_{u}^{s}+b_{U}\right)\right. \\
&\left.-\frac{1}{\omega_{U}} \exp \left(\boldsymbol{w}_{U} \boldsymbol{h}_{u}^{s}+\omega_{U}\left(t-t_{u}^{s}\right)+b_{U}\right)\right\}
\end{aligned}此处的辅助任务是利用时序点建模,发掘相邻时间片之间的时序信息,因此本节的损失函数可以写成下式,每次计算当前时间片和下一个时间片之间的关系,前后分别为user和item。
\mathcal{L}_{p}=-\sum_{s=1}^{T-1} \log f_{u}^{*}\left(t_{u}^{s+1} \mid \boldsymbol{h}_{u}^{s}\right)-\sum_{s=1}^{T-1} \log f_{i}^{*}\left(t_{i}^{s+1} \mid \boldsymbol{h}_{i}^{s}\right)
3.4 损失函数
总体损失函数为两个损失函数的和,如下式,其中β为超参数,控制辅助任务的影响力。并且在训练过程中采用了dropout、L2正则项、Adam优化方式。
\mathcal{L}=\mathcal{L}_c+\beta \mathcal{L}_p
4. 实验结果
5. 总结
本文针对序列推荐问题,一方面,将历史行为序列等时间间隔地划分为多个时间片,然后通过GNN对每个时间片进行信息传播,并且针对不同层得到的表征利用GRU融合(这部分作者是试验出来的),针对不同时间片的表征采用GRU进行融合(这部分是因为时间片本身是时序数据);另一方面,作者采用时序点建模方法,对历史行为序列的时间信息进行建模。