【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)

SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM’21)

人大高瓴、华为诺亚方舟和清华深圳院的工作。清华前一阵开源了一个CF的baseline,这篇文章就是基于这个库。

看了上面两篇文章 (UltraGCN、GF-CF),再结合SGL,我觉得可以设计一个对比学习loss,不需要数据扩增,正例是正样本,负例就是负样本,因为点积就等价于cosine相似度。这样可以利用LightGCN的smoothness (GF-CF),防止负样本over-smoothing (UltraGCN)。果然这篇文章已经这样做了,并且还设计了一个margin,更加make sense。

这篇文章强调,现有的推荐模型都专注于设计复杂庞大的interaction encoder,忽略了loss function和negative sampling。这篇文章实验对比了六种loss的效果和不同负采样比例,并提出了一个cosine contrastive loss (CCL),在11个数据集上对比了29个现有的模型。

Motivation

现有的工作都专注于设计复杂庞大的interaction encoder,确实,为了模型能够建模各种关系,提取各种兴趣,模型复杂度越来越高。但是这样的模型是不利于工业场景的。现有的工作一般都不重视loss函数和负采样比例,一般都是用个BPR loss,负采样比例设为1。文章认为一个合适的loss函数和一个合适的负采样比例要比选什么模型更重要。文章就实验研究了各种loss函数和不同的负采样比例。

文章说的也比较好听,不是批评之前的工作,而是提供一个更强更简单的baseline SimpleX 以便后续的研究工作。好话都让他说了。

SimpleX with CCL

设计的cosine contrastive loss (CCL):
L C C L ( u , i ) = ( 1 − y ^ u i ) + w ∣ N ∣ ∑ j ∈ N max ⁡ ( 0 , y ^ u j − m ) \mathcal{L}_{C C L}(u, i)=\left(1-\hat{y}_{u i}\right)+\frac{w}{|\mathcal{N}|} \sum_{j \in \mathcal{N}} \max \left(0, \hat{y}_{u j}-m\right) LCCL​(u,i)=(1−y^​ui​)+∣N∣w​j∈N∑​max(0,y^​uj​−m)
即正样本的余弦相似度越像越好,最好为1;负样本的余弦相似度越不像越好,但也不至于为0 (为0就是普通的negative sampling了),不要超过阈值 m m m。

这个margin loss有个好处就是,可以过滤掉信息量小的负样本,优化信息量大的难样本!比如同样是负采样1000个样本,普通负采样对所有的负样本一视同仁,但这会导致数据不平衡,淹没掉有用的梯度,模型难以收敛。CCL对于信息量小的负样本(余弦相似度本来就很低的样本)直接放过,难以区分的hard negative 样本才会被优化。

这个 w w w 也很重要,实验结果看对模型效果影响无比巨大。文章说这个 w w w 类似于WRMF的weight。

设计的模型SimpleX结合了YouTubeNet那一派系的模型设计,利用了用户行为:

【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)

Aggregation可以是pooling、self-attention 或者user-attention,但效果影响不大。

选Cosine作为loss的原因还有,先对向量做L2正则化再做点积,有利于缓解Popularity Bias ❓ 文章这里没有展开解释,我没有理解。

实验结果刷爆AmazonBook

在MF上六种loss函数效果对比,可以看出BPR并不是最优的:

【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)
在MF上不同负采样比例效果对比。首先提高负采样比例是有用的,但是对于对BPR、PHL、MSE loss效果提升有限:

【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)

但是值得注意的是,在Gowalla数据集并没有比LightGCN好:

【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)
【GCN-RS】对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)

上一篇:一文读懂目标检测AI算法:R-CNN,faster R-CNN,yolo,SSD,yoloV2


下一篇:NLP十大Baseline论文简述(七) - deep_nmt