文章目录
前言
抛弃区块链后,2022年下半年开始投入推荐系统的怀抱。推荐系统的相关论文、代码、工具将在这一板块进行记录,文章仅作参考,主要为个人学习使用,若已有高质量文章将不再赘述。
论文信息
说明:这是一篇序列推荐。作者从两个角度写,第一个是较为常见的分为K个因素,第二个是加入时间跨度。 作者的想法难度不高,但是实现的步骤十分的不同,分离不同的因素又再次融合,甚至有一些繁琐。
paper地址: https://arxiv.org/abs/2207.13262
code: https://github.com/xlx0010/HGNN
概要
大多数采用图神经网络(GNN)的顺序推荐(SR)系统仅将用户的交互序列建模为没有层次结构的平面图,忽略了用户偏好中的各种因素。此外,先前的模型没有充分利用交互项之间的时间跨度,限制了SR性能增益。为了解决这些问题,我们提出了一种新的SR系统,采用分层图神经网络(HGNN)来模拟阶乘用户偏好。具体地,首先使用交互项之间的时间跨度来构造目标用户的时间跨度感知序列图(TSG)。接下来,TSG中的所有原始节点被软聚类为因子节点,每个节点代表用户偏好的某个因子。最后,所有因子节点的表示一起用于预测SR结果。我们在两个数据集上的大量实验证明,基于HGNN的阶乘用户建模比最先进的SR模型获得更好的SR性能。
背景
大多数现有的基于GNN的SR模型中的序列图被建模为没有层次结构的平面图,无法充分表示用户偏好的不同因素。已经证明,没有层次结构的图嵌入可能会对一些下游任务造成问题。
其次,大多数以前基于GNN的模型只按时间顺序构建序列图,忽略了序列中不同项目之间的具体时间跨度,这对准确的SR至关重要。例如,在电影推荐任务中,用户对电影的偏好可能会随时间而变化。这意味着在用户的分级(或观看的)电影列表中,两个分级电影之间的时间间隔越小,表示它们之间的一致性和转换概率越高。因此,时间跨度对于用户的下一次交互预测非常重要。
方法
提出了一种新的SR模型,该模型采用分层图神经网络(HGNN),其中用户序列图的表示是以分层方式而非平面方式学习的。具体来说,HGNN首先将图中的所有(项目)节点软聚类为多个因子节点(超级节点)。我们的实证研究发现,每个因素节点代表用户偏好的特定因素,这通常对应于多媒体推荐数据集中的项目类型(参见第3.6小节中的图3)。然后,通过在损失函数中添加基于熵的正则化器,尽可能独立地学习所有因子节点的嵌入,称为因子偏好表示。在预测层,这些独立的析因偏好表示一起用作用户的解纠缠表示,以更准确地预测目标用户和候选项之间的交互概率。此外,我们的模型中的序列图被构造为一个时间跨度感知序列图(TSG),其中每条边由两个交互项之间的时间跨度加权,以获得SR性能增益。
1、Timespan-aware Sequence Graph
两项之间的权重值:
2、Node Clustering Layer through HGNN
将xi投影到d个不同的特征:
计算两个项目之间的相关性,由特征相关性和时间跨度组成(如果节点j具有相似的特征或更小的时间跨度,则节点j与节点i的相关性更大,这符合SR的主要原理。):
然后归一化:
采用多头部注意机制将i的邻居的信息聚合为:
Wz是可学习的矩阵,结合上一步获得的邻居相关性,这里得到了每一个根据邻居聚合的item-embedding。随后作者总结了一下上面的计算过程:
Ws是N维K列的矩阵,正好对应的是N个item,K个不同的特征。然后算与目标项的相似性是按照不同factor计算的:
最后又进行整合,得到的是聚合后的向量和目标项的整体相似性:
3、Model Prediction
把上一步得到的相似性换了个方式表达:
下面开始解释:上一个阶段计算的是两个项目之间的时间差,这里用了全局时间差:
上面的B矩阵也是通过两个项目直接的时间差和聚合矩阵与当前item乘积之和。
这里其实就是把之前算出来的聚合向量和当前的向量计算相似性,在进行归一化,只不过是分成K维。最后的预测也呼之欲出:
4、Model Optimization
loss用的是BPR:
然后又来了一个多维的loss:
最后整合一下:
实验
效果还行,这里我想说一句,你搞的这么复杂,效果能不行吗。