作者:一元, 公众号:炼丹笔记, 特约审稿:杰少

背景

序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为、用户与物品之间的交互作用以及用户偏好和商品流行度随时间的变化。SRS涉及到以上几个方面,以便更精确地描述用户上下文、意图和目标,以及物品消费趋势,从而得到更准确、定制和动态的推荐。

本篇文章我们对SRSs进行了系统的回顾。我们先介绍SRSs的特点,然后对该研究领域面临的主要挑战进行了总结和分类,然后介绍了该领域的最新研究进展和最具代表性的研究进展。最后,讨论了该领域的重要研究方向。

序列化推荐的动机&形式

传统的推荐系统,例如基于内容和协同过滤的推荐系统,以一种静态的方式建模用户和商品的交互并且只可以捕获用户广义的喜好。而相反地,SRSs则是将用户和商品的交互建模为一个动态的序列并且利用序列的依赖性来活捉当前和最近用户的喜好

为什么要进行序列化推荐?

1. 用户和商品的交互本质是序列相关的

用户和商品的交互本质上是序列以来的,现实生活中,用户的购物习惯经常是一整个序列化的行为,而不是独立的。

以图1所示的Jimmy的购物事件为例,在Jimmy开始度假之前,他先后预订了机票、酒店和租车,接下来的行动可能是通过自驾游游览旅游景点。在这种情况下,酒店可能靠近航班的目的地机场,取车地点可能离酒店不远。在这个场景中,Jimmy的每个后续动作都依赖于前面的动作,因此所有四个消费动作都是顺序相关的

2. 用户的喜好和商品的流行度是动态变化的

用户的偏好会随着时间的推移而改变。

例如,许多曾经是iPhone粉丝的年轻人现在转而成为了华为或三星(Samsung)生产的手机的粉丝,而iPhone的受欢迎程度近年来一直在下降。这种动态对于精确分析用户或商品具有重要意义,而且它们只能由SRS捕获。

3. 用户商品的交互在特定的序列化的上下文中发生

不同的上下文通常会导致不同用户对项目的交互,然而,这一点常常被传统的推荐系统例如协作过滤所忽略。相反,时间序列推荐模型会将先前的顺序交互作为上下文来预测在不久的将来哪些商品可能会交互。因此,通过避免重复推荐与已经选择的商品相同或相似的项目,使推荐结果多样化要容易得多。

序列化推荐的形式

序列化推荐系统由最大化下面的函数得到:

数据特点和挑战

处理长的用户商品交互序列

长的用户商品交互序列意味着大量的用户商品的交互,所以这里面藏有非常大复杂的相关性。而关于长的用户商品交互序列重点挑战可以分为:

1. 学习高阶的序列依赖

  • 在用户商品的交互序列中,特别是在长的交互序列中,通常存在高阶的序列依赖关系。

高阶马尔可夫链模型中所涉及的历史信息是有限的,因为需要估计的模型参数个数随阶数呈指数增长,而RNN中过强的阶数假设限制了RNN在具有灵活阶数的序列中的应用。

2. 学习长期的序列依赖

长期顺序依赖关系是指在一个序列中彼此相距很远的交互之间的依赖关系。例如,给定一个购物序列 S1={a rose、eggs、bread、a bottle of milk、a vase},包含用户Janet连续购买的商品。而这其中,很明显, vase和rose是高度相关的, 但是它们的距离有些远。

  • 一些工作尝试使用LSTM和GRU等去捕捉这些关系,然而,RNN模型很容易建立错误的依赖关系,因为它会过度假设序列中的任何相邻项高度依赖。在上面的珍妮特购物序列的例子中,RNN通常通过假设牛奶和花瓶之间的距离很近而建立S1模型,但实际上它们不是。
  • 一些其它的工作使用混合模型来捕捉这些问题,但是目前看来这些能力还是有限的。

以灵活的顺序处理用户商品的交互序列

在现实世界中,一些用户-商品交互序列是严格有序的,而另一些则可能不是,即并非所有相邻的交互都是顺序依赖的。

