image.png
Self-supervised Graph Learning for Recommendation https://dl.acm.org/doi/pdf/10.1145/3404835.3462862
1. 背景
本文为召回阶段所提出的相关方法。首先,基于图的推荐系统方法存在以下三个限制:
- 稀疏的监督信号:通常我们都是根据用户和item之间的交互来作为监督信号,但是这种交互相对于整个交互空间来说是非常稀疏的,导致无法学到足够好的表征。
- 数据分布倾斜:热门item的交互会更多,而冷门的长尾的item交互会更少,在图中的度会比较低,监督信号更少。这种长尾不平衡数据,分类器会倾向于多数类,导致长尾数据的推荐效果变得更差。
- 交互中存在噪声:对于隐式反馈,例如点击,查看。这些反馈可能是由于被误导而点击的,而不是用户真正感兴趣的。
为了解决上述难点,本文采用自监督学习构建辅助任务来发掘数据内部的信息,从而为节点产生更好的表征,主要包含以下两部分:
- 数据增强:为每个节点生成不同的视角
- 对比学习:使同一节点的不同视角具有一致性
2. 方法
如图所示为本文所提的自监督图学习(SGL)的主要流程,用自监督作为辅助任务从数据的相关性中挖掘内在的监督信号。
2.1 数据增强
在user-item的交互的二部图中,存在这样的关系。一阶关系可以反映user和item之间的交互关系,二阶关系可以反映user之间的相似性或item之间的相似性。更高阶的路径可以反映user对item的潜在兴趣。本节从这方面出发,设计了三个方案:node dropout,edge dropout,random walk,总体上可以表示为下式,其中s是从图G中随机选择得到,然后构建两个节点Z的相关视图。
- Node Dropout(ND):以一定概率
忽视图中的节点和其对应的边,s1,s2通过下式得到,其中
表示掩码向量(mask),作用于节点集合
上,即0就是忽略了该节点,1就是保留了该节点,最后得到两个子图s1(G),s2(G)。这种增强方式是希望模型能够从不同的视角中识别出有影响,有作用的节点;并且模型对表征的学习对图结构的变化不那么敏感。
- Edge Dropout(ED):以一定的概率忽略图中的边,公式如下,其中
和之前一样,也是mask,作用于边的集合之后,忽略掉一部分的边。通过ED,可以捕捉节点局部结构的有用模式,并且使得表征对噪声交互更具鲁棒性。
- Random Walk(RW):上述两种方案得到的两个子图,在后续的GNN操作过程中一直是不变的,而RW可以使得在不同的GNN层上可以用不同的子图,例子如图所示。这个的实现也不难,就是在每一层都采用上述方法中的一个比如ED,然后在每一层实施的时候采用不同的概率或者随机种子。
image.png
2.2 对比学习
通过增强方法得到同一节点的不同视角子图后,我们令s1,s2中相同节点为正样本对
,不同节点为负样本对
。类似于度量学习,这里希望做到的就是同一节点的不同视角应该尽量一致,而不同节点的不同视角应该尽量分散。公式如下,对于节点u,分子计算相同节点的不同视角的相似度,分母计算两两负样本对之间的相似度。
表示相似度,例如余弦相似度,
是温度系数。同样方法可以得到item的对比学习损失,
。
2.3 多任务学习
正如前面所说的,本文是将自监督学习(ssl)作为辅助任务,主任务仍然是常用的基于图的推荐算法。因此总的损失函数可以定义为下式,两个损失相加并结合L2正则。
3. 结果
相比于lightGCN,所提方法还是有明显提升的。
4. 总结
本文的思想比较简单易懂,就是希望通过减少一些边,节点生成新的子图,然后通过对比学习增强模型的鲁棒性。针对背景中的三点问题,也有了相应的解决方式。例如,通过减少一些节点或边,可以减弱热门item的影响,对边的dropout可以一定程度上增强模型对噪声交互的鲁棒性。我觉得还是比较有启发的文章。