一、HyperRec [2020]

《Next-item Recommendation with Sequential Hypergraphs》 提出在超图 hypergraph

  1. 从电商平台到流媒体服务再到信息分享社区,推荐系统旨在根据用户的历史交互(如购买、浏览、以及关注)准确推断用户的偏好。next-item 推荐(根据用户的历史的序列交互来预测用户的 next action )是一个有前景的方向,并且人们在这方面的努力最近取得了很好的成功。

    一个关键问题是如何在这类模型中处理 item。具体而言,在 next-item 推荐的某个时间段内,我们认为 item 的含义可以通过相关性(correlation)来揭示,这个相关性是在短期内由用户交互(user interaction)来定义的。如下图所示:

    • iPhone8 是在 2017 年发布并且它与其它几款最新的设备(如 Nintendo Switch)一起购买的,表明它是当时的 hot new technology item

      一旦像 iPhone11 这样的新版本在 2019 年发布,iPhone8 就成为一个 budget choice ,因为它可以与其它价格合理的设备一起购买(如,Nintendo SwitchLite 版本,或者早先版本的 AirPods)。

    • 同样,我们可以推断用户 A 购买的花束是用于婚礼的,因为她还购买了通常与婚礼相关的其它 tiem

    为了捕获 item 语义的这些变化,论文 《Next-item Recommendation with Sequential Hypergraphs》 提出在超图(hypergraph)中对这类短期 item 相关性建模,其中在超图中每个超边(hyperedge)可以连接多个节点。在这方面,虽然超图中的每个节点都表示一个 item,但是超边可以将用户在短时间内交互的一组 item 连接起来。

    然而,从 item 相关性超图(item-correlation hypergraph)中抽取有表达力的 item 语义并非易事。

    • 一方面,由超边编码的 item 相关性不再是二元(pairwise )的,而是三元、四元、甚至是高阶的。这种复杂的关系不能用传统的方法处理,因为这些传统方法仅关注 pairwise association

    • 另一方面,item 语义可以通过 multiple hops 传播。例如,在上图中(20199 月),虽然不是由某个用户共同购买,但是 iPhone8 也和 Apple Lightning cable 相关(具有 2-hop 连接 )。

    因此,需要一种设计来有效地利用超图从而学习有表达力的 item 语义。

    此外,如何为 next-item 推荐捕获 item 的动态含义是另一个挑战,因为 item 的语义会随着时间和用户的变化而变化。这种变化有助于揭示用户的偏好模式(preference pattern)。

    • 如上图所示,用户 C2017 年购买 iPhone8 证明用户 C 追逐最新设备;而用户 D2019 年购买 iPhone8 表明用户 D 追求性价比。尽管在这两种情况下的 item 是相同的,但是 iPhone8 的基本语义已经发生改变。

    • 即使在同一个时间点,一个 item 也可以为不同的用户带来不同的含义。如上图中的用户 B 的一束鲜花可以反应家居装饰(home decoration),而用户 A 的同样一束鲜花可以反应一场婚礼。

    尽管在 next-item 推荐中存在将 item 视为动态 dynamic 的早期工作,但是它们通常将item 的变化建模为时间的函数。如何捕获上述两个观点(随时间变化、以及跨用户变化)对于高质量的 next-item 推荐至关重要,但是仍然有待探索。

    为了应对上述挑战,论文 《Next-item Recommendation with Sequential Hypergraphs》 提出了 HyperRec,这是一种新颖的端到端框架,该框架具有序列超图(sequential Hypergraph)从而增强 next-item 推荐。

    • 为了解决不同时间段的短期相关性,HyperRec 根据时间戳截断用户交互从而构建一系列超图。借助超图卷积网络(hypergraph convolutional network: HGCN),HyperRec 能够聚合具有直接或高阶连接的相关 item ,从而在每个时间段生成 dynamic embedding

      分时间段建模,从而捕获时间变化。

    • 为了建模历史时间段内 item embedding 的影响,HyperRec 开发了一个残差门控层(residual gating layer),从而将前一个时间段的 dynamic item embeddingstatic item embedding 相结合,从而生成 HGCN 的输入。

      捕获历史时间段对于当前时间段的影响。

    • 随着时间和用户发生变化,来自 HGCNembedding 将被馈入一个 fusion layer 来生成同时包含了 dynamic item embedding 和短期用户意图(short-term user intent)的final representation,从而用于每个特定的 user-item interaction

    • 在个性化的 next-item 推荐中,动态用户偏好可以从用户的交互序列中推断出来。因此,HyperRec 使用 self-attention layer 从交互序列中捕获动态用户模式(dynamic user pattern)。

      从当前 session 来捕获用户变化。

    • 在预测用户对某个 item 的偏好时,static item embeddingmost recent dynamic item embedding 都被考虑在内。

    总体而言,论文的贡献如下:

    • 作者从两个角度研究了 item 的动态性(随时间变化、以及跨用户变化),并揭示了利用 item 之间的短期相关性来改进 next-item 推荐的重要性。

    • 作者开发了一种具有序列超图的、新型的 next-item 推荐框架,从而生成包含 item 之间短期相关性的 dynamic item embedding 。该框架的两个特色是:

      • 用于控制来自历史残差信息(residual information)的残差门控层。

      • 用于编码每个交互的 fusion layer ,该层同时采用 dynamic item embedding 和短期用户意图从而用于序列模式建模(sequential pattern modeling)。

    • 通过在各种数据集上的实验,证明了所提出的模型在 Top-K next-item 推荐方面优于 SOTA 模型。

  2. 相关工作:

    • next-item 推荐:与将用户视为静态的推荐系统相比,next-item 推荐通常在用户每次交互之后更新用户的 state,并根据顺序地消费的 item 之间的关系来生成预测。

      • 一些工作聚焦于没有 user id 的情况下为短期的 interaction session 提供推荐,这通常假设 session 中的 item 彼此高度相关,并且以一个强烈的意图(intent)为中心。

      • 另一类研究使用跨较长时间的历史 item 序列来建模用户偏好。

        开创性的工作采用马尔科夫链(《Factorizing personalized markov chains for next-basket recommendation》)和基于翻译的方法(《Translation-based recommendation》)来建模用户序列交互的 item 之间的转移(transition)。

        最近,人们在应用不同的神经网络从用户的序列行为中捕获用户的动态偏好(dynamic preference)方面做出了很多努力。

        • GRU4Rec 利用 GRU 来研究用户的序列交互。

        • 然后人们提出了 GRU4Rec+《Recurrent neural networks with top-k gains for session-based recommendations》)作为 GRU4Rec 的修改版本,它具有新设计的一族损失函数从而用于 Top-K 推荐。

        • 同时,CaserNextItNet 采用卷积神经网络来捕获用户历史交互的序列模式(sequential pattern)。

        • SASRec 利用 self-attention layer 从而从历史交互中抽取用户偏好。

        然而,这些方法侧重于建模序列模式而没有考虑时间效( temporal effect),从而导致在不同时间段或来自不同用户的相同交互产生相似的 latent representation

      • 先前有一些工作聚焦于推荐系统设计中的时间效应。

        • TimeSVD++ 中,为了保持时间动态,他们训练了各种 SVD 模型从而在不同时间段进行评分。

        • 考虑到用户和 item 都随着时间的推移而演变,《Coupled Variational Recurrent Collaborative Filtering》《Recurrent Recommendation with Local Coherence》《Recurrent recommender networks》 中的工作利用并行 RNN 分别建模用户序列模式和 item 序列模式,并旨在预测用户将如何在不同的时间戳来对 item 进行评分。

        • 《Recurrent coevolutionary latent feature processes for continuous-time recommendation》 建议使用结合 RNNpoint proess 的模型来为用户和 item 生成 co-evolutionaryfeature embedding

        这些方法是为显式反馈序列(explicit feedback sequence)(如,评分)而设计的,需要依赖精确的时序信息。因此,它们不适合处理具有隐式反馈和稀疏时间戳的场景。

    • Neural Graph-based 推荐:随着 neural graph embedding 算法的最新进展,人们越来越关注在各种推荐场景中利用图结构。其中许多工作利用静态图中的高阶链接从而为 useritem 生成丰富的 latent representation

      • 在社交推荐中,可以用 GNN 来研究用户之间的社交联系,从而建模社交网络中用户偏好的传播。

      • 不同的是,PinSage 提出使用 item-item 链接构建的图上生成 item embedding,从而用于下游推荐。

      • 此外,还有一些工作聚焦于 user-item 交互图(《Graph convolutional matrix completion》《Neural Graph Collaborative Filtering》),他们基于 user-item 交互从而构建了一个链接了 useritem 的静态图。

      然而,这些方法并不是为捕获推荐系统中的序列模式而设计的。

      • 为了建模时间动态模式(temporally dynamic pattern),《Temporal recommendation on graphs via long-and short-termp reference fusion》 提出了 Session-based Temporal Graph: STG ,从而在一个图中链接 user, item, session 。通过从不同类型的节点(user/session)开始的随机游走过程,它能建模用户的长期偏好和短期偏好从而用于推荐。

      • 《Session-based Social Recommendation via Dynamic Graph Attention Networks》 的工作包括一个用于捕获动态用户行为的 RNN 、以及一个用于建模 static user-user graph 上的社交影响力(social influence)的 graph attention layer

      • SR-GNN 建议使用 session 序列来构建 session graph,然后使用 GNN 从这些 session graph 中抽取 item co-occurrence 。它基于 sessionitem embedding 的注意力聚合(attentive aggregation)从而生成 next-click prediction

    • 超图(hypergraph):超图是常规图的推广,其中每个超边(hyperedge)可以编码各种数量的对象之间的相关性。超图已被用于统一各种类型的内容从而用于 context-aware recommendation。在建模各种类型对象之间的相关性方面,早期的工作应用超图来辅助传统的协同过滤从而融合上下文信息。

      • 《Music recommendation by unified hypergraph: combining social media information and music content》 中,为了融合社交关系和音乐内容从而用于音乐推荐,他们提出使用超图来建模 music social community 中各种类型的对象(如,user, group, music track, tag, album )之间的关系。

      • 类似地,《News recommendation via hypergraph learning: encapsulation of user behavior and news content》 的工作使用超图来建模 reader, article, entity, topic 之间的相关性,从而用于个性化新闻推荐。

      这些方法是根据特定社区的属性而设计的,无法轻易地推广到其它的 next-item 推荐的任务。