例如,在购物序列S2={牛奶,黄油,面粉}中,先买牛奶还是黄油并不重要,但购买这两种商品会导致下一步购买面粉的概率更高;也就是说,牛奶和黄油之间没有严格的顺序,但面粉的顺序取决于它们的结合。因此,对于一个具有灵活顺序的序列,捕获集合顺序依赖比捕获点式依赖要好得多,因为前者是模糊的,并且在用户-商品交互上不假定严格的顺序。因此,如何在灵活顺序的假设下捕获集合序列相关性成为SRSs中处理灵活顺序序列的关键问题。

目前国内外对这一问题的研究还不多见。现有的基于Markov链、因子分解机或RNN的SRS只能处理点依赖关系,而不擅长对集合依赖进行建模和捕捉。目前有些工作试图通过利用CNN的优势来捕捉局部和全局依赖性,即一系列交互作用的嵌入矩阵。

处理带有噪音的用户商品交互

在一个用户-商品交互序列中,一些历史交互与下一个交互具有强相关性,而另一些则可能弱相关甚至不相关。

例如,在另一个购物序列S3={bacon,a rose,eggs,bread}中,项目“rose”可能是一个嘈杂的项目,因为它与其他项目非常不同,并且与它们没有关联。下一个项目可能是一瓶很有可能的牛奶,它只顺序依赖于熏肉、鸡蛋和面包,而与玫瑰无关。因此,SRSs中的另一个关键挑战是在有噪声的用户-商品交互序列中,有意识地、有区别地学习序列相关性。

处理具有异构关系的用户商品交互序列

在处理与异构关系相关联的用户商品交互序列时,如何有效地捕获嵌入在用户-商品交互序列中的异构关系,并使它们协同工作进行顺序推荐。

异构关系是指传递不同类型信息的不同类型的关系,应在SRSs中进行不同的建模。例如,在一个用户-商品的交互序列中,除了用户-商品交互之间普遍存在基于发生的顺序依赖关系外,交互商品之间在其特征方面也存在基于相似性的关系。此外,尽管两者都是顺序依赖,但长期的顺序依赖与短期的顺序依赖是完全不同的,它们不能以相同的方式建模。

  • 目前处理该关系主要还是基于混合模型进行处理。

使用层次结构处理用户商品的交互序列

到目前为止,我们发现用户商品的交互序列中一共又两种不同的层次结构,如何将嵌入在层次结构中的层次依赖结合到序列依赖学习中,以生成更准确的序列推荐也是目前的一大挑战.

  1. 元数据和用户商品交互之间的层次结构

具体来说,用户的人口学特征在一定程度上决定了用户的偏好,进而影响了用户与商品的交互。类似地,商品的特性通常会影响到它们是否会被用户喜欢和交互;

  1. 子序列和用户商品交互的层次结构;

更具体地说,在一些SRS中,一个用户商品的交互序列包括多个子序列(也称为会话)。在这种情况下,除了当前子序列中的先验交互之外,历史子序列也会影响到在当前子序列中预测的下一个用户项交互。

为了考虑商品特征对用户-商品交互的影响,一些工作提出了一系列特征丰富的神经网络模型,例如[Hidasi等,2016b]。

相比之下,现有的SRS很少考虑到用户群体的影响。另一方面,一些层次模型,包括层次嵌入模型[Wang et al.,2015]、层次RNN[Quadrana et al.,2017]和分层注意力网络[Ying et al.,2018]将历史子序列纳入序列依赖学习,以构建更强大的SRS。

研究现状

传统序列模型

传统序列模型一共分为两块, 序列模式挖掘 & Markow链。

(1)序列模式挖掘

基于序列模式的推荐先挖掘序列数据的常用模式,然后利用挖掘到的模式来指导后续的推荐。虽然简单,但是却经常会产生大量的冗余的模式, 这往往会增加非常多不必要时间和空间等代价。同时此类方法经常会丢失不频繁的模式以及商品,所以对于不是非常流行的商品的推荐会受限。

(2)马尔可夫链模型

基于马尔可夫链的推荐系统会采用Markov链模型对用户-商品的交互转换进行建模,以预测下一次交互。根据使用的技术,基于马尔可夫链的推荐系统又可以分为基于基本Markov链的推荐系统和基于潜在Markov embedding的推荐系统方法。

