前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CIKM'21序列推荐:时间切片+图神经网络学习用户和item的动态表征

CIKM'21序列推荐:时间切片+图神经网络学习用户和item的动态表征

作者头像
秋枫学习笔记
发布2022-09-19 11:43:52
7620
发布2022-09-19 11:43:52
举报
文章被收录于专栏:秋枫学习笔记

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进行融合(这部分是因为时间片本身是时序数据);另一方面,作者采用时序点建模方法,对历史行为序列的时间信息进行建模。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1 时间切片的图神经网络
  • 3.2 预测与训练
  • 3.3 辅助任务
  • 3.4 损失函数
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档