CCFCRec:对比协同过滤用于冷启动推荐

538 阅读3分钟

论文题目:Contrastive Collaborative Filtering for Cold-Start Item Recommendation[1]^{[1]}

论文来源:WWW2023

github代码:CCFCRec

一、Motivation

  • 推荐系统一直面临冷启动的问题(用户冷启动、物品冷启动),也即为新用户推荐商品或者为用户推荐新的商品,先前的方法直接在热启动训练好的embedding找寻与冷启动用户或者物品相似的embedding进行替换,这忽略了不同物品之间的差异性,另外直接使用这种方法会导致embedding学到一些模糊的表示,如下图所示:

motivation.png

  • 同一个用户对不同两个商品可能有不同的偏好,如图所示,这两个商品有一些共同属性,如果忽略这种共性,直接进行训练会导致学到的这一属性的表示(Action电影)是模糊的,也即两个样本在隐藏空间中的距离可能不会太远。

二、Model

framework.png

  • 该模型主要包含三个部分的参数需要进行更新,分别是基于内容的协同编码器、用户协同编码器、共现协同编码器,其中三个部分的结构如下所示:

  • 基于内容的协同编码器是由两层MLP和LeakyReLu激活函数组成的;

  • 另外两个编码器就是两个Embedding层;

  • 其主要损失函数如下所示: image.png

  • 其中q和z都是预测损失,c是对比损失,theta是正则项

image.png

image.png

  • 这里着重讲一下对比的部分,对比提供了两种方法,一种是直接进行对比,公式如上所示,直接用共现协同的embedding表示与内容协同表示计算对比损失,这里略显粗暴,因为这里也没有使用数据增强,属性表示和物品表示之间肯定是有gap的,作者转而提出一种有监督的对比损失,如下所示:

image.png

image.png

  • 这里对物品的协同过滤部分做了一个约束,也即如果购买两个商品的所有用户之间没有交集,也即两个商品都是被不同的用户购买,这个时候不需要进行计算,也即指示函数值为0;

三、Data&Experiments

  • 数据集使用公开的两个数据集,其统计表示如下表所示:

image.png

  • 实验对比的参数设置如下:

image.png

四、Performance

image.png

  • 实验结果表明了该方法的优越性,特别是在稀疏数据集上的效果提升更加明显。

五、Ablation Study

image.png

  • 作者做的消融实验主要包含三个部分,CCFCRec-Co是去掉共现部分的损失函数,一个是预测损失还有一个对比损失;CCFCRec-pretrain是将预测损失从损失里面去掉,并且用户协同嵌入和共现协同嵌入使用矩阵分解获得,后续不参与训练更新,最后是论文提出的模型CCFCRec,从上图可以看出该论文提出的模型的效果明显好于两者;
  • 这里有个疑问?如果单独去掉预测损失和单独去掉对比损失,那个效果会更好?

六、Conclusion

  • 实验结果表明了该框架的有效性;

七、References

[1] Zhou Z, Zhang L, Yang N. Contrastive Collaborative Filtering for Cold-Start Item Recommendation[J]. arXiv preprint arXiv:2302.02151, 2023.