前者直接根据显式观测的值计算转移概率,而后者首先将马尔可夫链嵌入欧几里德空间,然后根据其欧几里德距离计算相互作用之间的转移概率。基于Markov链的推荐系统的缺点主要有两块。一方面,由于Markov特性假设当前交互只依赖于一个或几个最近的交互,因此只能捕获短期依赖关系而忽略长期依赖关系;另一方面,它们只能捕获点式依赖,而忽略了用户商品交互的集体依赖。

序列推荐的隐式表示

隐式的表示模型先学习每个用户和商品的潜在表示,然后使用学习得到的表示预测接下来的用户商品交互。这么做就可以捕捉更多的内部关系。

(1)分解机(Factorization Machines)

基于因子分解机的序列推荐通常利用矩阵分解或张量分解将观察到的用户-商品交互作用分解为用户和商品的潜在因子。和协同过滤不一样的地方在于,要分解的矩阵或张量是由交互作用组成的,而不是CF中的评分,这样的模型很容易受到观测数据稀疏性的影响,因而不能达到理想的推荐效果。

(2)嵌入式(Embedding)

基于Embedding的序列化推荐通过将用户-商品交互序列编码到一个潜在空间,学习每个用户和商品的潜在表示,以供后续推荐。具体而言,一些工作将学习到的潜在表征作为网络的输入,进一步计算用户和商品之间的交互得分,或后续用户的行为,而其他作品则直接利用它们来计算欧几里德距离等度量作为交互得分。该模型具有简单、高效、高效的特点,近年来已显示出巨大的潜力。

用于序列化推荐的DNN模型

深层神经网络能够在一个序列中模拟和捕捉不同实体(如用户、项目、交互)之间的综合关系,因此在过去的几年中,它们几乎占据了序列化推荐的主导地位。

(1)基本的神经网络模型

a. 基于RNN的序列化推荐

给定一系列历史用户商品的交互,基于RNN的序列化推荐试图通过对给定交互的顺序依赖建模来预测下一个可能的交互。除了基本的RNN外,基于长短时记忆(LSTM)和基于选通递归单元(GRU)的RNN也被用于捕捉序列中的长期依赖关系。

除了基本的RNN结构外,还提出了一些变体来捕获序列中更复杂的依赖关系,例如分层RNN。然而,对于序列化推荐系统,RNN并不是完美无缺的,它存在两个缺点:(1)序列中任何相邻的相互作用都必须是依赖的,这很容易产生伪依赖,这可能不是真实世界中的情况,因为序列内部通常存在不相关或有噪声的交互;(2).它很可能只捕获点式依赖,而忽略集体依赖(例如,几个交互协作影响下一个)。

b. 基于CNN的序列化推荐

与RNN不同的是,给定一系列的用户-项目交互,CNN首先将这些交互的Embedding嵌入到一个矩阵中,然后将该矩阵视为时间和潜在空间中的“图像”。最后,CNN使用卷积滤波器学习序列模式作为图像的局部特征,以供后续推荐。由于CNN对序列中的交互作用没有强的有序性假设,它们学习图像中区域之间的模式而不是过度交互,因此基于CNN的序列化推荐可以在一定程度上弥补基于RNN的上述缺点。然而,基于CNN不能有效地捕获长期依赖关系,这是由于CNN中使用的过滤器的尺寸有限,限制了它们的应用。

c. 基于GNN的序列化推荐

随着GNN的快速发展, 基于GNN的序列化推荐被设计成利用GNN对用户-商品交互序列进行建模,捕捉复杂的迁移古纳西。通常情况下,有向图首先建立在序列数据上,将每个交互作为图中的一个节点,同时将每个序列映射到一条路径。然后,在图上学习用户或商品的嵌入,以便在整个图上嵌入更复杂的关系。这种方法充分利用了GNN的优点,可以捕捉结构化关系数据集中的复杂关系。基于GNN的序列化推荐通过揭示推荐商品与相应的顺序上下文之间的复杂关系,显示了提供可解释的建议的巨大潜力。目前基于GNN的序列化推荐仍然处理早期阶段。

