作者 | 上杉翔二 悠闲会 · 信息检索 整理 | NewBeeNLP
本篇文章继续整理这个系列Graph in Rec 的文章,以前博主整理过的系列可以见:
- 万物皆可Graph | 当推荐系统遇上图神经网络
- 万物皆可Graph | 当推荐系统遇上图神经网络(二)
- 万物皆可Graph | 当推荐系统遇上图神经网络(三)
这次更新最近SIGIR2021,博主自己刷过觉得还不错的几篇文章。分搜索和推荐两篇博文整理吧,这篇是关于推荐的三篇文章。
SURGE
- Sequential Recommendation with Graph Neural Networks
- https://arxiv.org/abs/2106.14226
这篇文章是做序列推荐的文章。motivation首先是
- 序列中的行为往往是隐式的、有噪声的偏好信号,它们不能充分反映用户的实际偏好。
- 用户的动态偏好随着时间的推移而迅速变化,因此很难在其历史序列中捕获用户模式。
因此作者提出SURGE,模型图如上,也挺清晰的架构。具体来说,SURGE
- Interest Graph Construction。将每个交互序列重新构造为一个兴趣图,如上图a。通过基于度量学习将松散的项目序列重新构建为紧密的项目-项目兴趣图,可以明确地整合和区分长期行为中不同类型的偏好。其中这里的重构是基于度量学习的cos来计算的:
其中w是权重,i,j是item的特征。然后对这个M值卡一个阈值来进行图的连边稀疏化。
- Interest-fusion Graph Convolutional Layer。对图动态进行兴趣融合,如上图b。在所构造的兴趣图上的卷积传播动态地融合了用户的兴趣,加强了重要的行为,减弱了噪声的行为。这里在聚合的时候会使用Cluster- and query-aware attention两种attention。
- Interest-extraction Graph Pooling Layer。对图动态进行兴趣提取,如上图b。考虑到用户在不同时刻的不同偏好,进行了动态图池操作,以合理地缩小图的大小。通过对所构造的图结构的粗化,将松散兴趣转化为紧兴趣(核心偏好),并保持其分布。
- Prediction Layer。进一步的建模和预测,如上图d。在合并后的图被压缩成简化的序列后,对增强的兴趣信号的演化进行建模,并预测下一个项目。
GMCF
- Neural Graph Matching based Collaborative Filtering
- paper:
这篇文章探讨user和item的属性相互,它们的交互作用(即在样本数据中的共现)可以显著提高各种推荐系统中的预测精度。作者任务交互分为两种:
- inner interactions内部交互--是仅用户属性之间或仅项目属性之间的交互;
- cross interactions交叉交互--是用户属性和项目属性之间的交互。
但是,现有的模型并没有区分这两种类型的属性交互,这种对属性交互类型的不认识不可避免地限制了现有工作的联合决策能力。
因此,作者提出GMCF,即同时考虑这两种类型。这会是一种符合推荐系统目标的方式来考虑属性交互:学习用户和项目特征(通过图形学习),并根据用户的特征(通过图形匹配)来匹配用户对项目的偏好。
如上图是作者画的区别图,左边GMCF是作者提出的模型,而右边的是现有工作范式。GMCF在图匹配结构中不同地对待属性交互,而现有的工作则平等地对待所有属性交互。模型图如下:
具体来说分为三个模块,
- Graph Construction。将每个用户和每个项表示为一个属性图,每个属性都是一个节点,每个成对的属性内部交互都是一条边。
- Node Matching based GNN。使用GNN分别根据用户属性图和项目属性图进行建模,它通过考虑消息传递的内部交互inner interactions z_{ij} ,和通过节点匹配的交叉交互cross interactions s_{ij} 。内部交互使用MLP来建模每个内部交互,
交叉交互使用Bi-Interaction来进行节点匹配,它保持了交互建模结果与属性相似性之间的单调增加的相关性,即如果用户属性在项目属性上的匹配得分很高,则它们具有相似的属性表示,
- Graph Matching。基于交叉交互,对节点层级上对两个属性图进行匹配,
然后内积可以得到最终的预测结果。
TASRec
- Temporal Augmented Graph Neural Networks for Session-Based Recommendations
- https://dl.acm.org/doi/abs/10.1145/3404835.3463112
这篇是做session推荐的短文。motivation是序列推荐在实时性上的几个困难,
- 实时载入很麻烦。将整个历史会话加载到内存中并一次训练模型会变得很昂贵,同时session还可以不断增长。
- 用户兴趣跨度大。时间跨度大会使用户兴趣会有所不同,产生显著转移。因此需要一个适当的模型来建模历史会话中的时间信息。
- 新session中所包含的信息需要及时建模。
因此作者提出TASRec,模型图如上,具体的方法不是很难。既然所有都存很麻烦,那就直接把当天以前的记录直接变成可演化的历史图即可(即上半图部分的evolve),然后再结合下半部分的当前的图一起学习。