推荐系统在召回Matching/Recall阶段的常用Loss(+SGL对比学习的负采样策略)

1,215 阅读2分钟

1.什么是召回Matching/Recall

典型的推荐系统流水线.png

(图源《Graph Neural Networks for Recommender Systems:Challenges, Methods, and Directions》)

召回阶段的推荐系统负责在百万级别的物料数据库中,筛选出与用户相匹配的几百个商品。一般在离线阶段对不会经常改变的item建立embedding索引表,提前计算item_embedding。用户上线时在线计算user_embedding,再通过ANN近邻搜素,对构建好的item_embedding索引进行检索,快速召回与user详细的top@K个item。

2.Matching阶段常用的Loss

2.1 Pointwise

最小化预测值与目标值之间的平方损失。评估单个样本真实标签的预测准确度,计算Loss时只用一个正样本或只用一个负样本。把所有未观察数据视为负反馈,或从所有未观察数据中采样作为负反馈

二分类交叉熵BCE_Loss

2.2 Pairwise

每次选择一个正样本和一个负样本。评估一个样品对的标签与真实标签是否一致。鼓励在Embedding空间中,使得与正样本的距离比与负样本的距离更近(余弦相似度cos更大)【思想同对比学习】 Hinge_Loss, BPR_Loss

2.3 Listwise

每次选择一个正样本和多个负样本。 Softmax_Loss

3.SGL 推荐算法的自监督图学习框架

  • SGL 由何向南团队与王翔团队在SIGIR'21上发表
  • 在softmax中加入温度系数,使用了两个数据增强方法生成子图进行对比学习
  • 从梯度贡献的角度分析了:加入对比学习时为了更好的获取困难负样本hard_negative
  • 论文下载:arxiv.org/pdf/2010.10…

具体为什么对比学习可以加入matching可以参考 张俊林老师的知乎文章

最近的文章中不难看出,加入对比学习可以有效提高学习的效果,在google《self-supervised Learning for Large-scale Item Recommendations》和阿里巴巴《disentagled self-supervision in sequential recommenders》中被证明在实际的推荐环境中加入对比学习进行自监督任务可以提高效果。

而SGL从梯度贡献的角度分析了为什么加入对比学习可以提高效果。

SGL_loss.png

SGL多任务自监督学习.png 上图为SGL模型的框架,使用的图卷积模型是LightGCN,分为上半的主任务和下半的自监督任务

自监督任务的目标:在Embedding空间中,最大化同一节点不同视图的表征向量直接的相似性,最小化不同节点表征之间的相似性。(和pairwise很相似)

  • 自监督任务正样本选取:同一个节点不同子图的表示
  • 自监督负样本选取:不同节点的表示
  • SGL在一个全域内采取同样类型的节点作为负样本指标效果最好