1.1 模型

1.1.1 背景

  1. Motivation:这里我们对来自三个在线平台(Amazon, Etsy, Goodreads )的数据进行初步调研。我们同时从长期和短期的角度探讨 item 的动态模式(dynamic pattern)以及 item 之间的相关性。

    • item 经常出现和消失:

      首先,我们检查了 Etsyitem 的“生命周期”(lifecycle)。Etsy 是销售手工制品的最大电商平台之一。在下图 (a) 中,我们总结了 Etsy 上列出的所有 item2006 年到 2018 年的活跃时间(即,从第一次购买和最后一次购买之间的时间 gap)。

      我们发现 Etsy 中超过一半的商品在不到一年的时间内就成为 inactive (即,断货或被升级的型号所取代)。在其它在线平台上也可以找到类似的模式。随着 item 的频繁出现和消失,短期关系(short-term relationship)可能对 item 建模至关重要。因为从长期角度来看,item 之间的关系是不稳定的。

    • item 的热门程度随着时间的推移而迅速变化:

      其次,我们检索了 2001 年到 2005 年每个月在 Amazon 上的 Bestsellers (即,在购买排名 top 1% 的商品)。然后我们计算每个月的 Bestsellers 列表和一个月后/两个月后/三个月后/或者更长时间之后的 Bestsellers 列表之间的 Jaccard Similarity ,结果如图 (b) 所示。

      • 从蓝色曲线可以看到,前后相邻两个月的 Bestsellers 的交集仅有 30% 左右。

      • 从绿色曲线可以看到,间隔六个月的 Bestsellers 之间几乎没有交集(accard similarity 小于 10%)。

      由于一个 item 的热门程度可以反应社区对该 item 的看法,而 Bestsellers 列表随时间的变化表明:社区中 item 的含义可以随时间变化。

    • item 共现随时间变化:

      最后,我们转向 Goodreads 中的 itemGoodreads 是一个平台,在该平台上用户分享他们对书籍的想法。每个用户都有一个交互的 item 序列,其中用户以时间顺序对序列中的 item 进行评分、tagging、或者评论。我们根据时间戳(按年份)拆分这些交互的 item 序列,并使用不同年份的序列训练不同的 item embedding 模型。具体而言,我们采用 word2vec 根据 item 的共现来生成 book embedding 。基于这些 embedding,我们找到了每本书在不同年份的 top-10 邻居。然后我们计算每本书在 2012 年的邻居与 1 ~ 5 年后的邻居之间的 Jaccard similarity ,并在下图 (c) 中展示平均结果。

      我们发现:书籍的 2012 年邻居和 2013 年邻居之间的相似度为 40%,并且随着时间间隔越大而相似度越低。即,item 之间的关系随着时间的推移而变化,时间间隔越长,则变化越大。

    综上所述,从长期角度来看,item 之间的关系正在发生变化,从而导致 item 语义的变化。因此,这些启发了我们利用 item 之间的短期相关性,同时建模它们的动态模式从而用于 next-item 推荐。

  2. Question:我们提出了一种新颖的端到端的 next-item 推荐框架(即,HyperRec ),该框架利用了序列超图(sequential hypergraph)从而融合了短期的 item 相关性,同时建模随时间的动态(dynamics over time)和跨用户的动态(dynamics across users)。我们的 HyperRec 围绕三个指导性的研究问题来展开:

    • RQ1:如何定义超图结构中的 item 之间的相关性,以及如何通过考虑 item 之间的 multi-hop 链接从而将短期 item 相关性有效地融合到 dynamic item embedding 中?

      即,如何定义和捕获 item 之间的相关性。

    • RQ2:历史的 item 的意义可以暗示它们未来的特性,但是如何将不同时间段的 embedding process 联系 link 起来,以及连续时间段之间的 residual information 如何流动?

      即,如何考虑历史的 item 信息。

    • RQ3:如何将短期用户意图与 dynamic item embedding 融合从而表达用户交互序列中的每个交互,以进行动态用户偏好建模?

      即,得到的 dynamic item embedding 怎么用。

  3. U={u1,u2,,uN} 为平台中 N 个用户的集合,I={i1,i2,,iM} 为平台中 Mitem 的集合。我们考虑 T 个不同的时间戳的集合 T={t1,t2,,tT} 。每个时间戳 tnT 相当于某个短的时间段。对于每个用户 u ,我们将 u 交互的 item 列表按照时间顺序排序为 S(u)={(i1(u),t1(u)),(i2(u),t2(u)),,(i|S(u)|(u),t|S(u)|(u))},其中 (in(u),tn(u)) 表示用户 u 在时间段 tn(u)Titem in(u) 交互。

    这里的序列指的是比 session 更长的序列,称作 sequence 。如果仅仅是 session,那就没有必要划分时间段了。

    这也意味着我们必须知道 user id,否则没有办法获取用户所有的历史交互数据。因此该方法难以应用到匿名的场景中。

    每个 item in都有一个可训练的 static latent embedding enRd ,所有 itemstatic latent embedding 构成 static embedding 矩阵 E=[e1,e2,,eM]Rd×Mstatic embedding 对于不同的用户和不同的时间戳而言是不变的。

    next-item 推荐的目标是:给定用户 u 的交互序列 S(u) ,预测用户 u 之后会感兴趣的 item

