S3-Rec: Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization

作者:十方,公众号:炼丹笔记

该模型解决了什么问题?

同样是序列化建模,为什么S3-Rec说自己要比其他的效果好?该文指出,现有的序列化推荐模型使用target item来计算loss的,例如阿里是用历史交互序列,预测下一个点击/转化的商品。这样有什么问题?一个是数据过于稀疏,还有就是上下文信息没有充分被利用。因此S3-Rec引入了自监督学习去解决序列化建模所面临的问题。

这篇论文的自监督学习简单来说就是用序列pretrain,然后再用target item做fine-tuning。只是因为推荐场景的特殊性,这篇论文设计了4个自监督学习目标,充分利用序列,属性,自序列等信息,学到最好的embedding表达。

模型架构图

直接看这张图,估计多半是懵逼的。说实话,图画的虽然复杂,实际模型其实是相当简单的。上面4个虚线框,就是4个pretrain的任务。分别是以下4个目标:

  • 相关属性学习
  • masked item预测
  • masked 属性预测
  • item段预测

说到pretrain,大家会想到啥?没错,就是bert。这篇论文原封不动的把bert模型搬了过来,但是改变了预训练的方式。十方先简要带大家回顾一下bert的结构。

bert的每一层,可以简要概括为两个部分,MultiHead-Attention和FFN层。MultiHead,顾名思义,大家就理解为self-attention做了好几次,做了几次就有几个head,最后concat即可。FFN就是前馈神经网络,因为attention提取的是线性特征,需要FFN去挖掘非线性的表达。我们看下公式的表达:

公式很简单,也不是本文重点,不赘述,实在不记得公式含义的,直接度娘bert即可,接下来我们着重介绍4个预训练任务。

挖掘item和属性的关系

我们从上往中间看,i1~in就是item序列,item embedding就是查embeding词表,bidirectional Self-attention就是bert,总值一个item id序列,到了item-Attribute MIM后,就是一个经过attention变换过的embedding序列。然后我们在从下往上看,Ai1~Ain是i1~in的属性,模型要学的东西很简单,就是这个属性属不属于这个item,负样本随机负采样一些属性即可。loss函数如下:

论文里f函数用的不是点积,而是下面这个公式:

Masked 预测

注意,这一节是两个目标,十方放一起讲,因为实在太类似了。看过bert的读者肯定深刻理解什么是masked,没看过bert的,大家就理解为完形填空。在输入侧,我随机挑选一个item,把它的id置为default,然后attention后,相应位置的向量,用来预估它原本的itemid以及属性。

预测itemid公式如下:

预测属性公式如下:

itemid和属性的负样本都是随机负采样。第一个任务充分挖掘了item和上下文的关系,第二个任务挖掘了属性和上下午的关系。

子序列关系挖掘

这个就特别有意思了,论文认为,只mask一个item,它的上下文并不能表达这个item。比如你买了个switch,完全是送人,但是你的上下文和游戏一点关联都没有,因此如果mask掉一个连续的子序列,那上线文多少都会和这个序列相关吧。基于这个思想,就有了segment-mask,把序列的一小段mask后,用attention后对应序列的embedding,去预估该子序列的概率,负样本也是随机采样些子序列,公式如下:

结语

最后,基于以上4个pretrain任务,我们做最后的finetuning。论文里用了pairwise rank loss:

实验当然是bert秒杀所有。

更多干货,请关注微信公众号:炼丹笔记

