关注我们,一起学习~
title:Are Graph Augmentations Necessary? Simple Graph Contrastive Learning for Recommendation link:https://arxiv.org/pdf/2112.08679.pdf code:https://github.com/Coder-Yu/QRec from:SIGIR 2022
1. 导读
本文是针对图对比学习在推荐系统中的应用而提出的相关方法SimGCL。通常做对比学习的时候,需要对数据进行增广,得到相同数据的不同视图(view),然后进行对比学习,对于图结构也是一样,需要对用户-商品二部图进行结构扰动从而获得不同视图,然后进行对比学习最大化不同图扩充之间的节点表征一致性。本文通过实验表明
因此,本文提出一种简单的对比学习方法,放弃之前的图增强方法,将均匀噪声添加到embedding空间,从而形成对比视图。虽然本文是针对图对比学习的,但是也许对其他情况的对比学习也有借鉴意义。
2. SimGCL
本文的总体结构是图+对比学习,基模型采用LightGCN。总体损失函数表示为
,其中L_rec为用户和商品embedding经过LightGCN后得到的表征,然后通过BPR损失函数计算损失。L_cl表示对比损失,这里采用流行的infoNCE损失函数,本文的重点在于如何构建节点embedding的不同视图以进行对比学习。因此下文中主要介绍本文的主要创新之处,即如何构建不同视图,而对于其他基础部分如BPR损失,infoNCE损失,LightGCN等不再介绍。
在SGL[1]上作者进行了如下实验,探究图结构扰动在图对比学习中的作用,ND为节点dropout,ED为边dropout,RW为随机游走,WA不进行数据增广(这里两个视图都用原始embedding)。可以发现,不进行数据增广的情况下,只比增强低一点,说明其作用很小。
以往的做法修改图结构是耗时又麻烦的,作用还小,因此作者考虑是否可以在embedding空间中进行操作。通过添加随机噪声增加一部分扰动,实现快速高效的数据增广。
给定节点i,他的embedding表示为
,则其增广过程表示如下,其中
,这个约束用于控制噪声的大小,并且对应的向量在半径为
的球上,
,sign(x),x<0则输出-1,大于0则输出1,第二个约束要求
,
和
应该在同一个超象限,这样添加噪声不会导致新的
有很大的偏差,导致有效正样本较少。
均匀分布。由于旋转足够小,增强表示保留了原始表示的大部分信息,同时也保留了一些不一致。
,
以LightGCN为图编码器进行消息传播,在每次传播的过程中加入噪声,最后将每一层的输出求均值进行池化。公式如下,其中A表示邻接矩阵。
代码:
def perturbed_LightGCN_encoder(self,emb,adj,n_layers):
all_embs = []
for k in range(n_layers):
emb = tf.sparse_tensor_dense_matmul(adj, emb)
random_noise = tf.random.uniform(emb.shape)
emb += tf.multiply(tf.sign(emb),tf.nn.l2_normalize(random_noise, 1)) * self.eps
all_embs.append(emb)
all_embs = tf.reduce_mean(all_embs, axis=0)
return tf.split(all_embs, [self.num_users, self.num_items], 0)
3. 结果
image.png
[1] Jiancan Wu, Xiang Wang, Fuli Feng, Xiangnan He, Liang Chen, Jianxun Lian, and Xing Xie. 2021. Self-supervised graph learning for recommendation. In Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval. 726–735