MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems阅读笔记

动机

本文是来自2021年KDD上的一篇文章。图神经网络最近已经成为最先进的协同过滤解决方案,目前协同过滤中的一个挑战是从隐反馈数据中提取负反馈信号,但是目前很少有对基于GNN的协同过滤方法的负反馈采样的研究。好的负反馈信号可以加速模型收敛,为模型提供更大且更有意义的梯度,因此提取出好的负反馈信号是非常有必要的。之前的工作大多是通过某种策略在原始数据中寻找优秀的负样本,本文作者提出了一个通用的GNN负采样框架——MixGCF,通过融合原始数据中的正样本及GNN传播层上的负样本生成质量较高的负信号,达到了更好的效果。

算法

MixGCF主要分为两步:Positive Mixing和Hop Mixing。整体流程见下图。下述的正样本可理解为与用户有交互的物品,负样本为与用户无交互的物品。

Positive Mixing

对于一个有L层的GNN模型,我们可以获得每个物品节点v的L+1个embedding表示,其中\(e_{v}^{(l)}\)表示v在第l层的表示。首先采集M个负样本构成候选集\(\varepsilon = \{ e_{v_m}^{(l)} \}\),大小为M×(L+1),对于每个\(e_{v_m}^{(l)}\),使用以下公式进行Positive Mixing

\(e_{v^+}^{(l)}\)是正样本在第l层的embedding,\(\alpha^{(l)}\)是第l层的混合系数,在本次实验中由(0,1)之间的均匀采样获得。

Hop Mixing

\(\varepsilon^{'} = \{ e_{v_m}^{'(l)} \}\)为经过Positive mixing的候选集,对于每一层l(\(0 \leq l \leq L\)),从\(\varepsilon^{'}\)中抽出\(e_{v_x}^{'(l)}( 1 \leq x \leq M)\),再利用池化操作得到最终的负信号

每一层的负embedding通过以下函数筛选出

其中\(f_Q(u,l)\)是查询函数,返回用户u在l层的embedding。

池化

池化操作根据原有的模型来决定,比如LightGCN是将每层的embedding相加

NGCF是连接每层的embedding

优化

损失函数采用BPR loss。

整体算法流程可见下图。

实验结果

作者在LightGCN、NGCG和PinSage三个模型上评估了MixGCF,将其与其它负采样方法进行对比,MixGCF均取得最好的效果。

总结与展望

由于我之前读过LightGCN和NGCF的论文,对基于GNN的CF有一些了解,因此我认为本篇论文还是比较容易读懂的。本篇论文主要提出了一种GNN上的负采样方法,首先采集一批负样本在各个层上的embedding作为候选集,再向其中注入正信号,之后根据一定策略从候选集每层中抽取一个经过positive mixing的负embedding,再将所有抽取出的embedding经过池化层,就得到了最终的负信号。而在基础的LightGCN和NGCF中,负信号是来自随机抽取到一个的负样本,所有的负信息仅仅来自一个负样本。未来,可以考虑将MixGCF中的一些技术用于图与关系数据的预训练。推荐系统模型的预训练也许是未来的比较有前景的一个方向。

posted @ 2022-02-24 22:18  South1999  阅读(206)  评论(0编辑  收藏  举报