论文:自监督图学习推荐系统 (SIGIR2021)
文章链接:http://staff.ustc.edu.cn/~hexn/papers/sigir21-SGL.pdfhttp://staff.ustc.edu.cn/~hexn/papers/sigir21-SGL.pdf
Code:https://github.com/wujcan/SGL-TensorFlowhttps://github.com/wujcan/SGL-TensorFlow
GitHub - wujcan/SGL-Torch: SGL PyTorch versionhttps://github.com/wujcan/SGL-Torch
图1:SGL的总体系统框架。上层显示了监督学习任务的工作流程,底层显示了SSL任务的工作流程,并在图结构上进行了扩充。
二部图建立在观察到的用户项目交互的基础上,因此包含了协同过滤信号。具体而言,第一跳邻居直接描述用户或项目节点——即,用户的历史项目(或项目的交互用户)可以被视为用户(或项目)的预先存在的特征。用户(或项目)的第二跳邻居节点表现出类似的用户行为(或类似的项目)。此外,从用户到项目的高阶路径反映了用户对项目的潜在兴趣。毫无疑问,挖掘图形结构中的固有模式有助于表示学习。因此,我们在图结构上设计了三个操作:节点丢失(ND)、边丢失(ED)和随机游走(RW),以创建不同的节点视图。运算符可以统一表示为:
其中,, 将在图G上进行两个随机选择
和
,建立节点
和
的两个相关视图。下面分别介绍三种操作方式。
以概率 将图中的每个节点及其连接的边丢弃。
和
可以建模为:
其中 是两个掩码向量,应用于节点集
以生成两个子图。因此,这种增强有望从不同的增强视图中识别出有影响的节点,并使表示学习对结构变化不那么敏感。
以概率 丢弃图中节点链接的边。两个独立的过程表示为:
式中 是边集 E 上的两个掩码向量。只有邻域内的部分连接有助于节点表示。因此,将这两个子图耦合在一起的目的是捕捉节点局部结构的有用模式,并进降低噪声的干扰,增加鲁棒性。
上述两个操作生成的子图在所有图卷积层中共享。为了探索更高的性能,我们考虑用不同的子图分配不同的层。这可以看作是用随机游走为每个节点构造一个单独的子图(参见图2作为示例)。假设我们在每一层选择 ED(使用不同的比率或随机种子),我们可以通过使掩码向量对各层来计算RW:
其中, 是在第 l 层边集 E 的掩码向量。
图2:带有 ED(左)和 RW(右)的三层 GCN 模型中一个高阶连通性的小例子。与 ED 相比, RW 中,图的结构在各层之间不断变化。因此,在节点 和
之间存在一条三阶路径,而在ED 中却不存在。(只涉及dropout和掩码操作,并且没有添加任何模型参数。)
根据公式 (6),我们为每个节点生成了两个不同的视图,将同一节点的视图视为正对,表示为,将任意不同节点的视图作为负对,表示为
。正对的辅助监督促进了同一节点的不同视图之间的相似性来进行预测,而负对的监督则加强了不同节点之间的差异。采用对比损失InfoNCE,以最大化正对的一致性,最小化负对的一致性:
其中,s(·)度量两个向量之间的相似性,设置为余弦相似函数; 是超参数,称为在softmax中的温度超参。类似地,我们得到了项目的对比损失
. 结合这两个损失,我们得到了自我监督任务的目标函数
。
为了改进SSL任务的推荐,我们利用多任务训练策略来联合优化经典推荐任务(参见等式(5))和自我监督学习任务(参见等式(10))。
补充:公式(5)BPR_loss:
其中, 为
中的模型参数集,因为
没有引入额外的参数。
和
分别是控制SSL和L2正则化强度的超参数。
我们遵循中描述的相同策略,以7:1:2的比例将交互划分为训练、验证和测试集。对于测试集中的用户,我们遵循全排名协议来评估Top-K的推荐性能,并报告平均Recall@K和NDCG@K,其中K=20。
NGCF、LightGCN、Mult-VAE、DNN+SSL