Coder-Yu / QRec

QRec: A Python Framework for quick implementation of recommender systems (TensorFlow Based)
1.58k stars 406 forks source link

关于SimGCL不加入0层卷积(即原始表示)的问题 #236

Closed Light-lyy closed 2 years ago

Light-lyy commented 2 years ago

我使用pytorch在自己划分的gowalla数据集上实现SimGCL想看看效果,根据您的论文,在进行带噪卷积时我没有加入0层表示来计算最终表示,但由于疏忽,在进行不带噪声的正常卷积时我加入了0层卷积表示来计算最终表示(与LightGCN保持一致)。并在一定范围内搜索超参,最终得到不错的结果(相比LightGCN有提升)。

后来我发现了自己的疏忽,根据您的论文(It should be mentioned that we skip the input embedding E(0) in all the three encoders when calculating the final representation)和代码,不带噪声的正常卷积也应该不加入0层卷积。我修改代码后在同样范围内搜索超参,可是得到的最好的结果甚至还不如LightGCN了。

这让我很不解,希望能得到您的解惑

Coder-Yu commented 2 years ago

根据我们后续的实验,多数数据集上不加入第0层效果会好,少部分加入与不加入变化不大。暂时还没发现不加入变差的情况。不加入的原因是因为我们发现对比学习对于单纯的BPR-MF并无提升,所以将第0层移除了。另外,在gowalla上似乎对比学习提升的量没有那么大,不论是SGL还是SimGCL都是如此,暂时还没有具体分析。 另外,在https://github.com/Coder-Yu/SELFRec 这个库里面有我的pytorch实现,你可以参考一下。