1.1.2 序列超图

  1. 由于用户在短时间内购买的 item 是相关的,因此定义item 之间的适当链接(appropriate connection)是至关重要的。用户可能与不同数量的 item 进行交互,而传统的图结构通常仅支持 item 之间的 pairwise 关系,因此不适合这种情况。因此,我们提出使用超图来建模这种短期相关性。

    在超图中,多个 item 可以与一条超边(hyperedge)链接。例如下图中,20179 月的超图由 7 个节点(即,item )和 3 条超边组成。用户 A 购买的三个 item 通过一条超边链接在一起。此外,除了超图中的直接链接之外,item 之间的高阶链接也可以暗示它们之间的相关性。例如,下图中(20199 月),虽然不是由同一个用户购买,但是 iPhone8 也与 Apple Lightning caple 有关因为它们之间存在 2-hop 链接。

    使用超图卷积网络(hypergraph convolutional network: HGCN),我们可以利用直接链接和高阶链接来提取 item 之间的短期相关性。同时,一个 item 不应该被视为在不同时间段是不连续(discrete)的,因为 item 过去的特征可以暗示它未来的特征。例如,虽然 iPhone8 在上图中从 2017 年到 2019 年在含义上发生了根本性的变化,但是它在 2019 年的 representation 应该继承了 iPhone82017 年的 representation 的一些特性。

    接下来,以超图为主要的拓扑结构,我们将讨论如何有效地生成这种动态的 item representation,并同时考虑 item 在短期内的相关性和不同时间段之间的联系(connection)。

  2. 短期超图(Short-term Hypergraph):为了捕获不同时间段的 item 相关性,我们可以根据时间戳将 user-item 交互拆分为多个子集。令 G={Gt1,Gt2,,GtT} 表示一系列的超图,其中 Gtn=(Vtn,Etn,Wtn,Htn) 是基于时间段 tn 内发生的所有 user-item 交互来构建的:

    • VtnIGtn 中的节点集合, 即时间段 tn 中所有被交互的 item

    • EtnU 表示超边的集合,它类似于在 tn 期间进行交互的所有 user

      一个超边代表一个 sequence,有多少个 sequence 就有多少个超边。通常一个 sequence 对应于一个用户的所有历史行为序列(比 session 更长),因此 Etn 类似于在 tn 期间进行交互的所有 user 。因此,有多少个用户就有多少个超边。

    • 每个 GtnG 都与一个大小为 |Vtn|×|Etn| 的关联矩阵(incidence matrixHtn 相关联。在时间段 tn ,当 vVtn 并关联超边 ϵ 时(即,用户ϵ 在时刻 tn 购买 item v ),我们有Htn,v,ϵ=1,否则 Htn,v,ϵ=0

      Htn 给出的是节点到用户之间的关系。

    • 每个 GtnG 还与一个大小为 |Etn|×|Etn| 的权重矩阵 Wtn 相关联。Wtn 是一个对角矩阵,其中 Wtn,ϵ,ϵ 代表超边 ϵEtn 的权重。

      在这项工作中,我们让所有超边共享相同的权重并让 Wtnϵ,ϵ=1,ϵEtn

      Wtn 给出的是用户到用户之间的关系,这里 Wtn 就是单位矩阵。

    定义 DtnR|Vtn|×|Vtn|BtnR|Etn|×|Etn| 分别是节点和超边的度矩阵(degree matrix),即:

    Dtn=diag(Dtn,v),Dtn,v=ϵ=1|Etn|Wtn,ϵ,ϵHtn,v,eBtn=diag(Btn,ϵ),Btn,ϵ=v=1|Vtn|Htn,v,e

    节点 vdegree 等于它连接的所有用户的加权和,权重由 Htn (连接的权重)和 Wtn (超边的权重) 指定。

    超边 ϵdegree 等于它连接的所有节点的加权和,权重由 Htn (连接的权重)指定。

    在不同的时间段,会有一组不同的 user-item 交互,从而导致拓扑结构变化的超图。我们的目标是通过捕获 item 相关性,从而从每个短期的超图中抽取 item 语义。

    不同的时间段除了能够捕获随时间变化的语义之外,还能够降低超图的规模从而有利于内存。如果不区分时间段,那么超图会包含所有的用户(即,超边),可能需要很大的内存来处理。

  3. 超图卷积网络(Hypergraph Convolution Network: HGCN):在每个时间段,我们的目标是利用 item 之间的相关性来实现它们的 temporally dynamic embedding ,其中在这个短的时间段内,相关的 item 应该彼此接近。为了实现这一点,一个 item 应该从它的所有相邻 item 中聚合信息(即,latent representation)。这天然地符合卷积运算的假设,即,应该在被链接的 item 之间进行更多的传播。

    鉴于 Vtn 中的节点具有一组初始的 latent representation xtn(0)=[xtn,1(0),xtn,2(0),,xtn,|Vtn|(0)],则卷积运算可以定义为:

    初始的 latent representation 是通过残差门控组件得到的,其中该组件会利用前一个时间段 tn1HGCN 得到的 dynamic item embedding

    xtn,i(1)=τ(v=1|Vtn|ϵ=1|Etn|Htn,i,ϵHtn,v,ϵWtn,ϵ,ϵxtn,v(0)P(0))

    其中:

    • τ() 表示激活函数(如 ReLu )。

    • P(0) 表示初始层和第一层之间的可训练的权重矩阵。

    上式的括号内可以重新组织为:ϵ=1|Etn|Htn,i,ϵWtn,ϵ,ϵv=1|Vtn|(Htn,v,ϵxtn,v(0)P(0))。 其中:

    • 内层:对于每条超边 ϵ,聚合它包含的所有节点representation 。其中权重为 Htn,v,ϵ (这里设定为 0/1 的二元值),并且节点 representation 经过 P(0) 的线性投影。

    • 外层:聚合节点 i 所属的所有超边,其中权重为 Htn,i,ϵ×Wtn,ϵ,ϵ 。由于本文中 Wtn,ϵ,ϵ 设置为 1,因此权重等于 Htn,i,ϵ (为 0/1 二元值)。

    可以看到,这里可以视为一个异质图的 meta-path ,即 V-E-V,其中异质图包含两种类型的节点:V 为超图中的节点、E 为超图中的超边(作为异质图中的节点)。因此这里考虑的是超图节点之间的一阶关系。

    这个卷积操作将对每条超边进行编码:首先聚合每条超边包含的所有节点信息到该超边,然后聚合目标节点所在的每条超边的信息从而得到该节点的 embedding

    对于不同的目标节点,第一步是共享的(即,聚合每条超边包含的所有节点信息到该超边)。

    我们可以将这个卷积过程表示为矩阵形式:

    Xtn(1)=τ(HtnWtnHtnXtn(0)P(0))

    为了防止堆叠多个卷积层引起的数值不稳定性,我们需要添加堆成归一化。最终我们得到:

    Xtn(1)=f(Xtn(0),Htn,WtnP(0))=τ(Dtn1/2HtnWtnBtn1HtnDtn1/2Xtn(0)P(0))

    这里 f() 表示一个操作,该操作使用 one-hop 邻居来更新节点从而用于单层 hypergraph convolutional layer 。我们可以堆叠多个卷积层从而聚合来自超图中高阶邻居的信息。在这样的 hypergraph convolutional network: HGCN 中,第 L 层的输出可以计算为:

    Xtn(L)=f(Xtn(L1),Htn,WtnP(L1))

    从第 L 层得到的 Xtn(L) 可以继承前一层的 embedding,从而捕获超图中 item 相关性的传播。而在不同的时间段 tn,超图的拓扑结构正在发生变化,导致 dynamic item embedding 反映了不同时间段的短期相关性。

    超图卷积网络和传统的 GCN 的核心区别在于:超图卷积网络在信息传递时,传递了整个用户(即,超边)的信息,即:

    v1v1ϵϵv2

    其中节点 v1 到节点 v2 之间不仅传递了节点 v1 的信息,还传递了节点 v1 所属超边的信息(high-level 的)。

    相比较而言,传统 GCN 在节点 v1 到节点 v2 之间仅仅传递了节点 v1 的信息。

  4. 残差门控(Residual Gating):虽然 item 正在发生改变,但是 item 在不同时间段的特征之间仍然存在联系。 item 的某些特征会从上一个时间段保留到下一个时间段。例如,item 可能具有一些平滑变化、或者始终不变的固有特征。为了将 residual information 从先前的时间段传播到未来,我们引入了 residual gating 从而将 t1,t2,,tn1 时间段的 dynamic embeddingstatic embedding 拼接来产生每个节点的 initial embeddingitem itninitial embedding 可以计算为:

    xtn,i(0)=g×xt<n,i(L)+(1g)×eig=exp(zRtanh(WRxt<n,i(L)))exp(zRtanh(WRxt<n,i(L)))+exp(zRtanh(WRei))

    其中:

    • WRzRgate 的转换矩阵和转换向量,是待学习的参数。

    • tanh()tanh 非线性激活函数。

    • xt<n,i(L) 表示 item itn 之前的最新超图的 dynamic embedding 。如果 item i 没有出现在任何先前的超图中,我们忽略 residual component 并让 xtn,i(0)=eieiitem istatic embedding

    • g 通过门控函数来计算,用于控制保留 residual information 信息的比例。

  5. 通过这个 residual gating,我们按时间顺序连接超图,从而得到 HyperRec 的主要组件:序列超图(sequential hypergraph)(如下图所示)。在每个时间段,每个 item 都将从 static item embedding 以及来自过去的 residual information 来初始化。然后,HGCN 可以结合短期 item 相关性来生成有表达力的 dynamic item embedding

    使用残差门控的一个局限性在于:不同时间段的超图需要串行地计算而无法并行计算,因此计算速度会更慢(相比较于并行计算)。

1.1.3 Dynamic User Modeling

  1. 短期用户意图(Short-term User Intent):如下图所示,短期用户意图可以根据用户在特定时间段内交互的所有 item 中推断出来。这天然地属于超边的定义,超边完全解释了用户在短期内交互的所有 item 。具体而言,我们可以通过以下操作聚合每个超边上的 dynamic node embedding 来推断每个用户的短期意图:

    Utn=τ(Btn1/2HtnDtn1/2Xtn(L)P(L))

    这里用到的是每个节点 vHGCN 中最后一层(即,第 L 层)的 dynamic item embedding

    结果矩阵 Utn=[utn,1,utn,2,,utn,|Etn|] 可以被视为在 tn 时间段内的短期用户意图的集合。

    这里的 user 实际上指的是 sequence,它是比 item 更高 level 的概念。

  2. 融合层(Fusion Layer):然后,我们希望将 dynamic item embedding 和短期用户意图结合起来,从而更好地表达序列中的每个交互。我们提出如下融合层来生成 user uitem i 之间在时间段 tn 的交互的 representation

    etn,i,u=αuutn,u+αdxtn,i(L)+(1αdαu)eiαu=exp(ztanh(WFutn,u))exp(ztanh(WFutn,u))+exp(ztanh(WFxtn,i(L)))+exp(ztanh(WFei))αd=exp(ztanh(WFxtn,i(L)))exp(ztanh(WFutn,u))+exp(ztanh(WFxtn,i(L)))+exp(ztanh(WFei))

    其中:

    • eiitem istatic item embeddingxtn,i(L)item idynamic item embedding

    • utn,u 为矩阵 Utn 中的向量,表示 tn 时间段处的短期用户意图。

    • WF,z 是对应的转换矩阵和转换向量,是待学习的参数。

    现在 etn,i,u 包含了几个部分:静态部分(由 ei 给出)、时间动态性(由 xtn,i(L) 给出)、用户动态性(由 utn,u 给出)。

    为了避免过拟合,在训练期间,对于在与我们想要预测的 item 所相同时间段内发生的交互,我们将 utn1,uxtn1,i(L) 馈入 fusion layer 从而生成 etn,i,u

    这是因为:如果使用 utn,uxtn,i(L) ,则由于它们使用了超边,而超边可能包含了需要预测的 next item,因此会发生信息泄露。

  3. self-attention:我们采用 self-attention 作为基础模型来捕获交互序列中的动态模式。etn,i,u 可以被视为在 tn 时间段用户 uitem i 之间交互的 embedding

    即,现在我们有了更优表达力的 item embedding,因此需要获得当前时刻的用户偏好。

    假设我们有用户 u 根据时间排序的一个交互序列 S(u)={(i1(u),t1(u)),(i2(u),t2(u)),,(i|S(u)|(u),t|S(u)|(u))} 为了表达第 k 个交互,我们还考虑了位置 k 。我们使用 ok(u)=etk(u),ik(u),u+pk 来表示交互,其中 pkposition kposition embedding,用于刻画顺序信息。

    给定 embedding 序列 (o1(u),o2(u),,o|S(u)|(u))self-attention 旨在根据序列中每个元素与最后一个元素 o|S(u)|(u) 之间的相似性(即,注意力分数)来生成 aggregation 。其中,o|S(u)|(u)oj(u) 之间的注意力分数可以计算为:

    att(o|S(u)|(u),oj(u))=(WQo|S(u)|(u))(WKoj(u))d

    其中:WQ,WK 为变换矩阵(待学习的),而 dembedding 维度。

    attentive aggregation 可以计算为:

    dt|S(u)|(u),u=j=1|S(u)|att(o|S(u)|(u),oj(u))(WVoj(u))

    其中:WV 为变换矩阵(待学习的)。

    生成的 dt|S(u)|(u),u 可以表示用户 u 在时间段 t|S(u)|(u) 与序列 S(u) 中的 item 交互之后的动态偏好(dynamic preference)。

1.1.4 偏好预测

  1. 在预测用户对 item 的偏好时,我们应该同时考虑 dynamic item embeddingstatic item embedding

    y¯tn+1,u,i=dt<n+1,u(xt<n+1,i(L)+ei)

    其中:

    • dt<n+1,u 表示在 tn+1 之前生成的最新的 dynamic user preference

    • xt<n+1,i(L) 表示在 tn+1 之前生成的最新的 dynamic item embedding

    这里并没有使用交互的 representation etn,i,u ,因为这里要预测的就是:对于候选 item i ,用户是否 u 是否会与之交互。

  2. 为了训练模型,我们采用 Bayesian Pairwise Loss,其中我们假设用户更喜欢该用户交互过的 item 而不是未交互过的 item。损失函数为:

    J=(u,t,i,j)Clnsigmoid(y¯u,i(t)y¯u,j(t))+λ||θ||2

    其中:

    • ||θ||2L2 正则化,λ 为正则化系数。

    • sigmoid()sigmoid 函数。

    • 训练集 C 中的每个元素 (u,t,i,j) 由一个 ground truth tuple (u,t,i) 组成(即,用户 u 在时间段 titem i 交互),而item j 为用户 u 未交互的 item (负样本)。

1.2 实验

  1. 数据集:我们遵从先前的工作(SASRecBERT4Rec)一样在 leave-one-out setting 下评估 next-item 推荐问题,并按照《Recurrent Recommendation with Local Coherence》《Recurrent recommender networks》 中的真实场景拆分训练集和测试集。注意,模型仅使用 cutting timestamp 之前的交互进行训练。对于每个用户,我们使用 cutting timestamp 之后的第一个交互作为验证集,第二个交互作为测试集。

    为了探索模型的泛化能力,我们评估了三个不同的在线平台采样到的数据。

    • Amazon:这是一个公开的 Amazon 数据集的更新后的版本,覆盖了从 19965 月到 201810 月的 Amazon 评论。为了探索一组多样化产品之间的短期 item 相关性,我们混合了来自不同类目的购物数据,而不是对每个类目进行实验。

      我们使用评论时间戳来估计购买的时间戳。我们移除少于 50 次购买的 item 。我们保留在 cutting timestamp 之前购买至少 5item 且在 cutting timestamp 之后购买至少 2item 的用户。

    • EtsyEtsy 数据集包含 200611 月到 201812 月期间,销售手工艺品的最大电商网站之一的购买记录。我们移除交易少于 50 笔的 item ,然后过滤掉 2018 年之前少于 5 笔交易、或 2018 年少于 2 笔交易的用户。

    • GoodreadsGoodreads 数据集来自一个图书阅读社区,用户可以在其中对图书进行 tag、评分、撰写评论。我们将不同类型的交互视为对 item 的隐式反馈。我们保留了 2017 年之前交互 5 本书以上且 2017 年交互 2 本书以上的用户。

      这个数据集要比 AmazonEtsy 都更稠密,因为这样一个信息共享平台中的 item (即,书籍)更稳定,并且不太可能像电商平台中那样被新的 item 替换(如,商品可能被升级后的版本所替代)。

    这些数据集的统计结果如下表所示。

  2. 评估指标:

    • 遵从 leave-one-out setting,在测试集中,每个用户仅关联一个 item,这个 item 就是该用户在 cutting time 之后的 item

    • 我们采用常见的 next-item 推荐指标来评估每个模型在 Top-K 推荐中的性能,包括:Hit Rate: HIT@KNormalized Discounted Cumulative Gain: NDCG@KMean Reciprocal Rank: MRR

    • 遵从之前的 Top-K 推荐工作(《Neural collaborative filtering》SASRec),我们为每个用户随机选择 100negative item ,并将测试集的 item (即,positive item)与 negative item 进行排名 rank 。排名是基于推荐系统生成的预测偏好分。

    • 由于每个用户的测试集仅有一个 item,因此 hit rate 等于 recall,表明测试的 item 是否出现在 Top-K 列表中。

    • Ideal Discounted Cumulative Gain 对于所有用户而言都是一个常数,因此在计算 NDCG@K 时可以忽略(因为对于每个用户,测试集仅有一个 item )。

      在基于预测分数的排序中,假设用户 u 的测试 item 的排序为 ru ,那么:

      • 如果 ruKNDCGu@K=1log2(1+ru) ,否则 NDCGu@K=0

      • 如果 ruKHITu@K=1 ,否则 HITu@K=0

      根据这个计算,在 leave-one-out setting 中,NDCG@1 = HIT@1

    • MRR 衡量测试 item 的平均倒数排名,即,MRR=1|Utest|uUtest1ru ,其中 Utest 是所有测试用户的集合。

    我们报告每个数据集上所有用户的平均 NDCG 和平均 Hit Rate ,其中 K=1K=5

  3. baseline

    • PopRec:热门度推荐。这种简单的方法根据 item 的受欢迎程度来排序,并推荐最热门的 item

    • TransRec:基于翻译的推荐。TransRec 使用 user-specific 翻译操作来建模交互序列中不同 item 之间的转移。

    • GRU4Rec+:具有 Top-k GainsRNN。作为 GRU4Rec 的改进版,该模型采用 GRU 来建模序列行为,并使用一族新的损失函数来提高 Top-K 增益。

    • TCN:用于 next-item 推荐的简单卷积生成网络(《A Simple Convolutional Generative Network for Next Item Recommendation》)。该模型改进了典型的 CNN-basednext-item 推荐,使用 masked filter 和堆叠的一维空洞卷积层,从而建模远程依赖关系。

    • HPMNLifelong Sequential Modeling with Personalized Memorization《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》)。HPMN 采用分层周期记忆网络(hierarchical periodic memory network),可以同时捕获用户的多尺度序列模式,从而可以将近期用户行为与长期模式相结合。

    • HGN:用于序列推荐的 Hierarchical Gating Network《Hierarchical Gating Networks for Sequential Recommendation》)。该方法包含一个特征门控(feature gating)以及一个实例门控(instance gating),用于分层地选择 item 特征和 item 实例,从而用于为 next-item 推荐来建模用户。

    • SASRecSelf-attentive Sequential Recommendation 。它采用 self-attention layer 来捕获用户交互序列中的动态模式。它可以被视为 HyperRec 中动态用户建模组件的简化版本,该简化版本使用 static item embedding 来表示每个交互。

    • BERT4Rec:带有来自于 Transformer 的双向编码器 representation 的序列推荐。该方法利用双向自注意力模块从左右两侧捕获用户历史行为序列中的上下文信息。

    • 除了上述 baseline 之外,我们还将所提出的模型与后文介绍的变体进行比较,作为我们的消融实验案例。

    HyperRec 要求 user ID 的信息从而可以得到完整的用户历史行为序列。然而,这里的有些 baseline 方法是针对匿名 session 进行的(如 GRU4Rec+SASRecBERT4Rec。这些方法既可以用于匿名 session 也可以用于非匿名 session (提供了 user id),但是它们并没有针对非匿名 session 进行优化,如,建模 user embedding 。所以这里的比较不一定公平。

  4. 配置:

    • 实验是在配备了 12GB Nvidia TITAN Xp GPU 的服务器上进行的。

    • 所有数据集的最大序列长度设置为 50

    • 为了公平比较,训练过程中所有模型的负采样率都设置为 1 。即,对于每个 ground-truth tuple,我们都将它与一个随机采样的 negative item 相结合。

    • 对于 HPMN, GRU4Rec+, HGN, BERT4Rec,我们使用原始论文中提供的实现和配置。对于 TCNSASRec,我们使用 《Session-based Social Recommendation via Dynamic Graph Attention Networks》 中提供的实现。

    • 为了获得每个模型的最佳性能,我们执行超参数搜索,其中:

      • dropout rate 搜索范围: {0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9}

        HyperRec 的哪一层执行 dropout?作者并未讲明。

      • 正则化系数 λ 的搜索范围:{105,104,103,102,101}

      • embedding size 搜索范围:{25,50,100,150,200}

      • 对于特定于模型的超参数,我们根据验证集来微调。

    • 我们在 TensorFlow 中实现了 HyperRec 及其所有变体,并采用 Adam 作为优化器。在实验中,经过 grid search 之后,学习率设为 0.001batch size = 5120 。我们将所有数据集的 embedding size 设为 100。我们微调了每个数据的层数,范围在 {1,2,3,4,5} 。我们也微调了时间段粒度,范围在 {1,3,6,12,18} 个月。

  5. 实验结果:我们将 HyperRecbaseline 进行比较,结果如下表所示。可以看到:

    • 在所有评估指标下,HyperRec 在每个数据集中都显著优于所有 baseline。这证明了 HyperRec 在真实环境(其中 item 随着时间演变)中改进 next-item 推荐的有效性。

    • TransRec 相比于简单地推荐热门 item 相比,可以提供有前景的改进。然而,TransRec 将用户视为他们购买的 consecutive items 之间的线性翻译,这限制了模型处理现实问题的能力,其中用户和 item 都在改变。

    • HPMN 由分层记忆网络组成并为用户创建 lifelong profile,其中记忆网络的每一层都旨在捕获特定时期的周期性用户偏好(periodic user preference)。我们发现 HPMNAmazon 中的表现优于 TransRec30% 以上,但是在 EtsyGoodreads 上似乎较弱。

    • TCN 建立在一维空洞卷积之上,展示出它在建模短期行为方面的优势。TCNEtsy 中优于 HPMN,但是它似乎不太适合像 Goodreads 这样长期偏好很重要的场景。

    • 作为针对GRU4Rec 的高级版本,在 AmazonGoodreads 数据集上,GRU4Rec+ 可以通过 GRU 来进行动态用户建模并采用针对 RNN 模型定制化的损失函数,从而改进 TCNHPMN

    • HGN 配备了新颖的特征门控和实例门控从而增强短期用户建模,因此优于上述 baseline

    • SASRecBERT4Rec 都使用 self-attention layer 来建模序列用户模式。在 BERT4Rec 中,通过随机屏蔽用户序列中的 item,它能够训练一个双向模型用于推荐。然而,它并没有像原始的 BERT 一样为 NLP 带来巨大的提升,因为序列中从右到左的模式不一定能够提供预测用户动态偏好的信息。

    • SOTA 相比,HyperRecAmazon 中可以实现比其它数据集最大的改进。原因可能是 HyperRec 能够从极其稀疏的具有超图拓扑的 user-item 交互中完全地抽取 item 特性。

  6. 消融研究:我们通过移除或替换 HyperRec 中的基础组件来进行一系列消融测试,从而评估这些组件的有效性。消融测试的结果如下表所示。为了公平地比较,当模型中有超图时,结果是以 12 个月为粒度并且两层的 HGCN 来实现的。

    • 首先,在所有数据集上,HyperRec 与所有变体相比都实现了最佳的性能,这证明了 HyperRec 设计的有效性。

    • 为了评估超图结构的有效性,我们在 (3) 中为每个用户和每个 item 在不同时间段分配不同的 latent embedding 作为 dynamic item embedding 和短期用户意图。也就是说,我们没有像 HyperRec 那样利用超图来建模短期 item 相关性,而是使用这些 time-dependent embedding 来编码数据集中的变化。我们发现性能有很大的下降。在 AmazonGoodreads 数据集中,(3) 的性能甚至比使用 static item embedding(2)更差。

      一个原因是:每个时间段的 user-item 交互过于稀疏,无法直接充分训练 time-dependent embedding 。但是带 HGCN 的超图能够在每个时间段从 multi-hop 链接中充分抽取 item 之间的有效的相关性。

    • 然后我们转向 HyperRecdynamic item embedding 所赋予的每个组件,从而检查它们的贡献。

      • (4) 中,通过移除 residual component,超图的 initial embedding 仅由 static item embedding 组成。虽然在所有数据集上的性能下降,但是我们发现它在 Goodreads 中带来了最大的性能损失。因此,通过控制过去的 residual information 来连接不同时间段的 dynamic item embedding 是很重要的。

      • 对于 (5)(6),我们分别移除 fusion layer 中的 xtn,i(L)utn,u ,从而检查生成的 dynamic item embedding 和短期用户意图如何影响动态用户偏好建模中的特定交互的含义。由于 (5)(6) 在所有数据集上都实现了相似的性能,因此我们可以得出结论:这两个组件对于捕获交互的含义(meaning of an interaction)都很重要。

      • (7) 中,我们使用公式 y¯tn+1,u,i=dt<n+1,u(xt<n+1,i(L)+ei) 计算偏好分时移除了 dynamic item embedding xt<n+1,i(L) 。我们发现这个组件对 AmazonGoodreads 有很大贡献。然而,在 Etsy 上,item 对即时送礼事件(instant gifting event)(如,圣诞节、纪念日)更为敏感,因为上一个时间段的 dynamic item embedding 可能无法提供对当前时间段的深入洞察。

  7. 超参数分析:我们探索 HyperRec 在不同数量的卷积层、以及不同的时间段粒度下的性能。

    • HGCN 层数:我们通过改变超卷积层的数量来比较 HyperRec 的性能,结果如下图所示。

      • 当仅有一个卷积层时,每个 dynamic item embedding 仅聚合来自通过超边与其直接相连的 item 的信息。在这个阶段,HyperRec 可以超越它的仅考虑 static item embedding 的变体,这说明了在 next-item 推荐中探索短期 item 相关并且采用 dynamic embedding 的必要性。

      • 与仅有一层相比,堆叠两个卷积层可以带来显著的提升。我们可以推断:超图和 HGCN 是一种有效选择从而用于抽取短期的有表达力的 item 语义。并且在超图中考虑高阶邻域的信息很重要。

      • 但是,对于 EtsyAmazon 而言,由于数据非常稀疏,因此没有必要进一步增加卷积层的数量。2 ~ 3层的 HGCN 足以抽取不同时间段的 item 语义。

        然而,由于 Goodreads 在每个超图中包含相对更多的交互,因此更多的卷积层可以进一步改善 embedding 过程。

    • 时间粒度(Time Granularity):时间段的粒度控制了 HyperRec 对随时间变化的敏感程度。在下图中,我们通过将粒度从 1 ~ 18 个月来展示模型的性能。可以看到:

      • 当时间粒度较小时,我们发现模型无法达到最佳性能,因为交互非常稀疏,不足以构建一组有表达能力的 item embedding

      • 当扩大粒度时,我们发现 HypereRec 的性能在所有数据集上都有所提高。

        • Amazon 数据集上,当粒度设置为 12 个月时,模型性能达到最佳。

        • Etsy 数据集上,最佳的粒度较小,因为 Etsy 上销售的商品(即手工制品)的波动性高于 Amazon 上的商品。

        • Goodreads 数据集上,最佳的粒度约为 6 个月。因为在 Goodreads 中,对于每个时间段都有更多的交互从而用于 dynamic item embedding

      • 如果我们进一步扩大粒度,则模型性能会下降,因为这会低估 item 的变化并且可能会给模型带来噪声。

  8. 用户生命周期:我们评估具有不同生命周期的用户,其中生命周期指的是用户的最后一次交互和第一次交互之间的时间间隔。实验结果如下图所示。可以看到:

    • 对于生命周期较短(不到一年)的用户,HGNSASRec 效果更好;而对于生命周期更长的用户,SASRecHGN 更好。

    • 我们发现 HyperRec 显著优于所有生命周期的 baseline 。对于生命周期较长的用户,HyperRec 可以实现较大的提升,这表明 HyperRec 在捕获长期用户模式并同时考虑短期相关性方面具有优势。