事半功倍:推荐系统Pre-train预训练方法相关推荐

  1. 训练损失越来越大_无需contrastive学习,微软亚研提基于实例分类无监督预训练方法...

    机器之心发布 机器之心编辑部 在本文中,微软亚洲研究院的研究员和实习生们提出了一个简单且高效的无监督预训练方法--参数化实例分类(PIC).和目前最常用的非参数化对比学习方法不同,PIC 采用了类似于 ...

  2. 学习视觉和语言的多粒度对齐?字节提出新多模态预训练方法 X-VLM:代码已开源!...

    写在前面 视觉语言预训练提高了许多视觉语言任务的性能.但是,现有的多数预训练方法依赖目标检测器(object detectors)提取基于物体的视觉特征,以此学习细粒度的视觉和语言对齐,例如物体(ob ...

  3. 非自回归也能预训练:基于插入的硬约束生成模型预训练方法

    论文标题: POINTER: Constrained Text Generation via Insertion-based Generative Pre-training 论文作者: Yizhe Z ...

  4. 自然语言处理中的语言模型预训练方法

    最近,在自然语言处理(NLP)领域中,使用语言模型预训练方法在多项 NLP 任务上都获得了不错的提升,广泛受到了各界的关注.就此,我将最近看的一些相关论文进行总结,选取了几个代表性模型(包括 ELMo ...

  5. MoCo不适用于目标检测?MSRA提出对象级对比学习的目标检测预训练方法SoCo!性能SOTA!(NeurIPS 2021)...

    关注公众号,发现CV技术之美 本文分享 NeurIPS 2021 论文『Aligning Pretraining for Detection via Object-Level Contrastive ...

  6. CVPR2021 Oral《Seeing Out of the Box》北科大中山大学微软提出端到端视觉语言表征预训练方法...

    本文分享一篇 CVPR 2021 Oral 论文,由北科大&中山大学&微软提出端到端视觉语言表征学习的预训练方法.『Seeing Out of the Box: End-to-End ...

  7. 基于对比学习的目标检测预训练方法

    基于对比学习的目标检测预训练方法 参考链接:目标检测预训练模型(基于对比学习)相关论文梳理 本文主要记录以下几片论文: 1.DenseCL(CVPR21 oral) 2.DetCo(ICCV21) 3 ...

  8. RoBERTa:一种稳健优化BERT的预训练方法

    本文是BERT相关系列模型第三篇内容,之前内容见下链接. 篇一:BERT之后,NLP主要预训练模型演变梳理 篇二:带你走进 ERNIE 摘要 语言模型的预训练带来了显著的性能提高,但比较不同的方法具有 ...

  9. 自然语言处理中的语言模型预训练方法(ELMo、GPT和BERT)

    自然语言处理中的语言模型预训练方法(ELMo.GPT和BERT) 最近,在自然语言处理(NLP)领域中,使用语言模型预训练方法在多项NLP任务上都获得了不错的提升,广泛受到了各界的关注.就此,我将最近 ...

  10. ACL 2021 | 百度NLP开源语言与视觉一体的统一模态预训练方法,登顶各类榜单

    视学算法报道 机器之心编辑部 百度首创地提出了语言与视觉一体的预训练方法 UNIMO,提供了一种新的统一模态学习范式,打破了文本.图像和图文对等数据间的边界,让机器可以像人一样利用大规模异构模态数据, ...

最新文章

  1. python是不是特别垃圾-谈谈python垃圾回收机制
  2. 基于Visual C++2013拆解世界五百强面试题--题18-程序结果分析2-终结篇
  3. python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序
  4. PP 关于工单领料的总结
  5. JavaOne 2014 –有关提交的一些初步分析
  6. LeetCode 1227. 飞机座位分配概率(DP+数学归纳法)
  7. iOS LLDB console debug总结
  8. 动态加载网上或者本地场景的后续
  9. LeetCode--056--合并区间(java)
  10. 再谈new functionName
  11. 22. 切勿直接修改set或multiset中的键
  12. 世界国旗/地图:世界各国国旗图标整理/与echarts世界地图配置对应
  13. IBM SPSS Statistics 25 安装教程
  14. linux系统下安装中文字体步骤
  15. 诺基亚 java 软件_初学篇:诺基亚手机软件安装不求人
  16. 推荐 DBeaver 数据库管理工具 PD数据库建模
  17. xp计算机无法正常启动,修复WindowsXP系统无法正常启动
  18. 玩转NVIDIA Jetson AGX Xavier--- 中文用户手册
  19. word2vec 的个人理解
  20. 学习linux杂七杂八——关于shell中的变量

热门文章

  1. 本周个人总结(软件的初步开发)
  2. iOS对UIViewController生命周期和属性方法的解析
  3. 用ASP.net判断上传文件类型的三种方法
  4. C#中Hashtable、Dictionary详解以及写入和读取对比
  5. 滚动焦点图实现原理和实践[原创视频]
  6. python hello world重复_从hello world开始学Python
  7. 在html里面动画变颜色,html – 在悬停时填充文本颜色动画,带有动画颜色
  8. Photoshop2018详细安装教程
  9. 如何计算像素当量_基于非线性标定的桥梁裂缝精确视频测量技术研究
  10. 用python定位手机_使用Python定位android和iphone