论文题目:Contrastive Self-supervised Learning in Recommender Systems: A Survey
一、Motivation
- 为什么需要对比学习?
- 使用深度学习来辅助推荐任务可以提高模型的效果,但是存在两个问题,一个是数据稀疏的问题,也即用于训练的数据远远少于用户乘以推荐对象的数据,主要是因为推荐对象数量过于庞大,用户交互的数据与之相比极其稀疏;第二个问题是冷启动的问题,在面对用户或者推荐对象没有交互数据的时候,深度学习模型往往难以推荐正确。引入自监督对比学习可以很好的缓解上述问题。
自监督学习在计算机视觉和自然语言处理领域取得了巨大的成功,因此越来越多的工作开始在推荐领域使用对比任务,现在需要一篇工作来对现有的基于对比自监督用于推荐方法的论文进行小结。
二、主要贡献
- 总结了现有的对比自监督推荐任务的三个要点(视图构建、预设任务、对比方法)
- 提供了最新的基于对比自监督推荐方法;
- 提供了对比自监督任务用于推荐的不足和具有发展前景的一些方向
三、现有的方法
-
视图构建方法
- 基于数据增强的方法
- 基于序列的数据增强方法(随机裁剪、随机打乱顺序、随机掩盖、随机插入、随机替换)
- 基于图的数据增强方法(随机游走(子图采样)、随机添加/删除边、随机丢点、基于difussion)
- 基于特征的数据增强方法(随机丢掉一些feature、随机打乱feature顺序)
- 基于模型增强的方法
- 随机丢掉神经元、丢掉一些网络层
- 加噪音(embedding、参数噪音)
- 编码器补充(使用预训练的模型编码之后的输出与当前的输出进行拼接送入模型)
- 无增强
- 跨域推荐(让两个不同域的编码输出作为正样本对)
- 知识图谱(让两个不同的知识图谱作为正样本对)
- 针对这里的一点思考
- 基于数据增强的方法
-
预设任务
- 局部与局部对比
- 图中的点、边作为对比对象
- 序列中的item、feat的表示作为对比对象
- 全局与全局对比
- 整个图进行对比
- 整个序列进行对比
- 部分与部分对比
- 子图与子图对比
- 序列中的部分子序列进行对比
- 交叉对比
- 局部与全局
- 局部与部分
- 全局与部分
- 针对这里的一点思考
- 现在针对预设的对比任务没有一个系统的比较,如何构造预设任务比较重要
- 局部与局部对比
-
对比方法
- 詹森-香农估算器
- InfoNCE
- 三元损失,Triplet Loss
- BYOL损失
- 詹森-香农估算器
四、未来有前景的方向
- 改进对比视图构建方向
- 需要自适应不同数据任务
- 减少人工干预
- 改进预设任务
- 采用多任务学习,需要设置对推荐有帮助的预设任务
- 改进对比对象
- 针对使用InfoNCE可以有一些改进的点
五、结论
- 对比学习用于推荐在学术界讨论比较突出,但是在工业界应用比较少,因为其开销较大,而且因为线上线下数据存在不一致的情况,因此如何构造对比学习任务会严重影响离线与在线效果,这里有待探索。
References
[1] Jing, Mengyuan, et al. "Contrastive Self-supervised Learning in Recommender Systems: A Survey." arXiv preprint arXiv:2303.09902 (2023).
[2] 一些代码资源:link