(2) 高级模型

1. Attention模型
Attention模型在序列化推荐中通常被用来强调那些在一个序列中真正相关和重要的交互,而忽略那些与下一个交互无关的交互。它们被广泛地纳入浅层网络和RNN,以处理有噪声的交互序列。

2. Memory网络

Memory网络被引入序列化推荐系统,泳衣捕捉历史的用户商品交互以及下一个交互通过一个额外的memory矩阵来。这样的矩阵能够更明确和动态地存储和更新历史交互,以提高模型的表达能力,减少不相关交互的干扰。此外,一些工作还结合了一个key-value的memory网络,以存储和更新交互商品的相应知识库信息,以学习属性级别偏好以增强建议。

3. Mixture模型

基于混合模型的序列化推荐结合了不同的模型,这些模型擅长捕捉不同类型的依赖关系从而增强整个模型捕获各种依赖关系的能力,从而能进行更好的推荐。但是目前Mixture的推荐模型依然处于早期阶段。

待研究方向

Context-aware的序列化推荐系统

用户或商品所在的当前环境会极大地影响用户对项目的选择,在进行推荐时应考虑到这一点。这在序列化推荐系统中更为必要,因为上下文可能会随着时间而变化。然而,现有的序列化推荐大多忽略了这一重要方面。因此,上下文感知的序列化推荐将是未来工作的一个重要方向;

Social-aware的序列化推荐系统

用户生活在一个社会中,并与各种人在线和离线连接。其他人的行为或意见往往会对用户的选择产生很大的影响。因此,在现有的研究中,我们往往忽略了序列化推案系统的Social影响;

Interactive的序列化推荐系统

现实世界中的大多数购物行为都是连续的,而不是孤立的事件。换句话说,用户和购物平台(例如亚马逊)之间实际上是有顺序的交互。然而,现有的序列化推荐往往忽略了这种交互作用,并且只在单个时间步骤中生成一个操作的建议。如何结合用户-卖家交互,从而产生多时间步的推荐是一个很有前途的研究方向;

Cross-domain的序列化推荐

在现实世界中,用户在一定时间段内购买的商品通常来自多个域,而不是一个域。本质上,来自不同领域的项目之间存在一些顺序依赖关系,例如在购买汽车后购买汽车保险。这种跨域顺序依赖在大多数序列化推荐中被忽略。因此,跨域SRS是另一个很有前途的研究方向,可以利用来自其他领域的信息和来自不同领域的更多不同的推荐来生成更准确的推荐。

小结

推荐系统是人工智能在日常生活中最直接、最实际的应用之一。在过去的三到五年里,顺序推荐系统已经成为推荐领域的核心,因为它们提供了更智能和更令人满意的推荐来满足我们的日常需求。我们希望这篇综述能为遥感研究界提供一个关于SRSs面临的挑战和最新进展以及一些未来方向的概述.

参考文献

  1. Sequential Recommender Systems: Challenges, Progress and Prospects:https://www.ijcai.org/Proceedings/2019/0883.pdf

后续我们会筛选出在我们实践中带来提升或者启发的工作进行细致的解读与探讨,欢迎关注我们的公众号,也欢迎多交流,我是三品炼丹师: 一元。

炼丹笔记

推荐算法炼丹笔记:序列化推荐系统

推荐算法炼丹笔记:电商搜索推荐业务词汇表

推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题

推荐算法炼丹笔记:CTR点击率预估系列入门手册

推荐算法炼丹笔记:科学调参在模型优化中的意义

推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?

2020年推荐系统工程师炼丹手册

