利用分类学数据来增强序列推荐的能力

转载:https://zhuanlan.zhihu.com/p/49410727?utm_source=wechat_session&utm_medium=social&utm_oi=620523260358692864&from=timeline

论文:Taxonomy-aware Multi-hop Reasoning Networks for Sequential Recommendation

发表会议:WSDM 2019

论文作者:Jin Huang,Zhaochun Ren,Wayne Xin Zhao,Gaole He,Ji-Rong Wen,Daxiang Dong

专栏作者:任瑞阳,2015级本科生,来自山东大学智能媒体研究中心,2019年即将前往中国人民大学大数据管理与分析方法研究北京市重点实验室攻读研究生。

引言

在推荐系统中,最常见的如用户从购物网站选择商品,很多时候,用户并不是一开始就知道自己想购买什么商品,商品选择行为是一个多步决策。为了便于用户浏览和选择商品,许多在线购物平台都有已经定义好的商品分类学结构,提供了一个多层次导引。本文提出了一种新的类别感知多跳推理网络(Taxonomy-aware Multi-hop Reasoning Network)(TMRN)用于商品推荐,结合了门控循环单元GRU和基于记忆网络的多跳推理结构,提高了算法的有效性和可解释性。

问题背景

在给定用户之前的交互记录的情况下,预测用户可能继续选择的商品,这种操作被称为序列推荐。随着网络内容的急剧增长,许多研究都致力于利用丰富的上下文信息来提高序列推荐的能力,但是,尽管这些研究在某种程度上提高了序列推荐能力,但是存在两个主要的问题:

  • 通常会采用单一向量表示来学习整体序列的特征,对不同内容信息的多粒度序列特征建模能力不强。
  • 直接使用从上下文数据得到的特征向量作为辅助输入,通常难以充分利用上下文信息中的结构模式来提高偏好表示能力。

问题定义

分类学数据是本文方法中使用的一种特定类型的上下文信息,通常是一个树状层次结构,非叶节点对应于分类标签,叶节点对应于商品,层次越高的节点对应更具抽象性,也就是概括性更强的类别,与知识库相比,更容易获得并且广泛应用,比如一台MacBook Pro 13.3’,它在京东对应的分类学结构为:电脑办公 \rightarrow 轻薄本 \rightarrow MacBook Pro 13.3’。与先前的方法不同,本文重点利用了分类学数据的层次结构来构建多跳推理网络

已知被组织成树状层次结构的商品分类 C ,且已知用户的商品交互序列 \{i_1,\dots i_t,\dots i_{n_u}\} ,任务的目的是推断出用户 u 在时间 n_u+1 的交互物品。

解决思路

下图是一个亚马逊的用户产品选择过程,通过它我们可以发现,一个商品分类学结构本质上是一个多层的树形分类结构,每个非叶节点对应一个类别标签,代表一类商品,这样,用户就可以利用已知的分类学结构来方便地进行商品的浏览。

鉴于以上思想,本文的解决思路为,把序列推荐中用户偏好的学习与分类学中的类别层次结合起来,也就是说,基于每个用户的整体序列偏好,学习一个与分类学中的每一个层次中都有对应类别的唯一偏好表示,用这种方法,粗粒度的特征表示会从抽象到具体,逐渐被提炼出来,而且可以很自然地从中获得用户偏好的演变。

 

一个亚马逊用户的产品选择过程示例

模型描述

本文模型分为两个部分,第一个部分是基于门控循环单元(GRU)的用户序列偏好生成器,第二个部分是基于记忆网络(Memory Network)的多跳推理结构序列预测器。在第二部分中,首先提出了一个常规的多跳推理结构,之后进一步使用了分类学数据来构造该结构。

  • 基于GRU的用户序列偏好生成器

考虑到简便性和鲁棒性,本文使用了GRU网络作为模型的基础结构,已知用户 u ,在时间 t时,对于一个候选商品 i ,基于GRU的推荐系统会通过计算 u 和 i 的向量表示的内积来生成一个排名分数,通过该分数得到一个候选商品的降序排列,向用户推荐高分的商品。

  • 一个常规多跳推理结构

为了构造高效的多跳推理结构,本文采用了记忆网络,并提出了一个多跳推理结构来进行序列预测。

记忆网络利用精确的记忆机制来解决神经网络的信息记忆问题。它使用外部矩阵来存储要被“记忆”的数据,这个矩阵可以被神经网络反复读取,存储在矩阵中的信息也可以被更新或者扩展。在本文中,假设存在 K 跳( K 个分类层次),对于一个用户,不是设置单存储矩阵,而是使用 K 个独立的记忆矩阵,这样就可以学习多跳的偏好表示。记忆网络还使用了读写操作来获取更新信息,这也是记忆网络的两个基本操作。

