STAM: A Spatiotemporal Aggregation Method for Graph Neural Network-based Recommendation

  • Zhen Yang, Ming Ding, Bin Xu, et al. STAM: A Spatiotemporal Aggregation Method for Graph Neural Network-based Recommendation[C]. In WWW 2022.
  • 清华大学、阿里巴巴 截稿日期:2021-10-21 通知日期:2022-01-13 会议日期:2022-04-25

    摘要(Abstract)

    1. 基于图神经网络的推荐系统正在蓬勃发展,其核心是确定邻域嵌入学习的聚合方法。现有技术通常侧重于如何从空间结构信息的角度来聚合信息,但是关于邻居的时间信息的挖掘还不够充分。<br /> 在这项工作中,我们提出了一种时空聚合方法STAM,将时间信息有效地整合到邻居嵌入学习中。STAM从空间结构信息和时间信息的角度生成时空邻域嵌入,促进了从空间到时空聚合方法的发展。STAM利用缩放的点积注意来捕获一跳邻居的时间顺序,并使用多头注意力来在不同的潜在子空间上执行联合注意力。我们利用基于GNN推荐的STAM来学习用户和项目嵌入。大量的实验表明,与基于空间的聚合方法相比,STAM在基于GNN的推荐上有显著的改进,例如,在![](https://cdn.nlark.com/yuque/__latex/8a6e134ce891c3ef755d662d602518a1.svg#card=math&code=M%20R%20R%20%40%2020%20&id=SYTCf)方面,MovieLens提高了24%,Amazon提高了8%,Taobao提高了13%。有关代码访问[Https://github.com/zyang-16/STAM](Https://github.com/zyang-16/STAM)

    关键词(Keywords)

    时空聚合方法、自注意、基于GNN的推荐

    1 引言(Introduction)

    1. 推荐系统是进行个性化信息过滤的关键工具[656],已被应用于许多在线服务。推荐的本质是从过去的用户-项目交互中学习用户和项目的潜在表征,并预测用户未来与之交互的项目。大多数工作都将推荐作为矩阵补全任务[25]。协同过滤(CF)[3738]是一种传统的推荐方法,用于预测用户和项目之间的分数。矩阵分解(MF)[932]学习用户和项目的潜在向量来重构交互矩阵。由于深度学习的成功,最近的工作使用神经网络[821],如多层感知机(MLP),来捕获用户与物品之间的非线性交互[18]。近年来,图神经网络(GNN)引起了人们的极大兴趣[142444],其信息传播机制改善了下游任务,在许多具有挑战性的任务中显示出了良好的前景。<br /> 由于图神经网络在学习图数据方面的优势,基于GNN的推荐[1174856]将用户与项目的交互建模为图,并利用GNN将空间结构信息合并到嵌入中。大量的基于GNN的推荐工作从空间结构信息的角度研究了良好的聚合方法来学习用户和项目的嵌入。现有的聚合方法大致分为四类[52]:(1)“平均池化”平等地对待邻居;(2)“度归一化”基于图结构给节点分配权重;(3)“注意力池化”利用注意力机制区分邻居的重要性;(4)“中心节点增强”考虑节点之间的亲和力,利用中心节点过滤邻居的消息。然而,上述方法忽略了邻居的时间信息,而邻居的时间信息在基于GNN的推荐中对聚合有重要贡献,但在邻居嵌入学习中没有编码。<br /> 在之前基于GNN的推荐[1174856]中,邻居聚合方法只涉及空间结构信息,而忽略了邻居的时间信息,无法捕捉用户的动态兴趣。电子商务平台的基本能力是收集丰富的用户行为历史和时间信息。然而,以往的基于GNN推荐的聚合方法还没有充分利用这些时间信息来学习高质量的嵌入信息,而只是展示了用户的内在兴趣。为了解决上述问题,我们将时间信息融入到聚合方法中,以促进聚合从空间向时空的发展。<br /> 为了充分理解这项工作的动机,我们给出了一个STAM的例子来说明时间信息在基于GNN的推荐中的重要作用。在图1中,我们从用户的行为历史中选择两个用户(AmySherry),分别为基于GNN的推荐构建用户-项目二部图和时间-顺序图。在基于空间的聚合中,AmySherry的聚合邻居嵌入是相同的,因为它们与相同的项目交互。与LightGCN类似,我们省略了非线性变换,并利用聚合邻居嵌入作为一跳用户嵌入。因此,推荐在基于空间的聚合中为AmySherry推荐相同的项目。但是,在基于时空的聚合中,为AmySherry推荐的项目是不同的。在基于时空的聚合中,我们将时间信息融入到邻居嵌入学习中,其中时间顺序在捕捉用户的动态兴趣和用户群随时间变化方面起着至关重要的作用。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406162270-1a4df679-03ef-409c-b3a2-62b645767421.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=395&id=u6073b1e7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=592&originWidth=1457&originalType=binary&ratio=1&rotation=0&showTitle=false&size=245558&status=done&style=none&taskId=uf9b06225-10d6-443f-93ad-a4b8eb752bb&title=&width=971.3333333333334)<br />图1 STAM的一个鼓舞人心的例子,说明了时间信息对于邻居聚合的重要性。<br /> 在这项工作中,我们突出了在基于GNN的推荐中仍然没有将时间信息用于邻居聚合的问题。我们提出了一种新的聚合方法--时空聚合方法(STAM),将时间信息集成到邻居嵌入学习中,而不是直接从空间结构聚合邻居信息,推动了聚合方法从空间向时空的发展。STAM从空间结构和时间顺序的角度生成时空邻居嵌入。在STAM算法中,缩放的点积注意力被用于捕获一跳邻居的时间顺序。为了进一步提高STAM的表现力,我们学习了STAM中的多头注意力,它对不同的潜在子空间进行联合注意。<br /> STAM不能改变基于GNN的推荐框架,它可以自然地嵌入到现有的基于GNN的推荐模型中。我们将STAM应用于基于GNN的推荐,并将其性能与典型的基于GNN的和序列的推荐模型进行比较。实验结果表明,在MRR@20方面,STAM优于最先进的基线,比如MovieLens的平均相对增长率为24%,Amazon的平均相对增长率为8%,Taobao的平均相对增长率为13%,表明了时间信息对聚合方法的重要性。此外,我们还与五种有代表性的聚合方法(四种基于空间的聚合和一种BiLSTM聚合)进行了对比实验,以验证STAM的有效性。<br />综上所述,这项工作的主要贡献如下:
  • 在基于GNN的推荐中,我们强调了时间信息对邻居聚合的重要性,促进了聚合方法从空间到时空的发展。

  • 我们提出了一种新的聚合方法STAM,将时间信息融入到邻居嵌入学习中,该方法可以自然地插入到现有的基于GNN的推荐模型中。
  • 我们进行了大量的实验来证明STAM比基于空间的聚合方法的优越性。

    2 预备知识和问题(Preliminaries and Problem)

    1. 在这一部分中,我们首先回顾了基于GNN的推荐框架。然后,我们给出了详细的问题陈述,它涉及带有时间信息的聚合方法。

    2.1 基于GNN的推荐(GNN-based recommendation)

    2.1.1 嵌入层(Embedding Layer)

    1. 基于GNN的推荐模型maintain一个项目嵌入矩阵![](https://cdn.nlark.com/yuque/__latex/583729f84eac7f5f2baae86d23aa904c.svg#card=math&code=%5Cmathbf%7BE%7D_%7B%5Cmathcal%7BV%7D%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7BN%20%5Ctimes%20d%7D&id=W0Dmf)和一个用户嵌入矩阵![](https://cdn.nlark.com/yuque/__latex/7bc5bc8e4105e4dd8c77e694e25d7ae7.svg#card=math&code=%5Cmathbf%7BE%7D_%7B%5Cmathcal%7BU%7D%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7BM%20%5Ctimes%20d%7D&id=GD09m),将one-hot表示映射到低维表示,其中![](https://cdn.nlark.com/yuque/__latex/6f5dde593f0bc27956e14b5eaec2ed17.svg#card=math&code=M&id=rvxhW)和![](https://cdn.nlark.com/yuque/__latex/459f3c80a50b7be28751b0869ef5386a.svg#card=math&code=N&id=ufBFN)表示用户节点和项目节点的数量。对于任何用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=kNTje)(项目![](https://cdn.nlark.com/yuque/__latex/2443fbcfeb7e85e1d62b6f5e4f27207e.svg#card=math&code=i&id=GDEet)),执行查找操作以获得嵌入向量![](https://cdn.nlark.com/yuque/__latex/65f5c094bace90c0dafb2e3100408ce6.svg#card=math&code=%5Cmathbf%7Be%7D_%7Bu%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bd%7D%5Cleft%28%5Cmathbf%7Be%7D_%7Bv%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bd%7D%5Cright%29&id=auror),其中![](https://cdn.nlark.com/yuque/__latex/56c1b0cb7a48ccf9520b0adb3c8cb2e8.svg#card=math&code=d&id=A9zw4)表示嵌入大小。这样的用户和项目嵌入矩阵用作初始状态,并且将通过聚合和传播来更新。

    2.1.2 嵌入聚合层(Embedding Aggregation Layer)

    1. 嵌入聚合层负责收集和聚合邻居的信息,这是基于GNN的推荐[174856]的重要组成部分。在用户-项目图中,有两种类型的聚合操作:项目聚合和用户聚合:<br />![](https://cdn.nlark.com/yuque/__latex/4eba098afaa5021705c22bc9a4c0e8ae.svg#card=math&code=%5Cbegin%7Baligned%7D%0A%26%5Cmathbf%7Bn%7D_%7Bu%7D%3Df_%7Bu%20%5Cleftarrow%20v%7D%5Cleft%28%5Cmathbf%7Be%7D_%7Bv%7D%20%5Cmid%20v%20%5Cin%20%5Cmathcal%7BN%7D_%7Bu%7D%5Cright%29%2C%20%5C%5C%0A%26%5Cmathbf%7Bn%7D_%7Bv%7D%3Df_%7Bv%20%5Cleftarrow%20u%7D%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%20%5Cmid%20u%20%5Cin%20%5Cmathcal%7BN%7D_%7Bv%7D%5Cright%29%20.%0A%5Cend%7Baligned%7D&id=QnPM5) (1)<br />其中![](https://cdn.nlark.com/yuque/__latex/8816b56ea8b89bb235e68edf7a60719a.svg#card=math&code=%5Cmathbf%7Be%7D_%7Bu%7D%2C%20%5Cmathbf%7Be%7D_%7Bv%7D&id=ixSVl)是用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=Zm4sM)和项目![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=qnGSz)的初始嵌入,![](https://cdn.nlark.com/yuque/__latex/f86d8f87b05721fec8220eb417d7abfa.svg#card=math&code=%5Cmathcal%7BN%7D_%7Bu%7D&id=MrXMs)表示与用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=UKEd8)(或![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=YOls6)在用户-项目图中的邻居)交互的项目集,![](https://cdn.nlark.com/yuque/__latex/e43fd30f7079ed6608f98c43db9fad9a.svg#card=math&code=%5Cmathcal%7BN%7D_%7Bv%7D&id=NerDZ)表示已与项目![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=kjWBp)(或![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=hye1W)的邻居)交互的用户集。![](https://cdn.nlark.com/yuque/__latex/37bb137fc78b6d7069efa0fb7b4918da.svg#card=math&code=%5Cmathbf%7Bn%7D_%7Bu%7D%20%2F%20%5Cmathbf%7Bn%7D_%7Bv%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7Bd%7D&id=C0sHj)是用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=iSQpA)/项目![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=KBQTV)的聚合邻居嵌入。![](https://cdn.nlark.com/yuque/__latex/faad55346425882be82d51746a394ecd.svg#card=math&code=f%28%5Ccdot%29&id=wEC6V)是聚合函数。

    2.1.3 嵌入传播层(Embedding Propagation Layer)

    1. 为了捕获用户和项目之间的高阶交互,多个传播层被堆叠以传播用户-项目图中的嵌入。设![](https://cdn.nlark.com/yuque/__latex/e1735958fae336ec3cadfb30b0577669.svg#card=math&code=%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28l%29%7D&id=iK2Rg)和![](https://cdn.nlark.com/yuque/__latex/9abaee4e51d5e25ea53f74583d2d1a98.svg#card=math&code=%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28l%29%7D&id=kvApY)分别表示用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=gEatM)和项目![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=wZioN)在第![](https://cdn.nlark.com/yuque/__latex/6945e109777fe3fd777e8254f0ec0f0c.svg#card=math&code=l&id=X7dfJ)传播层的嵌入。之后,第![](https://cdn.nlark.com/yuque/__latex/78524467efa7b13dc7d364ab564cdd27.svg#card=math&code=%28l%2B1%29&id=p83ru)层的嵌入依赖于两个步骤:聚合操作,将第![](https://cdn.nlark.com/yuque/__latex/6945e109777fe3fd777e8254f0ec0f0c.svg#card=math&code=l&id=kSJyG)层的邻居嵌入聚合到固定长度的嵌入向量![](https://cdn.nlark.com/yuque/__latex/933912bb8bde3d74534636122b82581d.svg#card=math&code=%5Cmathbf%7Bn%7D%5E%7B%28l%2B1%29%7D&id=UDpRC)中;更新步骤,将聚合的邻居嵌入和自身在第![](https://cdn.nlark.com/yuque/__latex/6945e109777fe3fd777e8254f0ec0f0c.svg#card=math&code=l&id=Oo4Wu)层的嵌入向量作为输入,并利用更新函数![](https://cdn.nlark.com/yuque/__latex/047e982db101986f4d2dfcc219673d10.svg#card=math&code=g%28%5Ccdot%29&id=jTXl0)来获得第![](https://cdn.nlark.com/yuque/__latex/78524467efa7b13dc7d364ab564cdd27.svg#card=math&code=%28l%2B1%29&id=avaEM)层的嵌入。从数学上讲,上述两个步骤可以定义为:<br />![](https://cdn.nlark.com/yuque/__latex/5e971686e64c93bb9f0f428bc8b9e8db.svg#card=math&code=%5Cbegin%7Baligned%7D%0A%26%5Cmathbf%7Bn%7D_%7Bu%7D%5E%7B%28l%2B1%29%7D%3Df_%7Bu%20%5Cleftarrow%20v%7D%5Cleft%28%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28l%29%7D%20%5Cmid%20v%20%5Cin%20%5Cmathcal%7BN%7D_%7Bu%7D%5Cright%29%20%5C%5C%0A%26%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28l%2B1%29%7D%3Dg%5Cleft%28%5Cmathbf%7Bn%7D_%7Bu%7D%5E%7B%28l%2B1%29%7D%2C%20%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28l%29%7D%5Cright%29%0A%5Cend%7Baligned%7D&id=PE9rc) (2)<br /> 类似地,嵌入在第![](https://cdn.nlark.com/yuque/__latex/78524467efa7b13dc7d364ab564cdd27.svg#card=math&code=%28l%2B1%29&id=R4Fs8)层![](https://cdn.nlark.com/yuque/__latex/17133ad7ce7c6fd4233477266130e220.svg#card=math&code=%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28l%2B1%29%7D&id=HXPNI)处的项目也通过上述两个步骤进行更新。

    2.1.4 预测层(Prediction Layer)

    1. 通过![](https://cdn.nlark.com/yuque/__latex/c895173d3be4872abf206be4268a58cb.svg#card=math&code=L&id=oJoaQ)层传播,每个用户/项目收集多个表示![](https://cdn.nlark.com/yuque/__latex/f9c616b1b1537546f089c251729a5af3.svg#card=math&code=%5Cleft%5C%7B%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%281%29%7D%2C%20%5Ccdots%2C%20%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28L%29%7D%5Cright%5C%7D%20%2F%5Cleft%5C%7B%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%281%29%7D%2C%20%5Ccdots%2C%20%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28L%29%7D%5Cright%5C%7D&id=pMg3G)。嵌入![](https://cdn.nlark.com/yuque/__latex/61617ec82e98d6654f5d6a23ce88d945.svg#card=math&code=%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%7D%20%2F%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D&id=kTu69)的最终用户/项目由融合函数![](https://cdn.nlark.com/yuque/__latex/5e1d6cace5764d1de9ac3d0f6dccf73a.svg#card=math&code=O%28%5Ccdot%29&id=P9K3d)计算,该融合函数可表示为:<br />![](https://cdn.nlark.com/yuque/__latex/f69311ad30db7c8675591399c0e7939e.svg#card=math&code=%5Cbegin%7Baligned%7D%0A%26%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%7D%3Do%5Cleft%28%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%281%29%7D%2C%20%5Ccdots%2C%20%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28L%29%7D%5Cright%29%2C%20%5C%5C%0A%26%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%3Do%5Cleft%28%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%281%29%7D%2C%20%5Ccdots%2C%20%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28L%29%7D%5Cright%29%20.%0A%5Cend%7Baligned%7D&id=UlapK) (3)<br /> 有些作品直接使用最后一层中的嵌入作为最终的嵌入[50],而另一些作品则将所有层的嵌入与连接[48]或加权合并操作[17]集成在一起。<br /> 此后,应用内积来估计用户对目标项目的偏好:<br />![](https://cdn.nlark.com/yuque/__latex/4e3c6825601ff2a8fbdf6b6c6181e57d.svg#card=math&code=%5Chat%7Br%7D_%7Bu%20v%7D%3D%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D&id=gVfZh) (4)<br /> 请注意,内积也用作推荐的相似性分数,以检索Top-K候选项目。

    2.1.5 联合训练(Joint Training)

    1. 给定具有嵌入向量![](https://cdn.nlark.com/yuque/__latex/1dfd9a8f337c4c3b609347ddb2f6dd92.svg#card=math&code=%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%7D%2C%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29&id=WTRWV)的训练样本![](https://cdn.nlark.com/yuque/__latex/838c98c94a4322ee88230f6f92e2ac73.svg#card=math&code=%28u%2Cv%29&id=Hw8DD),用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=OJTMM)和相互作用的项目![](https://cdn.nlark.com/yuque/__latex/a770a282bbfa0ae1ec474b7ed311656d.svg#card=math&code=v&id=o5fom)的可能性可以表示为:<br />![](https://cdn.nlark.com/yuque/__latex/145567441de7616c0287d6121e777c8f.svg#card=math&code=P_%7B%5Ctheta%7D%28v%20%5Cmid%20u%29%3D%5Cfrac%7B%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29%7D%7B%5Csum_%7Bv_%7Bn%7D%20%5Cin%20%5Cmathcal%7BV%7D%7D%20%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv_%7Bn%7D%7D%5E%7B%2A%7D%5Cright%29%7D%3D%5Cfrac%7B%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29%7D%7B%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29%2B%5Csum_%7Bv_%7Bn%7D%20%5Cin%20%5Cmathcal%7BV%7D_%7Bu%7D%5E%7B-%7D%7D%20%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv_%7Bn%7D%7D%5E%7B%2A%7D%5Cright%29%7D&id=r1t3Y) (5)<br /> 其中,![](https://cdn.nlark.com/yuque/__latex/98cac1897ddf33207673f83fa9077f40.svg#card=math&code=%5Cmathcal%7BV%7D&id=njr2u)表示所有项目的集合,![](https://cdn.nlark.com/yuque/__latex/77081f10eb85a6525b016d018f5b4969.svg#card=math&code=%5Cmathcal%7BV%7D_%7Bu%7D%5E%7B-%7D&id=pIuzL)是包含尚未与用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=NRbKw)交互的项目的项目集,![](https://cdn.nlark.com/yuque/__latex/bba68a2fba13131a7b8fd2db4ac298f5.svg#card=math&code=v_n&id=CO5IZ)表示用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=WtG95)未与其交互的negative item。<br /> 基于GNN的推荐的损失函数是最小化以下负对数似然:<br />![](https://cdn.nlark.com/yuque/__latex/01ee04f017d300a6564e7f3322858d4e.svg#card=math&code=%5Cmathcal%7BL%7D%3D%5Csum_%7B%28u%2C%20v%29%20%5Cin%20%5Cmathcal%7BD%7D%7D-%5Clog%20P_%7B%5Ctheta%7D%28v%20%5Cmid%20u%29&id=WbIQG) (6)<br />其中![](https://cdn.nlark.com/yuque/__latex/5903f53f4f8c62f99df77e4e3ccbc4e3.svg#card=math&code=%5Cmathcal%7BD%7D&id=HX54J)表示所有用户-项目交互,即用户-项目图中所有观察到的边。<br /> 然而,等式(5)的求和运算符在计算上是昂贵的。负采样作为处理这一问题的临界点,加快了训练进程。负采样通常将损失函数简化为:<br />![](https://cdn.nlark.com/yuque/__latex/65eb2f920e1f32803cb3deb0bd97237e.svg#card=math&code=%5Cmathcal%7BL%7D%3D%5Csum_%7B%28u%2C%20v%29%20%5Cin%20%5Cmathcal%7BD%7D%7D-%5Clog%20%5Cfrac%7B%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29%7D%7B%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%5Cright%29%2B%5Csum_%7Bv_%7Bn%7D%20%5Csim%20p_%7Bn%7D%28%5Ccdot%29%7D%20%5Cexp%20%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv_%7Bn%7D%7D%5E%7B%2A%7D%5Cright%29%7D&id=DpMWa) (7)<br />其中![](https://cdn.nlark.com/yuque/__latex/34e39b38ca8e6bec5a39974f15d59629.svg#card=math&code=v_%7Bn%7D%20%5Csim%20p_%7Bn%7D%28%5Ccdot%29&id=PMQlM)表示在一些先进工作[46,55,58]中提出的负采样策略,采样的负项目数远远少于总项目数。

    2.2 问题陈述(Problem Statement)

    1. 基于GNN的推荐将用户和项目之间的交互转化为二部图,并利用图学习方法来获得用户/项目嵌入。聚合方法在基于GNN的推荐的信息传播机制中起着决定性的作用。然而,以往的工作只关注从空间结构信息的角度聚合邻居信息,而忽略了时间信息。<br /> 因此,我们从用户的行为历史中收集时间信息,并建立用户的时序![](https://cdn.nlark.com/yuque/__latex/33cf0f6d80406589da0aaf619aba100a.svg#card=math&code=T_%7Bu%7D%3D%5Cleft%5C%7Bv_%7B1%7D%2C%20%5Ccdots%2C%20v_%7BS%7D%5Cright%5C%7D&id=gZOWN)和特定用户-项目对![](https://cdn.nlark.com/yuque/__latex/838c98c94a4322ee88230f6f92e2ac73.svg#card=math&code=%28u%2Cv%29&id=ecuO0)的项目的时序![](https://cdn.nlark.com/yuque/__latex/9ee1e42c850ba2a3036db18237506035.svg#card=math&code=T_%7Bv%7D%3D%5Cleft%5C%7Bu_%7B1%7D%2C%20%5Ccdots%2C%20u_%7BS%7D%5Cright%5C%7D&id=b5YKf),其中![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=veq6E)是一跳邻居的数量,并且![](https://cdn.nlark.com/yuque/__latex/3ad825152e3a25692ca5d9982a3b0143.svg#card=math&code=v_%7Bt%7D%20%2F%20u_%7Bt%7D&id=Pgv2B)记录第![](https://cdn.nlark.com/yuque/__latex/6945e109777fe3fd777e8254f0ec0f0c.svg#card=math&code=l&id=enw6o)个交互的项目/用户。在本文中,我们通过利用这些时间信息来改进现有的聚合方法,促进了聚合方法从空间向时空的发展。

    3 方法(Method)

    1. STAM是一种通用的聚合方法,它将时间信息融入到邻居嵌入学习中,可以自然地插入到现有的基于GNN的推荐模型中。STAM不是从空间结构上聚合邻居信息,而是同时从一跳邻居的空间结构和时间顺序的角度聚合邻居信息。<br /> 在这一部分中,我们首先提出了STAM,通过利用时间信息来学习每个用户-项目对![](https://cdn.nlark.com/yuque/__latex/838c98c94a4322ee88230f6f92e2ac73.svg#card=math&code=%28u%2Cv%29&id=Ge0sH)的时空邻居嵌入。然后,我们利用基于GNN的STAM推荐来学习针对用户和项目的高质量嵌入。在此基础上,论证了负采样STAM的最优化问题。最后,对STAM与前人相关工作的关系进行了模型分析,并对STAM的时间复杂度进行了分析。

    3.1 STAM

    image.png
    图2 STAM的整体架构
    为了将时间信息融入基于GNN的推荐模型的聚合方法中,我们设计了一种新的用于邻居嵌入学习的时空聚合方法(STAM)。图2描述了STAM的总体架构,它以时序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图5基于图神经网络的时空聚合推荐方法-STAM-2022 - 图6为输入,输出从一跳邻居生成的时空邻居嵌入。具体地,我们首先从每个用户-项目对基于图神经网络的时空聚合推荐方法-STAM-2022 - 图7的连通的一跳邻居构造两个关键的时间顺序,包括用户的时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图8和项目的时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图9,其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图10是时间顺序的长度。然后,执行查找操作以获得每个时间顺序的初始嵌入,即,时间顺序嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图11基于图神经网络的时空聚合推荐方法-STAM-2022 - 图12基于图神经网络的时空聚合推荐方法-STAM-2022 - 图13具有维度基于图神经网络的时空聚合推荐方法-STAM-2022 - 图14。请注意,初始嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图15基于图神经网络的时空聚合推荐方法-STAM-2022 - 图16是从第2.1节提到的嵌入层获得的。
    STAM的首要目标是从每个用户-项目对基于图神经网络的时空聚合推荐方法-STAM-2022 - 图17的一跳邻居处学习时空邻居嵌入。为了实现这一目标,我们利用已成为序列建模的关键部分的按比例的点积注意力[43],将queries基于图神经网络的时空聚合推荐方法-STAM-2022 - 图18、keys基于图神经网络的时空聚合推荐方法-STAM-2022 - 图19和values基于图神经网络的时空聚合推荐方法-STAM-2022 - 图20作为输入表示。queries、keys和values分别通过线性投影矩阵基于图神经网络的时空聚合推荐方法-STAM-2022 - 图21基于图神经网络的时空聚合推荐方法-STAM-2022 - 图22基于图神经网络的时空聚合推荐方法-STAM-2022 - 图23投影到不同的空间。此外,我们还使用位置编码[10]将时间信息编码到缩放点积注意中,即时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图24基于图神经网络的时空聚合推荐方法-STAM-2022 - 图25分别具有绝对时间位置嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图26基于图神经网络的时空聚合推荐方法-STAM-2022 - 图27,其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图28表示位置基于图神经网络的时空聚合推荐方法-STAM-2022 - 图29处的位置向量。将时间位置嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图30与时间顺序嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图31相结合,分别得到用户和项目的时间输入嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图32基于图神经网络的时空聚合推荐方法-STAM-2022 - 图33。这里,我们将时间输入嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图34一起打包成矩阵基于图神经网络的时空聚合推荐方法-STAM-2022 - 图35基于图神经网络的时空聚合推荐方法-STAM-2022 - 图36,作为输入被馈送给STAM进行时空邻居嵌入学习。因此,以用户的时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图37为例,缩放的点积注意力函数表示为:
    基于图神经网络的时空聚合推荐方法-STAM-2022 - 图38 (8)
    其中,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图39是时间输入嵌入矩阵,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图40表示一跳邻居的输出嵌入矩阵,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图41基于图神经网络的时空聚合推荐方法-STAM-2022 - 图42基于图神经网络的时空聚合推荐方法-STAM-2022 - 图43是应用于每个用户-项目对基于图神经网络的时空聚合推荐方法-STAM-2022 - 图44的共享权重转换。
    类似地,项目的时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图45的输出嵌入矩阵基于图神经网络的时空聚合推荐方法-STAM-2022 - 图46可以表示为:
    基于图神经网络的时空聚合推荐方法-STAM-2022 - 图47 (9)
    为了进一步提高STAM的表达能力,我们采用多头注意力来代替单一的注意函数,从不同的潜在视角捕获时间信息。在前人的工作[7,27,43]中已经应用了多头注意力,共同注意来自不同表征子空间的信息。这样的注意技术被广泛用于通过利用多个独立的注意头来改善注意力机制的多样性,所述多个独立注意头与不同的、可学习的线性投影矩阵一起对输入嵌入进行操作。此外,多头注意还促进了STAM的能力和稳定性。具体地说,多头注意力首先利用各种线性投影矩阵将时间输入嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图48投影到基于图神经网络的时空聚合推荐方法-STAM-2022 - 图49子空间,然后并行使用基于图神经网络的时空聚合推荐方法-STAM-2022 - 图50缩放的点积注意力函数来生成一跳邻居的输出嵌入矩阵。这些嵌入矩阵可以连接(concatenated)以产生组合的相邻嵌入矩阵。最后,我们应用前馈神经网络进行维度变换。中心用户基于图神经网络的时空聚合推荐方法-STAM-2022 - 图51和中心项目基于图神经网络的时空聚合推荐方法-STAM-2022 - 图52的时空邻居嵌入可以计算为:
    基于图神经网络的时空聚合推荐方法-STAM-2022 - 图53 (10)
    其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图54基于图神经网络的时空聚合推荐方法-STAM-2022 - 图55表示多头注意产生的时空邻居嵌入,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图56表示来自第基于图神经网络的时空聚合推荐方法-STAM-2022 - 图57个缩放的点积注意函数的一跳邻域的输出嵌入矩阵。基于图神经网络的时空聚合推荐方法-STAM-2022 - 图58可以表示为基于图神经网络的时空聚合推荐方法-STAM-2022 - 图59,其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图60基于图神经网络的时空聚合推荐方法-STAM-2022 - 图61是可训练的参数。注意,时空邻居嵌入也可以以时间顺序的形式表示,例如基于图神经网络的时空聚合推荐方法-STAM-2022 - 图62基于图神经网络的时空聚合推荐方法-STAM-2022 - 图63
    此后,我们从上述时空邻居嵌入计算聚合邻居嵌入。这里,我们简单地利用平均池化操作来聚合时空邻居嵌入。在我们的实验中,我们发现时空邻居嵌入的平均池化带来了良好的性能。用于中心用户/项目的嵌入基于图神经网络的时空聚合推荐方法-STAM-2022 - 图64的聚合邻居可以被表示为:
    基于图神经网络的时空聚合推荐方法-STAM-2022 - 图65 (11)

    3.2 基于GNN的STAM推荐(STAM for GNN-based Recommendation)

    1. 3.1节中,我们设计了一种时空聚合方法(STAM),从空间结构和时间顺序的角度同时学习邻居嵌入。在这里,我们利用所提出的基于GNNSTAM推荐来学习用户和项目嵌入。与2.1节中详细描述的许多现有的基于GNN的推荐模型一样,我们还堆叠了多个STAM来捕获用户-项目二分图中的高阶交互。类似于LightGCN,一个基于GNN的推荐模型,我们也省略了非线性变换和聚合时空邻居嵌入作为中心节点嵌入。<br /> 然而,当从一跳邻居逐层传播时空邻居嵌入时,上述STAM将遭受指数级增加的存储消耗。这里,我们从时空邻居嵌入![](https://cdn.nlark.com/yuque/__latex/dc8ad5e098e1938ae4adcdb8bb4f245f.svg#card=math&code=%5Cmathbf%7Bh%7D_%7Bu%7D%20%2F%20%5Cmathbf%7Bh%7D_%7Bv%7D&id=L96CX)中学习时空注意权重矩阵![](https://cdn.nlark.com/yuque/__latex/3d91bf4ebb1fd5f6ac8e5187fb75a501.svg#card=math&code=%5CPhi%20%5Cin%20%5Cmathcal%7BR%7D%5E%7B%28M%2BN%29%20%5Ctimes%28M%2BN%29%7D&id=EMvh9),并将其整合到邻接矩阵![](https://cdn.nlark.com/yuque/__latex/f6e6ef9502be06a9363e9de574d2a9f9.svg#card=math&code=%5Cmathbf%7BA%7D%20%5Cin%20%5Cmathbb%7BR%7D%5E%7B%28M%2BN%29%20%5Ctimes%28M%2BN%29%7D&id=N5UFE)。在数学上,时空传播层的矩阵形式可以表示为:<br />![](https://cdn.nlark.com/yuque/__latex/d149b9b6b835303baf6ca7fc6b100f56.svg#card=math&code=%5Cmathbf%7Bh%7D%5E%7B%28l%2B1%29%7D%3D%5Cleft%28%5Cmathbf%7BD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%28%5Cmathbf%7BA%7D%20%5Codot%20%5CPhi%29%20%5Cmathbf%7BD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cright%29%20%5Cmathbf%7Bh%7D%5E%7B%28l%29%7D&id=KfP2f) (12)<br />其中![](https://cdn.nlark.com/yuque/__latex/157ce6280be215234163d916ce42ca9e.svg#card=math&code=%5Cmathbf%7Bh%7D%5E%7B%28l%2B1%29%7D&id=i2kCQ)是第![](https://cdn.nlark.com/yuque/__latex/78524467efa7b13dc7d364ab564cdd27.svg#card=math&code=%28l%2B1%29&id=hcROh)层的中心嵌入,⊙表示逐元素乘积,![](https://cdn.nlark.com/yuque/__latex/9dbc76bf179a997c5fcf48c57a8aa02a.svg#card=math&code=%5Cmathbf%7BD%7D&id=UQuR5)表示对角矩阵,其中每一项![](https://cdn.nlark.com/yuque/__latex/208eee499c331969ac31e03c939b75ed.svg#card=math&code=D_%7Bii%7D&id=LNUjr)表示邻接矩阵![](https://cdn.nlark.com/yuque/__latex/c915ec068f4cf626130b57bbf8f7ab65.svg#card=math&code=%5Cmathbf%7BA%7D&id=wSzAZ)的第![](https://cdn.nlark.com/yuque/__latex/2443fbcfeb7e85e1d62b6f5e4f27207e.svg#card=math&code=i&id=YPVHk)行向量中非零项的个数。<br /> 中心用户和项目的最终嵌入可以通过加权池化操作来计算。具体地说,池化函数用于通过在传播的![](https://cdn.nlark.com/yuque/__latex/c895173d3be4872abf206be4268a58cb.svg#card=math&code=L&id=aOY1v)层上操作来生成最终的用户/项目嵌入![](https://cdn.nlark.com/yuque/__latex/61617ec82e98d6654f5d6a23ce88d945.svg#card=math&code=%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%7D%20%2F%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D&id=wzTIc):<br />![](https://cdn.nlark.com/yuque/__latex/6b658eecd969ca56878fceb50f23a514.svg#card=math&code=%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%7D%3D%5Csum_%7Bl%3D0%7D%5E%7BL%7D%20%5Calpha_%7Bl%7D%20%5Cmathbf%7Bh%7D_%7Bu%7D%5E%7B%28l%29%7D%2C%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D%3D%5Csum_%7Bl%3D0%7D%5E%7BL%7D%20%5Calpha_%7Bl%7D%20%5Cmathbf%7Bh%7D_%7Bv%7D%5E%7B%28l%29%7D&id=sSww1) (13)<br />其中![](https://cdn.nlark.com/yuque/__latex/90329ede0a879382bd4410abd819d85e.svg#card=math&code=%5Calpha_%7Bl%7D%20%5Cgeq%200&id=zvAi0)表示第![](https://cdn.nlark.com/yuque/__latex/6945e109777fe3fd777e8254f0ec0f0c.svg#card=math&code=l&id=C14in)层表示在构成最终嵌入中的重要性。与LightGCN[17]类似,我们将![](https://cdn.nlark.com/yuque/__latex/b0974f0bb6bdf257714d0f1c288b6faa.svg#card=math&code=%5Calpha_%7Bl%7D&id=QVDIC)统一设置为![](https://cdn.nlark.com/yuque/__latex/1826d6c69d68d3eb030a030422940540.svg#card=math&code=1%2F%28L%2B1%29&id=McGMm),因为这项工作的重点不在![](https://cdn.nlark.com/yuque/__latex/b0974f0bb6bdf257714d0f1c288b6faa.svg#card=math&code=%5Calpha_%7Bl%7D&id=nnEBr)的选择上。

    3.3 STAM优化(Optimization with STAM)

    1. 为了优化STAM的参数,我们使用广泛采用的BPR损失[34]:<br />![](https://cdn.nlark.com/yuque/__latex/e876314594be34dc44cee29a9cf60936.svg#card=math&code=%5Cmathcal%7BL%7D%3D-%5Csum_%7B%5Csubstack%7B%28u%2C%20v%29%20%5Cin%20%5Cmathcal%7BD%7D%20%5C%5C%20v_%7Bn%7D%20%5Csim%20p_%7Bn%7D%28%5Ccdot%20%5Cmid%20u%29%7D%7D%20%5Cln%20%5Csigma%5Cleft%28%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv%7D%5E%7B%2A%7D-%5Cmathbf%7Be%7D_%7Bu%7D%5E%7B%2A%20%5Ctop%7D%20%5Cmathbf%7Be%7D_%7Bv_%7Bn%7D%7D%5E%7B%2A%7D%5Cright%29%2B%5Clambda%5C%7C%5CTheta%5C%7C_%7B2%7D%5E%7B2%7D&id=VIs1D) (14)<br />其中![](https://cdn.nlark.com/yuque/__latex/4084b75627b08e33eeaf0279213d535d.svg#card=math&code=%5Csigma%28%5Ccdot%29&id=v6Mxz)是Sigmoid函数,![](https://cdn.nlark.com/yuque/__latex/63150fb6060b0eb84fbefba4d29f5502.svg#card=math&code=%5CTheta&id=khCbh)是可训练参数,![](https://cdn.nlark.com/yuque/__latex/e520c061a407db472027709bf3f73290.svg#card=math&code=%5Clambda&id=lOm1q)控制![](https://cdn.nlark.com/yuque/__latex/12ea5d8dd1e9b2b63ca602dd183dde08.svg#card=math&code=L_2&id=z4PXY)正则化强度,![](https://cdn.nlark.com/yuque/__latex/6bb69bd301a5a80173a12085603b13ad.svg#card=math&code=v_%7Bn%7D%20%5Csim%20p_%7Bn%7D%28%5Ccdot%20%5Cmid%20u%29&id=pVnQW)代表负采样策略。

    3.4 模型分析(Model Analysis)

    1. 在这项工作中,我们提出STAM通过整合时间信息来聚合一跳邻居,并堆叠多个STAM来捕获基于GNN推荐的用户-项目图中的高阶交互。通过替换默认的聚合方法,STAM可以直接插入到现有的基于GNN的推荐模型中。在这里,我们介绍了STAM与以往相关作品的联系和区别。
  • STAM vs LightGCN。LightGCN[17]是最近提出的一种具有代表性的图卷积网络推荐模型,它通过线性聚合用户-项目交互图中的邻居来学习用户和项目嵌入。STAM和LightGCN都致力于为基于GNN的推荐学习细粒度的用户和项目嵌入。与仅捕获空间结构信息的LightGCN不同,我们支持通过利用STAM同时捕获空间和时间信息。

  • STAM vs SASRec。SASRec[22]是Transformer[43]的最新变体,它使用一组可训练的位置嵌入来对序列推荐的项目顺序进行编码。虽然STAM和SASRec都使用时间信息来学习用户和项目嵌入,但推荐类型不同。与SASRec的序列推荐不同,STAM侧重于基于GNN的推荐。此外,SASRec中的项目嵌入是通过嵌入的查找表执行的,而STAM中的项目嵌入是通过时空聚合方法迭代学习的。
  • STAM vs BERT4Rec。BERT4Rec[40]是一个序列推荐模型,它使用深度双向自注意来建模用户行为序列。尽管STAM和BERT4Rec都使用缩放点积注意力来建模时间信息,但STAM的重点是通过从空间结构和时间顺序的角度同时聚合一跳邻居的信息来改进聚合方法。不同的目标决定了不同的训练方法。BERT4Rec使用完形填空来预测掩蔽项,而STAM直接对采样的训练对进行BPR损失。
  • STAM vs DySAT。DySAT[36]是一种用于捕捉动态图结构演化的新型神经体系结构。DySAT将动态图结构建模为一系列图快照。然而,STAM中的时间信息是通过用户的行为历史来收集的。与DySAT通过堆叠结构和时间自注意层来计算节点表示不同,STAM利用所提出的时空聚合方法从空间结构和时间顺序的角度同时学习时空邻居嵌入。

    3.5 时间复杂度(Time Complexity)

    1. 与现有的许多基于GNN的推荐模型一样,对用户-项目图的时空聚合操作是主要的时间开销。由于STAM中使用的多头注意是可并行的,因此![](https://cdn.nlark.com/yuque/__latex/df976ff7fcf17d60490267d18a1e3996.svg#card=math&code=k&id=wGGXs)头的STAM的时间复杂度可以表示为![](https://cdn.nlark.com/yuque/__latex/d73fff3e82d1a20dcc55580a02e5e579.svg#card=math&code=O%28k%20S%29&id=eA6ao),其中![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=kiBlJ)是时间输入![](https://cdn.nlark.com/yuque/__latex/ca6284388c55d165e6524b136958cce4.svg#card=math&code=T_%7Bu%7D%20%2F%20T_%7Bv%7D&id=hHhAh)的长度。

    4 实验(Experiments)

    1. 在这一节中,我们给出了详细的实验设置和相应的实验结果,将STAM插入到基于GNN的推荐中,并与最新的推荐模型进行了比较。然后,我们进行了消融研究,特别是与以前的基于空间的聚合方法进行了比较。最后,我们分析了超参数的影响。

    4.1 实验设置(Experimental Setups)

    4.1.1 数据集(Datasets)

    1. 我们在从不同密度的真实平台上收集的三个广泛使用的数据集上进行了实验。表1显示了所有数据集的统计数据。有关数据集的介绍载于附录A.1。此外,我们还在附录A.2中描述了STAM的数据集拆分方法。<br />**表1 实验数据集的统计**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406296629-ce745e01-8847-439f-a767-79901d9c7faf.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=149&id=ubdbd86b9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=224&originWidth=918&originalType=binary&ratio=1&rotation=0&showTitle=false&size=59743&status=done&style=none&taskId=uda38361b-1229-49ca-8bc8-cd4418f8301&title=&width=612)

    4.1.2 评估指标(Evaluation Metrics)

    1. 我们使用Mean Reciprocal Rank (MRR)、Normalized Discounted Cumulative Gain (NDCG)和Hit Ratio (HR)对所有模型进行评估,这些都是在top-K推荐中广泛使用的评估指标[1854]。我们报告测试集中所有用户的平均指标,并通过对用户未交互的所有项目进行排名来计算指标。在我们的实验中,推荐列表K的长度被设置为2050。详细的评估方案见附录A.3

    4.1.3 基线(Baselines)

    1. 为了验证STAM的有效性,我们将STAM用于基于GNN的推荐,并对不同的推荐模型进行了对比实验,包括传统的(MostPopularBPRMF)、基于神经网络的(NeuMF)和基于GNN的(GC-MCPinSageNGCFLightGCN)。此外,我们还与GRU4RecCASERSASRecBERT4Rec四种典型的序列推荐模型进行了比较,对STAM的性能进行了评估。附录A.4提供了每个基线的详细描述。

    4.2 性能比较(Performance Comparison)

    4.2.1 与代表性模型的比较(Comparison with Representative Models)

    1. 我们将STAM用于基于GNN的推荐,并将其性能与表2中的三种典型模型进行比较。总的来说,STAM比基线有了显著的改进,这证实了我们的主张,即基于GNN的推荐中时间信息对于邻居聚合的重要性。此外,我们阐述了如下详尽的意见:<br />**表2 STAM和各种基准之间的性能比较**。表中的所有数字都是百分比数字,省略了'%'<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406393337-07365a8d-d717-4639-8d2e-dd9543703044.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=247&id=u5b19303b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=371&originWidth=1431&originalType=binary&ratio=1&rotation=0&showTitle=false&size=123834&status=done&style=none&taskId=u7ef01498-bd78-4886-b946-388370570cb&title=&width=954)
  • 传统的推荐模型(MostPop和BPRMF)在所有情况下都表现不佳。与MostPop相比,BPRMF表现出更好的性能。原因是BPRMF利用内积来建模具有潜在特征的用户-项目交互,而MostPop只利用数据集的属性进行推荐。

  • 显然,NeuMF在所有数据集上的表现都始终如一地优于传统模型,证明了用户和项目嵌入之间非线性特征交互的重要性。
  • 基于GNN的模型利用GNN来学习用户和项目的嵌入,并在大多数情况下实现了优于上述基线的性能。与GC-MC只采用平均池化聚合一阶邻居不同,NGCF和LightGCN通过图结构利用消息传播,在性能上取得了显著的提高。LightGCN的性能优于两种基于GNN的模型,这可能归因于摒弃了非线性变换。PinSage不是在完整的图上操作,而是使用邻域采样来对固定大小的邻居进行采样以进行聚合。这样的采样策略可能会由于牺牲一部分图信息而导致性能下降。
  • 与其他没有将时间信息集成到聚合中的基于GNN的推荐模型相比,用于基于GNN的STAM推荐在三个数据集和所有指标上实现了最佳性能。STAM是一种通用的时空聚合方法,可以自然地嵌入到现有的基于GNN的推荐模型中。本文总结了性能提高的原因:(1)引入时间信息从空间结构和时间顺序两个角度同时对邻居嵌入学习进行建模;(2)利用一种强大的注意机制(Scaled Dot-Product Attendence)捕获一跳邻居的时间顺序,并使用多头注意来提高表达能力;(3)通过堆叠多个STAM,使用消息传播机制来捕获高阶用户-项目交互。
  • 如表2所示,根据最强基线的MRR@20指标,基于GNN的STAM推荐在MoiveLens数据集上实现了24.32%的显著性能提升,在Amazon数据集上实现了7.78%的性能提升,在Taobao数据集上实现了12.5%的性能提升。这样的改进使得我们能够将时间信息整合到聚合中,从而为基于GNN的推荐中的用户和项目嵌入学习带来好处。

    4.2.2 与序列模型的比较(Comparison with Sequential Models)

    1. 在这里,我们还进行了实验,比较了STAM和四个有代表性的序列模型,包括GRU4RecCaserSASRecBERT4Rec。表3列出了STAM的总体性能和采用的基线,从中我们可以得出以下结论:<br />**表3 序列模型的STAM结果**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406440309-5d475afc-f1df-44d9-b9ba-9d048f89b57e.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=266&id=ud2683c8b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=399&originWidth=991&originalType=binary&ratio=1&rotation=0&showTitle=false&size=102133&status=done&style=none&taskId=u46d67037-6c5d-4f45-b205-c9feaaa6b8b&title=&width=660.6666666666666)
  • SASRec在大多数情况下都优于基于RNN的GRU4Rec模型和基于CNN的CASER模型,这证实了自注意机制在建模时间顺序方面的优越性。通过对BERT4Rec和SASRec的比较,我们发现了双向时间顺序模型的优越性。在STAM中,我们利用缩放的点积注意力来捕获一跳邻居的时间顺序,并从空间结构和时间顺序的角度学习时空邻居嵌入。

  • 根据表3中显示的结果,在大多数情况下,STAM的性能优于最佳基准BERT4Rec,但在某些评估指标上,它的性能不如BERT4Rec。尽管STAM和BERT4Rec都将缩放的点积注意力应用于建模时间信息,但STAM只利用一层注意力来捕获每个传播层的时间信息,而BERT4Rec堆叠了多个注意力层来学习更复杂的项目转换模式。总体而言,STAM的性能要好于BERT4Rec。这种改进可能归功于空间图结构,它可以利用消息传播来传播用户-项目图中的嵌入。

    4.3 消融研究(Ablation Study)

    1. 我们首先进行消融研究,以验证时间信息在基于GNN的推荐中的关键作用,然后探讨传播层数和输入长度的影响。

    4.3.1 STAM vs 以前的聚合方法(STAM vs Previous Aggregation Methods)

    1. 为了验证STAM的优越性,我们将STAM与之前的四种典型的基于空间的聚合方法进行了比较,这些方法包括“平均池化”、“注意力池化”、“度归一化”和“中心节点增强”。基于空间的聚合方法的详细说明见附录A.5。具体地说,我们利用STAM进行基于GNN的推荐,并用上述基于空间的聚合方法代替STAM进行对比实验。如图3所示,STAM明显优于所有基于空间的聚合方法,验证了捕获一跳邻居的时间顺序有利于邻居嵌入学习。此外,我们还对STAMGraphSAGE[14]中提出的LSTM聚合进行了关键的比较。我们采用BiLSTM[12]代替LSTM[1339]来提高聚合的表达能力。与BiLSTM聚合相比,STAM获得了更好的性能,这表明自注意机制是一种更强大的时间序列学习技术。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406534909-30ca110a-a110-4a8c-8f1a-9ae7f0a610df.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=235&id=u52352fef&margin=%5Bobject%20Object%5D&name=image.png&originHeight=352&originWidth=1323&originalType=binary&ratio=1&rotation=0&showTitle=false&size=183905&status=done&style=none&taskId=u784b9de0-60ab-4d28-a949-7748ec73c48&title=&width=882)<br />**图3 STAM和以前的聚合之间的结果**

    4.3.2 层数的影响(Impact of Layer Numbers)

    1. 为了分析传播层数的影响,我们在{1234}的范围内改变传播层数![](https://cdn.nlark.com/yuque/__latex/c895173d3be4872abf206be4268a58cb.svg#card=math&code=L&id=mwnnO)。如表4所示,用于基于GNN的STAM推荐从堆叠多个STAM以传播嵌入在用户-项目图上的时空邻居中受益。与许多基于GNN的推荐模型类似,堆叠过多的STAM也会带来过平滑的问题,即性能随着传播层数的增加而呈现峰值变化。<br />**表4 不同层数STAM效果的比较**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406491869-9d1455d0-afc8-48ef-a509-b06f26212dce.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=306&id=u281c627b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=459&originWidth=1309&originalType=binary&ratio=1&rotation=0&showTitle=false&size=115901&status=done&style=none&taskId=u5e2c1ec6-6e7f-4cd2-83c1-284e29f17f7&title=&width=872.6666666666666)

    4.3.3 输入长度的影响(Impact of Input Lengths)

    1. 我们进行了一个实验来分析输入长度![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=PxMPB)的影响,并在图4中展示了对MRR@20的实验结果。具体来说,我们在![](https://cdn.nlark.com/yuque/__latex/77d82d1b38edb44988ec4c3197ab0ece.svg#card=math&code=%5C%7B5%2C20%2C50%2C100%2C150%2C200%5C%7D&id=jLBTa)范围内搜索![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=Rdw2z),并在实验中保留最佳设置(MovieLens的![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=jtlpI)=200,Amazon的![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=iqFy4)=50,Taobao的![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=hWyto)=100)。从图4中可以清楚地看到,STAM的性能随输入长度的数量而略有波动。这表明STAM生成的时空邻居嵌入受一跳邻居的时间长度的影响较小。此外,我们观察到适当的输入长度![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=Uv08i)高度依赖于数据集的一跳邻居的平均长度,这使得我们能够根据数据集的属性来设置最优输入长度。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406581079-1291a5a6-a58a-4317-9018-b667259b3b68.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=213&id=u01ba6412&margin=%5Bobject%20Object%5D&name=image.png&originHeight=320&originWidth=1285&originalType=binary&ratio=1&rotation=0&showTitle=false&size=100198&status=done&style=none&taskId=u45043204-61d8-4887-8720-440cd8aae2d&title=&width=856.6666666666666)<br />**图4 分析输入长度**![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=bIIc1)**对插入STAM的基于GNN推荐的影响**

    4.4 参数敏感性(Parameter Sensitivity)

    1. 为了测试STAM的鲁棒性,我们通过改变两个最重要的超参数来可视化MRR@20曲线:多头注意力的头数![](https://cdn.nlark.com/yuque/__latex/df976ff7fcf17d60490267d18a1e3996.svg#card=math&code=k&id=i9wv9)和隐藏维度![](https://cdn.nlark.com/yuque/__latex/56c1b0cb7a48ccf9520b0adb3c8cb2e8.svg#card=math&code=d&id=Erz83)。图5说明了在MovieLens数据集上使用基于GNN的STAM推荐的性能。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12451788/1656406638171-6c8bc41a-6055-4165-a9a2-e2e14bebaa9b.png#clientId=u481fdfd3-feea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=271&id=FXEzl&margin=%5Bobject%20Object%5D&name=image.png&originHeight=406&originWidth=1025&originalType=binary&ratio=1&rotation=0&showTitle=false&size=56393&status=done&style=none&taskId=ub10ae1fa-660c-45d4-a996-0c55a4b6df8&title=&width=683.3333333333334)<br />**图5 STAM在MovieLens数据集上通过改变注意头数和隐藏维度的性能**

    4.4.1 多头注意力(Multi-head attention)

    1. 为了分析多头注意力的优势,我们在{124816}的范围内独立地改变注意头![](https://cdn.nlark.com/yuque/__latex/df976ff7fcf17d60490267d18a1e3996.svg#card=math&code=k&id=lur3s)的数量。总体而言,STAM在时空邻居嵌入学习中得益于多头注意力。最优性能在4个注意头的情况下稳定下来,这意味着STAM能够从不同的潜在子空间中充分捕获一跳邻居的时间顺序。总体而言,多头注意对STAM的表达能力起到了有益的作用。

    4.4.2 隐藏维度基于图神经网络的时空聚合推荐方法-STAM-2022 - 图66(Hidden Dimensionality 基于图神经网络的时空聚合推荐方法-STAM-2022 - 图67)

    1. 我们现在研究隐藏维度对基于GNNSTAM推荐的影响。我们将隐藏维度从16改变到256,同时为了公平起见保持最优超参数不变。明显的观察结果是,随着维度的增加,性能趋于收敛。直观地说,维度越大,性能越好,但维度越大,训练时间越长。因此,我们需要找到一个合适的维度来平衡性能和时间消耗之间的权衡。在我们的实验中,我们将STAM和各种基线的隐藏维度设置为64

    5 相关工作(Related Work)

    5.1 基于GNN的推荐(GNN-based Recommendation)

    1. 近年来,图神经网络(GNN)在推荐系统中取得了巨大的成功,表现出显著的性能改进,并促进了Web规模的应用。图神经网络能够通过迭代传播来捕捉用户-项目图中的高阶交互。GC-MC[1]将图卷积网络(GCN)[24]应用于用户-项目图,它通过一个卷积层来建模用户和项目之间的直接联系,而没有充分利用通过图结构传递的消息。STAR-GCN[57]堆叠相同的GCN块(即GC-MC),而不是直接堆叠多层GCN,这缓解了过平滑问题,并导致比GC-MC更好的性能。NGCF[48]通过在用户-项目图上传播嵌入来利用用户-项目图的结构,这导致了用户-项目图中高阶连通性的表达建模。最近,SGCN[49]论证了GCN的不必要的复杂性,它通过去除非线性并将多个权重矩阵压缩为一个权重矩阵来简化GCN。受到SGCN设计的启发,LightGCN[17]简化了GCN的设计,使其更简洁,更适合推荐,它通过在用户-项目交互图上线性传播用户和项目嵌入来学习用户和项目嵌入,并使用在所有层学习的嵌入的加权和作为最终嵌入。上述方法在完全图上应用GNN而无需邻域采样,保留了原有的图结构,但由于泛化能力较低而阻碍了网络规模的应用。PinSage[56]结合了基于随机游走的采样策略和图卷积来学习Pinterest图像推荐中项-项图上的嵌入。

    5.2 序列推荐(Sequential Recommendation)

    1. 顺序推荐捕捉成功项目之间的顺序模式,并推荐用户下一步可能点击的项目[42029354047]。一些工作采用马尔可夫链(MC)[1535]来捕获项目到项目的转换,这是基于最近点击的项目反映用户的动态偏好的假设。例如,FPMC[35]融合了MF项和项目-项目过渡项,以分别捕获长期偏好和短期过渡。由于递归神经网络(RNN)在序列建模方面的优势,一些工作使用RNN来对用户序列模式进行建模[192041]。GRU4Rec[20]利用门控循环单元(GRU)[5]来为基于会话的推荐建模点击序列。此外,基于CNNCaser[42]方法利用![](https://cdn.nlark.com/yuque/__latex/c895173d3be4872abf206be4268a58cb.svg#card=math&code=L&id=JSawf)最近项目的嵌入矩阵上的卷积运算来捕获高阶马尔可夫链。最近,一种新的序列模型Transformer在NLP任务上获得了最先进的性能[43],其提出的注意机制为序列推荐提供了一种新的方法[26,28]。SASRec[22]使用自注意技术对序列模式进行建模,并捕获长期语义。BERT4Rec[40]使用深度双向序列模型进行序列推荐。此外,一些研究试图通过连续的用户交互来推断动态的用户偏好[2,30,33,45]。随着GNNs的出现,一些工作将序列数据转换为序列图,并在序列图上进行消息传播来建模动态用户偏好[3,51,53]。

    6 讨论(Conclusion)

    1. 在本文中,我们提出了一种通用的时空聚合方法STAM来学习时空邻居嵌入,用于邻居嵌入学习。具体地说,STAM利用缩放的点积注意力来捕获一跳邻居的时间顺序,并使用多头注意来在不同的潜在子空间上执行联合注意力。我们为基于GNN的推荐堆叠了多个STAM来学习用户和项目嵌入,其中STAM不改变基于GNN的推荐的框架。在三个广泛使用的数据集上的实验结果表明,与基于空间的聚合方法相比,STAM在基于GNN的推荐上有显著的改进,可以嵌入到基于GNN的推荐中。

    A 附录(Appendix)

    1. 在附录中,我们首先报告STAM的实施说明。然后,我们详细介绍了数据集、数据集拆分和评估指标。接下来,提供对每条基线的详细描述。最后,我们介绍了五种有代表性的聚合方法,包括五种基于空间的聚合和一种BiLSTM聚合。<br />**实施细节(Implementation Details)**<br /> 通过在所有数据集上进行广泛的网格搜索来优化参数,并应用提前停止来通过验证集上的MRR@20分数来选择最佳模型。对于所有模型,我们使用学习率![](https://cdn.nlark.com/yuque/__latex/6d37072f45bdd016ff8db6ddde2c1dd5.svg#card=math&code=lr&id=BbwwT)=0.001的Adam优化[23]进行训练。用户和项目的嵌入维度设置为64,以实现性能和时间消耗之间的权衡,在![](https://cdn.nlark.com/yuque/__latex/15fcb654d7fe3d4f066fa520e6079960.svg#card=math&code=%5C%7B16%2C32%2C64%2C128%2C256%5C%7D&id=px3gj)范围内网格搜索确定。MoiveLens和Amazon数据集以及Taobao数据集的批量大小分别设置为1024和2048。BiLSTM的隐藏单元数设置为32。对于STAM,我们将注意头数设置为![](https://cdn.nlark.com/yuque/__latex/df976ff7fcf17d60490267d18a1e3996.svg#card=math&code=k&id=gWjS0)=4。![](https://cdn.nlark.com/yuque/__latex/12ea5d8dd1e9b2b63ca602dd183dde08.svg#card=math&code=L_2&id=XddWf)正则化系数在![](https://cdn.nlark.com/yuque/__latex/eb71a269ed6ac417eb2ff68b1f95f3f6.svg#card=math&code=%5Cleft%5C%7B10%5E%7B-5%7D%2C%2010%5E%7B-4%7D%2C%20%5Ccdots%2C%2010%5E%7B-1%7D%5Cright%5C%7D&id=mJx1k)中搜索。我们使用Xavier初始化器[11]来初始化模型参数。具有固定邻居数量的两个聚合层被应用于PinSage,并且对于NGCF和LightGCN,传播层数被设置为3。在PinSage中,两个传播层的邻居数分别设置为25和10。LightGCN的层组合系数统一设置为![](https://cdn.nlark.com/yuque/__latex/ef8930e8b583870d4b414f3ba73d7d34.svg#card=math&code=%5Cfrac%7B1%7D%7B1%2BL%7D&id=YVdCH),其中![](https://cdn.nlark.com/yuque/__latex/c895173d3be4872abf206be4268a58cb.svg#card=math&code=L&id=KLXv8)是传播层数。

    A.1 数据集(Datasets)

    我们使用三个公开可用的数据集来评估我们提出的STAM,详细描述如下所示。

  • MovieLens是一个广泛使用的公共电影评分数据集,用于一般推荐和序列推荐。我们使用ML-1M版本的MovieLens数据集,并丢弃相关交互少于5个的用户和项目。

  • Amazon是来自Amazon[16,31]的产品评论和产品元数据的集合。我们在一个名为Books的子集上进行实验,并对这些交互次数小于10的用户和项目进行过滤。
  • Taobao是来自Taobao[60]商业平台的用户行为数据集。数据集包含几种类型的用户行为,包括点击、购买、添加到购物车和商品偏好。在我们的实验中,我们只使用点击行为。

    A.2 数据集拆分(Dataset Splitting)

    1. 为了将时间信息融入到基于GNN推荐的聚合方法中,我们从用户的行为历史中收集时间信息,并建立用户的整个时间序列![](https://cdn.nlark.com/yuque/__latex/48c18cd46b9ca17a5f6ca04f7a1a90a7.svg#card=math&code=%5Cmathcal%7BT%7D_%7Bu%7D&id=M3LzG)。之后,我们根据时间戳将这些时间序列![](https://cdn.nlark.com/yuque/__latex/a02113f30fdf70dc6c1ef2d3cc60cd73.svg#card=math&code=%5Cmathcal%7BT%7D_%7Bu%28s%29%7D&id=xvigW)分成训练、验证和测试数据集。我们将每个用户的时间序列![](https://cdn.nlark.com/yuque/__latex/48c18cd46b9ca17a5f6ca04f7a1a90a7.svg#card=math&code=%5Cmathcal%7BT%7D_%7Bu%7D&id=Mz2K6)中的前70%的交互作为训练集,并将接下来的10%的交互作为验证集,以搜索所有方法的最佳超参数设置。其余20%的交互被用作测试集来评估推荐性能。<br /> 然后,我们介绍了用于训练的用户和项目的时间顺序![](https://cdn.nlark.com/yuque/__latex/8c79a2988ff48b0139d9a4ddbe7be597.svg#card=math&code=T_%7Bu%7D%3D%5Cleft%5C%7Bv_%7B1%7D%2C%20%5Ccdots%2C%20v_%7BS%7D%5Cright%5C%7D%20%2F%20T_%7Bv%7D%3D%5Cleft%5C%7Bu_%7B1%7D%2C%20%5Ccdots%2C%20u_%7BS%7D%5Cright%5C%7D&id=PiEGk),其中![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=FuVkD)是一跳邻居的数量。如果时间序列![](https://cdn.nlark.com/yuque/__latex/48c18cd46b9ca17a5f6ca04f7a1a90a7.svg#card=math&code=%5Cmathcal%7BT%7D_%7Bu%7D&id=iD13L)的长度小于![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=pFFKX),则在左侧重复添加一个“填充”项,直到长度为![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=AwqjS)。否则,我们将时间序列![](https://cdn.nlark.com/yuque/__latex/48c18cd46b9ca17a5f6ca04f7a1a90a7.svg#card=math&code=%5Cmathcal%7BT%7D_%7Bu%7D&id=M2BCV)截断到最后的![](https://cdn.nlark.com/yuque/__latex/55fc237afbe535f7d8434985b848a6a7.svg#card=math&code=S&id=UaoGn)项目,并构建用户的时间序列![](https://cdn.nlark.com/yuque/__latex/50495ceb4eb90a42172ecaeced4f2182.svg#card=math&code=T_%7Bu%7D%3D%5Cleft%5C%7Bv_%7B1%7D%2C%20%5Cldots%2C%20v_%7BS%7D%5Cright%5C%7D&id=yjFeX)。类似地,项目的时间顺序![](https://cdn.nlark.com/yuque/__latex/3666053a50b50a3f3e88646e83304b01.svg#card=math&code=T_%7Bv%7D%3D%5Cleft%5C%7Bu_%7B1%7D%2C%20%5Cldots%2C%20u_%7BS%7D%5Cright%5C%7D&id=j4a80)也可以通过上述操作来构建。

    A.3 评估方案(Evaluation Protocol)

    A.3.1 评估指标(Evaluation Metrics)

    1. 我们将用户![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=kUXEo)的推荐列表定义为![](https://cdn.nlark.com/yuque/__latex/a56fdd39e77f303117c5c1a580b7ab0d.svg#card=math&code=R_%7Bu%7D%3D%5Cleft%5C%7Br_%7Bu%7D%5E%7B1%7D%2C%20r_%7Bu%7D%5E%7B2%7D%2C%20%5Ccdots%2C%20r_%7Bu%7D%5E%7BK%7D%5Cright%5C%7D&id=U3eq6),其中![](https://cdn.nlark.com/yuque/__latex/28ee0abd136104f9e1eaac433600c7f1.svg#card=math&code=r_%7Bu%7D%5E%7Bi%7D&id=LUcol)代表基于预测分数在![](https://cdn.nlark.com/yuque/__latex/e25210670f8974be72421fa48b3754d9.svg#card=math&code=R_%7Bu%7D&id=pME5X)的第![](https://cdn.nlark.com/yuque/__latex/2443fbcfeb7e85e1d62b6f5e4f27207e.svg#card=math&code=i&id=qpnkJ)位置的排名。![](https://cdn.nlark.com/yuque/__latex/1f96a44e66fac346bde8c25379712ba2.svg#card=math&code=T_u&id=ESkFF)是测试数据中![](https://cdn.nlark.com/yuque/__latex/77c3adce895348f6083c425fe1ba2624.svg#card=math&code=u&id=DNDCd)的交互项目的集合。
  • MRR@K:Mean Reciprocal Rank (MRR)是正确推荐的项目基于图神经网络的时空聚合推荐方法-STAM-2022 - 图68的倒数排名的平均值。MRR指标考虑推荐排名的顺序,其中较大的MRR值表示正确的推荐位于推荐列表的顶部。当正确推荐的项目的排名超过K时,MRR被设置为0。

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图69 (15)
其中N表示测试数据中的用户数。

  • NDCG@K:Normalized Discounted Cumulative Gain (NDCG)是一种位置感知指标,它为较高的位置分配较大的权重。

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图70 (16)
其中,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图71是指标函数,而基于图神经网络的时空聚合推荐方法-STAM-2022 - 图72是归一化常数,表示ideal discounted cumulative gain (IDCG@K),这是DCG@K的最大可能值。

  • HR@K:Hit Ratio(HR)提供了至少可以收到一个正确推荐的用户的百分比。

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图73 (17)
其中,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图74是指标函数。

A.3.2 评估设置(Evaluation Setup)

  1. 对于序列模型,我们将测试序列作为输入,根据当前模型得到测试用户的嵌入。接下来,项目嵌入可以由当前模型表示。最后,我们通过对测试用户未交互的所有项目进行排名来计算指标。对于STAM,我们通过利用基于GNNSTAM推荐来获得用户和项目嵌入,然后通过对测试用户未交互的所有项目进行排名来计算指标。

A.4 基线(Baselines)

  1. 我们从推荐模型中收集各种基线,包括传统的(MostPopularBPRMF),基于神经网络的(NeuMF),基于图神经网络的(GC-MCPinSageNGCFLightGCN),以及基于序列的(GRU4RecCaserSASRecBERT4Rec)。
  • MostPopular是一种非个性化的静态方法,它根据流行度推荐排名靠前的项目。
  • BPRMF[34]是一种经典的隐式反馈数据的项目推荐的矩阵分解方法,它通过成对贝叶斯个性化排序(BPR)损失来优化矩阵分解。
  • NeuMF[18]是一个神经CF模型,它使用多个隐含层来捕获用户与项目的非线性特征交互。
  • GC-MC[1]只考虑了一跳邻居,它对一阶用户-项目交互进行建模,而忽略了原始用户和项目表示本身。
  • PinSage[56]使用基于随机游走的采样策略对固定大小的邻域进行采样,并通过图卷积传播信息,这可扩展到Web规模的推荐。
  • NGCF[48]通过消息传播对用户-项目图中的高阶连通性进行建模,并利用残差网络从不同层获得最终节点嵌入。
  • LightGCN[17]通过去掉特征变换和非线性激活来简化GCN结构,只使用线性邻域聚合和所有层嵌入的加权和作为最终嵌入。
  • GRU4Rec[20]是第一个使用RNN为基于会话的推荐建模顺序用户行为的工作。
  • Caser[42]提出了一种基于卷积神经网络的方法来捕获基于图神经网络的时空聚合推荐方法-STAM-2022 - 图75最近项目的序列结构,并取得了较好的序列推荐性能。
  • SASRec[22]使用自注意机制来从用户的动作历史中识别“相关”项目来预测下一项目,其中应用一组可训练的位置嵌入来编码序列中项目的顺序。
  • BERT4Rec [40]采用深度双向自注意对用户行为序列进行建模,并提出从左右两侧学习双向表征。此外,使用左右上下文预测掩蔽项的完形填空任务用于模型训练。

    A.5 聚合方法(Aggregation Methods)

    1. 我们从以前的基于GNN的推荐模型和图表示学习中收集了五种有代表性的聚合方法。聚集方法分为基于空间的聚合方法和基于时间的聚合方法。我们首先回顾了基于空间的方法,包括“平均池化”、“注意力池化”、“度归一化”和“中心节点增强”。然后,我们介绍了用于消融研究的BiLSTM聚合器。这里,我们以中心用户为例,学习聚合邻居嵌入![](https://cdn.nlark.com/yuque/__latex/efd95a8f47b82a8040bdc7f8434683c8.svg#card=math&code=%5Cmathbf%7Bn%7D_%7Bu%7D&id=DMrCl)。
  • 平均池化聚合(Mean Pooling Aggregator)。在基于GNN的推荐模型中,平均池化聚合平等地对待邻居,以反映用户偏好。平均池化聚合可以表示为:

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图76 (18)
其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图77是非线性激活函数,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图78是给定用户基于图神经网络的时空聚合推荐方法-STAM-2022 - 图79的邻居。

  • 注意力池化聚合(Attentive Pooling Aggregator)。正如GAT[44]中提出的,注意力池化聚合通过注意力机制区分邻居的重要性,并通过注意邻居来更新每个节点(用户和项目)的嵌入。注意力池化聚合被定义为:

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图80 (19)
其中,基于图神经网络的时空聚合推荐方法-STAM-2022 - 图81是注意力权重权重,公式如下:
基于图神经网络的时空聚合推荐方法-STAM-2022 - 图82 (20)
其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图83基于图神经网络的时空聚合推荐方法-STAM-2022 - 图84是可训练的参数。

  • 度归一化聚合(Degree Normalization Aggregator)。度归一化聚合根据图结构为节点分配权重。如LightGCN中所示,它省略了非线性转换,其中聚合邻居嵌入并基于图结构分配权重,该图结构可定义为:

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图85 (21)

  • 中心节点增强聚合(Central Node Augmentation Aggregator)。如NGCF所示,它决定了聚合邻居嵌入在中心节点之间的亲和度。具体地说,NGCF使用elementwise product来增强用户关心的项目的特征。以中心用户为例:

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图86 (22)
其中⊙表示逐个元素的乘法运算。

  • BiLSTM聚合(BiLSTM Aggregator)。在GraphSAGE中,LSTM聚合被用来对一跳邻居的时间顺序进行建模。然而,普通的LSTM只利用前面或过去的信息。一些工作[40,59]证明了单向模型是次优的,并且限制了隐藏表示的能力,其中每个项目只能编码来自先前项目的信息。双向LSTM(BiLSTM)[12]是对普通LSTM的改进,其中前向隐含层和后向隐含层相结合,可以访问先前和过去的信息。因此,我们使用BiLSTM从前后两个角度来捕捉时间顺序。BiLSTM将用户的时间顺序基于图神经网络的时空聚合推荐方法-STAM-2022 - 图87作为输入,并计算每个项目的隐藏状态向量:

基于图神经网络的时空聚合推荐方法-STAM-2022 - 图88 (23)
我们通过连接来自两个方向的隐藏状态来获得第基于图神经网络的时空聚合推荐方法-STAM-2022 - 图89项目的最终隐藏表示,
基于图神经网络的时空聚合推荐方法-STAM-2022 - 图90 (24)
基于图神经网络的时空聚合推荐方法-STAM-2022 - 图91是由BiLSTM层产生的输出向量基于图神经网络的时空聚合推荐方法-STAM-2022 - 图92组成的矩阵,其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图93是输入序列长度。邻居嵌入可以表示为:
基于图神经网络的时空聚合推荐方法-STAM-2022 - 图94 (25)
其中基于图神经网络的时空聚合推荐方法-STAM-2022 - 图95是可训练的参数向量。