一、前言
1、背景
探索了在用户-商品图上的自监督学习,以提高GCNs推荐的准确性和鲁棒性。该思想是用一个辅助的自监督任务来补充经典的推荐监督任务,通过自鉴别器来强化节点表示学习。具体来说,我们生成一个节点的多个视图,最大化同一个结点不同视图表示之间的相似性,最小化不同结点表示之间的相似性。我们设计了三个操作来生成视图,分别是节点dropout、边dropout和随机游走,以不同的方式改变图的结构。
传统图网络例如PinSage,LightGCN。尽管基于GCN的方法取到了不错的效果,但我们认为这些方法仍然受到了一些限制:
- 监督信号稀疏(数据稀疏):目前大多数推荐学习任务都是基于监督学习的范式,其中监督信号一般指用户和物品的交互数据。然而这些交互数据通常来说是异常稀疏的,不足以学习高质量的表征。
- 倾斜的数据分布(幂律分布):推荐系统的交互数据通常呈现幂律分布,其中长尾部分low-degree的物品节点缺乏监督信号。然而,high-degree的物品节点在邻居聚合和监督学习损失中占据了主导地位,对表征学习影响更大。因此,基于GCNs的方法倾斜于high-degree物品节点,牺牲了low-degree物品推荐的性能。
- 交互噪音:用户提供的交互大多数是隐式的(clicks,views),而不是显式的(ratings,likes,dislikes)。因此,收集到的交互通常包含噪声,如用户误点击了一个物品。而GCNs中的邻居聚合操作则会加大这些交互噪音的影响,使得模型训练更容易受到交互噪音的影响。
2、准备工作
这一部分很简单,就是GCN的聚合操作,这里其实也是以lightGCN为根基在上面的改动
过聚合邻域节点的表示来更新自我节点的表示:
这两个公式就是一个意思,通过聚和邻居节点,生成下一阶的表示
下面这个是层结合生成最终的结点嵌入表示:(每一层嵌入的整合一起)
接下来就是内积预测得分:
损失函数,使用BPR:
二、SGL模型
定义自监督图学习(Self-supervise Graph Learning, SGL)范式,作为监督学习任务的补充,下图展示了SGL的流程,简单来说,自监督学习任务从输入数据之间的关联构建监督信号。
在图结构上设计了三个操作符:节点丢失、边缘丢失和随机行走,以创建不同的节点视图。这些操作符同一表示如下:
1、Node Dropout(ND)
图中每个节点都可能以概率 ρ 被舍弃,连带其连接的边一起舍弃。
2、 Edge Dropout(ED)
图中每条边都可能以概率 ρ被舍弃。具体如下表示:
3、Random Walk (RW)
上述两个操作符生成的子图在图卷积的所有层中保持一致。为了探索higher capability,我们每层应用不同的子图。这可以看做对于每个节点随机游走的过程。这里做法为对每层单独进行ED(不同的dropout rate 或 random seed),也就是说RW的掩码矩阵是对层感知的:
4、对比学习
在建立了节点的增强视图后,我们将同一节点的视图作为正对,将任意不同节点的视图作为负对
,正对的辅助监督促进了同一节点的不同视图之间的一致性来进行预测,而负对的监督则加强了不同节点之间的差异。形式上,我们遵循SimCLR,并采用对比损失,InfoNCE,以最大化正对的一致性,并最小化负对的一致性:
s(·)度量两个向量之间的相似度,设为余弦相似度函数;τ 是超参数,称为softmax中的温度。
同理,物品的loss
5、多任务训练
为了改进SSL任务的推荐,我们利用多任务训练策略来联合优化经典的推荐任务和自监督学习任务。
实验结果: