论文地址:https://arxiv.org/abs/2010.14395

摘要

序列推荐经常因为数据稀疏性问题,导致很难学习到高质量的用户向量表示。论文引入对比学习,提出Contrastive Learning for Sequential Recommendation(CL4SRec).,不仅有下一个序列预测的优势,还利用对比学习框架从原始用户行为序列中获取自监督信号。另外论文提出3种构造自监督信号的数据增强方法,在4个公开数据集上面大量实验表明得到的用户表示更好。

简介

序列推荐任务能捕捉用户动态的兴趣,序列推荐的基本问题是从用户历史交互中学习到高质量的用户表示,因此主要研究工作都是通过更强大的序列模型来得到更好的用户表示。像RNN,Self-Attention能从用户行为中捕获更复杂的用户模式,还有GNN,能从用户序列中探索更复杂的物料转换模式。这些方法的尽管都是用序列预测方式,很容易遇到数据稀疏性问题。

最近自监督学习在表示学习领域有巨大突破,在CV、NLP,直接从未标记数据中抽取数据相关性。一个直接的做法是采用强大的序列模型像GPT,但是在推荐系统中不合适,2点原因

  1. 推荐系统通常没有大量的原料库用作预训练,推荐系统各个不同的任务并不共享相同的知识,这会限制预训练的应用
  2. 预测式的自监督学习的目标函数和序列推荐的目标函数几乎相同,在相同的数据上应用另外一个目标函数无法帮助用户进行表示学习

基于上述问题,自监督在推荐系统的研究较少。最近的研究试图从原始特征数据的内在结构中提取自监督信号,来增强特征表示。这些研究集中在提升物料表示的水平,如何提升用户表示的研究较少。

我们打算通过用户行为的自监督信号学习更好的用户表示,哪怕只有序列ID信息。模型包括传统的序列预测目标函数和对比学习目标函数。在对比学习的loss约束下,通过在用户序列上面进行不同视角的数据增强,最大化相同序列的不同视角在向量空间的一致性,来编码用户行为表示。此外还提出3种不同的数据增强方式来讲用户行为序列映射成行为序列的不同视角。总结如下:

  1. 提出新模型Contrastive Learning for Sequential Recommendation (CL4SRec),第一次将对比学习引入到序列推荐
  2. 提出3种不同的数据增强方法,包括裁剪(cropping),遮蔽(masking),重排序(reordering),构造用户行为序列的不同视角
  3. 与所有的baseline相比,提升巨大,在7.37%-11.02%

相关工作

序列推荐

早期的序列推荐使用马尔科夫链Markov Chain (MC),结合一阶MC和矩阵分解来捕捉用户行为,后面为了考量更长的序列,也有研究探索了高阶MC。深度学习RNN,变种LSTM,GRU用来做序列推荐(GRU4Rec),还有一些修改GRU4Rec的变种,通过修改层级结构,或者使用基于用户的门控网络。

还有学者提出基于卷积的序列推荐Convolutional Sequence Embedding Recommendation Model,通过将用户行为抽象为一维的图像,水平和垂直卷积滤波器在捕获相邻序列模式方面是有效的。Self-Attention最近在序列推荐显示了很好从场景,有研究用Transformer层为之前的物料分配权重。因为用户序列可能并不是刚性的顺序,有研究使用双向Transformer来整合两个方向上的用户行为序列。

另外一个研究方向是GNN方向,因为GNN能从用户序列中捕获隐藏的物料转换信息,很多工作试图在序列推荐中使用GNN,例如有研究使用基于门控的图网络去聚合邻居信息,还有研究使用Attention机制来区分不同邻居的影响,而不是采用平均pooling的方式。

自监督学习

自监督学习的基本想法是从原始数据中构建训练信号来设计训练任务,我们将自监督任务分为预测任务号和判别任务。

预测任务在CV和NLP广泛使用,在CV领域,自监督学习应用在图像旋转、相关块位置的预测,以及解决拼图和着色问题。在NLP领域,则大部分应用于词向量表示和句子有效编码上面。语言模型自然地是一个自监督学习过程,通过前面的词序列来预测下一个词。

判别任务是用对比学习框架来对不同样本进行比较。以前的工作在CV领域已经取得了很好的成绩,在不同的CV任务中,即使预训练没有监督学习信号,效果也比baseline要好。为了增加对比的难度,有学者设计了一个共享内存银行在训练时增加batch_size,还有学者通过动态队列及移动平均编码来改进。

在推荐领域,有学者使用自监督的对比学习框架结合一系列类别特征来学习物料向量表示,还有学者提出通过一个辅助的自监督任务目标来学习目标物料和行为序列之间的相关性。论文和这些不同,在用户行为序列上使用对比学习来提升用户的向量表示。

CL4SREC

符号标记和问题陈述

论文中向量用户小写加粗(e.g.u,v\mathbf{u,v}u,v),矩阵用大写加粗表示(e.g.R\mathbf{R}R),矩阵R\mathbf{R}R的第j行表示为RjT\mathbf{R}_j^TRjT,使用花体字母表示集合(e.g.U,V,A\mathcal{U,V,A}U,V,A),使用U\mathcal{U}UV\mathcal VV表示用户和物料的集合,∣U∣\vert \mathcal{U} \vertU∣V∣\vert \mathcal{V} \vertV表示用户和物料的数量,一个用户或者一个物料表示为u∈U,v∈Vu \in \mathcal{U}, v \in \mathcal{V}uU,vV,用户序列一般是按照时间顺序,因此表示一个用户序列为su=[v1(u),v2(u),...,v∣su∣(u)]s_u = [v_1^{(u)}, v_2^{(u)}, ..., v_{\vert s_u \vert}^{(u)}]su=[v1(u),v2(u),...,vsu(u)],其中vt(u)v_t^{(u)}vt(u)表示用户uuu在时刻ttt交互的行为物料,∣su∣\vert s_u \vertsu表示用户uuu的行为序列长度,su,t=[v1(u),v2(u),...,vt(u)]s_{u,t} = [v_1^{(u)}, v_2^{(u)}, ..., v_{t}^{(u)}]su,t=[v1(u),v2(u),...,vt(u)]表示用户在时刻t+1t+1t+1之前的用户行为子序列。A\mathcal AA表示增强(augmentations)集合。序列推荐任务就是预测在时刻∣su∣+1\vert s_u \vert + 1su+1用户最可能交互的行为物料,表示如下
vu∗=argmaxvi∈VP(v∣su∣+1(u)=vi∣su)(1)v_u^* = \underset {v_i \in \mathcal V} {argmax} P(v_{\vert s_u \vert + 1}^{(u)} = v_i \vert s_u) \ \ \ \ \ \ \ \ \ \ (1)vu=viVargmaxP(vsu+1(u)=visu)(1)

对比学习框架

数据增强模块

每个数据样本应用一个随机的数据增强方法,产生2个相关的新数据样本。如果两个新样本由同一个样本产生,被视为正样本对,如果是

论文《Contrastive Learning for Sequential Recommendation》相关推荐

  1. 经典DL论文研读(part4)--ImageNet Classification with Deep Convolutional Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 ImageNet Classification with Deep Convolutional Neural Networks 摘要 Introduction ...

  2. 《每日论文》ImageNet Classification with Deep Convolutional Neural Networks

    这篇论文是剖析 CNN 领域的经典之作,也是入门 CNN 的必读论文.作者训练了一个面向数量为 1.2 百万的高分辨率的图像数据集 ImageNet, 图像的种类为 1000 种的深度卷积神经网络. ...

  3. AlexNet论文翻译(中英文对照版)-ImageNet Classification with Deep Convolutional Neural Networks

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[AlexNet纯中文版] ImageNet Classification with De ...

  4. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  5. 论文《ImageNet Classification with Deep Convolutional Neural Networks》阅读及AlexNet的Tensorflow2复现

    论文<ImageNet Classification with Deep Convolutional Neural Networks>阅读及AlexNet的Tensorflow2复现 论文 ...

  6. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  7. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (1/3)

    文章目录 Authors and Publishment Authors Bibtex Abstract 1. Introduction 2. The Dataset Authors and Publ ...

  8. 《ImageNet Classification with Deep Convolutional Neural Networks》翻译

    1 引言 2 数据集 3 架构 3.1 ReLU 非线性 3.2 训练多个GPU 3.3 局部响应归一化 3.4 重叠池化 3.5 整体架构 4 减少过拟合 4.1 数据增强 4.2 Dropout ...

  9. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (2/3)

    文章目录 3. The Architecture 3.1. ReLU Nonlinearity 3.2. Training on Multiple GPUs 3.3. Local Response N ...

  10. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (3/3)

    文章目录 6. Results 6.1. Qualitative Evaluations 7. Discussion References 6. Results Our results on ILSV ...

最新文章

  1. 光谱投影颜色感知器件与围栅多桥沟道晶体管技术
  2. 使用EF框架实现MVC的增删改查功能!!!Entity Framework
  3. java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程
  4. 本地化,将cancel替换成取消
  5. vs2019快捷键设置
  6. 自学python爬虫要多久-Python爬虫要学多久,给初学编程者的建议
  7. 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 )
  8. c语言以冒号分割字符串,C语言里面的冒号
  9. docker安装tesseract
  10. 发布ASP.NET程序至IIS7
  11. 使用统计异常消除滤波器来消除异常
  12. 部署flas到服务器:No module named flask
  13. css鼠标移入线条延中心伸长,jquery鼠标悬浮,显示动态延伸线条,如何在鼠标移开后依然让线条元素延伸到终点...
  14. C语言动态库libxxx.so的几种使用方法
  15. Python 和curl 调用sendcloud发送邮件
  16. 犀牛Rhinoceros 7 for Mac(三维建模软件)
  17. vue系列---identify(生成图片验证码)插件
  18. 他 25 岁进贝尔实验室,32 岁提信息论,40 岁办达特茅斯会议,晚年患上阿兹海默 | 人物志...
  19. 计算机处理器性能排名,cpu天梯图2018最新版 2018电脑cpu处理器性能排行榜
  20. 熬夜淦了近 3W 字的 Docker 教程,从入门到精通(建议收藏)

热门文章

  1. 在ubuntu下安装炉石传说
  2. 高通SDX12:基于sgm4151x的充电IC代码架构
  3. Docker 镜像和容器
  4. css之透明度和外发光
  5. wgs84转百度坐标系
  6. 如何正确使用螳螂教育CRM系统?
  7. Java面试——消息队列
  8. 基于两个移动平均线交叉的EA
  9. Linux那些事儿之我是U盘(5)外面的世界很精彩
  10. 用 Python 自动玩王者荣耀,有点意思!