在多跳推理网络中,给定用户 u ,用 v_{t,k}^u 作为在时间 t ,用户 u 在第 k 跳的偏好表示。先把基于GRU的推荐系统得到的序列表示作为初始偏好,对于第 k 跳,使用之前跳的信息,包括偏好表示 v_{t,k-1}^u 和记忆网络的输出向量 o_{t,k}^u 来获得偏好表示 v_{t,k}^u ,计算方法如下:

v_{t,k}^u=MLP(v_{t,k-1}^u \oplus o_{t,k}^u)

其中MLP表示包含几个隐藏层的多层感知机, \oplus 表示向量串联操作。

为了生成输出向量 o_{t,k}^u ,使用了偏好表示 v_{t,k-1}^u 作为记忆网络读操作的输入向量,并把它作为读取记忆矩阵 M_k^u 的序列,生成方法如下:

o_{t,k}^u\leftarrow READ(M_k^u,v_{t,k-1}^u)

读操作可以使用用户特有的记忆向量的注意力机制来解释,记忆矩阵中权重大的向量对输出向量的贡献更大。

更新时,在时间 t ,当用户 u 和一个新的商品 i_t 交互,记忆网络会使用商品 i_t 的信息执行写操作来更新 K 个记忆矩阵中的内容,经过更新,记忆网络就可以长期捕捉用户偏好并更新模型。

  • 使用分类学数据来构造多跳推理机制

现在,我们已经可以通过多跳推理结构来分层次地在多个跳中学习不同的偏好表示,但是一般的多跳推理网络很难解释学习过程,也就是说,在每一跳用户偏好中哪种特征会被捕获还不够清楚。

本文利用分类学结构来增强多跳推理机制的能力,在三个层次中来规划类别节点。首先推断用户对上层抽象类别的偏好,然后通过逐渐关注下层具体类别来完善用户偏好的学习,这样每一跳的推理都有更为清晰的解释,通过外部知识信息来学习的能力得到了增强。

机制的中心思想是把多跳推理网络中的每一跳和相应的类别层次对应,在时间 t ,第 k 跳记忆矩阵 M_k^u 中的第 a 个记忆向量由两个向量拼接而成:

M_{k,a}^u\leftarrow q_{i_{t-a+1}} \oplus c_{i_{t-a+1}}^k

c_{i_{t-a+1}}^k 是第 k 层类别中 i_{t-a+1} 对应商品的类别节点的嵌入,也就是特征表示,利用已经广泛使用的LINE模型学到, q_i 为商品 i 的向量表示。

在更新的时候,当新商品 i_t 到来,使用它的关联的类别节点嵌入进行写操作,更新第跳的记忆内容:

\{M_k^u\}^{new}\leftarrow WRITE(\{M_k^u\}^{old},q_{i_t}\oplus c_{i_t}^k)

写操作通过先进先出机制执行。

下图展示了第 k 跳的记忆矩阵和写操作,我们可以看到类别节点的嵌入已经体现在不同的跳中,当新的商品 i_t 到来,写操作将替换掉先前的商品 i_{t-A} ,需要注意的是,在队列没满的时候,商品会直接加入队列。

第k跳的记忆矩阵和写操作

TMRN的整体结构如下图所示:

一个具有三跳的TMRN,在每一跳为给定用户设置了唯一的记忆矩阵

整体的工作流程如下:

首先使用基于GRU的推荐系统学习整体序列表示 h_t^u ,然后把它作为初始序列,通过记忆矩阵执行多跳推理,在第跳可以得到一个对应于第层分类的新的偏好表示,经过 K 跳,得到多跳偏好表示。最后把它与初始序列结合得到最终向量表示,即可计算用户 u 与商品 i 之间的排名分数,同时也可以得到对选择过程的解释。

下图具体体现了模型的可解释性:

模型可解释性样例

图中, t_i 表示时间轴,用三个类别层次(三跳)来描绘用户偏好,类别从上到下代表从抽象到具体。色条深的代表注意力权重越大,越要着重考虑该类别对商品推荐的影响。随之时间的推移,推荐系统慢慢发现用户更偏爱computer accessories大类下的mouse & keyboard子类,最终推荐了newmen牌的商品。

总结

本文利用分类学数据的层次结构来指导学习用户偏好,把基于GRU的序列推荐结构与基于记忆网络的多跳推理结构整合在一起,而且把用户偏好序列与分类学中的类别层次联系起来。本文提出的多跳推理结构可以在序列推荐任务中为用户偏好建模,表征用户的整体和细粒度序列特征,从而大大提高对复杂用户行为的学习能力。通过这种层次结构,能够捕获用户偏好在分类过程中的逐渐演变和细化,这对于理解用户交互的详细决策过程很有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值