序列化推荐系统总结:Sequential Recommender Systems: Challenges, Progress and Prospect相关推荐

  1. #Reading Paper# 【序列推荐综述】IJCAI‘19:Sequential Recommender Systems: Challenges, Progress and Prospects

    #论文题目:[序列推荐]Sequential Recommender Systems: Challenges, Progress and Prospects(序列推荐系统:挑战.进程和前景) #论文地 ...

  2. Sequential Recommender Systems :Challenges, Progress and Prospects

    Sequential Recommender Systems :Challenges, Progress and Prospects(序列推荐系统的挑战,进步以及前景) 新出现的序列推荐系统(SRSs ...

  3. Sequential Recommender Systems: Challenges, Progress and Prospects翻译和笔记

    摘要   近年来,序列推荐系统(SRS)的新兴话题已引起越来越多的关注.与传统的推荐系统(RS)包括协作过滤和基于内容的过滤不同,SRS尝试理解并建模顺序用户行为,用户与项目之间的交互以及用户偏好和项 ...

  4. Sequential Recommender Systems

    Sequential Recommender Systems 笔记整理 1.1动机:为什么需要序列推荐系统   用户-项目交互基本上是顺序相关的.在现实世界中,用户的购物行为通常是按顺序依次发生的,而 ...

  5. 【论文整理】基于图神经网络的社交推荐模型整理Graph Neural Networks for Recommender Systems: Challenges, Methods, and Direct

    社交推荐模型发展历程 图形构造 在具有社会意识的推荐系统中,用户的最终行为取决于朋友的社会影响和他/她自己的偏好.社交推荐面临的主要挑战之一是如何构建社交图来捕捉朋友的社交影响.一般来说,社交网络中的 ...

  6. 【综述阅读】Graph Neural Networks for Recommender Systems: Challenges, Methods, and Directions

    学习总结 文章目录 学习总结 一.Inroduction 二.Background 2.1 Recommender Systems 2.2 Graph Neural Networks 三.Challe ...

  7. 推荐算法炼丹笔记:序列化推荐系统

    作者:一元 公众号:炼丹笔记 特约审稿:杰少 背景 序列推荐系统(SRS)不同于传统推荐系统(RSs)包括协同过滤和基于内容的过滤,SRSs试图理解和建模用户的连续行为.用户与物品之间的交互作用以及用 ...

  8. 【RS】Improving Implicit Recommender Systems with View Data - 使用浏览数据提升隐式推荐系统...

    [论文标题]Improving Implicit Recommender Systems with View Data(IJCAI 18) [论文作者]Jingtao Ding  , Guanghui ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统...

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

最新文章

  1. 计算摄影 | 计算机如何学会自动裁剪图片(自动构图)?
  2. 多分类loss函数本质理解
  3. 呼叫中心的技术创新源于管理文化的变革
  4. 祝贺 在线文件管理系统 访问量 超过500
  5. 开发辅助 | 阿里图标库iconfont入门使用
  6. bitcount java_Java.math.BigInteger.bitCount()方法实例
  7. 从客户端*****中检测到有潜在危险的 Request.Form 值。
  8. Coding Party 邀你出战!飞桨黑客马拉松线下场来啦
  9. SpringBoot2 整合 AXIS2 服务端和客户端
  10. mysql5.7 索引
  11. 数据挖掘之自然语言处理
  12. eclipse查看一个方法被谁引用(调用)的快捷键四种方式
  13. 用python计算有效前沿_15个好用到哭的python库,太牛了!
  14. Git可视化工具GitKraKen基本使用
  15. android卡刷教程,卡刷是什么意思?安卓系统卡刷教程详解
  16. GPS接收机学习小记(一)
  17. 夜游模式探索推动文旅融合可持续发展
  18. 电机与拖动 - 2 变压器
  19. 搭建一站式OpenHarmony设备开发Windows开发环境
  20. 牛血不小心污渍了被子或者衣服,怎么洗干净?

热门文章

  1. 笔记28 接受请求的输入 ——处理表单
  2. 第十次ScrumMeeting博客
  3. 201621123023《Java程序设计》第7周学习总结
  4. Oracle存储过程小解
  5. HDU1824 2-sat
  6. CentOS中输入yum报错:sudo: unable to execute /bin/yum: No such file or directory
  7. 医学科研如何快速掌握R语言?
  8. Origin如何绘制泡泡图?
  9. mongodb查询值不为空_MongoDB使用规范(上)
  10. SVN服务器部署并实现双机同步及禁止普通用户删除文件