查看原文
其他

【源头活水】SIGIR'21微软|基于自监督图学习的推荐系统

The following article is from 秋枫学习笔记 Author 秋枫学习笔记



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—秋枫学习笔记


image.png

Self-supervised Graph Learning for Recommendation
https://dl.acm.org/doi/pdf/10.1145/3404835.3462862


01

背景

本文为召回阶段所提出的相关方法。首先,基于图的推荐系统方法存在以下三个限制:

稀疏的监督信号:通常我们都是根据用户和item之间的交互来作为监督信号,但是这种交互相对于整个交互空间来说是非常稀疏的,导致无法学到足够好的表征。

数据分布倾斜:热门item的交互会更多,而冷门的长尾的item交互会更少,在图中的度会比较低,监督信号更少。这种长尾不平衡数据,分类器会倾向于多数类,导致长尾数据的推荐效果变得更差。

交互中存在噪声:对于隐式反馈,例如点击,查看。这些反馈可能是由于被误导而点击的,而不是用户真正感兴趣的。

为了解决上述难点,本文采用自监督学习构建辅助任务来发掘数据内部的信息,从而为节点产生更好的表征,主要包含以下两部分:

数据增强:为每个节点生成不同的视角

对比学习:使同一节点的不同视角具有一致性


02

方法

如图所示为本文所提的自监督图学习(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正则。


03

结果
相比于lightGCN,所提方法还是有明显提升的。


04

总结
本文的思想比较简单易懂,就是希望通过减少一些边,节点生成新的子图,然后通过对比学习增强模型的鲁棒性。针对背景中的三点问题,也有了相应的解决方式。例如,通过减少一些节点或边,可以减弱热门item的影响,对边的dropout可以一定程度上增强模型对噪声交互的鲁棒性。我觉得还是比较有启发的文章。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存