二十三、MCPRN[2019]

  1. 在现实世界中,随着相应 context 的演变,用户需求会不断变化。这种 context-sensitive demand 的性质激发了人们最近对于 session-based recommender system: SBRS 的兴趣。session-based 推荐系统解决了静态推荐系统的空白, 其中静态推荐系统仅推荐 homogeneous item 而不考虑跨 sessiondemand dynamic 。因此,SBRS 通过建模 sessionitem 之间的依赖关系,从而针对 session(作为 context )向用户推荐该用户可能感兴趣的 next item

    大多数现有的 SBRS 通过形成forming 具有单一意图purpose 或目标goalsession 来作出推荐(例如,在购物篮分析 basket analysis 中购买食物和饮料之类的商品)。这通常违反了 session 可能会涉及多种类型的 item 的现实,其中每种类型对应于一个意图。以下图中第一行所示的 session 为例:

    • Janet 首先将培根放入购物车中作为早餐。
    • 然后她被一朵可爱的玫瑰饰品所吸引并将其添加到购物车中。
    • 她还为早餐选择了鸡蛋和面包,还选择了一个花瓶来装玫瑰。
    • 最后,她拿起一瓶牛奶结束了此次购物。

    对于这个例子,现有的 SBRS 将采用单通道single-channel建模方法,将 session 中购买的商品隐式关联为同质的 item 序列。如下图中的第二行所示。显然,当 session 中的 item 有多种意图时,这种方法无法区分 purpose-specificitem 依赖(如早餐 item 和饰品 item )。

    这里 “通道” 指的就是意图。

    上面的例子揭示了两种代表性类型的、 state-of-the-artSBRS 之间的显著 gap ,即基于单通道 RNNSBRS 和基于单通道注意力的 SBRSRNN-based 模型假设 session 中任何连续successiveitem 之间都具有严格的顺序依赖关系sequential dependency,因此:

    • gap 1:很容易生成错误的依赖关系,因为在多意图multi-purposesession 中并非所有 item 都存在顺序依赖。

    • gap 2RNN-basedSBRS 倾向于推荐最近的意图所对应的 item ,其中最近的意图是通过最近的 item 所指示的。

      这是因为:由于记忆 memory 随着 time step 而衰减 decay,那些远离 target itemcontextual item 将被 target item 附近的 item 所淹没。

    • gap 3attention-based SBRS 倾向于推荐 item 从而满足主要意图,对其它意图不利。

      为了减少无关 item 的干扰,人们将注意力机制纳入浅层网络、RNN 、以及 memory network 从而构建 SBRS 。注意力模型倾向于在极少数重要 item 上分配突出的权重,这使得 session 的意图由这几个 item 所主导。

    论文 《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》 通过提出混合通道意图路由网络 mixture-channel purpose routing network: MCPRN 来解决上述三个 gap

    • 首先,MCPRN 使用意图路由网络 purpose routing network: PRN 自动地检测 session 中可能的多个意图。

    • 然后,MCPRN 使用混合通道循环网络 mixture-channel recurrent network: MCRN 建模 session 。其中,每个通道(即意图特定的循环网络 purpose-specific recurrent network: PSRN)建立在意图特定的循环单元purpose-specific recurrent unit: PSRU之上,并为特定意图构建 purpose-specific embedding 从而建模 item 之间的依赖项。

      PSRU 是一种 GRU 变体,它考虑了 item 属于当前意图的权重。 而 PSRNPSRU 构成。

    • 最后,通过集成所有通道来构建多意图 context embedding (即,session embedding ),从而对候选 item 进行排序,从而得到多样化的、purpose-sensitive 的推荐。

    多亏了 PRNMCRNsession 中的不同意图可以被检测到,然后这些不同意图的 item 依赖关系分别在不同的同道中被建模。结果,item 依赖关系是针对特定意图的,而不是针对一个整体而粗糙的意图的,这使得MCPRN 能够更集中地捕获意图驱动 purpose-driven 的用户行为。因此,MCPRN 以更有效、更鲁棒的机制来利用当前的单意图 SBRS 来表达多意图 session 。通过在 session 中保留和建模多个意图,MCPRN 可以推荐满足不同意图的多样化的 item ,而现有方法倾向于仅为单个意图推荐 item

    这项工作的主要贡献如下:

    • 论文提出了多意图建模,以更合理的方式捕获 sesion 中的用户行为从而适应实际情况。因此,论文提出了混合通道意图路由网络 MCPRN 来实现这一点。
    • MCPRN 中,意图路由网络 PRN 旨在推断每个 item 的意图并将它们路由到特定的通道。此外,特定意图循环单元 PSRU 是关键组件,它作为混合通道循环网络 MCRN 关于每个通道的基本单元。
  2. 相关工作:人们已经开发了各种 SBRS,包括:基于规则/模式的推荐系统(《Effective next-items recommendation via personalized sequential pattern mining》)、基于邻域的推荐系统(《When recurrent neural networks meet the neighborhood for session-based recommendation》)、基于马尔科夫链的推荐系统(《Personalized ranking metric embedding for next new poi recommendation》)、以及基于分解机的推荐系统(《Factorizing personalized markov chains for next-basket recommendation》)。我们简要回顾了两个具有代表性的 state-of-the-artSBRSRNN-basedSBRSattention-basedSBRS ,因为它们与我们的工作最相关。

    • RNN-based SBRS:由于RNN 在处理序列数据方面的优势,RNN 是捕获 SBRS 中复杂的 intra-session 依赖性的直观选择。

      • GRU4Rec 是第一个 RNN-basedSBRS,它采用 GRU 来捕获 session 中的长期依赖关系。
      • 后来,GRU4Rec 的改进版本(《Recurrent neural networks with top-k gains for session-based recommendations》)通过引入针对 RNN 量身定制的、创新性的 ranking loss function ,从而显著提高模型性能。

      由于采用了严格的次序假设 order assumptionRNN 很容易产生错误的依赖关系。次序假设,即:假设 session 中的任何相邻 item 都是高度的顺序相关sequentially dependent 的。然而,在大多数实际情况下,这可能并非如此。

      此外,RNN 通常会偏向于最近的 item,因为随着记忆衰退 memory decay ,模型会在 session 中丢失很多 previous item 的信息。

    • attention-based SBRS:通过在 session 上下文中强调那些相关的和重要的 item ,注意力机制已被用于构建更鲁棒的 SBRS

      • 《Neural attentive session-based recommendation》 提出了神经注意力推荐机 Neural Attentive Recommendation Machine: NARM ,它采用具有注意力机制的混合编码器,通过区分更重要和更不重要的 item ,从而在当前 session 中建模用户的序列行为和用户的主要意图。
      • 《Attention-based transactional context embedding for next item recommendation》 设计了一种 attention-based transaction embedding model: ATEM ,从而在没有次序假设的情况下在 session 上下文中构建 attentive context embedding
      • 此外,在 《Sequential recommendation with user memory networks》 中,注意力机制被用于 memory-augmented 神经网络中,用于选择性地读出 external memory matrix 从而进行 next item 推荐。

      然而,注意力机制试图在少数重要的 item 上分配更大的权重,同时淡化其它 item ,导致偏向于由这些少数 item 所指示的主要意图。因此,attention-based SBRS 通常仅满足主要意图,而忽略了 session 中的其它意图。

    综上所述,所有上述 SBRS 都是基于单通道的,它们对于单意图 session 是有效的。其中,单意图指的是:session 中的所有 item 都是相互依赖的。然而,这些方法无法很好地处理具有多种不同类型的 item (这些 item 反应不同意图)的 session 。受到混合模型在处理多种关系方面的巨大潜力的启发,我们为多意图 session 设计了一个混合通道模型。

23.1 模型

  1. 给定一个 session 集合 S={s1,,s|S|} ,其中每个 session s={v1,,v|s|} 由一个匿名用户在一个交易事件 transaction event 中顺序交互(如点击、购买)的 item 序列组成。这里 |S| 为总的 session 数量,s 中的下标表示 item 出现的顺序(或时间戳)。

    所有 session 中出现的所有 item 构成了 universalitem 集合 V 。对于 target item vts,所有发生在 vt 之前的、位于 s 中的 item 共同构成了 vts 上的 session context(简称 context ),记做 Cvt={v1,,vt1}Cvt 中的每个 item 都称作 contextual item

    给定具有前面 t1itemcontext C ,我们需要构建一个 SBRS 来推荐第 titem。因此,MCPRN 被训练为一个概率分类器模型,该模型学习预测条件概率分布 P(vtC) 。一旦学到了模型的所有参数,MCPRN 就能够根据给定 context 时的条件概率对所有候选 item 来排序从而推荐 next item

  2. MCPRN 的架构如下图 (a) 所示。MCPRN 主要由两个模块组成:意图路由器 Purpose Router、混合通道循环网络 Mixture-Channel Recurrent Network: MCRN

    • Purpose Router:意图路由器用于将每个 item 路由到特定意图的通道。具体而言,我们采用软路由soft routing策略,将每个 item embedding 以不同的意图权重分配给所有通道,即所谓的混合通道网络 mixture channel network。软路由策略可以进行任何基于梯度的优化从而简化学习。

      与软路由对应的是硬路由 hard routing,即每个 item embedding 仅分配给某一个通道。

    • MCRN:在 MCRN 中,每个通道都配备了一个基于意图特定循环单元 PSRU 的意图特定循环网络 PSRN,用于为特定意图建模 item 之间的依赖关系。

    不同通道的 final hidden state ht1 被选择性地集成从而作为 multi-purpose context embedding vC 。以 vC 作为条件的 target item embedding vt 用于计算所选择的 item 作为 next item 的概率。接下来,我们将介绍这些组件的更多技术细节。

    这里的 ”选择性地“ 指的是:根据 vt 的软路由来进行加权。因为我们只需要选择 target item 所在的通道。

23.1.1 Purpose Router

  1. 给定 session context 中的所有 item,意图路由网络 purpose routing network: PRN 在意图路由器 Purpose Router 中使用,从而在没有任何人类先验知识的情况下抽取 selecting item vi 的意图。

    • 首先,我们将每个 item v 映射成一个 Kembedding 向量 vRK ,所有 itemembedding 向量构成一个 embedding 矩阵 WeRK×|V|,其中 embedding 矩阵的第 ivi=We[:,i]RK 是第 iitem viembedding 向量。

    • 然后,我们将 item viemebdding vi 输入到 PRN 中,从而确定 selecting vi 的意图。

      WpRK×m 表示所有意图的意图过滤参数 purpose filtering parameter的矩阵 ,其中 m 为意图数量(即,通道数),Wp 的第 jpj=Wp[:,j]RK 表示第 j 个意图 pj 的过滤参数。m 为超参数,可以通过交叉验证来确定。

      item vi 相对于第 j 个意图 pj 的集中度得分 concentration score ai,j 计算如下:

      ai,j=vipjR,j{1,2,,m}

      此外,可以根据以下 softmax 函数获得关于 pj 的归一化集中度权重normalized concentration weight

      gi,j=exp(ai,j/τ)j=1mexp(ai,j/τ)

      其中 τ 为需要调优的温度超参数。

      • 对于很高的温度(τ) ,所有的意图具有几乎相等的概率。
      • 对于很低的温度 (τ0+),归一化集中度权重倾向于集中于单个权重(几乎是硬路由 hard routing)。

      在实验中,我们使用 τ=0.1 可以产生最佳性能。

      意图数量 m 和温度 τ 都是非常重要的超参数,它们对 MCPRN 的效果产生关键性的影响。

23.1.2 Mixture-Channel Recurrent Network

  1. 然后, item embedding 及其意图集中度权重被输入到 MCRN 的每个通道中,如下图 (a) 中的紫色(item embedding )和绿色(意图集中度权重)箭头所示。

    • 每个通道都由一个 PSRN 来建模,PSRN 是由 t1PSRU 单元组成从而建模 t1item 的序列上的 purpose-specific 序列依赖性 sequential dependency
    • 每个通道的工作机制类似于普通的 RNN,而在 PSRN 中这些 cell 配备了我们设计的 PSRU 。一个通道中的 PSRU cell 都是相同的(包括结构和参数),而不同通道中的 cell 具有相同的结构但是不同的参数。

    接下来我们将详细介绍 PSRU

  2. Purpose-Specific Recurrent Unit: PSRU:像 LSTMGRU 这样的 RUU cell 不考虑序列中 itemdegree of membership 。在 MCRN 中,每个通道包含 session 中的所有 item,但是这些 item 的意图集中度权重(即,degree of membership),在给定意图上是不同的。因此,在给定集中度权重的情况下,LSTMGRU 还没有准备好在通道中建模这种 purpose-specific 依赖性。

    因此,我们设计了 PSRU 作为每个 PSRNcell 。与 GRU 或其变体通常仅使用当前输入和 last hidden state 而不使用任何额外信息additional information来计算 gate value 不同,PSRU 引入了一个 concentration gate,从而根据特定意图来选择性地将 item 信息集成到转移 transition 中。

    上图 (b) 给出了 PSRU cell 的结构。与传统的 GRU cell 相比,增加了一个额外的 gate ,即 concentration gate(见蓝色虚线方块),从而根据意图集中度权重 gi,j 来决定当前状态在多大程度上应该参与到 purpose-specific transition 。通道 cj 的第 itime stepPSRU celllast hidden state hi1 、当前 itemembedding vi、以及集中度权重 gi,j 作为输入,并输出当前 time step 的候选 hidden state h~i

    gi,j0 控制了 item embedding vi 多达程度上属于当前通道,那么一个核心设计是:如果 gi,j=0 ,那么 vi 对应的 time step 不会被更新;gi,j 越大,则该 time step 更新越大。因此,单纯地将 gi,j×vi 作为输入,无法满足这个设计需求(因为即使 input 为零,RNN 也会更新状态)。

    这就是为什么需要引入额外的 concentration gate 的原因,同时这也是为什么 gi,j 作用在 updae gate 上的原因。

    更具体而言,候选 hidden state h~i 的计算如下,其中 rireset gate 向量、ziupdate gate 向量:

    ri=σs(Wr[hi1||vi]),zi=σs(Wz[hi1||vi])h~i=σt(Wh[(rihi1)||vi])

    其中:

    • σssigmoid 激活函数,σttanh 激活函数。 为逐元素乘积。|| 为向量拼接。
    • Wr,Wz,Wh 为待学习的权重矩阵。

    此外,我们得到 concentration gate 向量 ui 如下:

    ui=σc(gi,j,zi;ϵ)=δc(gi,jϵ)×gi,j×zi

    其中:

    • δc()Delta 函数,其中 gi,jϵδc=1 否则 δc=0
    • ϵ 为阈值超参数,用于在 session 中建模 transition 时消除噪音noisyitem 。即,ui 会绕过集中度权重低于 ϵitem 。我们在实验中根据经验设置 ϵ=0.01

    这里计算 ui 时出现了 gi,j 。事实上 j 代表通道,因此更准确的描述是:

    ui(j)=δc(gi,jϵ)×gi,j×zi

    因为我们是针对第 j 个通道来计算 ui

    因此,当前 stephidden state hi 可以由 ui 根据 previous state hi1 和当前候选状态 h~i 来确定:

    hi=(1ui)hi1+uih~i

    这里 ui 代替了 update gate 的作用,并且它是 update gate 乘以 gi,j 得到(经过阈值过滤)。

    例如,如果 item vi 主要集中于单个意图 p1 ,即:gi,11,gi,j0,j1 。由于 gi,j<ϵ,j1,因此对于除了通道 1 以外的所有其它通道的 transitionitem vi 将被忽略,即:hi=hi1

21.1.3 概率选择

  1. 一旦 session context C 被输入到 MCPRN 中,所有 m 个通道的 final hidden state ht1(j) 被集成在一起,从而构建一个多意图 context embedding vC

    vC=j=1mg^t,j×ht1(j)

    其中:g^t,jtarget item v^t 相对于意图 pj 的集中度权重。g^t,j 加权了目标意图 target purpose 从而构建 context embedding vC

    注意,这里集中度权重用的是 target item 的,而不是 last item gt1,j 。因为我们最终希望选择 target item 所在的通道。

    由于每个 vV 都可以作为候选的 target item,因此我们需要对每个 vV 计算一个 vC,算法复杂度较高。

  2. 然后,我们将context embedding vC 与候选 itemembedding 一起馈入输出层从而进行 target item 预测。具体而言,我们使用内积计算 target tiem v^t 相对于给定 context C 的相关性得分relevance score,从而捕获它们之间的交互:

    δt(C)=v^tvC

    target item v^t 不仅参与了 v^t,也参与了 vC

    最后,根据相关性得分 δt(C) 获得 item v^t 作为 ground truth 的条件概率 q(v^tC;Θ)

    q(v^tC;Θ)=11+exp(δt(C))

    其中:Θ 为所有 session 上需要学习的模型参数集合。

21.1.4 优化和训练

  1. 我们通过对交叉熵损失使用 mini-batch 梯度下降来训练我们的模型。给定条件概率 q,损失函数为:

    L(s+,N)=[logqs++vNlog(1qv)]

    其中:

    • s+ 为给定 session context Cpositive sample ,即真正的 next item vt
    • N 为从 item 集合 V{vt} 中随机采样 nitem 作为 negative sample set
    • positive sample 的损失为 logqnegative sample 的损失为 log(1q) ,它们一起构成了 contrastive pair (s+,N) 的损失。

    模型参数 Θ 通过最小化 L(s+,N) 来学到的。具体而言,negative sampling 用于有效的训练。

    负采样策略对于模型效果影响很大,论文这里并未讲述如何负采样。

  2. 我们的模型是使用 TensorFlow 实现的。由于篇幅有限,以下算法仅列出了 mini-batch 学习过程的简要方案,其中 ΓAdam 表示 Adam-based 梯度下降优化器,batch size 设置为 50

    MCPRN 训练过程:

    • 输入:

      • session 集合 S={s1,,s|S|}
      • 优化器 ΓAdam
      • 损失函数 (s+,N)L(s+,N)
    • 输出:学好的模型参数 Θ

    • 算法步骤:

      • 从所有 (context, target item) pair 获取 mini-batch B

      • 为每个 target item vtB 采样 nnegative item Nvt

      • 计算 mini-batch 损失:

        LB=1|B|(s+,N)L(s+,N)
      • 更新参数:ΘΘΓAdam(ΘLB)

23.2 实验

  1. 数据集:我们使用了真实世界的三个交易数据集:

    • Yoochoose-buy:由 RecSys Challenge 2015 发布,记录了 Yoochoose.com 上每个 session 购买的 item
    • Tmall:由 IJCAI-15 competition 发布,记录了天猫在线购物平台中每个 transaction 购买的 item
    • Tafeng:在 Kaggle 上发布,记录了一家中国杂货店的交易数据。

    首先,通过将一个 transaction 中的所有item 放在一起来形成一个会话,我们从每个原始数据集中抽取一组 session 集合。我们删除少于三个 itemsession,因为至少需要两个 item 作为 context 从而形成多意图 session context、以及另外一个 item 作为 target item

    其次,我们通过随机选择过去 30 天的 20%, 30%, 40%session 进行测试,从而对 session 集合执行三种 training-test 拆分。我们的方法在所有三种拆分上都取得了相似的性能,并且稳定地优于所有 baseline,因此这里仅展示了 30% 拆分的结果。

    有的实验是将最后一天或最后一周的 session 作为测试集,那么随机选择的测试集和最近时间选择的测试集,二者评估结论是一致的吗?

    最后,为了构建格式为 (C,vt)training-test 实例,对于一个 session s ,我们每次从 s 中的第三个到最后一个 item 之间选择一个 item 作为 target item vt ,并且 vt 之前的所有这些 item 构成对应的 conetxt C 。因此,对于包含 |s|itemsession,我们一共创建了 |s|2 个实例。

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

  2. 评估指标:Mean Reciprocal Rank: MRRnormalized Discounted Cumulative Gain: NDCGRecall

    此外我们还设计了一个新颖的多样性指标来评估推荐结果的多样性diversity

  3. baseline 方法:

    • iGRU4Rec-BPR:典型的 RNN-based SBRS 的改进版本,它使用 GRU-based RNN 来建模 session,并且以 Bayesian Personalized Ranking: BPR 作为损失函数(《Recurrent neural networks with top-k gains for session-based recommendations》)。
    • iGRU4Rec-CE:与 iGRU4Rec-BPR 类似,只是它使用交叉熵损失函数替代了 BPR 损失函数。
    • NARM:一个具有注意力机制的混合编码器,它在 session 中捕获用户的序列行为和主要意图。
    • MANN:一个 memory-augmented 的神经网络,它采用注意力模型来读取显式存储在外部 memory 矩阵中的历史信息。
    • Caser:一种卷积的序列 embedding 模型,它将一个序列的 item 嵌入到一个 image 中,然后使用卷积滤波器将序列模式 sequential pattern 学习为局部特征。
    • ATEM:一个浅而宽的网络,结合了注意力机制来学习 session contextattentive embedding

    为了证明混合通道在多意图建模中的有效性,我们实现了我们方法的两个版本: MCPRN 的完整模型、 MCPRN 的单通道版本 MCPRN-S

    单通道版本只需要将 m=1 即可实现。

  4. 实验设置:

    • 我们使用相应论文中的参数配置来初始化所有的 baseline 模型,然后在我们的数据集上调优它们从而获得最佳性能以进行公平地比较。
    • PSRU 中的 item embeddinghidden state 尺寸均设置为 128 。通过验证集调优从而将通道数 m 设置为 3Adam 的初始学习率设置为 0.001
  5. MCPRNbaselien 在准确性指标上的性能比较:我们在推荐准确性指标上比较了 MCPRNbaseline 方法。下表给出了 MRRnDCG 指标。

    • 前两种方法建立在 GRU-basedRNN 之上,由于过于严格的 sequentially dependent-based 假设、以及对于最近意图的 bias,因此很容易生成错误的依赖。因此,它们在多意图 session 数据上表现不佳。

    • NARMMANN 通过将注意力机制分别纳入 RNN-based SBRSmemory network-based SBRS 来突出相关信息并抑制噪声,从而获得更好的性能。 但是,由于注意力加权机制,在 session 中它们很容易偏向于主要意图。

    • Caser 也表现不佳,因为 CNN 中的池化操作很难捕获远程依赖关系。

    • 与其它 attention-based SBRS 一样,ATEM 通常偏向于主要意图。

    • 通过使用每个通道独立地建模每个意图,我们的 MCPRN 不仅平等地对待每个意图,而且还保持每个意图内的序列依赖关系。因此,MCPRN 在所有数据集上都取得了最佳性能。

      具体而言,在Yoochoose-buyTafeng 两个数据集上,MCPRNMRR@5, MRR@20, nDCG@5 指标上比现有最佳方法提高了 20% 以上。

    由于空间有限,下图给出了在两个数据集上的召回性能。可以看到,MCPRN 以显著的优势领先于 baseline

  6. 混合通道与单通道的比较:为了证明混合通道结构的效果,我们将 MCPRNMCPRN-S 进行比较,结果如上图和上表所示。可以很清楚地看到:MCPRNMCPRN-S 实现了更高的准确性。MCPRNMRR@5, nDCG@5, Recall@5 至少比 MCPRN-S20% ,这证明了混合通道架构的优越性。

  7. 推荐多样性:人们在推荐系统中引入多样性评估,从而弥补准确性评估的缺陷。直观而言,推荐的 item 的类别分布越分散,则意味着模型可以产生更大的多样性。因此,根据信息论,推荐的类别分布可以通过熵来衡量多样性,即:

    Diversity@k=i=1kPrilog2Pri

    其中:

    • k 为推荐列表长度(即,top-kitem )。

    • Priitem vi 所属类别在推荐列表中出现的概率,基于频率估计得到。

      假设推荐列表中,每个 item 对应的类别为 ”{服装,数码,服装,服装,母婴}“,那么 Pri 依次等于 {0.6, 0,2, 0.6, 0.6, 0.2} 。因为服装出现的概率为 0.6

    下图展示了 MCPRNbaseline 的多样性指标的对比。可以看到:MCPRN 实现了比 baseline 方法更高的多样性。特别是在 Tafeng 数据集上,MCPRN 实现了高达 13.01%Diveristy@5 提升、11.61%Diveristy@10 提升 。

    原因是 baseline 方法通常推荐仅满足最近意图(如,RNN-based SBRS)或主要意图(如,attention-based SBRS )的 item,因为它们是基于单通道的设计。相比之下,MCPRN 通过以并行方式建模多个意图,很容易使得推荐列表多样化。

    多样性评估不适用于 Yoochoose-buy,因为该数据集的类别信息不可用。

  8. 意图集中度可视化Purpose Concentration Visualization:为了深入理解 session 中用于不同意图的 item 如何被检测、并相应地被路由到 MCPRN 中的不同通道,我们从 Yoochoose-buy 数据集的测试集中随机抽取两个 session,并在下图中可视化了它们的集中度权重。

    可以看到:

    • 一个 session 中的 item 通常用于多个意图,因此被放入不同的通道,如:不同的 item 在所有这三个通道上都有不同的分布。

    • 真正的 target item vt 可能具有与 session 中最近的意图、或主要意图所不同的意图。

      例如,第二个 session 所示。

二十四、RepeatNet[2019]

  1. 传统的推荐方法基于 last interaction 来处理 session-based 推荐。

    • 《Using temporal data for making recommendations》《An MDP-based recommender system》 研究如何使用马尔科夫模型抽取序列模式sequential pattern 从而预测 next item
    • 《Playlist prediction via metric embedding》 提出 logistic Markov embedding 来学习歌曲的 representation 从而进行 playlist 预测。

    这些模型的一个主要问题是:当试图在所有 item 上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。

    RNN 最近被用于 session-based 的推荐,并引起了人们的极大关注。

    • 《Session-based recommendations with recurrent neural networks》 引入了带 GRURNN,从而用于 session-based 推荐。
    • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》引入了许多 parallel RNN: p-RNN 架构来基于被点击 itemclickfeature (如,图片、文本)来建模 session
    • 《Personalizing session-based recommendations with hierarchical recurrent neural networks》 通过跨 session 信息迁移来个性化 RNN 模型,并设计了一个 Hierarchical RNN 模型。这个 Hierarchical RNN 模型在 user session 中,中继 relay 和演变 evolve RNN 的潜在状态。
    • 《Neural attentive session-based recommendation》session-based 推荐中引入了注意力机制并表现出色。

    尽管将深度学习应用于 session-based 推荐的研究越来越多,但是没有人强调所谓的重复消费repeat consumption ,这是许多推荐场景(如电商、音乐、电视节目等等场景的推荐)中的普遍现象。重复消费的意思是:随着时间的推移,相同的 item 被重复消费。

    重复消费之所以存在,是因为人们有规律性的习惯regular habit。例如,我们经常重复购买相同的东西,我们经常去相同的餐厅吃饭,我们经常听相同的歌曲和歌手。下表展示了相关研究中常用的三个 benchmark 数据集的重复消费率。

    重复消费率占比不大,那么是否意味着在这方面的改进没有多大意义?毕竟 RepeatNet 是针对 “少数派” 进行的优化。

    RepeatNet 的效果严重依赖于具体的数据集,只有较高重复消费率的数据集的效果较好。因此使用之前需要先通过数据集来评估重复消费率。

    而这个重复消费率又依赖于 user ID,因此也无法应用到匿名 session 中。

    在论文 《RepeatNet: A Repeat Aware Neural Recommendation Machine for Session-Based Recommendation》 中,作者通过融合一个 repeat-explore 机制到神经网络中从而研究重复消费,并提出了一个叫做 RepeatNet 的、具有 encoder-decoder 的新模型。与使用单个解码器来评估每个 item 的分数的现有工作不同,RepeatNet 使用两个解码器分别在 repeat modeexplore mode 下评估每个 item 的推荐概率。

    • repeat mode 下,模型推荐用户历史记录中的 old item
    • explore mode 下,模型推荐 new item

    具体而言:

    • 首先,模型将每个 session 编码为一个 representation

    • 然后,模型使用 repeat-explore 机制来学习 repeat modeexplore mode 之间的切换概率。

    • 之后,作者提出了一个 repeat recommendation decoder 来学习在 repeat mode 下推荐 old item 的概率,以及提出了一个 explore recommendation decoder 来学习在 explore mode 下推荐 new item 的概率。

      两个 decoder (相比较于传统的单个 decoder)会大幅度增加资源消耗以及 inference time

    • 最后,作者将模式切换概率、以及两种模式下的每个 item 的推荐概率以概率性的方式结合起来,最终确定 item 的推荐分。

    mode predictionitem 推荐在统一框架内以端到端的方式共同学习。

    论文对三个 benchmark 数据集进行了广泛的实验。结果表明:在 MRRRecall 指标上,RepeatNet 在所有三个数据集上都优于 state-of-the-art baseline 。此外,论文发现:随着数据集大小和重复率的增加,RepeatNet 相对于 baseline 的改进也增加了,这证明了它在处理重复推荐场景方面的优势。

    综上所述,论文的主要贡献是:

    • 论文提出了一种新的、基于深度学习的模型,叫做 RepeatNet 。该模型考虑了重复消费现象。据作者所知,该论文是第一个在使用神经网络的 session-based 推荐背景下考虑重复消费现象的。
    • 论文为 session-based 推荐引入了 repeat-explore 机制,从而自动学习 repeat modeexplore mode 之间的切换概率。与使用单个解码器的现有工作不同,论文提出了两个解码器来学习两种模式下每个 item 的推荐概率。
    • 论文对三个 benchmark 数据集进行了广泛的实验和分析。结果表明:RepeatNet 通过显式建模重复消费来提高 session-based 推荐的性能,从而超越了 state-of-the-art 方法。
  2. 相关工作:

    • session-based 推荐:

      • 传统的 session-based 推荐方法通常基于马尔科夫链,这些方法在给定 last action 的情况下预测 next action

        • 《Using temporal data for making recommendations》 提出了一种基于马尔科夫链的序列推荐器,并研究如何使用概率性的决策树模型来抽取序列模式从而学习 next state
        • 《Using sequential and non-sequential patterns in predictive web usage mining tasks》 研究了不同的序列模式sequential pattern用于推荐,并发现连续contiguous的序列模式比通用general的序列模式更适合序列预测任务。
        • 《An MDP-based recommender system》 提出了一个马尔科夫链决策过程 Markov decision process: MDP 从而以 session-based 方式提供推荐。最简单的 MDP 是一阶马尔科夫链,其中 next recommendation 可以简单地通过通过 item 之间的转移概率来计算。
        • 《Effective next items recommendation via personalized sequential pattern mining》 在个性化序列模式挖掘中引入了一种竞争力得分competence score指标,用于 next-item 推荐。
        • 《Playlist prediction via metric embedding》playlist 建模为马尔科夫链,并提出 logistic Markov embedding 来学习歌曲 representation 从而用于 playlist 预测。

        将马尔科夫链应用于 session-based 推荐任务的一个主要问题是:当试图在所有 item 上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。

      • RNN 已被证明对序列点击预测很有用。

        • 《Session-based recommendations with recurrent neural networks》RNN 应用于 session-based 推荐,并相对于传统方法取得了显著改进。他们利用session-parallelmini-batch 训练,并使用 ranking-based 损失函数来学习模型。
        • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 引入了许多 parallel RNN: p-RNN 架构来基于被点击 itemclickfeature (如,图片、文本)来建模 session 。他们提出了比标准训练更适合的、用于 p-RNN 的替代训练策略。
        • 《Improved recurrent neural networks for session-based recommendations》 提出了两种技术来提高其模型的性能,即:数据增强、以及一种考虑输入数据分布漂移shift 的方法。
        • 《When recurrent neural networks meet the neighborhood for session-based recommendation》 表明,在大多数测试的setup 和数据集中,针对 session 的、基于启发式最近邻的方案优于 GRU4Rec
        • 《Personalizing session-based recommendations with hierarchical recurrent neural networks》 提出了一种通过跨 session 信息迁移来对 RNN 模型进行个性化的方法,并设计了一个 Hierarchical RNN 模型,该模型在 user session 之间中继 relay 和演变 evolve RNN 的潜在状态。
        • 《Neural attentive session-based recommendation》 探索了具有注意力机制的混合编码器以建模用户的序列行为和意图,从而捕获用户在当前 session 中的主要意图。

      与上面列出的研究不同,我们强调模型中的重复消费现象。

    • repeat recommendation

      • 《The dynamics of repeat consumption》 在多个领域研究了用户随着时间的推移重复消费同一个 item 的模式,从同一个门店的重复 check-in 到同一个视频的重复观看。他们发现:消费的新近程度 recency 是重复消费的最强预测器 predictor
      • 《Will you “reconsume” the near past? Fast prediction on short-term reconsumption behaviors》 得出了影响人们短期重复消费行为的四个一般特征。然后,他们提出了两种具有线性核和二次核的快速算法,从而预测在给定 context 的情况下,用户是否会在特定时间执行短期重复消费。

      推荐系统的一个重要目标是帮助用户发现 new item 。除此之外,许多现实世界的系统将推荐列表用于不同的目标,即:提醒用户他们过去查看或消费的 item

      • 《On the value of reminders within e-commerce recommendations》 通过一个现场实验 live experiment 对此进行了调查,旨在量化在推荐列表中此类提醒的价值。

      • 《Modeling user consumption sequences》 确定了重复消费的两种宏观行为模式:

        • 首先,在给定用户的生命周期lifetime中,很少有 item 能够存活 live 很长时间。

        • 其次,一个 itemlast consumption 表现出越来越大的 inter-arrival gap ,这与如下概念保持一致:无聊递增导致最终放弃。

          即,用户消费相同 item 的周期越来越长,最终放弃消费该 item (因为越来越无聊,没有新的吸引力)。

      我们的工作与之前关于重复推荐的工作之间的主要区别在于:我们是第一个提出神经推荐模型的人,从而显式强调传统的推荐任务以及 session-based 推荐任务中的重复消费。

24.1 模型

  1. 给定一个 action session IS={i1,i2,,iτ,,it},其中 iτ 表示一个 itemsession-based 推荐尝试预测 next event 是什么,如以下方程所示。不失一般性,本文以点击 action 为例:

    P(it+1IS)f(IS)

    其中:P(it+1IS) 表示在给定 IS 的情况下推荐 it+1 的概率。传统方法通常将 f(IS) 直接建模为判别式函数或概率函数。

  2. 整体框架:我们提出 RepeatNet 从而从概率性的角度来建模 P(it+1IS),并且显式考虑重复消费,如以下公式所示:

    P(it+1IS)=P(rIS)×P(it+1r,IS)+P(eIS)×P(it+1e,IS)

    其中:

    • r 表示重复模式 repeat modee 表示探索模式 explore mode
    • P(rIS) 表示执行 repeat mode 的概率,P(eIS) 表示执行 explore mode 的概率。
    • P(it+1r,IS) 表示给定 IS 的情况下,在 repeat mode 中推荐 it+1 的概率;P(it+1e,IS) 表示给定 IS 的情况下,在explore mode 中推荐 it+1 的概率。

    如下图所示,RepeatNet 由四个主要组件组成:一个 session encoder、一个 repeat-explore 机制、一个 repeat recommendation decoder、一个 explore recommendation decoder

    • session encoder :它将给定的 session IS 编码为潜在 representation H={h1,h2,,hτ,,ht} ,其中 hτ 表示在 timestamp τ 处的 session representation

      hτ 不是 iτrepresentation,而是截止到 τ 时刻的 session representation

    • repeat-explore 机制:它以 H 为输入,预测执行 repeat modeexplore mode 的概率,对应于方程中的 P(rIS)P(eIS)

      注意:P(rIS)+P(eIS)=1.0 ,因此只需要预测其中之一即可。

    • repeat recommendation decoder:它以 H 为输入,预测 IS 中被点击 item 的重复推荐概率,对应于方程中的 P(it+1r,IS)

    • explore recommendation decoder :它以 H 为输入,预测 IIS 中未被点击 item 的探索推荐概率,对应于方程中的 P(it+1e,IS) ,其中 I 表示所有 item

  3. session encoder:遵从先前的工作,我们使用 GRU 来编码 IS ,其中 GRU 定义为:

    zτ=σ(Wz[emb(iτ)||hτ1]),rτ=σ(Wr[emb(iτ)||hτ1])h~τ=tanh(Wh[emb(iτ)||(rτhτ1)])hτ=(1zτ)hτ1+zτh~τ

    其中:

    • Wz,Wr,Wh 为待学习的权重矩阵。
    • emb(iτ)itembedding 向量。
    • σ()sigmoid 函数,tanh()tanh 函数。|| 表示向量拼接, 表示逐元素乘法。
    • zupdate gaterreset gate

    GRU 的初始状态为零,即 h0=0

    经过 session encoder 编码之后,每个 session IS 被编码到 H={h1,h2,,hτ,,ht}

  4. repeat-explore 机制:repeat-explore 机制可以视为一个基于 H 来预测推荐模式的二分类器。为此,我们首先将注意力机制应用于 H 从而获得 IS 的固定长度的向量 representation 。具体而言:

    • 我们首先使用 last hidden state ht 与每个 hidden state hτH 进行匹配,从而得到一个重要性分数:

      sτre=vretanh(Wreht+Urehτ)

      其中:vre,Wre,Ure 均为模型参数。

    • 然后我们归一化重要性分数,并获得 IS 中每个 hidden state 的加权和从而作为 context vector

      ατre=exp(sτre)j=1texp(sjre)cISre=τ=1tατre×hτ
    • 然后我们使用 softmax 回归将 cISre 转换为模式概率分布,分别对应于 P(rIS)P(eIS)

      [P(rIS),P(eIS)]=softmax(WreccISre)

      其中:Wrec 为权重矩阵。

      这里的 softmax 其实可以退化为 sigmoid,因为这是个二分类问题。

  5. repeat recommendation decoderrepeat recommendation decoder 评估 IS 中的 item 被重复点击的概率。受到 CopyNet 的启发,我们使用一个修改的注意力模型来实现这一点。item iτIS 被重复点击的概率为:

    sτr=vrtanh(Wrht+Urhτ)P(ir,IS)={iexp(sτr)j=1texp(sjr), if iIS0,else

    其中:

    • vr,Wr,Ur 为模型参数。
    • iexp(sτr) 表示 item iIS 所有出现的总和,因为同一个 item 可能在 IS 的不同位置多次出现。
  6. explore recommendation decoderexplore recommendation decoder 评估那些不在 IS 中的 new item 被点击的概率。具体而言:

    • 首先,为了更好地捕获用户对 session IS 的兴趣,我们采用了 item-level 注意力机制,允许解码器动态选择和线性组合输入序列中的不同部分:

      sτe=vetanh(Weht+Uehτ)ατe=exp(sτe)j=1texp(sje)cISe=τ=1tατe×hτ

      其中:ve,We,Ue 为模型参数。因子 ατe 决定了在进行预测时应该强调或忽略输入序列中的哪一部分。

      在计算重要性分数 sτre,sτr,sτe 时,这里都是将 ht 作为 queryhτ 作为 key

    • 然后我们将 last hidden state htattentive state cISe 组合成一个 hybrid representation cIS

      cIS=[ht||cISe]

      其中:|| 表示向量拼接。

    • 最后,item iIIS 被点击的概率为:

      fi={, if iISWeccIS,elseP(ie,IS)=exp(fi)jIexp(fj)

      其中:Wec 为权重矩阵, 表示负无穷。因为 exp()=0,因此我们假设如果 item iIS ,那么在 explore mode 下它被点击的概率为零。

  7. 目标函数:我们的目标是给定 input session 的情况下最大化 ground truth 的预测概率。因此,我们优化负对数似然损失函数:

    Lrec(θ)=1|IS|ISISτ=1|IS|logP(iτISτ1)

    其中:θRepeateNet 的参数,IS 为训练集中所有 session 的集合,P(iτIS)ground truth item 的预测概率,ISτ1 表示 IS 中截止到 τ1 (包含)的前缀部分。

    RepeatNet 包含了一个额外的 repeat-explore 机制从而在 repeat modeexplore mode 之间软切换 softly switch 。我们假设:如果 next item 已经在 IS 中出现过,那么切换到 repeat mode,否则切换到 explore mode 。因此,我们可以联合训练另一个损失,即 mode prediction 损失,它也是负对数似然损失:

    Lmode(θ)=1|IS|ISISτ=1|IS|[1(iτISτ1)×logP(rISτ1)+(11(iτISτ1))×logP(eISτ1)]

    其中:1(iτISτ1) 是一个指示器函数,当 iτISτ1 时取值为 1,否则为 0

    在联合训练的情况下,最终的损失是两种损失的线下组合:

    L(θ)=Lrec(θ)+Lmode(θ)

    注意:

    • 这里可以考虑加权,如:Lrec(θ)+β×Lmode(θ)

    • 然后,作者在实验中表明,联合训练的效果要比单独训练 Lrec(θ) 更差。有两个原因:

      • 首先,Lrec 已经是学习模式预测的优秀监督器了。即,如果 next item 已经完美地预测了,那么 mode prediction 也百分之百正确。
      • 其次,RepeatNet (仅使用 Lrec)倾向于重复推荐(为什么?作者没有分析)。添加 Lmode 进一步加剧了这种情况。

      因此,实验部分主要采用 Lrec 来训练。

    • 最后,为了缓解联合训练效果较差的问题,并同时利用模式预测的监督信息,可以考虑一种 warmup 训练策略:在前面 ρ 比例的 epoch (比如 50%epoch)优化 Lmode(θ) ,然后在后面的 50% 比例的 epoch 去优化 L(θ)

      这是因为预测 next item 是否重复点击的任务,要比预测 next item 是哪个 item 要更简单。那么我们把容易的任务作为 warm up 从而先把模型预热到一个良好的状态,然后再去训练困难的任务。

    RepeatNet 的所有参数及其 item embedding 都是端到端通过反向传播来训练的。

  8. 未来方向:

    • 首先,可以结合人们的先验知识来影响 repeat-explore mechanism
    • 其次,可以考虑更多的信息(如元数据、文本)和更多因子(如协同过滤)来进一步提高性能。
    • 此外,RepeatNet 的变体可以应用于其它推荐任务,如 content-based 推荐。

读者点评:

  1. RepeatNet 本质上是把困难的next item 预测任务拆分成两阶段的子任务:

    • 第一阶段子任务:预测 next item 是否是重复购买。这个任务相对而言要更简单。
    • 第二阶段子任务:分别预测 repeat modeexplore mode 下的 next item 。这个任务相对而言更难。
  2. 基于类似的原理,我们也可以把 next item 预测任务按照不同的维度拆分为:

    • 第一阶段子任务:预测 next item 是属于哪个 category
    • 第二阶段子任务:计算给定 next category 的条件下,预测 next item 的概率。

    甚至我们可以拆分为三个阶段:

    • 第一个阶段子任务:预测 next category 是否重复出现。
    • 第二个阶段子任务:基于 repeat modeexplore mode,预测next category 的概率。
    • 第三个阶段子任务:计算给定 next category 的条件下,预测 next item 的概率。

    取决于具体的任务,我们还有更多的拆分方式。

  3. 这类拆分能提升效果的原因,读者觉得主要是:把困难的任务拆分成相对简单的子任务。

    另外,这种拆分还引入了更多的监督信息。这些额外的监督信息来自于 next item 的属性。例如 RepeatNet 中的额外监督信息来自于属性:next item 是否重复出现。而 category 的例子中,监督信息来自于属性:next itemcategory

    虽然论文的实验结果表明:这种监督信息的联合训练效果不佳。但是读者认为,这是因为作者没有很好地利用这种监督信息,理论上引入这种监督信息的效果更好。

  4. 这种方式是否有效,关键是评估:如果用传统的方法预测,那么 repeat mode 的概率是否接近 ground truth

    如果传统的方法(如 BERT4REC )预测的 next item 中,计算到的 repeat mode 预测概率等于 repeat mode 真实出现的概率,那么说明传统方法已经能很好地捕获 repeat mode,此时无需使用 RepeatNet 这种方法。否则,可以考虑使用 RepeatNet 这种方法。

24.2 实验

  1. 数据集:YOOCHOOSEDIGINETICALASTFM 数据集,其中 YOOCHOOSEDIGINETICA 是电商数据集,LASTFM 是音乐数据集。数据集的拆分与 《Neural attentive session-based recommendation》 相同。

    • YOOCHOOSE 数据集:是 RecSys Challenge 2015 发布的公共数据集。我们遵循《Session-based recommendations with recurrent neural networks》《Neural attentive session-based recommendation》 ,并过滤掉长度为 1session 以及出现频次少于 5 次的 item 。他们注意到 1/4 的数据集足以完成任务,增加数据量不会进一步提高性能。
    • DIGINETICA 数据集:是 CIKM Cup 2016 发布的公共数据集。我们再次遵循 《Neural attentive session-based recommendation》 并过滤掉长度为 1session 以及出现频次少于 5 次的 item
    • LASTFM:是 Celma 2010 发布并广泛应用于推荐任务。我们将数据集用于音乐艺术家推荐。我们保留 top 40000 名最受欢迎的艺术家,并过滤掉超长的 sessionitem 数量超过 50)、以及超短的 sessionitem 数量低于 2 )。

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

  2. 评估指标:MRR@20MRR@10Recall@20Recall@10

    • Recall@kground truth item 位于 top k 推荐列表的 case ,占所有 test case 的比例。
    • MRR@kground truth item 位于推荐列表的排名倒数reciprocal rank的均值。如果排名落后于 k ,则设置排名倒数为零。
  3. 实验配置:

    • item embedding sizeGRU hidden state size 均设为 100
    • 使用 dropout ,并且 dropout rate = 0.5
    • 使用 Xavier 方法来随机初始化模型参数。
    • 使用 Adam 优化算法,其中学习率 α=0.001 ,两个动量参数 β1=0.9,β2=0.999 ,以及 ϵ=108
    • 我们每隔三个 epoch 将学习率 α 减半。
    • 我们还在训练期间应用范围为 [5,5] 的梯度裁剪。
    • 为了加快训练速度和快速收敛,我们通过 grid search 使用 mini-batch size = 1024
    • 我们对每个 epoch 在验证集上评估模型性能。
    • RepeatNet 是用 Chainer 编写的,并在一个 GeForce GTX TitanX GPU 上训练。

    另外,这里没有采用联合训练,而是仅训练 Lrec

  4. baseline 方法:

    传统的 session-based 推荐方法:

    • POP:推荐训练集中最流行的 item 。它经常被用作推荐系统领域的 baseline

    • S-POP::推荐当前 session 中最流行的 item 。它使用 session 粒度的流行度而不是全局流行度。

    • Item-KNN:推荐与 session 中历史互动 item 相似的 itemitem 相似度定义为:

      sim(item1,item2)=co-occurrence session numitem1 occur session num×item2 occur session num

      其中还可以包括正则化项从而避免稀疏 item 的偶然的高度相似性。

    • BPR-MF:是一种常用的矩阵分解方法。我们使用当前 session 中截至目前为止互动的 item 的潜在因子的均值来表达一个 session,将其应用于 session-based 推荐。

    • FPMC:用于 next-basket 推荐的state-of-the-art 混合模型。为了使其适用于 session-based 推荐,我们在计算推荐分时忽略了 user latent representation

    • PDP:号称是第一个建模序列重复消费sequential repeat consumption的方法。据我们所知,这是唯一考虑序列重复消费的推荐模型。

    deep learningsession-based 推荐方法:先前的研究工作都没有考虑建模序列重复消费。

    • GRU4REC:使用 session-parallel mini-batch 的训练过程,并且还使用 ranking-based 损失函数来学习模型。
    • Improved-GRU4REC:通过两种技术来改进 GRU4REC,即:数据增强、以及一种考虑输入数据分布漂移 shift 的方法。
    • GRU4REC-TOPK:通过 top-k based ranking loss 进一步改进了 GRU4REC
    • NARM:通过神经注意力机制进一步改进了 Improved-GRU4REC
  5. 所有方法的实验结果如下表所示。我们运行 GRU4RECNARM 发布的代码来报告 GRU4RECNARM 的结果。可以看到:

    • 首先,RepeatNet 优于传统方法和神经网络方法,包括最强的 baseline,即 GRU4REC-TOPKNARMRepeatNetNARM 的改进甚至大于 NARMImproved-GRU4REC 的改进。

      这些改进意味着显式建模重复消费是有帮助的,这使得 RepeatNetsession-based 推荐中建模复杂情况的能力更强。

    • 其次,随着重复率的增加,RepeatNet 的性能普遍提高。我们基于对 YOOCHOOSEDIGINETICA 的不同改进得出这一结论。两个数据集都来自电商领域,但是 YOOCHOOSE 的重复率更高。

    • 第三,RepeatNet 的性能因领域而异。实验结果表明,RepeatNet 在音乐领域比电商领域具有更大的优势。我们认为这是由于不同领域的不同特性造成的。

      人们更愿意重复消费曾经听过的歌。

      LASTFM 数据集上,S-POP 的表现要比 Item-KNN 好得多,这意味着流行度在 LASTFM 数据集上非常重要。但是,Item-KNNYOOCHOOSE 数据集上的表现要比 S-POP 好得多,这意味着协同过滤在 YOOCHOOSE 数据集上更重要。

      此外,神经网络模型在所有数据集的所有评估指标上都比传统方法有很大的进步。最近的其它研究也得出了类似的结论。

  6. repeat mechanism 的分析:如上表所示,一般而言,RepeatNet with repeat 在所有数据集上都优于 RepeatNet without repeat

    作者并未解释 no repeat 模型是如何实现的。个人猜测,是认为 P(rIS)=0 ,即始终采用 explore mode 来构建模型。

    RepeatNet (with and without repeat)repeated sessionnon-repeated session 上的表现如下表所示。

    可以看到:RepeatNet 的改进主要来自 repeated session 。具体而言,在 DIGINTICALASTFM 数据集上,RepeatNetrepeated session 上分别提高了 33.91%24.16%Recall@20 。但是,RepeatNetnon-repeated session 上的效果有所下降。

    实验结果表明,RepeatNet 通过显式建模 repeat modeexplore mode 从而具有更大的潜力。但是,结果也显示了 RepeatNet 的局限性:如果我们让它完全从数据中学习 mode probability,它似乎倾向于过多地重复推荐。应该增加一种机制来集成先验知识(即,不要过多地重复推荐)。

    因为 RepeatNetNon-Rep session 上的效果不佳,这表明它倾向于过多地重复推荐。

  7. attention mechanismrepeat mechanism 的分析:我们在下表中比较了 with and without attentionwith and without repeatRepeatNet 的结果。结果表明:

    • attention mechanismrepeat mechanism 都可以改善 RepeatNet 。重要的是,attention mechanismrepeat mechanism 的贡献是相辅相成的,因为这种组合在所有数据集的所有指标上都带来了进一步的提升,这证明了二者的必要性。
    • 此外,我们可以看到 attention mechanism 更有助于提高 Recall,而 repeat mechanism 更有助于提高 MRR

  8. 联合学习的分析:有趣的是,如果我们联合训练推荐损失 Lrec 和模式预测损失 Lmode ,则整体性能略有下降,如下表所示。我们认为这是由于以下原因:

    • 首先,Lrec 已经是学习模式预测的优秀监督器了。这个结论可以从前面实验结果中得出,其中表明 RepeatNet (仅使用 Lrec)在 repeated session 上取得了很大的改进。并且 repeated session 的改善余地相对较小(因为重复购买的比例不高)。
    • 其次,RepeatNet (仅使用 Lrec)倾向于重复推荐。添加 Lmode 进一步加剧了这种情况。

二十五、LINet(2019)

  1. 在电商和流媒体等许多在线服务中,用户的行为通常是序列sequential的,例如,被查看的 item 之间具有时间相关性 temporal correlation 。此外,可以将序列动作 sequential action 分组到 session 中。每个 session 由在特定时间段内发生的 action 组成。session-based 推荐的任务是:给定用户在 session 中的 previous actions,预测用户在同一个 session 中的 next action

    由于 session-based 推荐在许多 application 中具有很高的实用价值,它越来越受到研究人员的关注,并提出了许多有趣且有效的方法。大多数 state-of-the-art 方法都遵循 encoder-predictor 架构,其中encoderprevious actions 编码到 session embedding 中,并且 predictor 根据 session embedding 来生成在所有可能的 action 集合上的概率分布。

    很容易理解:在 session-based 推荐中,排序信息ordering information 对于预测 next action 很有用,因为 session data 本质上是序列的。然而,并非所有排序信息都很重要。具体而言,论文 《Session-based Recommendation with Local Invariance》认为:有些时候只有通用generalhigh-level 的排序信息很重要,而 sub-sessional level (称作 detailed ordering)并不重要。例如,当用户想在电商网站上购买手机和一些配件时,用户可能需要针对手机及其配件比较不同品牌的多个商品。在这种情况下,用户查看不同手机或不同品牌配件的顺序并不重要,因为用户只是在比较商品,而无意按照一个特定顺序查看商品。论文《Session-based Recommendation with Local Invariance》 把短时间内查看 item 时顺序无所谓的属性称作局部不变性 local invariance ,这在现实世界中很容易找到。此外,high-level ordering ,即用户查看每种类别商品的排序,对 next item 有影响。例如,假设用户购买了手机之后需要一个耳机:

    • 如果用户首先搜索手机,那么该用户可能还想购买耳机,因为该用户可能还没有耳机。
    • 另一方面,如果用户首先搜索耳机,那么该用户可能只想购买耳机(而不会考虑再买一个手机)。

    因此,一个好的 session-based recommender 应该考虑不同粒度 level 的排序信息。

    然而,现有的研究并没有很好地解决这种局部不变性。关于 session-based 推荐的现有研究有两个分支:

    • 第一个分支包括以严格顺序对 action 进行编码的方法。具体而言,最近的研究在 encoder 组件中应用了 RNN 并取得了可喜的成果。使用 RNN 的主要优点是:session 的序列属性 sequential property 很自然地由网络结构来建模。因此,RNN-based 方法显著优于以前的 non-RNN based 方法。但是,这些方法仍然强制执行严格的顺序。此外,这些方法更关注用户的近期 actions ,不擅长在 long session 中捕获依赖关系。

    • 第二个分支包括完全丢弃排序信息的方法。具体而言,受到计算机视觉和 NLP 中注意力机制的成功的启发,STAMP 设计了纯粹的 attention-basedsession encoder ,并获得了 state-of-the-art 的性能。与 RNN-based 方法相比,STAMP 能够通过注意力机制有效地捕获同一个 session 中任意两个 item 之间的依赖关系。但是,session 中的 high-level 的序列属性被忽略了,这在某些情况下可能会出现问题。

      item-level 的注意力机制 + high-levelRNN 机制是否可行?

    上述两种设计 encoder 组件的方法是两个极端,因为它们要么假设 session 内用户 action 之间的严格顺序,要么完全丢弃排序信息。很容易理解,排序信息很有用,因为 session 数据是序列的。但是,在 session 的某些局部区域(称作 sub-session)中,item 的顺序可能并不重要,因为用户不打算按照严格的顺序来点击 item 。换句话讲,有些时候,在 sub-session level,重要的是 item 出现,而不是顺序。

    为了应对上述挑战,论文《Session-based Recommendation with Local Invariance》 提出了一个叫做 LINet 的新模型,该模型通过对不同 level 的序列信息给予不同程度的注意力从而考虑局部不变性。具体而言,忽略某些 sub-session 中无关紧要的 detailed ordering information,而保留整个 sessionhigh-level sequential information 。基本思想是:

    • 首先,使用具有高斯加权的 full self-attention layersub-session 中抽取 position-invariant feature (作为 sub-sessionrepresentation )。
    • 然后,使用具有注意力机制的 RNN (作用在 sub-session representation 上)来捕获通用的序列信息。

    论文的主要贡献如下:

    • 论文在 session-based 推荐中识别和研究局部不变性。据作者所知,该论文是第一个在 session-based 推荐的背景下考虑这一点的人。
    • 论文提出了一种新颖的、基于深度学习的模型,该模型考虑了局部不变性。与以前的模型不同,这些模型要么假设 sessionitem 之间的严格顺序,要么完全丢弃排序信息,而论文提出的模型通过遵循 item 的通用顺序 general order 来自动学习生成不受 sub-session 中细微位置变化影响的 session representation
    • 在现实世界数据集上进行的大量实验表明,论文提出的模型优于 state-of-the-art 方法,并且所提出的、捕获序列信息的具有局部不变性的机制起着重要作用。

25.1 模型

  1. V={v1,v2,,v|V|}为包含在所有 session 中的 unique item 的集合。session s=[vs,1,vs,2,,vs,|s|] 为根据时间戳排序的 item 序列,其中 vs,tV 表示在 session stime step t 时刻被点击的 itemsession-based 推荐任务是预测 next item,即:对于每个 time step t1t|s|,给定先前点击 item 的序列 st=[vs,1,vs,2,,vs,t] 时预测 next item vs,t+1

    一个典型的 session-based 推荐模型通常计算整个 item 集合 V 上的概率分布 p(vst) ,其中 top-k 概率的 item 将作为推荐列表。

  2. 类似于先前的 state-of-the-art 方法,我们的模型遵从 encoder-predictor 架构。

    V={v1,v2,,v|V|} 表示 V 中每个 itemembedding 向量,其中 viRdviembedding 向量。给定一个 session 序列 st=[vs,1,vs,2,,vs,t] ,我们模型的输入是 item embedding 列表 [x1,x2,,xt] ,其中 xiitem vs,iembedding 向量。

    • 局部编码器local encoderitem embedding list 作为输入,并生成 group representation 的一个序列,该序列对 short sub-session 中的位置变动是不变 invariant 的。

    • 全局编码器 global encoder 是一个序列模型,它从 group representation 的序列中抽取 session representation ch

    • 由于 NARMSTAMP 已经证明了考虑最近兴趣的重要性和有效性,因此我们将 ch 和一个表示最近点击 item 的向量 mt 拼接起来,构成一个 hybrid representation c

      在论文中,mt=xt

    • 最后,predictor 根据 item embeddingsession hybrid representation 来在 V 上计算 next item 的概率分布。

    接下来,我们将详细讨论我们模型的每个组件。

25.1.1 Local Encoder

  1. 局部编码器的目标是,抽取对每个 group 内的位置变动position change不变的 group feature

  2. 理想情况下,每个 group 都是由 group embedding 来表达,其中 group embeddinggroupitem embedding 的加权和。例如,一个 group ggroup embedding 为:

    xg=vGwg,vv

    其中:Ggroup g 中的 item 集合,wg,vitem vgroup g 的贡献,vitem vembedding

    然而,由于 group 数量未知,因此无法实现这一理想目标。此外,这些 group 可能没有硬边界 hard border 。因此,我们为每个原始 item 抽取一个 group embedding 。第 iitem 对应的 group embedding 定义为:

    xi=1jtwi,jxj

    这个 group emebdding 只是所有 item 的加权和。

    即,为每个 item 构造一个 group,这有点类似于一个滑动窗口,每个窗口一个 group

  3. wi,j 是最重要的部分,这里我们重点详述。

    直观而言,group 是由相似的相邻 item 而形成的。这意味着对于 item vs,i 而言,如果 vs,j 更相似且在时间上更接近 vs,i ,那么 wi,j 更大。因此,我们将 wi,j 定义如下:

    wi,jαi,j(l)×fi(|ij|),1jtwi,j=1

    其中:

    • αi,j(l) 是使用注意力机制定义的 xj 的重要性得分,可以看做是某种相似性。

      ei,j(l)=pltanh(Wl[xi||xj]),αi,j(l)=exp(ei,j(l))1ktexp(ei,k(l))

      这里 l 表示 localpl,Wl 为局部编码器的参数。|| 表示向量拼接。

    • fi() 为均值为零、方差为 σi2 的高斯分布的概率密度函数,其中方差控制了 group size

      观察到,group 由相似的 item 组成,而方差控制了 group size 。相邻的 itemxi 越相似,则 group size 越大,方差越大。换句话讲,方差与 xi 和它的相邻 item 之间的平均相似度正相关。为简单起见,我们假设是线性关系。因此,方差定义如下:

      σi2=k×12ml,0<|il|msim(xi,xl)

      其中:k 是参数,sim() 为相似性函数(如,余弦相似度)。

      这里sim() 也可以考虑使用 ei,j(l)

      我们在大小为 mcontext 中估计平均相似度。m 应该足够大从而进行准确的估计。但是,较大的 m 会引入一个风险:包含了不太可能位于这个 group 内的 item 。根据我们的实验,我们建议将 m 设置为 13

      k,m 是非常关键的超参数,影响 LINet 的效果。

  4. 考虑 wi,jαi,j(l)×fi(|ij|)

    • 单独使用 αi,j(l) (即,wi,j=αi,j(l) ),那么 wi,j 实际上与一个 full self-attention layer 的注意力权重相同。因此,αi,j(l) 使得 xi 成为 xicontextualized embedding
    • 通过添加 fi(|ij|) ,我们使得 xi 聚焦于一个局部区域。因此,xi 也可以视为一个 local context embedding ,并且它关注的局部区域是由 group size 动态决定的。
  5. 从信号处理的角度来看,局部编码器也可以看做是一个平滑滤波器smoothing filter 。类似的思想可以在 《Making convolutional networks shift-invariant again》 中找到,其中卷积网络中的平移不变性 shift invariance 通过使用平滑滤波器得到改善。我们通过根据上下文动态调整滤波器的权重(即,wi,j)来实现局部位置不变性local position invariance

25.1.2 Global Encoder

  1. 全局编码器将 group feature [x1,x2,,xt] 编码到 session embedding 从而表达用户在当前 session 中的兴趣。由于 group 的顺序暗示了用户当前关注点的变化,因此这个相对顺序 relative order 包含了用于预测 next item 的有用信息。因此,我们使用 RNN 来生成 session representation

  2. RNN 的输出状态为 [h1,h2,,ht] ,其中 hi 可以视为前面 igrouprepresentation 。为了更好地捕获用户兴趣,我们应用 item-level 注意力机制来动态选择和线性选择前面的 grouprepresentation

    具体而言,我们将 RNN 输出状态的加权和作为抽取到的 session representation ch

    ch=1i<tαi(g)hi

    其中,加权的权重 αi(g) 使用注意力机制来计算:

    ei(g)=pgtanh(Wg[hi||ht]),αi(g)=exp(ei(g))1ktexp(ek(g))

    这里 g 表示globalpl,Wl 为全局编码器的参数。|| 表示向量拼接。

    通过结合局部编码器和全局编码器,session representation ch 包含整个 session 的通用序列信息 general sequential information ,并且对于一些 sub-session 中不重要的局部位置变动是不变invariant的。

    LINet 采用了 attention(叠加高斯分布) -> RNN -> attention 的架构。它本质上是修改了 RNN 的输入。实际上我们也可以考虑更多的方法来修改 RNN 的输入。

25.1.3 Predictor

  1. predictor 评估 next item 的概率分布。由于 STAMP 已经证明:显式考虑用户最近的兴趣对于预测 next item 是有效的。因此,我们将 session representation ch 与用户最近的兴趣 mt 结合成为当前sessionhybrid representation c 。为简单起见,我们设置 mt=xt 。那么,候选 item viV 的得分定义为:

    zi=viF(c)

    其中:viitem viembeddingF() 为一个神经网络用于将 c 映射到 vi 相同的 embedding 空间。

    c 是如何得到的?论文并没有解释。可能是直接拼接得到,即 c=[ch||mt]

    然后使用 softmax 函数对分数进行归一化,从而获得 V 中所有 item 的概率分布:

    y^=softmax(z)R|V|

    其中:z=(z1,z2,,z|V|)R|V|

  2. 训练:对于每个 session 序列 st ,损失函数定义为预测值 y^ground truth y 的交叉熵:

    L(y,y^)=iyi×logy^i

    其中:y 是表示 next item 真实分布的一个 one-hot 向量。

    然后,我们端到端地通过反向传播来训练所有参数以及 item embedding

25.2 实验

  1. 数据集:

    • YooChoose 数据集:来自于 RecSys Challenge 2015 ,包含用户在电商网站上 6 个月内的点击 stream
    • Diginetica 数据集:来自于 CIKM Cup 2016,我们仅使用它的交易数据transactional data

    模型需要根据用户在当前 session 中的 click/buy 历史来预测用户想要 click/buynext item 。正如 《Improved recurrent neural networks for session-based recommendations》 中所验证的,由于 YooChoose 训练集非常大,并且相较于训练整个数据集,训练最近的数据能够产生更好的结果,因此我们仅使用最近的 1/641/4 的训练数据。因此,我们从 YooChoose 数据集生成了两个数据集。

    我们对数据集应用了与 NARM, RepeatNet, STAMP 中相同的预处理步骤。

  2. baseline 方法:

    传统方法:

    • Item-KNN :推荐与当前 sessionprevious items 相似的 item ,其中相似度定义为 session 向量之间的余弦相似度。

      session 向量:该向量长度为 session 个数。对于某个 item i ,如果它在第 jsession中出现,则 session 向量的第 j 位为 1,否则为 0

    • BPR-MF:通过随机梯度下降来优化 pairwise ranking 目标函数。

    • FPMC:用于 next basket 推荐的 state-of-the-art 的混合模型。

    神经网络方法:

    • GRU4Rec:在 session-parallelmini-batch 训练过程中采用 ranking-based 的损失函数。
    • NARM:使用 RNN 来捕获用户的主要意图 main purposes 和序列行为sequential behavior
    • STAMP:纯粹使用注意力机制来捕获用户的通用兴趣general interest和最近的焦点recent focus
    • RepeatNet:使用 repeat-explore 机制来考虑重复消费现象。
    • SR-GNN:将 session 转换为 graph,并使用 GNN 来学习 session representation
  3. 评估指标:

    • Hit@20next itemground truth 位于预测结果的 top 20 中的 case,占所有 test case 的占比。
    • Mean Reciprocal Rank: MRR@20:是 ground truth 的排名倒数 reciprocal rank 的均值。如果排名差于 20,则排名倒数置为零。
  4. 所有方法的实验结果如下表所示。

    • 与神经网络模型相比,传统方法表现不佳,这证明传统方法不再适用于 session-based 推荐。传统方法表现不佳的一个原因是:它们没有考虑、或者仅考虑有限的序列信息。

    • GRU4Rec 是一种简单的单层 RNN,可以利用整个 session 的序列信息,已经优于所有传统方法。因此,利用 session 的完整序列信息对于 session-based 推荐至关重要。

    • 然而,我们不必遵循严格的排序。STAMP 完全忽略了 session 中除了 last item 之外的排序信息,SR-GNN 在将 session 编码为 graph 时可能会丢弃一些排序信息(例如 session 的开始和结束),但是这两种方法仍然产生竞争力的结果。

    • 然而,这些方法的性能仍然不如 LINet

      • 三种 RNN-based 的方法 GRU4Rec, NARM, RepeatNet 在每个 sessionitem 之间都假定了严格的次序,这意味着它们很容易被局部区域中细微的次序所误导。
      • STAMPSR-GNN 盲目地丢弃了一些重要的序列信息。

      相反,LINet 可以自动地在遵循严格次序和完全忽略次序之间寻求良好的平衡。如下表所示,LINetYooChoose 1/64YooChoose 1/4 数据集中优于所有 state-of-the-art 的方法,并且在所有数据集中的 Hit@20 指标上都有显著提高。这证明了所提出模型的有效性。

  5. 消融研究:为了测试所提出模型中的核心模块(即,local encoderglobal encoder)的有效性,我们提出并评估以下四个模型:

    • LINet-No-LE:移除 local encoderLINet

      此时 x=x

    • LINet-No-GE:移除 global encoderLINetgroup feature 的均值作为 context embedding ch

    • LINet-No-AW:没有注意力权重的 LINet,即:wi,j=fi(|ij|)

    • LINet-No-GW:没有高斯权重的 LINet,即:wi,j=αi,j(l)

      如果没有高斯权重,那么 LINet 完全退化为 attention + RNN + attention 的三层架构,它的效果好于 RNN + attention 的两层架构(如 NARM )也就不足为奇了。这是不公平的比较(三层网络 vs 两层网络)。

    实验结果如下表所示。可以看到:

    • 与完整模型相比,移除 local encoderglobal encoder 的两个不完整模型在两个数据集上的性能都有显著下降,这证明了 local encoderglobal encoderLINet 中都发挥了重要作用。

      • 移除 local encoder 之后,LINet-No-LE 通过遵循严格的次序获取序列信息,不考虑局部不变性,因此可能会被一些无用的局部次序误导并产生错误的预测。
      • 移除 global encoder 之后,LINet-No-GE 仅捕获局部区域的上下文信息,无法考虑 item 之间的长期依赖关系并利用有价值的序列信息。

      因此,session-based 推荐器有必要既捕获 session 中的序列属性sequential property ,又考虑局部不变性属性local invariance property

    • 与完整模型相比,移除注意力权重或高斯权重的其它两个不完整模型的性能也更差,尽管 gap 相比移除 local encoder/global encoder 更小。

      • 如果没有注意力权重,LINet-No-AW 在计算相邻 item 的权重分 wi,j 时不会考虑相似性,因此 group embedding 很容易受到异常值的影响。
      • 如果没有高斯权重,LINet-No-GW 只是计算 itemcontextualized embedding,而不是聚焦于局部区域。

      因此,在计算 group embedding 时,local encoder 具有注意力权重和高斯权重这两种权重是很重要的。

  6. 考虑局部不变性的能力:我们设计了一个额外的实验来测试模型考虑局部不变性的能力。这个想法是:评估模型在相似的 session 组成的 pair 上的表现。我们首先定义相似的 session

    • 首先,我们仅使用 training session 来定义两个 item 之间的相似性,即:

      sim(vi,vj)=1dnd(i,j)dnd(i,j)log2(d+1)

      其中:

      • nd(i,j)vivj 距离为 dtraining session 的数量。
      • log2(d+1) 是一个针对长距离的惩罚项,这借鉴了 discounted cumulative gain: DCG 的思想。

      背后的直觉是:sim(vi,vj) 度量 vivj 在同一个 group 中的概率。两个 item 越靠近,那么概率越高。

      一个特殊情况是:当 vivj 在同一个 session 中彼此相邻时。如果我们假设它们之间的相对次序在这种情况下不再重要,那么 vivj 以概率 1 属于同一个 group

    • 然后,我们仅选择基于神经网络的方法进行比较,因为如前所示,基于神经网络的方法在所有数据集的所有评估指标上始终优于传统方法。此外,我们排除了 GRU4RecSTAMP,因为 NARM 可以被视为 GRU4Rec 的改进版本,而 STAMP 不考虑 session 内部的任何次序。因此,我们测试的方法包括:NARMRepeatNetSR-GNNLINet

      给定一个 session 序列 si ,令 si,k 表示 si 中的第 kitemsi,1:k 表示 si 的前面 kitem 组成的前缀。我们从满足以下条件的测试集中抽取所有 session 序列的 pair (si,sj)

      • sisj 的长度相同,记做 l

      • sisj 具有相同的 last item,即:si,l=sj,l=v ,因此模型需要在给定输入序列 si,1:l1sj,1:l1 的情况下预测 next itemv

      • si,1:l1sj,1:l1 组成的二部图 G 中存在一个完美匹配 M 。具体而言,si,1:l1sj,1:l1 中的 itemG 中的两组节点,并且对于每个 item pair (u,v) 存在一条权重为 sim(u,v) 的边,其中 usi,1:l1,vsj,1:l1sim(u,v) 的定义如前所示。此外,我们要求 sim(u,v) 大于一个阈值 θ ,并且 uv 的索引之差小于另一个阈值 β 。原因如下所述。

        这里的索引指的是 item 在各自序列中出现的序号。

      给定一个满足所有条件的 pair (si,sj),我们可以重新排列一个序列(如,si)的前面 l1item ,使得匹配的 item 具有相同的索引。例如,如果 si,1sj,2 相匹配,那么 si,1 被放置在 position = 2 。令重新排列的序列为 si,1:l1

      • 如果 θ 很大,则 si,1:l1sj,1:l1 在相同索引下对应的 item 非常相似,因此 si,1:l1sj,1:l1 是非常相似的。由于 sj,1:l1next itemsj,l ,因此很可能 si,1:l1next item 也是 sj,l

        这里 si,1:l1 是通过对 si,1:l1 进行重新排列来人工构造的,它的 label 是否还是 si,l ?这里没有保证。

      • 如果 β 很小,那么 si,1:l1sj,1:l1 之间的唯一区别是 sub-sessional level 的一些细微的位置变化。我们可以得出结论:这些变化对于 next item 没有影响。因此,我们可以说 si (或者 sj)具有很大的局部不变性。

      因此,抽取到的 sessionpair 构成了具有较大局部不变性的数据集。此外, M 中的平均权重可以作为 sisj 的局部不变性的一个很好的量化指标。M 的平均权重越大,则局部不变性越大。

    • 然后,我们评估在所有 pair 中,有多少百分比的 pair 被模型预测为:pair 中每个sessionnext item 都是位于 top-k prediction。例如,给定一个 pair (si,sj) ,对于这两个序列,仅当 ground-truth netxt item 都在预测的 top-k 时,我们才纳入百分比的计算。因此,为了获得良好的性能,模型需要对两个序列都产生一致且准确的预测。

      与之前的实验一样,本实验中的 k = 20 。结果如下图所示。

      • 我们可以看到,这些模型具有相似的性能,并且 LINet 在两个数据集中始终优于其它模型。这进一步证明了我们的模型在处理 session 中局部不变性方面具有更强的能力。
      • 观察到当 θ 很大时,所有模型的性能都会下降。一个可能的原因是序列长度。对于一个长序列,由于涉及的 item 较多,满足上述最后一个条件(即,si,1:l1sj,1:l1 组成的二部图 G 中存在一个完美匹配 M )的可能性较小。因此,以较大 θ 抽取的 pair 中的序列长度较短,这意味着它们包含的序列信息较少,因此更难预测。

二十六、NextItNet[2019]

  1. Introduction

    • RNN 模型的问题:依赖于包含了整个历史信息的一个 hidden state ,无法充分利用序列中的并行计算。因此,它们的速度在训练和评估中都受到限制。

      相比之下,训练 CNN 不依赖于前一个 time step 的计算,因此允许多序列中的每个元素进行并行化。

    • Caser:一个卷积序列 embedding 模型,其基本思想是:将 Rt×kembedding 矩阵视为前面 t 次交互在 k 维潜在空间中的 image ,并将序列模式sequential patten视为 image 的局部特征。Caser 执行最大池化操作来仅仅保留卷积层的最大值,从而增加感受野以及处理输入序列的可变长度。下图描述了 Caser 的关键架构。

    • Caser 的缺陷:

      • 计算机视觉中安全使用的最大池化方案在建模长距离序列数据时,可能会丢弃重要的位置信号position signal和循环信号 recurrent signal

      • 仅为目标 item 生成 softmax 分布无法有效地使用完整的集合的依赖性 set of dependency

        NextItNet 建模的是 item 序列的联合分布(即,集合的依赖性),而 Caser 建模的是单个 item 的分布。

      随着 session 个数和 session 长度的增加,这两个缺点变得更加严重。

    • Caser 缺陷的解决方案:《A Simple Convolutional Generative Network for Next Item Recommendation》 引入了一个简单的但是完全不同的 CNN-based 序列推荐模型NextItNet ,该模型对复杂的条件分布进行建模。具体而言:

      • 首先,NextItNet 被设计为显式编码 item 相互依赖关系,这允许在原始 item 序列上直接估计输出序列的分布(而不是目标 item )。

        这不是 NextItNet 的独有优势,很多RNN-based 模型都可以做到(通过拆分为 subsession 的方式)。NextItNet 的优势在于速度(训练速度、推断速度)。

      • 其次,NextItNet 没有使用低效的大滤波器,而是将一维空洞卷积层 1D dilated convolutional layer 堆叠在一起,从而在建模远程依赖时增加感受野。因此在 NextItNet 的网络结构中可以安全地删除池化层。

        值得注意的是,虽然空洞卷积dilated convolution是为图像生成任务中的稠密预测dense prediction 任务而发明的,并已被应用于其它领域(如,声学任务,翻译任务),但是它在具有大量稀疏数据的推荐系统中尚未得到探索。

      • 此外,为了更容易优化 deep generative architectureNextItNet 使用残差网络通过残差块residual blockwrap 卷积层。据作者所知,这也是采用残差学习来建模推荐任务的首个工作。

    • 贡献:一个新颖的推荐生成模型recommendation generative model、一个完全不同的卷积网络架构。

  2. 相关工作:

    • 序列推荐的早期工作主要依赖于马尔科夫链和 feature-based 矩阵分解方法。

      • 与神经网络模型相比,基于马尔科夫链的方法无法建模序列数据中的复杂关系。例如,在 Caser 中,作者表明马尔科夫链方法无法建模 union-level 的序列模式,并且不允许 item 序列中的 skip behavior
      • 基于分解的方法(如分解机),通过 sum 序列的 item vector 来建模序列。然而,这些方法不考虑 item 的顺序,也不是专门为序列推荐而发明的。
    • 最近,与传统模型相比,深度学习模型展示出 state-of-the-art 的推荐准确性。此外,RNN 几乎在序列推荐领域占据主导地位。例如,GRU4Rec 提出了一个带 ranking lossGRU 架构,用于 session-based 推荐。在后续论文中,人们设计了各种 RNN 变体来适应不同的应用场景,如:

      • 添加个性化:《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
      • 添加内容特征:《Learning to refine text based recommendations》
      • 添加上下文特征:《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》
      • 添加注意力机制:《A Hierarchical Contextual Attention-based GRU Network for Sequential Recommendation》《Neural Attentive Session-based Recommendation》
      • 使用不同的 ranking loss 函数:《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》
    • 相比之下,CNN-based 序列推荐模型更具挑战性并且探索较少,因为卷积不是捕获序列模型的自然方式。据我们所知,迄今为止仅提出了两种类型的、CNN-based 的序列推荐架构:标准二维 CNNCaser、旨在建模高维特征的三维 CNN《3D Convolutional Networks for Session-based Recommendation with Content Feature》)。

      与上述例子不同,我们计划使用有效的空洞卷积滤波器和残差块来研究一维 CNN 的效果,从而构建推荐架构。

26.1 模型

  1. Top-N session-based 推荐:令 {x0,x1,,xt1,xt}user-item 交互序列(或 session),也可记做 x0:t ,其中 xiR,0it 是被点击的 item 在长度为 t+1 的序列中的索引。

    序列推荐的目标是:寻找一个模型,使得对于给定的前缀 item 序列 prefix item sequence x0:i={x0,,xi},0i<t ,该模型为所有候选 item 生成 ranking 或分类分布 classification distribution y=[y1,,yn]Rn 从而预测第 i+1item 。其中:

    • yj 可以为一个分数、概率、或排名,它表示第 j 个候选 item 作为该 session 的第 i+1 个出现的 item 的可能性。
    • n 为所有候选 item 的规模。

    在实践中,我们通常从 y 中选择 top-Nitem 来提供推荐,称作 top-N session-based 的推荐。

  2. Caser 的局限性:Caser 的基本思想是:通过 embedding look-up 操作将前面的 titem 嵌入为一个矩阵 ERt×k ,如下图 (a) 所示。矩阵的每个行向量对应一个 item 的潜在特征。embedding 矩阵可以视为 titemk 维潜在空间中的 image

    直观而言,在计算机视觉中成功应用的各种 CNN 模型都可以用于对 item 序列构建的 image 进行建模。但是,序列建模和图像处理有两方面的区别,这使得 CNN-based 模型的使用不是很直接:

    • 首先,现实世界场景中的可变长度的 item 序列可能会产生大量不同大小的 image ,而传统的具有固定大小滤波器的卷积架构可能会失败。
    • 其次,用于图像的最有效的滤波器,例如 3 x 35 x 5,不适用于序列 image,因为这些小的滤波器(就行方向而言)无法捕获 full-width embedding vectorrepresentation

    为了解决上述限制,Caser 中的滤波器通过大滤波器滑过序列 image 的完整列。也就是说,滤波器的宽度通常与输入 image 的宽度相同。高度通常是一次滑动 2 ~ 5item 。不同大小的滤波器在卷积后会生成可变长度的 feature map (如下图 (b))。为了确保所有 feature map 具有相同的大小,Caser 对每个 feature map 执行最大池化(仅保留每个 feature map 的最大值),产生一个 1 x 1feature map(如下图 (c))。最后,这些来自所有滤波器的 1 x 1feature map 被拼接起来构成一个特征向量,然后是一个 softmax layer (如下图 (d))。

    注意,我们省略了垂直卷积,因为它无助于解决下面讨论的主要问题。

    基于以上对 Caser 中卷积的分析,我们发现可能存在的几个缺陷:

    • 首先,最大池化算子有明显的缺陷。它无法区分 feature map 中的重要特征是仅出现一次还是出现多次,并且忽略了重要特征出现的位置。在图像处理中安全使用的最大池化算子可能对建模远程序列有害。
    • 其次,Caser 中的仅适用于一个 hidden 卷积层的浅层网络结构在建模复杂关系或远程依赖时可能会失败。
    • 最后一个重要的缺陷来自于 next item 的生成过程。我们将在后文中详细描述。
  3. 为了解决上述局限性,我们引入了一种新的概率生成模型,该模型由堆叠的一维卷积层组成。一般而言,我们提出的模型在几个关键方面与 Caser 有根本的不同:

    • 我们的概率估计器一次性地显式地建模序列中每个 item 的分布,而不仅仅是 last item 的分布。
    • 我们的网络具有深层结构而不是浅层结构。
    • 我们的卷积层是基于高效的一维空洞卷积而不是标准的二维卷积。
    • 我们的网络移除了池化层。

26.1.1 一个简单的生成模型

  1. 这里介绍一个简单的、但是非常有效的生成模型generative model,该模型直接对先前交互 item 的序列进行操作。我们的目标是估计原始 item 交互序列上的联合概率分布。

    p(x0:t)item 序列 x0:t={x0,x1,,xt1,xt} 的联合概率分布。为了建模 p(x0:t) ,我们可以通过链式法则将其分解为条件分布的乘积:

    p(x0:t)=i=1tp(xix0:i1,θ)p(x0)

    其中:

    • p(x0) 为选择 x0session 中第一个 item 的概率。
    • p(xix0:i1,θ) 是第 iitem xi 以所有先前 item x0:i1 为条件的条件概率,θ 为模型参数。

    NADEPixelRNN/CNN 在生物领域和图像领域都探索了类似的设置。

    因为 p(x0:t) 建模联合概率,因此它是生成模型。而 GRU4Rec 建模条件概率,因此它是判别模型。

  2. 我们通过堆叠一维卷积网络来建模 user-item 交互的条件分布。具体而言,网络接收 x0:t1 作为输入,并输出可能的 x1:t 上的分布,其中 xt 的分布是我们最终想要的。

    这是一个典型的seq-to-seq 的自回归模型。注意,虽然网络接收 x0:t1 作为输入,但是在预测位置 i 的输出时,只能看到位置 i 之前的输入。

    例如,如下图所示,x15 的输出分布由 x0:14 决定,而 x14 的输出分布由  x0:13 决定。值得注意的是,在之前的序列推荐文献中(如 Caser, GRU4Rec),它们仅建模单个条件分布 p(xix0:i1,θ) (即,判别模型),而不是建模联合分布 p(x0:t) (即,生成模型)。假设给定 {x0,,x14} ,像 Caser 这样的模型仅估计 next item x15 的概率分布(即 softmax),而我们的生成方法估计 {x1,,x15} 中每个 item 的分布。

    生成过程的对比如下:

    Caser/GRU4Rec : {x0,x1,,x14}inputx15outputOurs : {x0,x1,,x14}input{x1,x2,,x15}output

    其中: 表示 predict

    显然,我们的模型在捕获所有序列关系的集合方面更有效,而 CaserGRU4Rec 未能显式地建模 {x0,x1,,x14} 之间的内部序列特征。

    在实践中,为了解决这个缺点,CaserGRU4Rec 这类模型通常会生成很多子序列 subsession,用于通过数据增强技术(如,填充、拆分、或移位input 序列)进行训练,如以下公式所示(NARMHRNNCaser3D-CNN):

    Caser/GRU4Rec sub-session-1 : {x1,x0,,x13}x14Caser/GRU4Rec sub-session-2 : {x1,x1,,x12}x13Caser/GRU4Rec sub-session-12 : {x1,x1,,x2}x3

    虽然有效,但是由于每个 subsession 的单独优化,上述生成 subsession 的方法无法保证最佳结果。此外,单独优化这些 subsession 将会导致相应的计算成本。本文实验部分也进行了详细的比较。

    logp(x0:t)=i=1tlogp(xix0:i1,θ)+logp(x0) ,因此可以将session 的联合概率的最大似然,分解为每个 subsession 的条件概率的最大似然。由于线性关系,因此每个 subsession 是可以单独优化的。

    NextItNetCNN-based,因此可以在所有 subsession 中并行地、共享地利用卷积计算结果,所以它的优势在于计算效率,而不是作者提到的联合优化。

26.1.2 网络架构

  1. Embedding Look-up Layer:给定一个 item 序列 x0:t={x0,,xt} ,模型通过一个 lookup table 检索前面 titem {x0,,xt1} 中的每一个,并将这些 item embedding 堆叠在一起。假设 embedding 维度为 2k ,其中 k 为卷积网络中的 inner 通道数,这将导致大小为 t×(2k) 的矩阵 ERt×(2k)。第 iitem 对应于 embedding 向量 eiR2kE 的第 i 行)。

    注意,与 Caser 在卷积期间将输入矩阵视为二维 image 不同,我们提出的架构通过一维卷积滤波器来学习 embedding layer ,我们将在后面描述。

  2. Dilated layer:如上图 (a) 所示,标准滤波器只能通过以网络深度呈线性关系的感受野来进行卷积。这使得处理long-range 序列变得困难。与 WaveNet 类似,我们使用空洞卷积来构建所提出的生成模型。

    空洞卷积的基本思想是:通过使用零值的空洞来将卷积滤波器应用于大于其原始长度的区域。因此,由于使用更少的参数所以它更高效。另一个好处是,空洞卷积可以保留输入的空间维度,这使得卷积层和残差结构的堆叠操作更加容易。

    常规卷积通过 padding 也可以保留输入的空间维度。因此,保留输入空间维度并不是空洞卷积的优势。

    上图展示了所提出的序列生成模型在标准卷积和空洞卷积上实现时,模型之间的对比。(b) 中的空洞因子 dilation factor 是:1 / 2 / 4 / 8

    • 令感受野大小为 r ,空洞因子为 l 。假设卷积滤波器的宽度为 K ,则对于第 j 层卷积层:

      • 如果卷积为标准卷积,则感受野是线性的,即 r=j×(K1)+1
      • 如果卷积为空洞卷积,则感受野是指数的,即 r=(K1)j+11
    • 给定空洞因子 l 和卷积滤波器的宽度为 K ,来自 location i 的滤波器窗口为:

      [i(K1)×l,,i2l,il,i]

      item 序列 x0:t 上的一维空洞卷积算子 l 定义为:

      ei=(Elg)(i)=j=0K1eij×(K1)×gi

      为了防止信息泄露,这里仅使用左侧的数据点来进行卷积。

      其中:

      • eiR2klocation i 的卷积后的结果,E 构成了卷积后的 embedding 矩阵。
      • g=[g0,,gK1]RK 为一维空洞卷积核。

      显然,空洞卷积结构更有效地建模long-rangeitem 序列,因此在不使用更大的滤波器或模型变得更深的情况下更有效。

      如果把 gi 替换为注意力系数,那么一维空洞卷积就变成了传统的 attention-based 聚合操作(并且使用长度为 K 的截断)。

    • 在实践中,为了进一步增加模型容量和感受野,需要堆叠多次一维空洞卷积层,如 l=1/2/4/8

  3. 一维变换 One-dimensional Transformation:尽管我们的空洞卷积算子依赖于二维输入矩阵 E ,但是所提出的网络架构实际上是由所有一维卷积层组成的。为了对二维 embedding 输入进行建模,我们执行了一个简单的 reshape 操作,这是执行一维卷积的先决条件。

    具体而言,将二维矩阵 Et×(2k) reshape 为大小为 1×t×(2k) 的三维张量 T ,其中 2k 被视为 image 的通道,而不是 Caser 中标准卷积滤波器的宽度。

    下图 (c) 说明了 reshape 的过程。

26.1.3 Masked Convolutional Residual Network

  1. 虽然增加网络层的深度有助于帮助获得higher-level feature representation ,但是也容易导致梯度小的问题,这使得学习过程变得更加困难。为了解决退化问题degradation problem,深度网络引入了残差学习。

    残差学习的基本思想是将多个卷积层作为一个 block 堆叠在一起,然后采用 skip connection 将前一层的特征信息传递到后一层。skip connection 允许显式拟合残差映射(而不是原始的恒等映射),这可以维持输入信息从而增大传播的梯度。

  2. 假设所需要的映射为 H(E) ,我们让残差 block 拟合另一个映射:

    F(E)=H(E)E

    所需要的映射现在通过逐元素加法重写为:H(E)=F(E)+E ,其中假设 F(E)E 具有相同的维度。正如 ResNet 中所证明的,优化残差映射 F(E) 要比优化原始的映射 H(E) 容易得多。

    受到 《Identity mappings in deep residual networks》《Neural machine translation in linear time》 的启发,我们在下图 (a)(b) 中引入了两个残差模块。

    (a) 中我们用一个残差块residual blockwrap 每个空洞卷积层(即,Masked 1 x 3),而在 (b) 中我们用一个不同的残差块来 wrap 每两个空洞卷积层。也就是说,对于 (b) 中的 block 的设计,输入层和第二个卷积层通过 skip connection 来连接。

    具体而言,每个 block 都由归一化层、激活(例如 ReLU)层、卷积层、 skip connection 以特定的顺序组成。在这项工作中,我们在每个激活层之前采用了 state-of-the-artlayer normalization ,因为与 batch normalization 相比,它非常适合序列处理和在线学习。

    • (a) 中的 residual block 由三个卷积滤波器组成:一个大小为 1 x 3 的空洞卷积滤波器和两个大小为 1 x 1 的常规滤波器。引入 1 x 1 滤波器主要是改变feature map 的通道数,从而减少 1 x 3 卷积要学习的参数。

      • 第一个 1 x 1 滤波器(靠近图 (a) 中的输入 E)是将通道数从 2k 变为 k
      • 第二个 1 x 1 滤波器进行相反的变换从而保持下一次堆叠操作的空间维度。
    • (b) 中的 residual block 包含两个卷积滤波器,它们都是 1 x 3 的空洞卷积滤波器。这里没有 1 x 1 的常规滤波器。并且 input 之后没有跟随 Normalization

  3. 为了展示 (a) 中的 1 x 1 滤波器的有效性,我们计算了 (a)(b) 中的参数数量。为简单起见,我们忽略了激活层和归一化层。正如我们所见:

    • (b) 中,由于没有 1 x 1 滤波器,所以 1 x 3 滤波器的参数数量为:1×3×(2k)×(2k)=12k2
    • 而在 (a) 中,要学习的参数数量为:1×1×(2k)×k+1×3×k×k+1×1×k×(2k)=7k2
  4. (a)(b) 中的残差映射的公式为:

    F(E,{Wi})={W3(σ(Ψ(W2(σ(Ψ(W1(σ(Ψ(E))))))))), (a)σ(Ψ(W4(σ(Ψ(W2(E)))))), (b)

    其中:

    • σ()ReLU 层,Ψ()layer-normalization
    • W1,W3 表示标准的 1 x 1 卷积的权重权重函数。
    • W2,W2,W4 表示 1 x 3 大小的 l-dilated 卷积滤波器的权重函数。

    注意,为了简化公式,这里省略了偏置项。

  5. Dropout-mask:为了避免未来信息泄露的问题,我们为一维空洞卷积提出了一种 masking-baseddropout 技巧,从而防止网络看到未来的 item 。具体而言,在预测 p(xix0:i1) 时,不允许卷积滤波器使用来自 xi:t 的信息。下图展示了执行卷积的几种不同方法。

    因为默认的卷积操作会以当前位置为中心,同时使用左侧和右侧的数据点。

    如图所示,我们的 dropout-masking 操作有两种方式(假设卷积核大小为 K ):

    • padding & masking:如图 (d) 所示,在输入序列左侧填充 (K1)×l 个位置(类似于 CNNpadding 填充),并在卷积时 masking 卷积窗口右侧部分。

    • shifting & padding:如图 (e) 所示,将输出序列左移 (K1)×l 个位置,并在输入序列右侧填充 (K1)×l 个位置。

      这种方法

    (e) 中的方法很可能导致序列中的信息丢失,特别是对于短序列。因此,在这项工作中我们在 (d) 中应用填充策略。

26.1.3 训练和预测

  1. 如前所述,卷积架构的最后一层中的矩阵(由 E(o) 表示),保留了输入 E 的相同维度大小,即 E(o)Rt×(2k) 。但是,输出应该是一个矩阵或张量,其中包含输出序列 x1:t 中所有 item 的概率分布,其中 xt 的概率分布就是我们想要的并且用于生成 top-N 推荐。

    为此,我们可以简单地在最后一个卷积层之上再使用一个 1 x 1 卷积层,滤波器大小为 1×1×(2k)×n ,其中 nitem 总数。遵从一维变换过程,我们得到想要的输出矩阵 E(p)Rt×n ,其中经过 softmax 操作之后的每个行向量表示 xi 上的 categorical distribution0<it

  2. 优化的目标是最大化训练数据关于 θ 的对数似然。显然,最大化 logp(x0:t) 在数学上等价于最小化 x1:t 中每个 item 的二元交叉熵损失之和。对于具有数千万个 item 的实际推荐系统,可以应用负采样策略来绕过 full softmax 分布的生成,其中 1 x 1 卷积层被一个具有权重矩阵 E(g)R(2k)×n 的全连接层所替代。例如,我们可以应用 sampled softmaxkernel based sampling 。经过适当调优的采样大小,这些负采样策略的推荐准确性与 full softmax 方法几乎相同。

    这里,1 x 1卷积层和全连接层几乎是等价的,所以替代的意义是什么?读者认为这里表述有误,应该是 E(g)R(2k)×s ,其中 s 为负采样的规模。但是,这种负采样方法是一种全局负采样,即每个 output 都采样相同的一组负样本。

    另外,这里没有把 input emebdding Eoutput embedding E(g) 进行共享,导致模型可能发生过拟合。

  3. 预测阶段:为了与现有模型进行比较,我们仅预测 next item ,然后停止生成过程。然而,该模型能够简单地通过将预测的 next item (或序列)输入网络来预测下一个,从而生成一个预测序列,因此是序列生成模型。这与大多数现实世界的推荐场景相匹配。在这些场景中,当观察到当前 action 时,紧跟着 next action

    但是在训练和评估阶段,所有 time step 的条件预测都可以并行进行,因为完整的输入 item 序列 x0:t 已经可用。

  4. 出于比较的目的,我们没有在我们的模型或 baseline 中考虑其它上下文。然而,我们的模型可以灵活地结合各种上下文信息。例如,如果我们知道 user id ulocation p ,则 p(x0:t) 分布可以修改为:

    p(x0:t)=i=1tp(xix0:i1,u,P,θ)p(x0)

    其中:u 为用户 uuser embeddingPlocationlocation matrix

    我们可以通过逐元素操作(如乘法、加法、或拼接)将 E (卷积前)或 E(o) (卷积后)与 uP 结合起来。我们将评估工作留待未来。

26.2 实验

  1. 数据集:

    • Yoochoosebuys: YOO:来自 RecSys Challenge 2015。我们使用购买数据集进行评估。对于预处理,我们过滤掉长度小于 3session。同时,我们发现在处理后的 YOO 数据中,96%session 长度小于 10,因此我们简单地删除了长度大于等于 10session (占比 4%),并将其称作 short-range 序列数据。

    • Last.fm :我们从该数据集中分别随机抽取 20000200000 首歌曲,分别称作 MUSIC_M 数据集和 MUSIC_L 数据集。

      Last.fm 数据集中,我们观察到大多数用户每周听音乐数百次,而有的用户甚至一天内听了一百多首歌曲。因此,我们能够通过切分这些 long-range 的听歌 session 来测试我们的模型在 short-rangelong-range 序列上的性能。

      MUSIC_L 中,我们定义最大 session 长度 t5 / 10 / 20 / 50 / 100 (每种长度定义一个数据集),然后提取每 t 个连续的 item 作为我们的输入序列。这是通过在整个数据集上滑动一个大小和步长为 t 的窗口来完成的。我们忽略了最后两个 item 之间的时间跨度超过 2 小时的 session 。这样,我们创建了 5 个数据集,称之为 RAW-SESSIONS。此外,MUSIC_M5YOO 也是 RAW-SESSIONS 。我们将这些 RAW-SESSIONS 数据随机划分为训练集、验证集、测试集,划分比例为 50%-5%-45%

      是否要根据时间跨度来切分?这种滑动窗口的方法会导致一些 session 内部的 item 之间,存在较大的时间跨度。

      此外,这里训练集太小,测试集太大?

    如前所述,CaserGRU4Rec 的性能对于长序列输入应该会显著降低,例如当 t=20/50/100 时。例如,当设置 t=50 时,CaserGRU4Rec 将使用 x0:48 来预测 x49 ,但是不会显式建模 x0x48 之间的 item 相互依赖关系。为了弥补这个缺陷,当 t>5 时,我们遵循通用方法 NARM《Improved recurrent neural networks for session-based recommendations》,通过从 RAW-SESSIONS 的训练集中手动创建额外的 session,以便 CaserGRU4Rec 可以在很大程度上利用 full dependency 。假设 t=50 ,那么每个训练 session 将通过填充头部和移除尾部从而创建 45sub-session,即:

    {x1,x0,x1,,x48},{x1,x1,x0,x47},,{x1,x1,x1,,x4}

    关于 MUSIC_M,我们仅展示 t=5 的结果。

    我们在下表中展示了 RAW-SESSIONSSUB-SESSIONS (即 SUB-SESSIONS-T)的训练数据集的统计信息。

    为什么对于 YOO, MUSIC_M5, MUSIC_L5SUB-SESSIONS-T 反而要比 RAW-SESSIONS 更少?读者猜测,这里 SUB-SESSIONS-T 不包含原始的 RAW-SESSIONS,因此真实训练集是二者的并集。

  2. 配置:

    • 所有模型均使用 TensorFlowGPU(TITAN V) 上进行训练。

    • baseline 方法的学习率和 batch size 是根据验证集中的性能手动设置的。

    • 对于所有数据集,NextItNet 使用 0.001 的学习率和 batch size = 32

    • 如果没有特别的说明,那么所有模型的 embedding 大小 2k=64

    • 我们报告了使用残差块 (a) 和完整 softmax 的结果,我们也独立地验证了 残差块 (b) 的性能结果。

      残差块 (a):每个残差块来 wrap 每个空洞卷积层。

      残差块 (b):每个残差块来 wrap 每两个空洞卷积层。

    • 为了进一步评估两种残差块的有效性,我们还在另一个数据集中测试了我们的模型,即 Weishi 。与没有残差块的相同模型相比,improvement 大约是两倍。

  3. 评估指标:Mean Reciprocal Rank: MRR@NHit Ratio: HR@NNormalized Discounted Cumulative Gain: NDCG@NN 设置为 520

    我们评估测试集中每个序列的 last item 的预测准确性。

    论文这里省略了 baseline 的介绍。

  4. 所有方法的总体性能如下表所示。可以看到:神经网络模型(即,Caser, GRU4Rec, NextItNet )在 top-N 序列推荐任务中获得了非常有前景的准确性。

    例如,在 MUSIC_M5 数据集中,三个神经网络模型在 MRR@5 上的表现比广泛使用的 baseline MostPop120 倍以上。在这个数据集中,我们通过 NextItNet 获得的最佳 MRR@20 结果是 0.3223,这大致意味着目标 item20000 个候选 item 中平均排名第 3 位(1/0.3223 大致等于 3

  5. 我们发现,在这些基于神经网络的模型中,NextItNet 在很大程度上优于 CaserGRU4Rec。我们认为有几个原因促成了这个 state-of-the-art 的结果。

    • 首先,正如前文所强调的那样,NextItNet 充分利用了完整的序列信息。这可以在下表中轻松地验证,我们观察到没有 subsessionCaserGRU4Reclong session 中的表现非常糟糕。

      此外,即使使用 subsessionCaserGRU4Rec 仍然展示出比 NextItNet 差得多的结果。因为与 NextItNet 利用完整 session 相比,每个 subsession 的独立优化显然是次优suboptimal的。

      “每个 subsession 的独立优化显然是次优suboptimal的” 个人觉得不成立,因为本质上由于 logp(x0:t)=i=1tlogp(xix0:i1,θ)+logp(x0),因此联合概率分布的最大化等价于每个 subsession 单独优化的最大化。

    • 其次,与 Caser 不同的是,NextItNet 没有池化层,尽管它也是 CNN-based 模型。因此,NextItNet 保留了原始 embedding 矩阵 E 的整个空间分辨率,而不会丢失任何信息。

    • 第三,NextItNet 可以通过使用残差学习来支持更深的层,这更适合建模复杂的关系和长期依赖关系。我们独立地验证了残差块 (b) 的性能,并将结果展示在下表中。可以观察到:通过残差块设计可以显著提高 NextItNet 的性能。

  6. 下表展示了 embedding size 的影响。

  7. 除了推荐准确性的优势,我们还在下表中评估了 NextItNet 的效率。可以看到:

    • 首先,NextItNetCaser 在所有三个数据集中都需要比 GRU4Rec 更少的训练时间。CNN-based 模型可以更快训练的原因是由于卷积的完全并行机制。显然,具有训练速度优势的 CNN 模型更受现代并行计算系统的青睐。

    • 其次, NextItNetCaser 相比,其训练效率得到进一步的提升。更快的训练速度主要是因为 NextItNet 在训练期间利用了完整的序列信息,然后通过更少的训练 epoch 来更快地收敛。

      个人觉得 NextItNet 训练速度快的其中一个原因是:卷积运算的结果在多个 subsession 之间共享,所以节省了大量的计算。

    为了更好地理解收敛行为,我们在下图中展示了它们。可以看到:在具有相同数量的训练 session 的情况下, 和 Caser, GRU4Rec 相比,NextItNet的收敛速度更快。这证实了我们前面的观点,因为 CaserGRU4Rec 无法充分利用 session 中的内部序列信息。

二十七、GCE-GNN[2020]

  1. 传统的推荐方法(如协同过滤)通常依赖于 user profile 的可用性、以及长期历史交互。在最近的许多现实世界场景中,当这类信息不可用(如,未登录用户)或可用信息有限(如,短期历史交互)时,这些方法表现不佳,如 YouTubeTiktok 等移动流媒体。因此,session-based 推荐最近引起了人们的广泛关注,它根据给定的匿名序列按时间顺序来预测 next interested item

    大多数关于 session-based 推荐的早期研究分为两类:similarity-basedchain-based

    • 前者严重依赖于当前 sessionitem 的共现信息co-occurrence information,而忽略了序列行为模式sequential behavior pattern
    • 后者推断所有 item 的所有可能的用户选择序列,对于 item 数量很大的真实世界应用,这可能会遇到棘手的计算问题。

    最近,人们针对该任务提出了许多 deep learning based 方法,这些方法利用 pair-wiseitem-transition 信息来建模给定 session 的用户偏好。这些方法取得了令人振奋的成果。但是仍然面临以下问题。

    • 首先,一些方法通过使用 RNN (如 GRU4RecNARM)和 memory network (如,STAMP)按照时间顺序依次抽取 sessionpairwise item-transition information ,从而推断匿名用户的偏好。然而,一个 session 可能包含用户的多个选择甚至噪音,因此它们可能不足以生成所有正确的依赖关系,这使得我们无法在 embedding 中建模 item-transition pattern 的复杂的固有顺序。

    • 其次,还有一些方法基于具有自注意力机制的 GNN (如 SR-GNN)。它们通过计算相对重要性来学习整个 sessionrepresentation,其中相对重要性基于 session 在每个 itemlast item 之间的 pairwise item-transition 来获得,因此性能在很大程度上取决于 last item 与当前 session 的用户偏好之间的相关性。

    • 此外,几乎所有先前的研究都仅基于当前的 session 来建模用户偏好,而完全忽略了其它 session 中有用的 item-transition pattern 。据我们所知,CSRM 是唯一一个结合了最近 msession 中的协同信息,从而以端到端方式丰富当前 session representation 的工作。CSRMsession 视为最小粒度,并测量当前 session 和最近 msession 之间的相似性从而抽取协同信息。

      然而,不幸的是,它可能会将其它 session 的相关信息和不相关信息都编码到当前 session embedding 中,这甚至可能会降低性能。我们以下图中的例子来说明这一点。不失一般性,假设当前 sessionSession 2session-based 推荐旨在推荐与 Iphone 有关的配件。从图中我们观察到:

      • 利用其它 sessionitem-transition 可能有助于建模当前 session 的用户偏好。例如,我们可以从 Session 1Session 3 中找到 Session 2relevant pairwise item-transition information ,例如一个新的 pairwise item-transition[Iphone, Phone Case]
      • 当在某个 session 中编码的部分 item-transition 信息与当前 session 无关时,直接利用整个那个 sessionitem-transition 信息可能会引入噪声。例如,如果 Session 3 是最近的 msession 之一,CSRM 也可以考虑利用 Session 3 来帮助建模 Session 2 的用户偏好。并且它在学习 Session 2embedding 时引入不相关的 item (即,衣服和裤子),因为它将 Session 3 视为一个整体,而不区分相关的 item-transision 和不相关的 item-transision 。而如何实现这种区分,这是具有挑战性的。

    为此,论文 《Global Context Enhanced Graph Neural Networks for Session-based Recommendation》提出了一种新颖的方法,以更精细的方式利用所有 session 中的 item-transition ,以便更好地推断当前 session 的用户偏好从而进行 session-based 推荐。该方法称作 Global Context Enhanced Graph Neural Network: GCE-GNN 。在 GCE-GNN 中,作者提出分别从 session graphglobal graph 中学习两个 levelitem embedding

    • session graph:通过在当前 session 中建模 pairwise item-transition 来学习 session-levelitem embedding
    • global graph:通过在所有 session (包括当前 session)中建模 pairwise item-transition 来学习 global-levelitem embedding

    GCE-GNN 中:

    • 作者提出了一种新颖的 global-levelitem representation learning layer ,它采用 session-aware attention 机制递归地融合 global graph 上每个节点的 neighbor embedding
    • 作者还设计了一个 session-levelitem representation learning layer,它在 session graph 上使用 GNN 来学习当前 session 中的 session-level embedding
    • 此外,GCE-GNN 使用 soft attention 机制聚合两个 level 学到的 item embedding

    这项工作的主要贡献如下:

    • 据作者所知,这是第一个利用所有 sessionglobal-level item-transition 来学习 global-level 上下文信息的工作,用于 session-based 推荐。
    • 作者提出了一个统一模型,该模型通过有效利用来自两个 level 的图模型(即,session graphglobal graph )的 pair-wise item-transition information 来提高当前 session 的推荐性能。
    • 作者还提出了一种 position-aware attention ,将 reversed position 信息融合到 item embedding 中,这在 session-based 推荐中显示了优异的性能。
    • 作者对三个真实世界的数据集进行了广泛的实验,结果表明 GCE-GNN 优于包括 state-of-the-art 方法在内的九个 baseline 方法。
  2. 相关工作:

    • 基于马尔科夫链的 session-based 推荐:有几种传统方法可以用于session-based 推荐,尽管它们最初不是为 session-based 推荐而设计的。例如,基于马尔科夫链的方法将当前 session 映射到马尔科夫链中,然后根据 previous action 来推断用户的 next action

      《Factorizing personalized markov chains for next-basket recommendation》 提出 FPMC,通过结合了矩阵分解和一阶马尔科夫链,从而捕获序列模式 sequential pattern 和长期用户偏好来进行推荐。它可以通过忽略用户latent representation 来适配 session-based 推荐。

      然而,基于马尔科夫链的方法通常侧重于建模两个相邻 item 之间的序列转移 sequential transition 。相比之下,我们提出的模型将序列的 item-transition 转换为图结构数据,从而捕获 session-based 推荐的 item-transition pattern 的固有顺序 inherent order

      基于马尔科夫链的方法仅捕获一阶转移关系,无法捕获高阶转移关系。

    • 基于深度学习的 session-based 推荐:近年来,建模序列数据的基于神经网络的方法已被用于 session-based 推荐。

      • 《Session-based recommendations with recurrent neural networks》 提出了一个叫做 GRU4REC 的工作,将 RNN 网络应用于 session-based 推荐。GRU4REC 采用多层 GRU 来建模 item 交互序列。

      • 《Improved recurrent neural networks for session-based recommendations》 通过引入数据增强来扩展了 GRU4REC

      • 《Neural attentive session-based recommendation》 提出了 NARM,它将注意力机制结合到堆叠的 GRU encoder 中,从而为 session-based 推荐捕获更具表达性的 item-transition information

      • 《STAMP: short-term attention/memory priority model for session-based recommendation》 提出了一种基于注意力的短期记忆网络short-term memory network(叫做 STAMP),从而在不使用 RNN 的情况下捕获用户当前的兴趣。

        NARMSTAMP 都通过使用注意力机制来强调last click的重要性。

      • 收到 Transformer 的启发,SASRec《Self-attentive sequential recommendation》)堆叠多个层从而捕获 item 之间的相关性。

      • ISLF《ISLF: Interest Shift and Latent Factors Combination Model for Session-based Recommendation》) 考虑到用户的兴趣漂移 interest shift ,并采用变分自编码器 VAERNN 来捕获用户的序列行为特征从而用于 session-based 推荐。

      • MCPRN《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》)提出通过使用混合通道模型来建模给定会话的多意图multi-purpose 从而用于 session-based 推荐。

      然而,与基于马尔科夫链的方法类似,基于 RNN 的方法侧重于建模相邻 item 的序列转移 ,从而通过给定序列的时间顺序来推断用户偏好,因此无法建模复杂的 item-transition pattern (如,非相邻 item 之间的转移)。

      最近,一些方法在从当前 session 构建的图上使用 GNN-based 模型来学习 item embedding 用于 session-based 推荐。

      • 《Session-based recommendation with graph neural networks》 提出一个门控 GNN 模型(称作 SR-GNN)来学习 session graph 上的 item embedding,然后通过将每个学到的 item embedding 与注意力结合从而获得一个有表达性的 session embedding 。这个注意力是根据每个 itemthe last item 之间的相关性来计算的。
      • 随着 SR-GNN 的成功,人们也提出了一些变体从而用于 session-based 推荐,如 GC-SAN《Graph Contextualized Self-Attention Network for Session-based Recommendation》).
      • 《Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks》 提出 FGNN ,通过聚合带有多头注意力的邻居的 embedding 从而学习每个 item representation ,并通过反复地将每个学到的 embedding 和每个 time 相关性(timesession 之间的相关性)相结合从而生成 final session representation

      然而,所有这些方法都只对当前 session 上的 item-transition 信息进行建模。相比之下,我们提出的模型在所有 session 中学习 item-transition 信息,从而增强对当前 session 的学习。

    • 基于协同过滤的 session-based 推荐:尽管基于深度学习的方法取得了显著的性能,但是基于协同过滤的方法仍然可以提供有竞争力的结果。

      • Item-KNN《Item-based collaborative filtering recommendation algorithms》)可以通过推荐与当前 sessionlast item 最相似的 item 来扩展,从而用于 session-based 推荐。

      • KNNRNN《When recurrent neural networks meet the neighborhood for session-based recommendation》)利用 GRU4REC 和基于共现的 KNN 模型来提取序列模式sequential pattern 从而用于 session-based 推荐。

      • 最近,《A Collaborative Session-based Recommendation Approach with Parallel Memory Modules》 提出了一种名为 CSRM 的端到端神经网络,该模型实现了 state-of-the-art 性能。

        它首先在 item-transition 上利用 NARM 来编码每个 session,然后通过探索最近的 msession 来丰富当前的 session representation ,最后利用融合门控机制来学习不同特征源的组合。

        但是,在为当前 session 集成来自其它 sessionembedding 时,它可能会受到噪音的影响。相比之下,我们提出的方法考虑了 item-level 的协同信息:我们使用其它 session 中的 item embedding 来丰富当前 sessionitem embedding ,然后将它们集成到 session representation 中从而用于 session-based 推荐的。

27.1 模型

  1. V={v1,v2,,v|V|} 为所有 item 的集合。每个匿名 session S={v1(S),v2(S),,vl(S)} 由根据时间顺序排列的一系列交互(即用户点击的 item )组成,其中 vi(S) 表示在 session S 内点击的第 iitemlsession S 的长度。

    给定一个 session Ssession-based 推荐的问题是:从 V 中推荐最可能是当前 session S 的用户所点击的next item (即,第 l+1item )的 top N 个候选 item1N|V|

  2. 对于每个 item vV ,定义 hvRd 为它的 initial item embedding

27.1.1 Session Graph and Global Graph

  1. 这里我们提出两种不同的图模型,从而为 item representation learning 在所有可用的 session 中捕获不同 levelitem transition 信息。
a. Session Graph Model
  1. session-based graph 旨在通过对当前 sessionpair-wise 的相邻 item 的序列模式建模,从而学习 session-level item embedding

    受到 SR-GNN 的启发,每个 session 序列都会被转换为 session graph,用于通过 GNN 来学习当前 sessionitemembedding 。给定 session S={v1(s),v2(s),,vl(s)} ,令 Gs=(Vs,Es) 为对应的 session graph,其中 VsVSitem 的集合,Es={ei,j(s)} 为边的集合。每条边 ei,j(s) 表示 S 中的两个相邻 item (vi(s),vj(s)) ,这被称作 session-levelitem-transition pattern

    通过遵循FGNN 的工作,我们为每个 item 添加了一个自循环,如下图所示。

  2. SR-GNNFGNN 不同,我们的 session graph 根据 item viitem vj 之间的关系有四种类型的边,分别表示为:rin,rout,rin-out,rself 。对于边 ei,j(s)

    • rin 表示仅有从 vj(s)vi(s) 的转移 transition
    • rout 表示仅有从 vi(s)vj(s) 的转移 。
    • rin-out 表示既存在从 vj(s)vi(s) 的转移,也存在从 vi(s)vj(s) 的转移。
    • rself 表示一个 item 指向自身的转移。

    由于考虑了边的方向信息,因此这里的 session graph 更精细,表达能力更强。

b. Global Graph Model
  1. 和专注于建模整个 session 序列模式的、传统的基于深度学习的方法(如,NARM)相比,session graph 可以有效地捕获 session 的复杂的 graph pattern 从而学习 session-level item embedding

    然而,我们还旨在从其它 session 中捕获 item-transition 信息从而学习 item representation ,这被称作 global-levelitem transition 信息。

  2. Global-level Item Transition Modeling:这里,我们通过集成在所有 session 的所有 pairwise item transition ,从而考虑 global-levelitem transition 用于 global-levelitem representation learning

    因此,我们提出了一种新的 global graph model 来学习global-level item embedding。这个模型打破了 session 独立性的假设,并基于所有 session (包括当前 session)的 pairwise item transition 来链接所有的 item pair

    接下来,我们首先提出一个用于建模 global-level item transition 的概念(即,ϵ 邻域集合Neighbor Set),然后给出全局图的定义。

  3. ϵ 邻域集合 Nϵ(v):对于 session Sp 中的任意 item vi(p)vi(p)ϵ 邻域集合表示一组 item,其中每个元素定义为:

    Nϵ(vi(p))={vj(q)vi(p)=vi(q)SpSq;vj(q)Sq;j[iϵ,i+ϵ];SqSp}

    其物理意义为:为 vi(p) 找到位于其它 session 的、在那个 session 内距离在 ϵ 以内的 item

    其中:

    • iitem vi(p) 在另一个 session Sq 中出现的位置。

    • ϵ 是一个超参数,用于控制 vi(p)S(q) 中的 item 之间的 item-transition 范围。

      注意,超参数 ϵ 有利于在 session 中对 short-rangeitem transition 进行建模,因为如果超过了范围 (ϵ) ,那么捕获 global-levelitem transition 信息是无益的(甚至是噪音,例如,不相关的依赖)。

    根据定义,对于每个 item viVglobal-level item transition 定义为:{(vi,vj)vi,vjV;vjNϵ(vi)}。值得注意的是,为了提高效率,我们没有区分 global-levelitem transition 信息的方向。

  4. Global Graphglobal graph 旨在捕获 global-levelitem transition 信息,该信息将用于学习所有 session 中的 item embedding 。具体而言,global graph 是基于所有 sessionitemϵ 邻域集合来构建的。

    不失一般性,global graph 定义如下:定义 Gg=(Vg,Eg)global graph,其中:

    • Vg 表示V 中所有 item 对应的 graph node 集合。
    • Eg={ei,j(g)(vi,vj),viV,vjNϵ(vi)} 表示边的集合,每条边对应于所有 session 中的一对 pairwise item

    下图展示了构建 global graph (ϵ=2) 的示例。

    此外,对于每个节点 vi ,我们为它的边生成权重从而区分 vi 邻居的重要性: 对于每条边 ei,j(g) ,我们使用它在所有 session 中出现的频次作为它的权重。出于效率的考虑,我们仅保留 Gg 上每个 item vi 的权重最高的 top-N 边。

    注意:图 Ggitem v 的邻域(即 Nv(g) )的定义与 Nϵ(v) 相同。因此,Gg 是一个无向加权图,因为 ϵ 邻域集合是无向的。在测试阶段,出于效率的考虑,我们不会动态更新 global graph 的拓扑结构。

  5. 注意:V 中的每个 itemlayer t 被编码到一个统一的 embedding 空间,即 hitRdd 表示 item embeddign 的维度。其中初始化的 embeddignhi0R|V|,这里我们使用基于 one-hotembedding,并通过使用可训练的参数矩阵 W0Rd×|V| 将其映射到 d 维潜在向量空间。

    注意,应用在 Global Graph 上的 GNN 模型有多层。此外,这里的 hi0 也可以结合 item 的特征。

27.1.2 GCE-GNN

  1. 我们提出了一种新颖的 Global Context Enhanced Graph Neural Networks for Session-based Recommendation: GCE-GNNGCE-GNN 旨在同时利用 session-levelglobal-levelpairwise item transition 来建模当前 session 的用户偏好从而进行推荐。

    下图展示了 GCE-GNN 的架构,它包括四个主要组件:

    • global-levelitem representation learning layer:它通过使用 session-aware attention 机制来基于 global graph Gg 的结构递归地融合每个节点的 neighbor embedding ,从而学习所有 sessionglobal-level item embedding
    • session-levelitem representation learning layer :它在 session graph Gs 上使用 GNN 模型来学习当前 session 中的 session-level item embedding
    • session representation learning layer :它通过聚合 session-levelglobal-level 的、学到的 item representation ,从而建模用户在当前 session 的用户偏好。
    • prediction layer:它输出候选 item 的预测概率从而进行推荐。

    接下来,我们将详细介绍这四个组件。

a. Global-level Item Representation Learning Layer
  1. 接下来我们将介绍如何在 global graph 上传播特征从而对来自其它 sessionitem-transition 信息进行编码从而帮助推荐。

    我们的 layer 是基于 GCN 的架构来构建的,我们利用 GAT 的思想根据每个连接的重要性来生成注意力权重。这里,我们首先描述一下单个 layer,它由两个组件构成:information propagationinformation aggregation 。然后我们将展示如何将单个 layer 推广到多个 layer

  2. Information Propagation:一个 item 可能涉及多个 session,从这些 session 中我们可以获得有用的 item-transition 信息来有效地帮助当前session 的预测。

    为了获得 item v 的一阶邻居的特征,一个直接的解决方案是使用均值池化。然而,并非 vϵ 邻域集合中的所有 item 都与当前 session 的用户偏好相关,因此我们考虑利用 session-aware attention 来区分 Nϵ(v)item 的重要性。因此,Nϵ(v) 中的每个 item 都根据 session-aware attention score, 来线性组合:

    hNvi(g)=vjNvi(g)π(vi,vj)hvj

    如前所述,图 Ggitem v 的邻域(即 Nv(g))的定义与 Nϵ(v)相同。

    其中:π(vi,vj) 估计不同邻居的重要性权重。直观而言,一个 item 越接近当前 session 的偏好,这个 item 对推荐而言就越重要。因此,我们实现 π(vi,vj) 如下:

    π(vi,vj)=q1LeakyRelu(W1[(shvj)||wi,j])

    其中:

    • W1R(d+1)×(d+1)q1Rd+1 都是可训练的参数。

    • sRd 可以视为当前 session 的特征,它可以通过当前 sessionitem representation 的均值得到:s=1|S|vShv

      构建 global graph 时,vi 是基于 V 来遍历的,因此 global graph 中不知道每个节点来自于哪个 session 。而这里我们必须知道 global graph 中每个节点对应的当前 session 从而计算 s

      方法是:对于每个 viV ,我们对它出现过的每个 session 计算一个 π(vi,) 从而得到 session-awareglobal-level item representation 。假设节点 viMsession 中出现过,则它得到 M 个(而不是一个) global-level item representation

    • wi,jRglobal graph 中的边 (vi,vj) 的权重。

      这里融合了两种相关性:

      • 一种是 global graph 自身的边的权重 wi,j,它刻画当前节点 vi 和邻居节点 vj 之间的物理关系。
      • 另一种是通过模型学到的相关性 shvj,它刻画当前 session 和邻居节点 vj 之间的语义关系。
    • 我们选择 LeakyRelu 作为激活函数, 为逐元素乘积,|| 表示向量拼接操作。

    与均值池化不同,我们的方法使得信息的传播依赖于 Svj 之间的亲和度 affinity ,这意味着匹配当前 session 偏好的邻居将得到更多的重视。

    然后我们通过softmax 函数对 vi 连接的所有邻居的系数进行归一化:

    π(vi,vj)=exp(π(vi,vj))vkNvi(g)exp(π(vi,vk))

    因此,最终的注意力分数能够建议哪些邻居节点应该受到更多的关注。

  3. Information Aggregation:最后一步是聚合 item representation hv 及其 neighborhood representation hNv(g) 。我们实现的聚合函数 agg 如下:

    hv(g)=agg(hv,hNv(g))=relu(W2[hv||hNv(g)])

    其中我们选择 relu 作为激活函数,W2Rd×(2d) 为参数矩阵。

    通过单个 aggregator layeritemrepresentation 依赖于自身及其直接邻域。我们可以通过将 aggregator 从单层扩展到多层从而探索高阶邻域,这允许将与当前 session 相关的更多信息融合到当前 representation 中。例如,第 kstep 中的 item representation 为:

    hv(g),k=agg(hv(g),k1,hNv(g)k1)

    其中:hv(g),k1item vrepersentation,它是从前一个 information propagation step 生成的。hv(g),0 在初始的 propagation 迭代中设置为 hv

    通过这种方式,一个 itemkrepresentation 是它的初始 representation 及其 1k 阶邻域的混合。这使得可以在当前 sessionrepresentation 中融合更有效的消息。

b. Session-level Item Representation Learning Layer
  1. session graph 包含当前 session 中的 pairwise item-transition 。接下来我们介绍如何学习 session-levelitem embedding

  2. 由于 session graphitem 的邻居对该 item 具有不同的重要性,我们利用注意力机制来学习不同节点之间的权重。注意力系数可以通过逐元素乘积和非线性变换来计算:

    ci,j=LeakyReLU(ari,j(hvihvj))

    其中:

    • ci,j 表示节点 vj 的特征对于节点 vi 的重要性,我们选择 LeakyReLU 作为激活函数。
    • ri,jvivj 之间的关系类型。
    • ari,jRd 为待学习的权重向量。对于不同的关系类型,我们训练了四个权重:ain,aout,ain-out,aself

    这里使用的双线性乘积来计算注意力系数,并没有采用向量拼接的方式或MLP 的方式来计算。

    由于图中不是每两个节点都连接,因此我们仅计算节点 vjNvi(s) 从而将图结构注入模型,其中 Nvi(s)visession S 中的一阶邻域。

  3. 为了使得不同节点之间的系数具有可比性,我们通过 softmax 函数来对注意力权重进行归一化:

    αi,j=exp(ci,j)vkNvi(s)exp(ci,k)

    在上式中,注意力系数 αi,j 是非对称的,因为 vivj 的邻域是不同的,这意味着它们对彼此的贡献是不相等的。

    接下来我们通过计算经过系数加权的线性组合来获得每个节点的输出特征:

    hvi(s)=vjNvi(s)αi,jhvj

    session graph 中的 item representationitem 自身及其在当前 session 中的邻域特征聚合而成。通过注意力机制,减少了噪声对 session-levelitem representation learning 的影响。

    这里没有多层,因为是浅层的图。但是为什么不用深层的?这个可能需要通过实验来评估。

    由于 session graph 包含 self loop,因此 viNvi(s)

    这里的聚合直接是线性加权,而并没有使用 agg(,) 聚合函数。

c. Session Representation Learning Layer
  1. 对于每个 item,我们通过融合 global contextsession context 来获得它的 representation,并且它的 final representation 是通过 sum 池化来计算的:

    hv=dropout(hv(g),k)+hv(s)

    这里我们在 global-level representation 上应用 dropout 来避免过拟合。

    为什么不在 session-level representation 上应用 dropout?作者并未说明。读者猜测,这是因为:

    • session-level 包含的信息远远没有 global-level 包含的信息多。
    • session-level 的模型是浅层的,而 global-level 的模型是深层的。

    此外,作者在实验部分评估了不同类型的融合操作(门控机制、最大池化、拼接机制),发现 sum 池化的效果最佳。

  2. 基于学到的 item representation,我们现在介绍如何获得 session representation。与主要关注 last item 的先前的一些工作不同,这里我们提出了一种更全面的策略来学习 session 的每个部分对于 prediction 的贡献。

    在我们的方法中,session representation 是基于 session 中涉及的所有 item 来构建的。注意,不同 item 对于 next prediction 的贡献是不同的。直觉而言,session 中靠后点击的 item 更能代表用户当前的偏好,这表明这些 item 对推荐的重要性更大。此外,在当前 session 中找到用户的主要意图并过滤噪声也很重要。因此,我们结合了reversed position信息和 session 信息来作出更好的预测。

    • reversed position信息:将 session 序列输入到 GNN 之后,我们可以获得 session 中涉及的 itemrepresentation,即:H=[hv1,hv2,,hvl,]Rd×l。我们还使用可学习的 position embedding 矩阵 P=[p1,p2,,pl]Rd×l ,其中 piRd 是特定位置 iposition embeddingl 是当前 session 序列的长度。位置信息通过拼接和非线性变换进行融合:

      zvi=tanh(W3[hvi||pli+1]+b3)

      其中:W3Rd×(2d),b3Rd 都是可学习的参数。

      这里我们选择 reversed position embedding ,因为 session 序列的长度不是固定的。与 forward position 信息相比,当前 item 与待预测的 item 之间的距离包含了更多的有效信息。例如,在 session {v2v3?} 中,v3 是序列中的第二个,对预测的影响很大。但是在 session {v2v3v5v6v8?} 中,v3 的重要性会相对较小。因此,reversed position 信息可以更准确地暗示每个 item 的重要性。

      reverse position 给出了序列中每个 itemnext item 的空间距离。

    • session 信息:session 信息是通过计算 sessionitem representation 的均值来获得的:

      s=1li=1lhvi
  3. 接下来,我们通过 soft-attention 机制学习每个 item 的权重:

    βi=q2σ(W4zvi+W5s+b4)

    其中:W4,W5Rd×dq2,b4Rd 为待学习的参数。

    这里学习的是每个 itemsession 的关系,而不是和 last item 的关系。

    最后,我们通过线性组合 item representation 来获得 session representation

    s=i=1lβihvi

    session representation s 由当前 session 中涉及的所有 item 构成,其中每个 item 的贡献不仅取决于 session graph 中的信息,还取决于序列中的时间顺序(由 reversed position embedding 提供)。

    注意,reversed position embedding 仅参与 attention 的计算,它不会修改 hvi

d. Prediction Layer
  1. 基于获得的 session represntation s ,每个候选 item 的最终推荐概率为:

    y^i=softmax(shvi)

    其中:y^R|V| 给出了每个候选 item 作为 next click 的概率分布。

    损失函数定义为预测结果的交叉熵:

    L(y^)=i=1|V|[yilogy^i+(1yi)log(1y^i)]

    其中 yR|V| 表示 ground truthone-hot 编码向量。

27.2 实验

  1. 我们进行了广泛的实验,通过回答以下五个关键的研究问题来评估所提出的 GCE-GNN 方法的准确性:

    • RQ1GCE-GNN 在现实世界的数据集中是否优于 state-of-the-artsession-based 推荐的 baseline
    • RQ2global graphglobal-level encoder 是否提高了 GCE-GNN 的性能?GCE-GNN 在不同深度感受野 k 下的表现如何?
    • RQ3reversed position embedding 是否有用?
    • RQ4GCE-GNN 在不同聚合操作下的表现如何?
    • RQ5:不同的超参数设置(如 node dropout)如何影响 GCE-GNN 的准确性?
  2. 数据集:

    • Diginetica 数据集:来自 CIKM Cup 2016,由典型的交易数据组成。
    • Tmall 数据集:来自 IJCAI-15 比赛,包含匿名用户在天猫在线购物平台上的购物日志。
    • Nowplaying 数据集:来自 《#now playingMusic Dataset: Extracting Listening Behavior from Twitter》,包含用户的音乐收听行为。

    遵从 SR-GNNGC-SAN 的工作,我们对三个数据集进行了预处理。具体而言:

    • 我们过滤掉长度为 1session 以及频次少于 5item

    • STAMP 类似,我们将最近一周的 session 设置为测试数据,剩余的历史作为训练数据。

    • 此外,对于 session S={v1(s),v2(s),,vl(s)}, 我们通过序列拆分来生成序列和相应的标签,即:

      ([v1(s)],v2(s)),([v1(s),v2(s)],v3(s)),,([v1(s),,vl1(s)],vl(s))

    预处理后,数据集的统计数据如下表所示。

  3. 评估指标:P@NMRR@N

  4. baseline 方法:

    • POP:推荐训练集的 top-N 热门 item
    • Item-KNN:根据当前 sessionitem 和其它 item 之间的相似性来推荐 item
    • FPMC:结合了矩阵分解和一阶马尔科夫链,用于捕获序列效应和用户偏好。遵循之前的工作,我们在计算推荐分时,也忽略了 user latent representation
    • GRU4RecRNN-based 模型,使用 GRU 来建模用户序列。
    • NARM:通过将注意力集成到 RNN 中,从而对 GRU4Rec 进行了改进并用于session-based 推荐。
    • STAMP:完全依靠当前 sessionlast itemself-attention 来捕获用户的短期兴趣,从而使用 attention layer 来替代之前工作中的所有 RNN encoder
    • SR-GNN:采用门控 GNN layer 来获得 item embedding,然后跟随 last itemself-attention (就像 STAMP 那样),从而为 session-based 推荐来计算 session level embedding
    • CSRM:利用 memory network 来研究最近的 msession,从而更好地预测当前 session 的意图。
    • FGNN:通过设计一个加权的 attention graph layer 来学习 item embedding,并且 sessiongraph level feature extractor 来学习。
  5. 参数配置:

    • 遵从之前的方法(NARM, STAMP, SR-GNN),隐向量的维度 d 固定为 100

    • 所有模型的 batch size 设为 100

    • 我们保持每个模型的超参数一致从而进行公平地比较。

    • 对于 CSRM,我们将 memory size m 设为 100,和 batch size 一致。

    • 对于 FGNN,我们将 GNN layer 设为 3head 数量设为 8

    • 对于我们的模型:

      • 所有参数均使用均值为零、标准差为 0.1 的高斯分布进行初始化。

      • 我们使用初始学习率为 0.001Adam 优化器,每 3epoch 后衰减 0.1 (即,乘以 0.9)。

      • L2 正则化系数为 105 ,并且在验证集上搜索 dropout rate {0.1,0.2,,0.9}

      • 此外,在 Gg 中,我们将邻居的数量设置为 12、相邻 item 的最大距离 ϵ 设为 3

        出于效率的考虑,我们仅保留 Gg 上每个 item vi 的权重最高的 top 12 边。

27.2.1 Overall Comparison (RQ1)

  1. 下表报告了所有模型在所有数据集上的实验结果,其中每列的最佳结果以粗体突出显示。可以看到:

    • 在这两个指标上,GCE-GNN 在所有三个数据集上始终达到最佳性能(具有统计意义),这确定了我们所提出的方法的有效性。

    • 在传统方法中:

      • POP 的表现最差,因为它仅推荐 top-N 热门 item
      • POP 相比,FPMC 在三个数据集上展示了其有效性,它利用了一阶马尔科夫链和矩阵分解。
      • Item-KNNDigineticaNowplaying 数据集上,在传统方法中取得了最好的结果。注意,它仅应用了 item 之间的相似性,不考虑 sessionitem 的时间顺序,因此它无法捕获 item 之间的序列转移。
    • 与传统方法相比,基于神经网络的方法对于 session-based 推荐通常具有更好的性能。

      尽管在 DigineticaNowplaying数据集上比 Item-KNN 要差,GRU4Rec 作为第一个基于 RNNsession-based 推荐方法,仍然展示了 RNN 在建模序列中的能力。然而,RNN 是为序列建模而设计的,session-based 的推荐问题不仅仅是一个序列建模任务,因为用户的偏好可能会在 session 中发生变化。

    • 随后的方法,NARMSTAMP 显著优于 GRU4RECNARM 结合了 RNN 和注意力机制,并使用 RNNlast hidden state 作为用户的主要偏好。

      这个结果表明:对于 session-based 推荐而言,直接使用 RNNsession 序列进行编码可能还不够,因为 RNN 仅对 session 中相邻 item 之间的单向的 item-transition 进行建模。

      我们还观察到,STAMP 是一种完全基于注意力的方法,在 Tmall 数据集上取得了比 NARM 更好的性能。STAMP 结合了对 sessionlast itemself-attention 来建模短期兴趣。这个结果证明了为不同的 item 分配不同的注意力权重从而编码 session 的有效性。与 RNN 相比,注意力机制似乎是一个更好的选择,尽管 STAMP 忽略了 sessionitem 的时间顺序。

    • CSRMDigineticaTmall 数据集上的表现优于 NARMSTAMP。它显示了使用来自其它 sessionitem transition 的有效性,也显示了 CSRM 使用的、具有有限 slotmemory network 的缺陷。此外,CSRM 将其它 session 视为一个整体,而不区分其它 session 中所编码的相关的 item-transition 和不相关的 item-transition

    • 在所有 baseline 方法中,GNN-based 方法在 DigineticaNowplaying 数据集上表现良好。通过将每个 session 序列建模为子图并应用 GNN 来对 item 进行编码,SR-GNNFGNN 证明了在 session-based 推荐中应用 GNN 的有效性。这表明 graph 建模比序列建模、RNN 建模、 set 建模、和attention 建模要更适合 session-based 推荐。

    • 我们的方法GCE-GNN 在所有三个数据集上都优于 SR-GNNFGNN 。具体而言,GCE-GNNDiginetica 数据集上比 SR-GNN 平均高出 6.86% 、在 Tmall 数据集上平均高出 16.34% 、在 Nowplaying 数据集上平均高出 15.71%

      SR-GNNFGNN 不同,我们的方法融合了来自 global context (即,其它 session)和 local context (即,当前 session)的信息,并且还结合了相对位置信息,从而获得一致的更好的性能。

27.2.2 Impact of Global Feature Encoder (RQ2)

  1. 我们接下来对三个数据集进行实验,从而评估 global-level feature encodersession-level feature encoder 的有效性。具体而言,我们设计了四种对比的模型:

    • GCE-GNN w/o global:没有 global-level feature encoderGCE-GNN,它只有 local feature ,即 hv=hv(s)
    • GCE-GNN w/o session:没有 session-level feature encoderGCE-GNN,它只有 global feature ,即 hv=dropout(hv(g),k)
    • GCE-GNN-1-hop:具有 global-level feature encoderGNN,并且将 hop 数量设置为 1
    • GCE-GNN-2-hop:具有 global-level feature encoderGNN,并且将 hop 数量设置为 2

    下表展示了不同模型之间的比较。可以看到:

    • 很明显,使用 global-level feature encoder 之后,GCE-GNN 可以获得更好的性能。

    • GCE-GNN w/o global 相比,GCE-GNN with 1-hopGCE-GNN with 2-hop 能够探索来自其它 sessionitem-transition 信息,这有助于模型作出更准确的预测。

      此外,在 Diginetica 数据集上,GCE-GNN with 2-hop 要比 GCEGNN with 1-hop 表现更好,这表明:high-level 的探索可能从 global graph 中获得更有效的信息。

      另外,在 Tmall 数据集上,GCE-GNN with 1-hop 要比 GCEGNN with 2-hop 表现更好,这表明:high-level 的探索也可能会引入噪音。

27.2.3 Impact of Position Vector (RQ3)

  1. position embedding 用于驱使 GCE-GNN 学习每个部分在当前 session 中的贡献。尽管 SASRec 已经将 forward position embedding 注入模型来提高性能,但是我们认为 forward position embeddingsession-based 推荐任务的影响非常有限。为了验证这一点,并评估在 GCE-GNN 中提出的 reverse position embedding 的有效性,我们设计了一系列对比模型:

    • GCE-GNN-NP:使用 forward position embedding 代替 GCE-GNN 中的 reverse position embedding
    • GCE-GNN-SA:使用self attention 代替 GCE-GNN 中的 position-aware attention (这意味着不考虑 position 信息)。

    下表展示了不同模型的性能。可以看到:

    • 我们的带 reversed position embeddingattention network 比其它两个变体表现更好。
    • GCE-GNN-NP 在所有数据集上都表现不佳。这是因为模型无法捕获到每个 item 到被预测的 item 之间的距离,这会在训练多种多样长度的 session 时误导模型。
    • GCE-GNN-SADigineticaNowplaying 数据集上的表现优于 GCE-GNN-NP,这表明 session 中的last item 包含与推荐最相关的信息。但是,它在 Tmall 数据集上表现不佳,因为它对每个 item 的贡献缺乏全面的判断。
    • 与这两种变体相比,reversed position embedding 证明了它的有效性。这证实了 reversed position 信息可以更准确地暗示每个 item 的重要性。此外,通过注意力机制,我们过滤了当前 session 中的噪音,使得模型的表现更好。

27.2.4 Impact of Aggregation Operations (RQ4)

  1. 由于我们使用 local feature encoderglobal feature encoder,因此这里我们比较在 GCE-GNN 中使用不同的聚合操作(即,门控机制、最大池化、拼接机制)。

    • 对于门控机制,我们在 local feature representation h(l)global feature representation h(g) 之间使用线性差值:

      rv=σ(Wshv(s)+Wghv(g))hv=rvhv(g)+(1rv)hv(s)

      其中: σ()sigmoid 激活函数, 为逐元素乘积,而 rv 被学习从而平衡两个特征的重要性。

    • 对于最大池化,我们为每个特征取每个维度的最大值:

      hv=max(hv(g),hv(s))
    • 对于拼接操作,final representation 是向量 hv(g)hv(s) 之间的拼接:

      hv=M([hv(g)||hv(s)])

      其中:MRd×(2d) 为转换矩阵。

    下表展示了三个数据集上不同聚合操作的性能。可以看到:

    • DigineticaTmall 数据集的 Recall@20MRR@20 指标上,具有 sum 池化的 GCE-GNN 优于其它聚合操作。
    • max 池化在 DigineticaNowplaying 数据集的所有指标上都是表现最差的,但是它在 Tmall 数据集的 MRR@20 指标上优于其它两个聚合器。
    • 尽管使用了额外的参数,但是门控机制和拼接操作的性能也比 sum 池化更差,可能是因为参数过多导致了过拟合。

27.2.5 Impact of Dropout Setting (RQ5)

  1. 为了防止 GCE-GNN 过拟合,我们采用了 dropout 正则化技术,该技术已经被证明在包括 GNN 在内的各种神经网络架构中是有效的。dropout 的关键思想是:在训练期间以概率 p 随机丢弃神经元,同时使用所有神经元进行测试。

    下图展示了 dropout (作用在 hv(g),k 上)对 DigineticaTmall 数据集的影响。可以看到:

    • dropout ratio 较小时,模型在两个数据集上的表现都不好,因为模型很容易过拟合。
    • 当在 Diginetica 上设置 dropout ratio = 0.4、在 Tmall 上设置为 0.6 时,模型实现了最佳的性能。
    • 然而,当 dropout ratio 很大时,模型的性能开始恶化,因为模型很难通过有限的可用神经元从数据中学习。

二十八、LESSR[2020]

  1. 在许多在线服务中,用户的行为天然地是按时间排序的。为了预测用户未来的行为,next-item 推荐系统通过从用户的历史行为中挖掘序列模式sequential pattern来学习用户的偏好。session-based 推荐是 next-item 推荐的一个特例。与使用固定数量的 previous action 来预测 next action 的通用 next-item 推荐系统不同,session-based 推荐系统将 user action 分组到不相交的 session 中,并使用当前 session 中的 previous action 来进行推荐。这里,session 是在时间上非常接近的 item 的一个序列。

    session-based 推荐的思想来自于这样的一个观察:intra-session 的依赖关系对 next item 的影响,要比 inter-session 的依赖关系更大。具体而言,同一个 session 中的用户行为通常具有一个共同的目标(如,购买一些手机配件),而不同 session 中的用户行为的相关性较弱。用户可能在一个 session 中购买手机配件,但是在另一个 session 中购买与手机配件关系不大的商品,如衣服。因此,通用的 next-item 推荐系统可能会遇到组合不相关的 session、以及抽取不完整的 session 这两个问题。session-based 推荐系统不存在这些问题,因此它可以做出更准确的推荐,并部署在许多在线服务中。

    由于具有很高的实用价值,session-based 推荐引起了研究人员的高度重视,并在过去几年中开发了许多有效的方法。之前提出的大多数方法都是基于马尔科夫链或 RNN。最近,GNN 变得越来越流行,并在许多任务中实现了 state-of-the-art 的性能。也有一些工作尝试将 GNN 应用于 session-based 推荐。尽管这些 GNN-based 方法取得了令人振奋的结果,并为 session-based 推荐提供了一个新的和有前途的方向,但是我们观察到这些方法中存在两个信息丢失问题information loss problem

    • 现有的 GNN-based 方法中的第一个信息丢失问题称作有损lossysession encoding 问题。这是由于它们将 session 转换为 graph 的有损编码方案 lossy encoding scheme 。要使用 GNN 处理 session,需要首先将 session 转换为 graph 。在这些方法中,每个 session 都将被转换为一个有向图,边是 item 之间的转移 transition 。边可以加权或不加权。

      例如,session [v1,v2,v3,v3,v2,v2,v4] 被转换为如下图所示的 graph。但是,这种转换是有损操作,因为它不是一一映射。不同的 session [v1,v2,v2,v3,v3,v2,v4] 也被转换为相同的 graph,因此我们无法在给定 graph 的情况下重建原始 session 。尽管在特定数据集中,这两个 session 可能产生相同的 next item。但是也可能存在一个数据集,其中这两个 session 产生不同的 next item。在后一种情况下,这些 GNN 模型不可能为这两个 session 都作出正确的推荐。因此,这些模型的建模能力有限。

      本质上这两个 session 是不同的,而 GNN-based 会为这两个 session 作出相同的推荐,因为这两个 session 转换后的 graph 是相同的。

    • 第二个信息丢失问题称为无效的远程依赖捕获问题 ineffective long-range dependency capturing problem ,即,这些 GNN-based 方法无法有效地捕获所有远程依赖。在 GNN 模型的每一层中,节点携带的信息沿着边传播一个 step ,因此每一层只能捕获 1-hop 关系。通过堆叠多个层,GNN 模型可以捕获多达 L-hop 关系,其中 L 等于层数。由于过拟合 overfitting 和过度平滑 over-smoothing 问题,堆叠更多层不一定会提高性能,因此这些 GNN 模型的最佳层数通常不大于 3 。因此,模型只能捕获 3-hop 关系。

      然而,在实际应用中,session 长度很容易大于 3 。因此,很可能存在一些重要的、长度大于 3 的序列模式sequential pattern 。然而,由于网络结构的限制,这些 GNN-based 模型无法捕获此类信息。

    为了解决上述问题,论文 《Handling Information Loss of Graph Neural Networks for Session-based Recommendation》提出了一种新的 GNN 模型,称作 Lossless Edge-order preserving aggregation and Shortcut graph attention for Session-based Recommendation: LESSR 。下图说明了 LESSR 的工作流程:

    • 首先,将给定的 input session 转换为一个无损编码图(称作 edge-order preserving: EOPmultigraph),以及一个 shortcut graph

      EOP multigraph 可以解决 lossy session encoding 问题,shortcut graph 可以解决无效的远程依赖捕获问题。

    • 然后,这些 graphitem embedding 一起被传递给 multiple edge-order preserving aggregation: EOPA 层和 shortcut graph attention: SGAT 层,从而生成所有节点的 latent feature

      EOPA 层使用 EOP multigraph 来捕获局部上下文信息,SGAT 层使用 shortcut graph 有效地捕获远程依赖关系。

    • 然后,模型应用带注意力机制的 readout 函数从所有的 node embedding 中生成 graph-level embedding

    • 最后,模型将 graph-level embedding 与用户最近的兴趣相结合从而生成推荐。

    论文的贡献总结如下:

    • 论文首先确定了用于 session-based 推荐的 GNN-based 方法的两个信息丢失问题,包括有损的 session encoding 问题、以及无效的远程依赖捕获问题。
    • 为了解决有损的 session encoding 问题,论文提出了一种将 session 转换为有向 multigraph 的无损编码方案,以及一个使用 GRU 来聚合所传播的信息的 EOPA 层。
    • 为了解决无效的远程依赖捕获问题,作者提出了一个 SGAT 层,该层使用注意力机制沿着 shortcut connection 有效地传播信息。
    • 通过结合这两种解决方案,作者构建了一个 GNN 模型,该模型没有信息丢失问题并且在三个公共数据中优于现有的方法。
  2. 相关工作:

    • 受到邻域模型在传统推荐任务中流行的启发,其中在传统推荐任务中 user id 可用,早期的 session-based 推荐的研究工作大多基于最近邻nearest neighbor 。这些方法需要一个相似度函数来衡量 itemsession 之间的相似度。

      • 《The YouTube Video Recommendation System》 提出了一种方法,该方法根据 item 的共现模式co-occurrence pattern 来计算 item 相似度,并推荐最可能与当前 session 中的任何 item 共现的 item
      • 《Session-based Collaborative Filtering for Predicting the Next Song》 提出了一种模型,该模型首先将每个 session 转换为一个向量,然后测量 session 向量之间的余弦相似度。
      • 基于《Session-based Collaborative Filtering for Predicting the Next Song》 的工作,《Improving Music Recommendation in Session-based Collaborative Filtering by Using Temporal Context》 提出在计算余弦相似度之前使用聚类方法,将稀疏的 session 向量转换为稠密向量。

      虽然简单有效,但是 neighborhood-based 方法存在稀疏性问题,并且未考虑 sessionitem 的相对顺序。

    • 为了更好地捕获序列属性,人们采用了基于马尔科夫链的方法。

      • 最简单的基于马尔科夫链的方法使用训练集中的转移概率来启发式地计算转移矩阵transition matrix《An MDP-Based Recommender System》)。但是,该方法无法处理未观察到的转移模式。
      • 一种解决方案是 《Factorizing Personalized Markov Chains for Next-basket Recommendation》 中提出的 FPMC 方法,该方法使用张量分解技术来分解个性化的转移矩阵。
      • 另一种解决方案称作潜在马尔科夫 embedding《Playlist Prediction via Metric Embedding》),它将 item 嵌入到欧氏空间,并通过 embedding 的欧氏距离来估计 item 之间的转移概率。

      当考虑更多 previous items 时状态空间的规模很快就变得难以管理,因此大多数基于马尔科夫链的方法仅使用一阶转移来构建转移矩阵,这使得它们无法捕获更复杂的高阶序列模式。

    • 由于强大的序列建模能力,RNN 是对上述基于马尔科夫链方法的限制的自然解决方案。

      • GRU4Rec 是第一个 RNN-basedsession-based 推荐方法,它简单地堆叠了多个 GRU layer
      • 受计算机视觉和自然语言处理中注意力机制成功的启发,NARM 采用带注意力机制的混合编码器来建模用户的序列行为和主要意图。结果证明这是学习 session representation 的有效方法。
      • 遵从 NARM 工作,几乎所有后续的 RNN-based 方法都包含了注意力机制(LINetRepeatNetISLF)。
    • 卷积神经网络也是强大的序列建模工具。

      • 《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》 提出了一种基于 CNN 的方法(即,Caser),该方法将 item 序列嵌入到二维潜在矩阵中,并对矩阵进行水平卷积和垂直卷积从而抽取 sequence representation
      • 《A Simple Convolutional Generative Network for Next Item Recommendation》 提出使用空洞卷积层dilated convolutional layer来有效地增加感受野,而不依赖于有损的池化操作,从而使模型与 GRU4RecCaser 相比更能捕获远程依赖关系。
    • 在过去的几年里,GNN 越来越受欢迎,并在许多任务中取得了 state-of-the-art 的性能。有一些工作将 GNN 应用于 session-based 推荐。

      • SR-GNN 首先将 session 编码为无权有向图,其中边表示 session 中的 item 转移。然后使用gated GNN: GGNN 在节点之间沿着边的两个方向传播信息。
      • 基于 SR-GNN《Graph Contextualized Self-Attention Network for Session-based Recommendation》 提出了一种方法,该方法使用 GGNN 来提取局部上下文信息,并使用 self-attention network: SAN 来捕获远距离位置之间的全局依赖关系。
      • FGNNsession 转换为加权有向图,其中边的权重是 item 转移的计数。它使用一个适配的multi-layered graph attention network 来抽取 item 特征,并使用一个修改过的 Set2Set 池化算子来生成 session representation

      这些 GNN-based 方法为 session-based 推荐展示了一个新的和有前景的方向。然而,正如我们即将讨论的那样,这些方法在代表了 session 有损编码的图上操作,并且它们无法有效地捕获长期依赖关系。

28.1 模型

  1. GNN 是直接对 graph 数据进行操作的神经网络。它们用于学习诸如图分类、节点分类、链接预测等问题的任务。这里我们仅关注图分类问题,因为 session-based 推荐可以被表述为图分类问题。

  2. 给定图 G=(V,E) ,其中 V 为节点集合,E 为边集合。每个节点 viV 关联一个节点特征向量 xi ,该特征向量作为初始的 node representation 传递给 GNN 的第一层。大多数 GNN 可以从消息传递的角度来理解。在 GNN 的每一层中,node representation 通过沿着边来传递消息从而得到更新。该过程可以表述为:

    xi(l+1)=fupd(l)(xi(l),aggi(l))aggi(l)=fagg(l)({fmsg(l)(xi(l),xj(l)):(vj,vi)Ein(vi)})

    其中:

    • xi(l) 表示节点 vi 在第 l 层的 node representation

    • Ein(vi) 表示节点 vi 的入边 incoming edge 集合。

    • fmsg(l)() 为消息函数 message function,它计算要从相邻节点 vj 传播到目标节点 vi的消息。

    • fagg(l)() 为聚合函数 aggregation function ,它聚合传递给目标节点 vi 的所有信息。

    • fupd(l)() 为更新函数 update function,它根据原始的 node representation 和聚合后的信息来计算新的 node representation

      这里的消息函数、聚合函数、更新函数都与 layer-specific 的。如果层之间共享,那么这三个函数可以表示为:fmsg(),fagg(),fupd(),即移除了上标 (l)

    LGNN 的层数。经过 LGNNL 步消息传递之后,final node representation 捕获了 L-hop community 内的有关图结构和节点特征的信息。

    对于图分类任务,readout function fout() 用于通过聚合最后一层中所有节点的 representation 来生成 graph level representation hG

    hG=fout({xi(L):viV})
  3. session-based 推荐的目标是给定当前 session 的一个 item 序列(历史点击的 item ),预测用户最有可能点击的 next item

    正式地,令 I={v1,v2,,v|I|} 为所有 item 的集合。一个 session si=[si,1,si,2,,si,li] 是根据时间排序的 item 序列,其中 si,tItime step titemlisi 的长度。模型的目标是预测 next item si,li+1 。一个典型的 session-based 推荐系统会生成 next item 的一个概率分布,即 p(si,li+1si) 。具有top 概率的一批 item 将作为候选集合用于推荐。

    遵从之前的工作,我们在本文中不考虑额外的上下文信息,如 user IDitem 属性。item ID 被嵌入在 d 维空间中,并作为模型中的初始的 item feature 。这是 session-based 推荐的文献中的常见做法。

    然而,很容易调整我们的方法来考虑额外的上下文信息。例如:

    • user ID embedding 可以作为 graph-level 的属性,并且可以附加到每一层中的 item ID embedding
    • item 特征可以与 item ID emebdding 相结合,或者直接替换后者。

28.1.1 Session 到 Graph 的转换

  1. 要使用 GNN 处理 session,必须首先将 session 转换为图。这里我们首先介绍一种叫做 S2MG 的方法,该方法将 session 转换为 EOP multigraph 。然后我们介绍另一种叫做 S2SG 的方法,该方法将 session 转换为 shortcut graph
a. S2MG: Session to EOP Multigraph
  1. session-based 推荐的文献中,有两种常用的方法可以将 session 转换为图。

    • 第一种方法由 SR-GNN 提出,它将 session 转换为无权有向图 G=(V,E) ,其中节点集合 Vsession 中的 unique item 组成,边集合 E 包含所有的边 (u,v) 如果 u=si,t,v=si,t+1,1tli
    • 第二种方法由 FGNN 提出。与第一种方法不同,该方法转换后的图是加权的,其中边 (u,v) 的权重是转移 uv 在当前 session 中出现的频次。

    在接下来的内容中,我们称第一种方法为 Session-to-Graph: S2G,第二种方法为 Session-to-Weighted-Graph: S2WG

  2. 我们声称 S2GS2WG 都是有损的转换方法,因为在给定转换后的图的情况下,并不总是可以重建原始的 session 。为了证明这一点,我们只需要证明 S2WG 是有损的,因为它比 S2G 捕获更多的信息,即 item transition 的出现次数。因此,S2WG is lossy 意味着 S2G is lossy

    为了了解为什么 S2WG 是有损的,我们举一个反例如下。给定两个不同的 session

    s1=[v1,v2,v3,v3,v2,v2,v4]s2=[v1,v2,v2,v3,v3,v2,v4]

    S2WG 将这两个session 转换为相同的图,如下图 (a) 所示。注意,我们省略了边的权重,因为它们都是 1 。因此,给定下图 (a) 中的转换后的图,我们不清楚 s1s2 中的哪一个才是原始的 session

  3. 有损转换可能会出现问题,因为被忽略的信息对于确定 next item 可能很重要。我们应该让模型自动学习决定哪些信息可以被忽略,而不是使用有损转换方法 “盲目地” 作出决定。否则,该模型不够灵活,无法适应复杂的数据集,因为模型的建模能力受到有损转换方法的限制。

    为了解决这个问题,我们提出了一种叫做 session to EOP multigraph: S2MG 的方法,该方法将 session 转换为保留了边顺序的有向 multigraph

    • 对于原始 session 中的每个转移 uv ,我们创建一条边 (u,v) 。该图是一个 multigraph ,因为如果存在从 uv 的多个转移,我们将创建从 uv 的多条边。

    • 然后,对于每个节点 vEin(v) 中的边可以根据它们在 session 中出现的时间来排序。我们通过给 Ein(v) 中的每条边一个整数属性来记录顺序,该属性值指示该条边在 Ein(v) 中的所有边之间的相对顺序。

      首先出现在 Ein(v) 中的边,其属性值为 1 。接下来出现的边,其属性值为 2 。以此类推。

    例如,session s1=[v1,v2,v3,v3,v2,v2,v4] 被转换为上图 (b) 中的图,用 MGs1 表示。为了使得转换真正无损,我们还标记了 last item,即session s1 中的节点 v4 ,由虚线圆圈来表示。我们将这个结果图称作给定 sessionedge-order preserving: EOPmultigraph

  4. 现在,我们通过展示如何在给定一个 EOP multigraph (即,使用 S2MG 转换得到的图)的情况下重建原始的 session 来证明 S2MG 是一种从 sessiongraph 的无损转换方法。基本思想是:按照 itemsession 中出现的相反顺序来恢复 item

    我们以 MGs1 为例。 last item 是被标记的节点 v4

    • 由于我们知道 last item,并且我们知道 v4 的入边的顺序,我们可以确定 last edge(v2,v4)
    • 倒数第二个 item 就是 last edge 的源节点,即 v2
    • 然后我们可以迭代地执行该操作并确定倒数第三个 item,以此类推。

    通过这种方式,我们可以从图 MGs1 中恢复 session s1 。给定任何的 graph,可以应用相同的过程来重建原始的 session 。因此,S2MG 是一种从 session 到图的无损转换方法。

b. S2SG: Session to Shortcut Graph
  1. 为了处理现有的 GNN-basedsession-based 推荐模型中无效的远程依赖问题,我们提出了 shortcut graph attention: SGAT 层(见后面的内容描述)。SGAT layer 需要一个不同于上述 EOP multigraph 的输入图。这个输入图采用称作 session to shortcut graph: S2SG 的方法从 input session 中转换而来。

  2. 给定一个 session si ,我们创建一个图,其中节点是 si 中的 unique item 。对于每对有序的节点 pair (u,v) ,当且仅当存在一个 pair (si,t1,si,t2) 使得 si,t1=u,si,t2=v,t1<t2 的时候,我们创建从 uv 的一条边。该图被称作 shortcut graph,因为它连接了一对 item 而不经过中间的 item

    我们还在图中添加了 self-loop,以便稍后在 SGAT 层执行消息传递时,可以组合 update functionaggregate function ,这是 GAT 模型中的常见做法。

    采用了 self-loop 之后,更新函数和聚合函数可以用一个统一的函数来替代。

    因此,session s1=[v1,v2,v3,v3,v2,v2,v4]shortcut graph 如下图 (c) 所示。

  3. 在接下来的内容中,我们展示了 SGAT 层如何通过在 shortcut graph 上执行消息传递从而解决无效的远程依赖问题。

28.1.2 LESSR

  1. LESSR 的整体框架如下图所示。首先我们介绍 EOPA layer,然后我们介绍 SGAT layer,接下来我们描述如何堆叠这两种类型的层,然后我们展示如何获取 session embedding 。最后,我们给出了我们如何进行预测和训练。

a. EOPA layer
  1. 给定从 session 无损转换的 EOP multigraphGNN 仍然需要正确地处理图,以便可以将不同的 session 映射到不同的 representation 。这在现有的 GNN-basedsession-based 推荐模型中是不可能的,因为它们使用排列不变permutation-invariant的聚合函数,忽略了边的相对顺序。因此,这些模型仅适用于边之间的排序信息不重要的数据集,这意味着这些模型的建模能力存在限制。

    因为 EOP multigraph 中,每条边有一个整数属性值来保留边的相对顺序,那么将这个属性值作为聚合函数的特征(比如,position embedding ),是否就可以保留边之间的排序信息?

    为了填补这个 gap,我们提出了 edge-order preserving aggregation: EOPA 层,该层使用 GRU 来聚合从相邻节点传递的信息。具体而言,令 OEin(vi)=[(vj1,vi),(vj2,vi),,(vjdi,vi)] 为边集合 Ein(vi) 的有序列表,其中 di 为节点 videgreeOEin(vi) 可以使用 EOP multigraph 中边的整数属性从 Ein(vi) 来获得。来自邻居的聚合信息定义如下:

    aggi(l)=hdi(l)hk(l)=GRU(l)(fmsg(l)(xi(l),xjk(l)),hk1(l))

    其中:

    • {hk(l):0kdi}GRUhidden state 。初始的状态 h0(l) 可以为零向量。

    • fmsg(l)() 可以是计算从节点 vjk 传递到节点 vi 的消息的任意有效消息函数。

      消息函数的结果作为 GRU 的输入。

  2. GRU 聚合器是一种 RNN 聚合器。我们选择 GRU 而不是 LSTM,因为已经有工作表明:在 session-based 推荐任务中GRU 优于 LSTM 。尽管在现有工作中人们已经提出了 RNN 聚合器,如GraphSAGE 中提出了 LSTM 聚合器,但是应该注意到这些 RNN 聚合器的工作方式与我们的不同。

    具体而言,现有的 RNN 聚合器通过对这些边的随机排列执行聚合来故意忽略入边 incoming edge 的相对顺序,而我们的 GRU 聚合器以固定的顺序执行聚合。这是因为在 session-based 推荐设置中,边自然是按时间排序的。

    但是,我们要强调的是,GRU 聚合器并不是我们的主要贡献。我们的主要贡献是应用 GRU 聚合器来解决前面描述的信息丢失问题。

  3. 来自已有 GNN 模型的消息函数和更新函数可以与 GRU 聚合器一起使用,但是考虑到 GRU 强大的表达能力,我们简单地对消息函数和更新函数使用线性变换。因此,将所有内容放在一起,我们模型的 EOPA 层定义为:

    xi(l+1)=Wupd(l)(xi(l)||hdi(l))hk(l)=GRU(l)(Wmsg(l)xjk(l),hk1(l))

    其中:Wupd(l)Rd×(2d),Wmsg(l)Rd×d 为待学习的参数,|| 表示向量拼接。

    这里消息函数 fmsg(l)(xi(l),xjk(l))=Wmsg(l)xjk(l) ,更新函数 fupd(l)(xi(l),aggi(l))=Wupd(l)(xi(l)||hdi(l))

    至于最后一个节点的信息,将在后面描述的 readout 函数中使用,以便将不同的 session 映射到不同的 representation

b. SGAT layer
  1. 一般而言,每一层都传播一个 step 的信息,因此一层只能捕获节点之间的 1-hop 关系。为了捕获 multi-hop 关系,可以堆叠多个 GNN 层。不幸的是,这会引入过度平滑问题over-smooth problem,即,node representation 收敛到相同的值。由于过度平滑问题通常发生在层数大于 3 时,因此堆叠多个层并不是捕获 multi-hop 关系的好方法。

    此外,即使可以堆叠多个层,GNN 也只能捕获最多 k-hop 关系,其中 k 等于层数。但是,在电商网站等现实世界的 application 中,session 长度大于 k 是很常见的。因此,现有的 session-based 推荐的 GNN 模型无法有效地捕获 very long range 内的依赖关系。

    为了解决这个问题,我们提出了 shortcut graph attention: SGAT 层,它本质上是利用 S2SG 得到的 shortcut graph 中的边来进行快速的消息传播。

  2. 具体而言,SGAT 层使用以下注意力机制沿着 shortcut graph 中的边来传播信息:

    xi(l+1)=(vj,vi)Ein(vi)αi,j(l)Wval(l)xj(l)αi,j(l)=softmax(ei,j(l))=exp(ei,j(l))jexp(ei,j(l))ei,j(l)=p(l)σ(Wkey(l)xi(l)+Wqry(l)xj(l)+b(l))

    其中:

    • Ein(vi) 是节点 vishortcut graph 中的入边 incoming edge 集合。
    • p(l),b(l)Rd,Wkey(l),Wqry(l),Wval(l)Rd×d 为待学习的参数。
  3. shortcut graph 中的边直接将每个 item 连接到其所有后续 item,而无需经过中间的 item 。因此,shortcut graph中的边可以看做是 item 之间的 shortcut connection

    SGAT 层可以有效地捕获任意长度的长期依赖关系,因为它在一个 step 中沿着 item 之间的 shortcut connection 传播信息,而无需经过中间的 item 。它可以与现有的 GNN-based 方法中的原始层相结合,从而提高 GNN-based 方法捕获远程依赖关系的能力。

    如何与现有的 GNN-based 方法中的原始层相结合?可以参考本文中的 “堆叠多层” 部分。

c. 堆叠多层
  1. EOPA 层和 SGAT 层用于解决之前 GNN-basedsession-based 推荐方法的两个信息丢失问题。为了构建没有信息丢失问题的 GNN 模型,我们堆叠了许多 EOPA 层和 SGAT 层。我们没有将所有 EOPA 层放在所有 SGAT 层之后,也没有将所有的 SGAT 层放在 EOPA 层之后。我们将 EOPA 层与 SGAT 层交错,原因如下:

    • shortcut graph 是原始 session 的有损转换,因此不断堆叠多个 SGAT 层会引入有损 session encoding 问题。SGAT 层越多,问题就越严重,因为信息丢失量会累积。

      通过交错 EOPA 层和 SGAT 层,丢失的信息可以保留在后续的 EOPA 层中,SGAT 层可以仅专注于捕获远程依赖关系。

    • 交错两种层的另一个优点是:每种层都可以有效地利用另一种层捕获的特征。由于 EOPA 层更能捕获局部上下文信息,而 SGAT 层更能捕获全局依赖关系,将这两种层交错可以有效地结合两者的优点,提高模型学习更复杂依赖关系的能力。

  2. 为了进一步促进特征重用 feature reuse,我们引入 DenseNet 中提出的稠密连接。每层的输入由所有 previous layers 的输出特征组成。具体而言:

    • l 层的原始输入为:{xi(l1):viV}
    • 采用稠密连接之后,第 l 层的输入为:{xi(0)||xi(1)||||xi(l1):viV} ,它就是所有 previous layers 输出的拼接。

    结果表明:具有稠密连接的深度学习模型的参数效率更高,即,用更少的参数实现相同的性能,因为每个较高的层不仅可以使用它的前一层的抽象特征,还可以使用更低层的 low-level feature

d. 生成 Session Embedding
  1. 在所有层的消息传递完成之后,我们得到所有节点的 final representation。为了将当前 session 表示为 embedding 向量,我们应用了SR-GNN 中提出的 readout 函数,该函数通过注意力机制聚合 node representation 来计算 graph-level representation

  2. xlast(L)sessionlast itemfinal node representationgraph-level representation hG 定义如下:

    hG=viVβixi(L)βi=softmax(ϵi)=exp(ϵi)jexp(ϵj)ϵi=qσ(W1xi(L)+W2xlast(L)+r)

    其中:q,rRd,W1,W2Rd×d 为待学习的参数。

    V 为当前 session 转换后的图的节点集合,它的规模远远小于全量 item 集合 I ,即 VI

  3. graph-level representation 捕获当前 session 的全局偏好,记做 sg=hG 。由于之前的研究表明:显式考虑用户最近的兴趣也很重要,因此我们定义了一个局部偏好向量local preference vector ,记做 sl=xlast(L)

    然后,我们将 session embedding 计算为全局偏好和局部偏好的线性变换:

    sh=Wh(sg||sl)

    其中:WhRd×2d 为一个待学习的参数。

e. 预测和训练
  1. 在获得 session embedding 之后,我们可以使用它来计算 next item 的概率分布从而进行推荐。

    对于每个 item viI ,我们首先使用其 embedding vi 以及 session embedding 来计算一个分数:

    zi=shvi

    实际上 vi 就是节点特征向量 xi

    然后,next itemitem vi 的预测概率为:

    y^i=exp(zi)vjIexp(zj)

    对于 top-K 推荐,我们可以仅推荐概率最高的 Kietm

  2. ynext item 的真实概率分布,它是一个 one-hot 向量。损失函数被定义为预测分布和真实分布的交叉熵:

    L(y,y^)=i(yilogy^i+(1yi)log(1y^i))

    然后,所有参数以及 item embedding 都被随机初始化,并通过端到端的反向传播来联合学习。

28.2 实验

  1. 数据集:

    • Diginetica 数据集:来自 CIKM Cup 2016 。我们使用它的交易数据来进行 session-based 推荐。遵从之前的工作(NARM, STAMP, RepeatNet, SR-GNN),我们使用最近一周的 session 作为测试集。
    • Gowalla 数据集:是一个广泛用于 point-of-interest: POI 推荐的 check-in 数据集。遵从之前的工作(《Streaming Session-based Recommendation》,Caser),我们保留了 top 30000 个最受欢迎的 location ,并通过 1 天的时间间隔来拆分用户的 check-in 记录从而将这些记录分组到不相交的 session 中。最近的 20%session 用作测试集。
    • Last.fm 数据集:是一个广泛用于许多推荐任务的数据集。我们将该数据集用于音乐艺术家推荐。遵从之前的工作(《Streaming Session-based Recommendation》, RepeatNet),我们保留了 top 40000 名最受欢迎的艺术家,并将拆分间隔设置为 8 小时。与 Gowalla 类似,最近的 20%session 用作测试集。

    遵从之前的工作(NARM, STAMP, FGNN, RepeatNet, SR-GNN),我们首先过滤了短的 session 和低频的 item,然后应用了NARM, STAMP, SR-GNN 中描述的数据增强技术。预处理后数据集的一些统计数据如下表所示:

  2. baseline 方法:

    • Item-KNN:一种邻域方法,它推荐与当前 session 中的 previous items 相似的 item,其中两个 item 之间的相似度由它们的 session 余弦相似度所定义。
    • FPMC:一种用于 next-basket 推荐的基于马尔科夫链的方法。为了适配 session-based 推荐,我们将 next item 视为 next-basket
    • NARM:使用 RNN 来捕获用户的主要意图和序列行为。
    • NextItNet:一种用于 next-item 推荐的 CNN-based 方法。它使用空洞卷积来增加感受野,而且不使用有损的池化操作。
    • SR-GNN:将 session 转换为有向无权图,并通过 GNN 来沿边的两个方向传播信息从而提取 item 特征。
    • FGNN:将 session 转换为有向加权图,并使用适配的 GAT 来学习 item representation
    • GC-SAN:首先使用 GGNN 来抽取局部上下文信息,然后使用 self-attention network: SAN 来捕获全局依赖关系。
  3. 配置:遵从 STAMPCaser 之后,对于每种方法,我们应用网格搜索并使用训练集的最后 20% 作为验证集从而找到最佳超参数。超参数的范围是:

    • embedding 维度 d 的范围 {16,32,64,96,128}
    • 学习率 η 的范围 {104,103,,101}
    • 对于 GNN-based 方法,我们也搜索层数 L ,其范围是 {1,2,3,4,5}

    我们使用 Adam 优化器来训练模型,batch size 设置为 512 。我们报告每个模型在其最佳超参数配置下的结果。

  4. 评估指标:Hit Rate: HR@20Mean Reciprocal Rank: MRR@20

  5. 所有方法的实验结果如下表所示,可以看到:

    • 包括 Item-KNNFPMC 在内的传统方法的性能没有竞争力。这些方法仅基于 item 的相似性、或者仅基于 item 转移进行推荐,而不考虑其它重要的序列信息,如,当前 sessionprevious items 之间的相对次序。

    • 所有基于神经网络的模型都大大优于传统方法,证明了深度学习技术在 session-based 推荐中的有效性。基于神经网络的模型能够捕获复杂的序列模式从而进行推荐。

      然而,它们的序列建模能力并非同样地强大。

      • CNN-based 的方法 NextItNet 的性能低于其它 RNN-basedGNN-based 方法。一个可能的原因是:CNN 仅擅长捕获连续的序列模式,而不擅长捕获长期依赖。
      • NARM 取得了具有竞争力的性能,因为它使用 RNN 来捕获序列行为以及使用注意力机制来捕获全局偏好。
    • GNN-based 方法通常优于其它方法,这表明 GNNsession-based 推荐提供了一个有前途的方法。

      • 虽然 FGNN 使用的转换方法 conversion methodSR-GNN 使用的方法捕获更多的信息,但是 FGNN 的性能并不优于 SR-GNN,这表明选择强大的消息传递方案的重要性。

      • GC-SAN 优于 SR-GNN,因为它使用 SAN 来捕获远距离 item 之间的全局依赖关系,展示出显式考虑长期依赖关系的有效性。

      • LESSR 使用强大的 EOPA 来抽取局部上下文,并使用 SGAT 来捕获任意长度的远程依赖关系,因此它可以显著优于所有的 baseline 方法,证明了所提出方法的效果。

        在三个数据集中,LESSRLast.fm 数据集上获得了最大的性能提升,因为这个数据集的平均长度最大,所以 LESSR 从保留边次序edge order 和捕获长期依赖关系中获益最多。

  6. 消融研究:

    • EOPA Layer 的有效性:为了评估 EOPA 层的有效性,我们将它与来自其它 GNN-based 方法的 message passing: MP 层进行比较,包括:来自 SR-GNNGGNN、来自 FGNNWGAT、来自 GC-SANSAN

      我们使用前述描述的相同的 readout 函数。embedding size 设置为 96,因为大多数模型在这个 embedding size 下实现了最佳性能。

      • 对于 GGNNWGAT,层数设置为 1 ,并与具有一个 EOPA 层的模型进行比较。
      • 为了展示 EOPA 的重要性,我们还将 EOPA 层与其修改后的变体进行了比较,该变体对入边 incoming edge 的随机排列执行聚合。换句话讲,修改后的 EOPA 层忽略了 EOP multigraph 中边的顺序属性。我们用变体 EOPA(rand) 来表示。
      • 对于 SAN,由于它是为与 GGNN 一起工作而设计的,因此我们比较了由 GGNNSAN 组成的模型,以及由 GGNNEOPA 组成的模型。

      结果如下表所示。每个模型都由其包含的 MP layer 的名称来表示。可以看到:

      • EOPA 始终优于所有其它类型的 MP layer,证明了 EOPA 的有效性。
      • 其它类型的 MP layer 表现更差,因为它们使用有损编码方案将 session 转换为图,并且它们的聚合方案不考虑边的相对顺序。
      • 注意,尽管 EOPAEOPA(rand) 使用相同的编码方案,即 S2MG,但是 EOPA 优于 EOPA(rand),因为 EOPA(rand) 在执行聚合时会随机排列入边 incoming edge 。因此,仅保留边顺序的转换方案是不够的。聚合方案还需要保留边顺序。

    • SGAT Layer 的有效性:为了展示 SGAT 的有效性,我们将每个现有的 GNN-based 方法的最后一个 MP layer 替换为 SGAT layer,并检查是否替换后是否提高了性能。

      • 由于 SR-GNNFGNN 只有一种 MP layer,因此将层数设置为 2,以便修改后的模型有一个原始 MP layer、有一个是 SGAT layer
      • 对于 GC-SAN,层数设为 3,因为它有两种 MP layer
      • 对于 LESSR,我们比较了一个具有两层 EOPA layer 的模型,以及一个具有一层 EOPA layer 和一层 SGAT layer 的模型。

      emebdding size 设为 96。由于篇幅有限,我们仅报告了 Diginetica 数据集上的 HR@20 的性能,因为它更常用于 session-based 的推荐。结果如下表所示。可以看到:替换有助于提高模型性能。这是因为原始层仅擅长捕获局部上下文信息,而不是复杂的远程依赖关系。通过 SGAT layer 替换原始层,模型捕获远程依赖关系的能力得到提升。

      GC-SAN 中的 SAN 层也能够捕获远程节点之间的全局依赖关系。但是,它们在每对节点之间传播信息,这完全丢弃了原始 session中的连接信息。相反,我们的 SGAT 层仅当 u 出现在 v 之前时,才会将信息从 u 传播到 v ,这保留了一些连接信息。因此,当 SAN layer 替换为我们的 SGAT layer 时,模型的性能提升是可以理解的。

    • EOPA 层和 SGAT 层的顺序:为了展示层顺序的优势,我们比较了四种模型,包括:EESS, SSEE, ESES, SESE。每个模型包含两个 EOPA layer 和两个 SGAT layer ,其中 E 代表 EOPA layerS 代表 SGAT layer ,字符的顺序代表层之间的顺序。例如,EESS 有两个 EOPA layer,后面跟着两个 SGAT layer

      embedding size 设置为 96 ,并使用残差连接。下表展示了实验结果。可以看到:

      • SSEE 表现最差,因为它不能利用任何一种层的优点。
      • SESEEESS 具有相似的性能,这表明交错两种层、或者将 EOPA 层放在 SGAT 层之前的好处。
      • ESES 优于所有其它模型,证明该顺序是利用这两种层的优势的最有效方式。

  7. 超参数调优:这里我们研究 embedding size 和层数如何影响所提出方法的性能。由于篇幅有限,这里我们仅给出 HR@20 的结果,如下图所示。可以看到:

    • 增加 embedding size 或层数并不总是会带来更好的性能。

      • 对于较小的数据集 Diginetica,最佳的 embedding size32。当 embedding size 超过该最佳值时,性能会迅速下降,因为模型过拟合。
      • 对于另外两个较大的数据集,增加 embedding size 通常会提高性能,因为较大的 embedding size 会增加模型的学习能力。
    • 如果 embedding size 小于最优值,那么随着层数的增加,模型性能先提高后下降。这是因为随着层数变大,模型的学习能力会增加。但是过多的层数也无济于事,因为会出现过度平滑的问题,即使模型没有过拟合。

      因此,堆叠更多的层并不是捕获远程依赖的有效方法,而采用替代方法(如 SGAT layer)来提高模型捕获远程依赖的能力是有意义的。

二十九、HyperRec[2020]

  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: HGCNHyperRec 能够聚合具有直接或高阶连接的相关 item ,从而在每个时间段生成 dynamic embedding

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

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

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

    • 随着时间和用户发生变化,来自 HGCNembedding 将被馈入一个 fusion layer 来生成同时包含了 dynamic item embedding 和短期用户意图short-term user intentfinal 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 推荐方面优于 state-of-the-art 模型。

  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 influencegraph 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 推荐的任务。

29.1 模型

29.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

29.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 matrix Htn 相关联。在时间段 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

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

29.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

29.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 (负样本)。

29.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 带来巨大的提升,因为序列中从右到左的模式不一定能够提供预测用户动态偏好的信息。
    • the state-of-the-art 相比,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 在捕获长期用户模式并同时考虑短期相关性方面具有优势。

三十、DHCN[2021]

  1. session-based recommendation: SBR 是一种新兴的推荐范式,其中无法获得长期的 user profile。一般而言,一个 session 是一个在购物事件shopping event 中包含了很多购买的 item 的交易 transactionsession-based 推荐专注于通过利用实时的用户行为来预测 next-item

    session-based 推荐领域的大多数研究工作都将 session 视为有序的序列,其中 RNN-based 方法和 GNN-based 方法已经展示出强大的性能。

    • RNN-based 方法中,成功的关键是将 session-based 数据建模为单向序列,因为数据通常是在短时间内生成的,并且可能具有时间依赖性。然而,这个假设也可能会限制住这些 RNN-based 模型,因为它考虑不全面。

      实际上,与严格顺序的方式生成的语言序列不同,在用户行为序列中可能没有如此严格的时间顺序。例如,在 Spotify 上,用户可以选择随机播放专辑或按顺序播放,这会生成两个不同的收听记录。但是,这两种播放模式都对应同一组歌曲。换句话讲,在这种情况下打乱两个 item 的顺序并不会导致用户偏好的扭曲。相反,严格且独立地建模 item 的相对顺序可能会使得推荐模型容易过拟合。

    • 最近,GNN 已被证明在 session-based 推荐领域是有效的。与 RNN-based 方法不同,GNN-based 方法将 session-based 数据建模为有向子图,将 item transition 建模为 pairwise relation ,这稍微放松了连续 item 之间的时间依赖性假设。

      然而,与 RNN-based 方法相比,现有的 GNN-based 方法仅展示出微不足道的提升。潜在的原因是它们忽略了 session-based 数据中复杂的 item correlation 。在实际场景中,一个 item 转移往往是由先前很多 item clicks 的联合效果 joint effect 来触发的,并且 item 之间存在 many-to-many 的高阶关系。显然,简单的图无法描述这种类似集合set-like 的关系。

    为了克服这些问题,论文 《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》 提出了一种基于超图 hypergraph 的新的 session-based 推荐方法来建模 sessionitem 之间的高阶关系。从概念上讲,超图由节点集合和超边 hyperedge 集合组成,其中每条超边可以连接任意数量的节点并用于编码高阶的数据相关性。

    作者还假设 session 中的 item 是时间相关temporally correlated的,但是不是严格顺序依赖的。超边的特性完全符合作者的假设,因为超边是 set-like 的,它强调所涉及元素的一致性 coherence 而不是相对顺序。因此,超边为我们提供了捕获 session 中复杂交互的灵活性和能力。

    从技术上讲:

    • 首先,论文将每个 session 建模为一个超边,其中所有 item 相互链接。不同的超边通过共享的 item 相互链接从而构成了超图,其中超图包含 item-level 的高阶相关性。
    • 然后,论文通过将每条超边建模为一个节点从而在超图的基础上构建一个线性图 line graph ,并且聚焦于超边之间的连通性,其中这种连通性刻画了 session-level 的关系。
    • 之后,论文开发了双通道超图卷积网络 Dual channel Hypergraph Convolutional Network: DHCN 从而分别从两个 graph 中捕获复杂的 item 相关性、以及 cross-session 的信息。

    下图说明了所提出方法的超图构造和 pipeline

    通过在两个通道中堆叠多个层,论文可以借助超图卷积的优势来生成高质量的推荐结果。然而,由于每条超边仅包含有限数量的 item,固有的数据稀疏性问题可能会限制超图建模带来的好处。为了解决这个问题,论文创新性地将自监督集成到模型中,从而增强超图建模。

    直观而言,DHCN 的两个通道可以看做是描述 sessionintra-informationinter-information 的两个不同视图,而它们中的每一个都对对方的信息知之甚少。利用自监督学习最大化通过两个通道学到的 session representation 之间的互信息,这两个通道可以相互获取新的信息从而提高各自在 item/session 特征抽取中的性能。然后,论文将推荐任务和自监督任务统一在一个 primary & auxiliary learning 框架下。通过联合优化这两个任务,推荐任务的性能获得了不错的收益。

    总而言之,这项工作的主要贡献总结如下:

    • 作者为 session-based 推荐提出了一种新颖的 DHCN ,该模型可以通过超图建模来捕获 item 之间的 beyond pairwise relation 、以及 cross-session information
    • 作者创新地将自监督任务集成到模型训练中,从而增强超图建模并改进推荐任务。
    • 大量实验表明,作者提出的模型比 state-of-the-art baseline 具有压倒性的优势,并且在 benchmark 数据集上实现了统计显著的改进。
  2. 相关工作:

    • session-based 推荐:session-based 推荐的早期探索主要集中在序列建模上,其中马尔科夫决策过程是该阶段的首选技术。深度学习的发展为利用序列数据提供了替代方案。RNNCNN 等深度学习模型随后被用于 session-based 推荐并取得了巨大成功,GRU4RecGRU4Rec++NARMSTAMP 是经典的 RNN-based 模型。

      GNN 最近在 session-based 推荐中的应用也展示出有前景的结果。与处理序列数据的 RNN-based 方法不同,GNN-based 方法在 session 导出的图上学习 item transition

      • SR-GNN 是一项开创性的工作,它使用 gated GNN 从而将 session 建模为图结构数据。
      • GC-SAN 采用自注意力机制通过图信息聚合来捕获 item 依赖关系。
      • FGNN 构建 session graph 来学习 item transition pattern ,并重新思考 session-based 推荐中 item 的序列模式。
      • GCE-GNN 对单个 session graphglobal session graph 进行图卷积,从而学习 session-level embeddingglobal-level embedding

      尽管这些研究表明 GNN-based 模型优于其它方法(包括 RNN-based 方法),但是它们都未能捕获到复杂的、高阶的 item 相关性。

    • 超图学习 Hypergraph Learning:超图为复杂的高阶关系提供了一种自然的方式。HGNNHyperGCN 是首先将图卷积应用于超图的。《Dynamic hypergraph neural networks》 提出了一个动态超图神经网络,并且 《Line Hypergraph Convolution Network: Applying Graph Convolution for Hypergraphs》 开发了线性超图卷积网络。

      还有一些研究将超图学习与推荐系统相结合。与我们最相关的工作是 HyperRec,它使用超图来建模短期用户偏好从而用于 next-item 推荐。然而,它没有利用超边之间的信息,并且也不是为 session-based 场景而设计的。此外,该模型的高复杂度使得它无法在实际场景中部署。目前,还没有研究将超图神经网络和 session-based 推荐相结合,我们是首个填补这一空白的人。

    • 自监督学习:自监督学习是一种新兴的机器学习范式,旨在从原始数据中学习 data representation

      由于自监督学习目前仍处于起步阶段,目前只有几项研究将其与推荐系统相结合。与我们工作最相关的是用于序列推荐的 S3-Rec,它使用 feature mask 来创建自监督信号。但是它不适用于 session-based 推荐,因为 session 数据非常稀疏,masking feature 不能产生强的自监督信号。

      目前,自监督学习在 hypergraph representation learningsession-based 推荐方面的潜力尚未研究。我们是第一个将自监督学习集成到 session-based 推荐和超图建模的场景中。

30.1 模型

  1. I={i1,i2,,iN}item 集合,其中 Nitem 数量。每个 session 表示为 s=[is,1,is,2,,is,ms] ,其中 mssession s 的长度, is,kI,1kms 表示 session s 中的一个交互 item

    我们将每个 item iI 嵌入到一个 embedding 空间,记做 ei 。令 xi(l)Rdlitem i 在深度神经网络中第 l 层的向量的 representationdl 为向量的维度。所有 item 在第 l 层的向量的 representation 记做 X(l)RN×dl

    每个 session s 由一个向量 s 来表达。session-based 推荐的任务是:对于任意给定的 session s 来预测 next item , 即 is,ms+1

  2. 超图:令 G=(V,E) 为一个超图,其中 V 为包含 Nunique 节点的节点集合,E 为包含 M 条超边的超边集合。每条超边 ϵE 包含两个或多个节点并被分配一个正的权重 Wϵ,ϵ ,并且所有权重构成一个对角矩阵 W=diag(Wϵ,ϵ)RM×M

    矩阵 W 刻画的是超边之间的连接,这里用对角矩阵表示任意两个超边之间没有连接。

    超图可以用关联矩阵 incidence matrix HRN×M 来表示,其中:如果超边 ϵE 包含节点 viV ,那么 Hi,ϵ=1 否则 Hi,ϵ=0

    对于每个节点和每个超边,它们的 degree 定义为:

    Di,i=ϵ=1MWϵ,ϵHi,ϵ,Bϵ,ϵ=i=1NHi,ϵ

    节点的度矩阵为 D=diag(Di,i)RN×N ,超边的度矩阵为 B=diag(Bϵ,ϵ)RM×M

  3. 超图的线性图 line graph:给定超图 G=(V,E) ,超图的线性图 L(G) 定义为这样的一个图:

    • 线性图 L(G) 中的每个节点对应于超图 G 中的一条超边。
    • 如果超图 G 中的两条超边共享至少一个节点,那么位于线性图 L(G) 中对应于这两条超边的节点是相连的。

    具体而言,L(G)=(VL,EL) ,其中:

    VL={ve:eE},EL={(vep,veq):ep,eqE,|epeq|1}

    我们为线性图的每条边 (vep,veq) 赋予一个权重 Wp,q=|epeq||epeq|

30.1.1 超图构建

  1. 为了在 session-based 推荐中捕获超越 pairwise 的关系,我们采用超图 G=(V,E) 将每个 session 表示为超边。具体而言,我们将每个超边表示为 [is,1,is,2,,is,ms]E ,每个 item is,kV

    超图构建前后,数据结构的变化如下图所示。

    • 原始的 session 数据组织为线性序列,其中两个 item is,k1,is,k 被连接起来当且仅当用户在交互了 is,k1 之后紧接着交互 is,k
    • session 数据转换为超图之后,session 中的任意两个 item 都将被连接起来。

    需要注意的是,我们将 session 序列转换为无向图,这符合我们的直觉,即 session 中的 item 仅仅是时间相关temporally related的而不是顺序依赖sequentially dependent 的。通过这种方式,我们具体化了 many-to-many 的高阶关系。

  2. 此外,我们进一步导出了超图的线性图。每个 session 被建模为一个节点,并且不同的 session 通过共享 item 来连接。与描述 item-level 高阶关系的超图相比,线性图描述了 session-level 关系,也称作 cross-session 信息。

30.1.2 双通道超图卷积网络

  1. 在超图构建之后,我们开发了一个双通道超图卷积网络 Dual channel Hypergraph Convolutional Network: DHCN,从而捕获 item-level 高阶关系和 session-level 关系。网络中的每个通道都负责从一个图/超图中抽取有用信息,从而通过图/超图卷积来改善 session-based 推荐。
a. 超图通道和卷积
  1. 超图通道对超图进行编码。由于有两个通道,直接将完整的 basic item embedding X(0)RN×d 同时馈入两个通道是不明智的。为了控制流向每个通道的 embedding 的幅度,我们使用带 self-gating unit: SGUpre-filter,它的定义为:

    Xc(0)=fc,gate(X(0))=X(0)σ(X(0)Wc,g+bc,g)

    其中:

    • Wc,gRd×d,bc,gRd 为待学习的 gating 参数,c{h,a} 代表通道。
    • 为逐元素乘积,σ()sigmoid 函数。

    self-gating 机制通过在各维度上重新加权从而以 feature-wise 粒度来调节 basic item embedding 。然后我们获得特定于超图通道的 item embedding Xh(0) 以及特定于线性图通道的 item embedding Xa(0)

    为什么直接将完整的 basic item embedding X(0) 同时馈入两个通道是不明智的?作者并未给出理由。个人猜测的原因是:希望两个通道各司其职,从而得到更好的效果。但是,这里并没有监督信息使得两个通道的能力尽可能不同(因为如果两个通道的能力尽可能相同,那么只需要一个通道就够了)。

  2. 在超图上定义卷积操作的主要挑战是如何传播 item embedding 。参考 《Hypergraph neural networks》 中提出的谱超图卷积spectral hypergraph convolution,我们将超图卷积定义为:

    xi(l+1)=j=1Nϵ=1MHi,ϵHj,ϵWϵ,ϵxj(l)P(l)

    其中:P(l)Rd×d 为两个卷积层之间的可学习的参数矩阵。

    上式的括号内可以重新组织为:ϵ=1MHi,ϵWϵ,ϵj=1N(Hj,ϵxj(l)P(l))。 其中:

    • 内层:对于每条超边 ϵ,聚合它包含的所有节点representation 。其中权重为 Hj,ϵ (这里设定为 0/1 的二元值),并且节点 representation 经过 P(l) 的线性投影。
    • 外层:聚合节点 i 所属的所有超边,其中权重为 Hi,ϵ×Wϵ,ϵ 。由于本文中 Wϵ,ϵ 设置为 1,因此权重等于 Hi,ϵ (为 0/1 二元值)。

    根据 《Simplifying graph convolutional networks》 的建议,我们不使用非线性激活函数。对于 Wϵ,ϵ ,我们为每条超边分配相同的权重 1 。因此,上述等式的行归一化row normalization形式的矩阵方程为:

    Xh(l+1)=D1HWB1HXh(l)P(l)

    超图卷积可以看做是对超图结构执行 node-hyperedge-node 特征变换的两阶段 refinement

    • 乘法操作 HXh(l) 定义了从节点到超边的信息聚合。
    • 而在前者的基础上在左乘 H 可以视为聚合从超边到节点的信息。W 用于对超边加权,而 DB 用于归一化。
  3. 在将 Xh(0) 通过了 L 个超图卷积层之后,我们将每一层获得的 item embedding 取平均,从而获得 final item embedding

    Xh=1L+1l=0LXh(l)

    这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者 attention 机制)。

    可以通过聚合该 sessionitemrepresentation 来表达 session embedding 。我们遵循 SR-GNN 中使用的策略来 refine session s=[is,1,is,2,,is,ms]embedding

    αt=fσ(W1xms+W2xt+c)s~g=t=1msαtxt,sh=W3[xmt;s~g]

    其中:

    • xmssession slast item is,msembedding ,它表示当前用户意图。
    • xtsession s 中第 titemembedding
    • s~g 为用户在整个 session 中的 general interest embedding,它通过 soft-attention 机制聚合 item embedding 来表示,其中 item 具有不同的重要性。
    • fRd,W1Rd×d,W2Rd×d 是用于学习 item 权重 αt 的注意力机制的参数。
    • hybrid session embedding sh 拼接了 xmts~g 从而表示从超图结构推断出的完整的用户偏好。
    • W3Rd×(2d)hybrid session embedding 转换到 Rd 空间。
  4. 注意,根据我们在前面描述的动机,我们放弃了其它 session-based 推荐技术中使用的序列建模技术,如 GRU 单元和 self-attention 机制。当前意图是我们使用的唯一的时间因素 temporal factor,因此我们的模型非常高效且轻量级。

b. 线性图通道和卷积
  1. 线性图通道对超图的线性图进行编码。下图展示了我们如何将超图转换为它的线性图。线性图可以看做是一个简单的图,它包含 cross-session 信息并描述了超边的连通性。

  2. 在卷积操作之前,类似地,我们通过将 X(0) 传入 SGU 从而获得特定于线性图通道的 item embedding Xa(0) 。由于线性图通道中不涉及任何 item,我们首先通过查找属于每个 sessionitem 并取这些 item embedding 的均值(从 Xa(0) 中取得),从而来初始化特定于线性图通道的 session embedding Sa(0)

    L(G) 的关联矩阵 incidence matrix 定义为 ARM×M ,其中 M 为线性图中的节点数量,并且根据前面的定义有: Ap,q=Wp,q 。令 A^=A+I ,其中 I 为单位矩阵。令 D^RM×M 为度矩阵,它是对角矩阵并且 D^p,p=q=1MA^p,q 。那么线性图的卷积定义为:

    Sa(l+1)=D^1A^Sa(l)Q(l)

    其中:Q(l)Rd×d 为待学习的权重矩阵。

    在每个卷积层中,session 都从它的邻居那里收集信息。通过这种方式,学到的 Sa(l+1) 可以捕获 cross-session 信息。同样地,我们将 Sa(0) 通过 L 个图卷积层,然后将每一层获得的 session embedding 取平均,从而获得 final session embedding

    Sa=1L+1l=0LSa(l)

    这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者 attention 机制)。

30.1.3 模型优化和推荐生成

  1. 给定一个 session s ,我们对所有候选 item iI 计算推荐分 z^i

    z^i=(sh+sa)xi

    其中 xi 来自于 X(0) 。拼接所有的 z^i ,则我们得到推荐分的分布(未归一化的):z^=(z^1,,z^N)RN

    这里假设每个通道都是同样重要,是否可以区分不同通道的重要性?

    然后,我们使用一个 softmax 函数来计算每个 item 成为 sessionnext item 的概率:

    y^=softmax(z^)

    我们的学习目标为交叉熵损失函数(单个样本):

    Lr=i=1N[yilog(y^i)+(1yi)log(1y^i)]

    其中:yground-truthone-hot 编码向量,yiy 的第 i 个分量。

    为简单起见,我们忽略了 L2 正则化项。我们通过 Adam 优化器来优化该损失函数。

30.1.4 增强 DHCN 的自监督学习

  1. 超图建模使得我们的模型能够实现显著的性能。然而,我们认为 session 数据的稀疏性可能会阻碍超图建模,这将导致推荐性能次优suboptimal。受到简单图上自监督学习成功实践的启发,我们创新地将自监督学习集成到网络中,从而增强超图建模。

  2. 自监督学习通过以下两个步骤进行:

    • 创建自监督信号:回想以下,在 DHCN 中,我们通过两个通道学习两组特定于通道的 session embedding。由于每个通道都编码一个图/超图,因此两组 embedding 对彼此知之甚少但是可以相辅相成。简单而言,这两组 embedding 可以作为彼此的 ground truth 而用于自监督学习,并且这种 one-to-one 映射被视为 label augmentation 。如果两个 session embedding 都表示同一个 session 的不同视图,那么我们将这一对标记为 ground-truth,否则标记为 negative

    • 对比学习:我们将 DHCN 中的两个通道视为刻画 session 不同方面的两个视图。然后对比了通过两个视图学到的两组 session embedding 。我们采用 InfoNCE ,并使用来自 ground-truth 样本(positive)和 negative 样本之间的二元交叉熵作为学习目标:

      Ls=[logσ(fD(sh,sa))+logσ(1fD(s~h,sa))]

      其中:

      • s~h (或 s~a )是 negative 样本,它是通过对 Sh ( 或 Sa) 进行逐行和逐列随机混洗得到的。
      • fD(,):Rd×RdR 是一个判别器函数,它以两个向量作为输入,然后对它们之间的一致性进行评分。我们简单地将两个判别器实现为两个向量之间的内积。

      这个目标函数被解释为最大化在不同视图中学到的 session embedding 之间的互信息(《Deep Graph Infomax》)。通过这种方式, 它们可以从彼此获取信息,从而改善它们各自在 item/session 特征抽取中的性能。尤其是那些仅包含几个 itemsession 可以利用 cross-session 信息来改善它们的 embedding

  3. 最后,我们将推荐任务和自监督任务统一为一个 primary&auxiliary 学习框架,其中推荐任务是主任务、自监督任务是辅助任务。联合学习的目标函数为:

    L=Lr+βLs

    其中 β 平衡了自监督任务的重要性。

30.2 实验

  1. 数据集:YoochooseDiginetica

    对于这两个数据集,我们遵循 SR-GNNNARM 从而删除仅包含一个 itemsession 、以及删除出现次数少于 5 次的 item ,然后将数据集拆分为训练集和测试集。

    • 对于 Yoochoose 数据集,测试集由最近几天的 session 组成。
    • 对于 Diginetica 数据集,测试集由最近几周的 session 组成。

    然后我们通过序列拆分的方式来进行数据集增强,即对于 session s=[is,1,is,2,,is,ms] ,我们生成多个标记序列:

    ([is,1],is,2),([is,1,is,2],is,3),,([is,1,is,2,,is,ms1],is,ms)

    由于 Yoochoose 的训练集非常大,我们遵循 SR-GNNSTAMPNARM 仅利用整个训练序列中最近的 1/641/4 ,从而形成两个新的训练集,并将它们命名为 Yoochoose1/64Yoochoose1/4

    数据集的统计信息如下表所示。

  2. baseline 方法:

    • item-KNN:推荐与 session 中先前点击的 item 所相似的 item,其中相似度使用 session 向量之间的余弦相似度。

      session 向量:长度为总的 session 个数。如果 item 出现在第 isession 中,则该向量的第 i 个元素为 1

    • FPMC:是一种基于马尔科夫链的序列方法。

    • GRU4REC:利用 session-parallelmini-batch 训练过程,并采用 ranking-based 损失函数来建模用户行为序列。

    • NARM:一个 RNN-based 模型来建模用户序列行为。

    • STAMP:采用自注意力机制来增强 session-based 推荐。

    • SR-GNN:应用 gated graph convolutional layer 来学习 item transition

    • FGNN:将 session 中的 next item 推荐形式化为图分类问题。

    此外,我们评估了 DHCN 的另一个变体 S2-DHCN (其中 β=3),表示自监督版本。

    没有和 HyperRec 的对比。毕竟相关工作里已经提到了 HyperRec 。猜测原因是:HyperRec 是在不同数据集上评估的,因此作者这里没有把 HyperRec 拿来对比。

  3. 评估指标:Precision: P@KMean Reciprocal Rank: MRR@K

  4. 超参数配置:

    • 通用配置:embedding size = 100batch size = 100L2 正则化系数为 105
    • 对于 DHCN:采用两层架构,初始学习率为 0.001
    • 对于 baseline 模型:我们参考了他们在原始论文中报告的最佳参数配置,并在可用时直接报告他们的结果,因为我们使用相同的数据集和评估设置。
  5. 实验结果:整体性能如下表所示。我们没有像 NARM 一样报告 FPMC 的结果,因为在 Yoochoose1/4 数据集上运行 FPMC 的内存需求对于普通的深度学习计算平台而言太大了。

    可以看到:

    • GNNs-based 模型:SR-GNNFGNN 优于 RNN-based 模型。这些改进可以归因于 GNN 的巨大容量。但是,与 DHCN 带来的改进相比,这些改进是微不足道的。

    • DHCN 在所有数据集的所有 baseline 上都展示出压倒性的优势,尤其是在 Diginetica 数据集上。在分析了 Diginetica 的数据模式之后,我们发现许多 item 经常以 item-set 的形式在不同的 session 中共现,这是超图建模的理想选择。这可能是导致如此卓越结果的原因。

      SR-GNNFGNN 相比,我们的模型有两个优势:

      • 它使用超图来捕获超越 pairwise 的关系。通过将每个超边建模为团 clique(其中,团内的 item 之间完全相互连接) ,可以利用远距离 item 之间的关联。
      • 线性图考虑了 cross-session 信息。

      此外,需要注意的是,MRR 的改进比 Precision 的改进更为显著,这意味着 DHCN 不仅可以成功命中 groud-truth item,而且在 top-K 推荐列表中的排名也大大提升。

    • 虽然不如超图建模带来的效果那么可观,但是自监督学习带来的提升也还可以。具体而言,在两个平均 session 长度较短的数据集上,自监督学习发挥着更重要的作用,这与我们的假设一致:即 session 数据的稀疏性可能会阻碍超图建模的好处。同时,通过自监督学习来最大化DHCN 中两个视图之间的互信息可以解决这个问题。

  6. 消融研究:为了研究 DHCN 中每个模块的贡献,我们开发了 DHCN 的三个变体:

    • DHCN-H:仅使用超图通道。

      即:推荐分 z^i=shxi

    • DHCN-L:仅使用线性通道。

      即:推荐分 z^i=saxi

    • DHCN-NA:没有 soft attention 机制的版本。

      即:s~g=1ms×t=1msxt

    我们将它们在 Yoochoose1/64Diginetica 数据集上与完整的 DHCN 进行比较。

    从下图可以看到:

    • 每个组件都对最终性能有贡献。
    • 超图通道贡献最大。当仅使用超图通道时(使用注意力机制),在这两个数据集上的效果远高于其它的两个变体。
    • 相比之下,仅使用线性图通道会导致模型在这两个数据集上的性能大幅下降。这可以证明建模高阶 item 相关性的有效性,以及捕获 cross-session 信息以捕获 item-level 信息的必要性。
    • 此外,移除超图通道中的 soft attention 也导致模型这两个数据集上的性能大幅下降,这与我们在前面的假设保持一致,即,session 中的 item 是时间相关的。

    根据这个消融实验,我们可以得出结论:一个成功的 session-based 推荐模型应该同时考虑时间因素temporal factor和高阶的item 相关性。

    这里时间因素是通过 last click item 来表现的。

  7. 超参数研究:

    • 不同 session 长度的影响:遵从 STAMP,我们将 Yoochoose1/64Digineticasession 分为两个不同长度的组,分别命名为 ShortLongShort 包含长度小于或等于 5session,而 Long 包含长度大于 5session。我们选择切分点为 5,是因为它是所有 session 中最常见的长度。

      然后我们比较了 DHCN, NARM, STAMP, SR-GNNShort 组和 Long 组上的 P@20 性能,结果如下表所示。可以看到:在这两个数据集上,在大多数情况下,DHCN 在不同 session 长度的情况下稳定地优于所有其它 baseline 模型,尤其是在 Long 组。

    • 模型深度的影响:我们将 DHCN 的层数范围限制在 {1, 2, 3, 4} 以内,结果如下图所示。可以看到:DHCN 对于层数不是很敏感。层数为 2 时效果最好,但是层数大于 2 时由于过度平滑导致模型性能略有下降。

    • 自监督学习的影响:我们向 S2-DHCN 引入一个超参数 β 来控制自监督学习的重要性,其中 β{0.1,1,3,5,10,20,50} 。实验结果如下图所示。可以看到:

      • 当使用自监督任务时,推荐任务获得了不错的收益。
      • 小的 β 可以在两个数据集上同时提升 Prec@20MRR@20
      • 随着 β 的增加,MRR@20 开始下降,但是 Prec@20 仍然保持增加。目前,我们不知道为什么 Prec@20 没有性能下降,希望我们在未来的工作中解决这个问题。

三十一、TiSASRec[2020]

  1. 有两个重要的方向旨在挖掘用户的历史交互:时间推荐temporal recommendation 和序列推荐sequential recommendation

    时间推荐侧重于建模绝对时间戳从而捕获用户和 item 的时间动态 temporal dynamics 。例如,一个 item 的热门程度可能会在不同的时间段内发生变化,或者一个用户的平均评分可能会随着时间的推移而增加或减少。这些模型在探索数据集中的时间变化temporal change时很有用。它们不考虑序列模式sequential pattern,而是考虑依赖于时间的时间模式 temporal pattern

    大多数以前的序列推荐器通过交互时间戳对 item 进行排序,并聚焦于序列模式挖掘来预测 next item

    • 一种典型的解决方案是基于马尔科夫链的方法,其中 L 阶马尔科夫链根据 L 个先前的动作而作出推荐。基于马尔科夫链的方法已经成功应用于捕获短期 item transition 从而用于推荐。这些方法通过作出很强的简化假设并在高度稀疏场景下表现良好,但是在更复杂的场景中可能无法捕获到复杂的动态 intricate dynamics
    • RNN 也可用于序列推荐。虽然 RNN 模型对用户的偏好有很长的“记忆”,但是模型需要大量数据(尤其是稠密数据)才能超越更简单的 baseline
    • 为了解决马尔科夫链模型和 RNN-based 模型的缺点,受到 Transformer 的启发,SASRec 提出将自注意力机制应用于序列推荐问题。基于自注意力机制的模型显著优于 state-of-the-artMC/CNN/RNN based 序列推荐方法。

    一般而言,以前的序列推荐器会丢弃时间戳信息并且仅保留 item 的顺序。即,这些方法隐式地假设序列中的所有相邻 item 具有相同的时间间隔。影响后续的 item 的因素仅有前面 itemid 和位置。然而,直观而言,具有most recent 时间戳的 item 将对 next item 产生更大的影响。例如,两个用户具有相同的交互序列,其中一个用户在一天之内完成了这些交互而另一个用户在一个月之内完成了这些交互。因此,这两个用户的交互对于 next item 的影响应该是不同的,即使他们具有相同的交互序列。然而,先前的序列推荐技术将这两种情况视为相同,因为它们仅考虑 sequential position (而未考虑 sequential timestamp )。

    在论文 《Time Interval Aware Self-Attention for Sequential Recommendation》 中,作者认为应该将用户交互序列建模为具有不同时间间隔的序列。下图表明:交互序列具有不同的时间间隔,其中一些时间间隔可能很大。以前的工作忽略了这些时间间隔对被预测的 item 的影响。为了解决上述限制,受到 Self-Attention with Relative Position Representation 的启发,作者提出了一种 time-aware self-attention 机制,即 TiSASRec 模型。该模型不仅像 SASRec 一样考虑了 item 的绝对位置absolute position,还考虑了任意两个 item 之间的相对时间间隔。从论文的实验中可以观察到,论文提出的模型在稠密数据集和稀疏数据集上都优于 state-of-the-art 算法。

    最后,论文的贡献如下:

    • 作者提出将用户的交互历史视为具有不同时间间隔的序列,并将不同时间间隔建模为任意两个交互之间的关系relation
    • 作者将绝对位置编码absolute position encoding和相对时间间隔编码 relative time interval encoding 的优势相结合从而用于 self-attention ,并且设计了一种新颖的 time interval awareself-attention 机制来学习不同 item, absolute position, time interval 的权重从而预测 next item
    • 作者进行了彻底的实验来研究绝对位置和相对时间间隔以及不同组件对 TiSASRec 性能的影响,并表明 TiSASRec 在两个指标上优于 state-of-the-artbaseline
  2. 相关工作:

    • 序列推荐:序列推荐系统挖掘用户交互序列中的模式。

      • 一些方法捕获 item-item 转移矩阵来预测 next item 。例如:FPMC 通过矩阵分解和转移矩阵transition matrix来建模用户的长期偏好和动态转移 dynamic transition

        转移矩阵是一阶马尔科夫链,它仅考虑当前item 和前一个 item 之间的关系。Fossil 使用基于相似性的方法和高阶马尔科夫链,假设 next item 和前面几个 item 相关,而 《Translation-based Recommendation》 证明了基于高阶马尔科夫链的模型在稀疏数据集上具有强大的性能。

      • 人们也提出了 CNN-based 方法(如,Caser《3D Convolutional Networks for Session-based Recommendation with Content Feature》)从而将先前的若干个 item 视为 “图像”,然后通过 union-levelCNN 来挖掘 item 之间的转移。

      • MARank 通过结合残差网络和多阶注意力来统一 individual-levelunion-levelprevious item transitions

      • SHAN 通过两层注意力机制来建模用户的 previous several items 和长期历史,从而获得用户的短期偏好和长期偏好。

      • RNN-based 模型(如,《Latent Cross: Making Use of Context in Recurrent Recommender Systems》GRU4Rec《Neural Survival Recommender》《Context-Aware Sequential Recommendation》) 使用RNN 来建模整个用户序列。这些方法在稠密数据集上表现良好,但是在稀疏数据集上通常表现不佳。

    • 注意力机制:注意力机制已被证明在 image captioning 和机器翻译等任务上是有效的。本质上,注意力机制背后的思想是:output 依赖于 input 中相关的特定部分。这种机制可以计算 input 的权重并使得模型更易于解释。最近,人们将注意力机制纳入推荐系统(《Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention》《Attention-Based Transactional Context Embedding for Next-Item Recommendation》《Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks》)。

      Transformer 是一种纯粹基于注意力的 sequence-to-sequence 方法,并且在机器翻译任务上取得了 state-of-the-art 性能。Transformer 使用缩放的内积注意力,其定义为:

      Attention(Q,K,V)=softmax(QKd)V

      其中:Q,K,V 分别代表 query, key, value 。在 self-attention 中,这三个输入通常使用相同的object

      Transformer 的自注意力模块也被用于推荐系统(如,SASRec),并在序列推荐上取得了 state-of-the-art 的结果。由于自注意力模型不包含任何循环模块或卷积模块,因此它不知道前面所有 item 的位置。

      • 一种解决方案是向 input 添加 positional encoding ,其中 positional encoding 可以是确定性函数或者可学习的参数。
      • 另一种解决方案是使用 relative position representation 。该方法将两个 input 之间的相对位置建模为 pairwise relationship

      受到带有相对位置的 self-attention 的启发,我们结合 absolute positionrelative position 来设计 time-aware self-attention 从而建模 item 的位置和时间间隔。

      目前已有一些工作探索了时间间隔对序列推荐的影响,如 Time-LSTM 。但是作者这里尚未提及。

31.1 模型

  1. 我们的 TiSASRec 包含个性化的时间间隔处理 personalized time interval processing、一个 emebdding layer、几个 time-aware self-attention块 、以及一个 prediction layer 。我们嵌入 itemitem 的绝对位置、以及 item 之间的相对时间间隔。我们通过这些 emebdding 来计算注意力权重。如下图所示,即使先前的几个 item 相同,我们的模型也会在不同的时间间隔下提供不同的 predicted item

    为了学习模型参数,我们采用二元交叉熵作为损失函数。TiSASRec 的目标是捕获序列模式并探索时间间隔对序列推荐的影响,而这是一个尚未探索的领域。

    TiSASRec 的模型结构如下图所示。

    论文的核心就是在 SASRec 上增加了相对时间间隔 embedding

  2. U 为用户集合,Iitem 集合。在 time-aware 序列推荐的 setting 中,对于每个用户 uU ,我们已知用户 u 根据时间戳排序的 action 序列 S(u)=(S1(u),S2(u),,S|S(u)|(u)) ,其中 Si(u)I 。此外,我们还知道 S(u) 中每个 action 发生时间的时间序列 T(u)=(T1(u),T2(u),,T|S(u)|(u)) 。在训练过程中,在 time step t ,模型根据先前的 titem 以及 item ij 之间的时间间隔 ri,j(u) 来预测 next item

    我们模型的输入是 (S1(u),S2(u),,S|S(u)|1(u)) 以及任意两个 item 之间的时间间隔矩阵 R(u) ,我们期望的输出是每个 time stepnext item(S2(u),S3(u),,S|S(u)|(u))

    R(u)R(|S(u)|1)×(|S(u)|1){ri,j(u)}1i,j|S(u)|1组成。注意,这里并未考虑 time step |S(u)| 从而防止信息泄露,因为这是 next item 的信息。

    事实上也可以考虑 time step |S(u)| ,在预测期间它就是 current timestamp 作为时间上下文。

31.1.1 个性化时间间隔

  1. 我们将训练序列 (S1(u),S2(u),,S|S(u)|1(u)) 转换为固定长度的序列 s=(s1,s2,,sn) ,其中 n 为我们考虑的最大长度。

    • 如果训练序列长度 |S(u)|1 大于 n ,则我们仅考虑最近的 nitem
    • 如果训练序列长度 |S(u)|1 小于 n ,则我们在序列左侧添加 padding item 直到长度为 n

    类似地,我们对于时间序列 (T1(u),T2(u),,T|S(u)|1(u)) 也考虑固定长度的时间序列 t=(t1,t2,,tn) 。如果时间序列长度小于 n ,则我们在序列左侧填充第一个时间戳 T1(u) ;否则我们仅考虑最近的 n 个时间戳。

  2. 我们将交互序列中的时间间隔建模为两个 item 之间的关系。一些用户有更频繁的交互,而另一些用户则没那么频繁,我们仅关心用户序列中时间间隔的相对长度。因此,对于所有时间间隔,我们除以用户序列中最短的时间间隔(0 除外)来获得个性化的时间间隔。

    具体而言,给定用户 u 的固定长度时间序列 t=(t1,t2,,tn) ,两个 item ij 之间的时间间隔为 |titj| 。我们将用户的最小时间间隔定义为:

    rmin(u)=min1i,jn,ij(|titj|)

    缩放后的时间间隔 r~i,j(u)N 为:

    r~i,j(u)=|titj|rmin(u)

    其中 为向下取整函数。

    根据定义有: r~i,j(u)1

    因此,用户 u 的关系矩阵 relation matrix M(u)Rn×n 定义为:

    M(u)=[r~1,1(u)r~1,2(u)r~1,n(u)r~2,1(u)r~2,2(u)r~2,n(u)r~n,1(u)r~n,2(u)r~n,n(u)]

    为什么用个性化的时间间隔,而不使用绝对的时间间隔,例如 r~i,j(u)=|titj|1 hour ?作者这里并未给出原因。可以做实验验证绝对时间间隔的效果。

  3. 我们考虑的两个 item 之间的最大相对时间间隔被截断为 k 。我们假设:相对时间间隔超过了某个阈值之后是没有价值的。截断最大相对时间间隔还避免了稀疏关系编码 sparse relation encoding (即,裁剪后的关系矩阵大多数元素为零),并且使得模型能够泛化到训练期间 unseen 的时间间隔。因此,裁剪后的矩阵为:

    Mclipped(u)=clip(M(u))

    其中:矩阵的 clip() 操作应用到矩阵的每个元素,即,r~i,j(u)min(k,r~i,j(u))

31.1.2 Embedding Layer

  1. 我们为所有 item 创建一个 item embedding MIR|I|×d ,其中 dembedding 维度。对于 padding item,它的 embedding 固定为零向量。

    给定固定长度的序列 s=(s1,s2,,sn)embedding look-up 操作查找这 nitemembedding,将它们堆叠在一起从而得到一个矩阵 EIRn×d

    E(I)=[ms1ms2msn]

    其中 miMI 的第 i 行,代表 item iIembedding 向量。

  2. 遵从 《Self-Attention with Relative Position Representations》 ,我们使用两个不同的可学习的 positional embedding matrix ,即 MP,KRn×dMP,VRn×d ,它们分别用于 self-attention 机制中的 keyvalue

    给定固定长度的序列 s=(s1,s2,,sn) ,我们根据这 nitem 的位置检索得到 emebdding 矩阵 EP,KRn×dEP,VRn×d ,即:

    EP,K=[pK,1pK,2pK,n],EP,V=[pV,1pV,2pV,n]

    其中:

    • pK,iMP,K 的第 i 行,代表 position i 用于 keypositional embedding
    • pV,iMP,V 的第 i 行,代表 position i 用于 valuepositional embedding

    用两组 embedding 来表达 positional embedding 会增强模型的容量从而提高模型的表达能力,但是效果是否更好?这个可以通过实验来比较。

  3. 类似于 positional embedding,相对时间间隔 embedding matrixMR,KRk×dMR,VRk×d ,它们分别用于 self-attention 机制中的 keyvalue 。在检索裁剪后的关系矩阵 Mclipped(u) 之后,我们得到 embedding 张量 ER,KRn×n×dER,VRn×n×d ,即:

    ER,K=[rK,r~1,1rK,r~1,2rK,r~1,nrK,r~2,1rK,r~2,2rK,r~2,nrK,r~n,1rK,r~n,2rK,r~n,n],EV(R)=[rV,r~1,1rV,r~1,2rV,r~1,nrV,r~2,1rV,r~2,2rV,r~2,nrV,r~n,1rV,r~n,2rV,r~n,n]

    其中:

    • rK,iMR,K 的第 i 行,代表相对时间间隔 i 用于 keyembedding
    • rV,iMR,V 的第 i 行,代表相对时间间隔 i 用于 valueembedding

    这两个相对时间间隔 embedding 矩阵是对称矩阵(其实是张量),并且主对角线上的元素全为零。

    类似地,这里用两组 embedding 来表达相对时间间隔 embedding 会增强模型的容量从而提高模型的表达能力,但是效果是否更好?这个可以通过实验来比较。

31.1.3 Time Interval-Aware 自注意力

  1. 受相对位置自注意力机制的启发,我们提出了对自注意力的扩展从而考虑序列中两个 item 之间的不同时间间隔。但是,仅考虑时间间隔是不够的,因为用户交互序列可能有许多具有相同时间戳的item 。在这种情况下,模型将成为没有任何位置信息或关系信息的 self-attention 。因此,我们还考虑了 item 在序列中的位置。

    例如,假设时间间隔都是相等的,那么 r~i,j(u)=|titj|rmin(u) 恒等于 1,因此会丢失位置信息。

  2. Time Interval-Aware Self-attention Layer:对于每个长度为 n 的输入序列 (ms1,ms2,,msn) ,其中 msiRditem siIitem embedding ,我们计算一个新的序列 (z1,z2,,zn),其中 ziRd 。每个输出 zi 被计算为:

    zi=j=1nαi,j(msjWV+rV,r~i,j+pV,j)

    其中:

    • WVRd×d 为用于 value 的待学习的投影矩阵。

    • 每个权重系数 αi,j 是通过 softmax 函数来计算:

      αi,j=exp(ei,j)j=1nexp(ei,j),ei,j=(msiWQ)(msjWK+rK,r~i,j+pK,j)d

      其中:WQRd×dWKRd×d 分别是用于 querykey 的待学习的投影矩阵。缩放因子 d 用于避免较大的内积值,尤其是在维度较高的情况下。

  3. 因果性 Causality:由于交互序列的性质,模型在预测第 (t+1)item 时应该仅考虑前面 titem。然而,time-aware self-attention layer 的第 t 个输出包含所有输入信息。为此,遵从 SASRec,我们通过禁止j>iqikj 之间的所有链接来修改注意力,其中:

    qi=msiWQ,kj=msjWK+rK,r~i,j+pK,j
  4. Point-Wise Feed-Forward Network:尽管我们的 Time Interval-Aware Self-attention Layer 能够将所有先前的 item、绝对位置、相对时间信息以自适应权重的方式结合起来,但是它是通过线性组合来实现的。在每个 time-aware attention layer 之后,我们应用两个线性变换,这两个线性变换之间有一个 ReLU 非线性激活函数从而赋予模型非线性:

    FFN(zi)=ReLU(ziW1+b1)W2+b2

    其中:W1,W2Rd×db1,b2Rd 为模型参数。对于同一层的不同 item,这里使用相同的参数(同层之间);对于不同层的相同 item,这里使用不同的参数(跨层之间)。

    正如 SASRec 所讨论的,在堆叠自注意力层和前馈层之后,会出现更多的问题,包括过拟合、训练过程不稳定(如,梯度消失)、以及需要更多的训练时间。类似于 《Attention Is All You Need》 以及 SASRec,我们也采用 layer normalization、残差连接、以及 dropout 正则化技术来解决这些问题:

    LayerNorm(x)=αxμσ2+ϵ+β

    其中:

    • 为逐元素乘积,αβ 分别为待学习的缩放因子和偏置项。
    • μσ 分别为 x 的均值和方差,ϵ 为一个很小的常数项用于防止除以零的错误。

31.1.4 Prediction layer

  1. 在堆叠 self-attention block 之后,我们得到了 item, position, time interval 的组合的 representation 。为了预测 next item,我们采用 latent factor model 来计算用户对 item i 的偏好分:

    scorei,t+1=ztmi

    其中:

    • miitem iembedding
    • zt 为给定前面 titem (即,s=(s1,s2,,st) )以及它们距离第 t+1item 的时间间隔(即,(r~1,t+1,r~2,t+1,,r~t,t+1) 的条件下得到的 representation

    在每个位置预测的是 next item ,因此是 scorei,t+1

31.1.5 模型推断

  1. 给定一个时间序列和一个 item 序列,我们定义 o=(o1,o2,,on) 为真实的输出,其中:

    ot={<pad>if st+1 is a padding itemst+11t<nS|S(u)|(u)t=n

    其中:<pad> 表示一个 padding item

  2. 因为用户交互是隐式反馈数据,我们无法直接优化偏好分数 scorei,t+1 。 我们模型的目标是提供一个 ranked item list 。因此,我们采用负采样来优化 item 的排名。对于每个预期的 positive output ot ,我们采样一个 negative item otS(u) 从而生成 pairwise preference orders D={(S(u),T(u),o,o)}

    我们通过 sigmoid 函数 σ(x)=1/(1+exp(x)) 将模型输出的偏好分数转换为 0.0 ~ 1.0 之间,并采用二元交叉熵作为损失函数:

    J=S(u)St[1,2,,n][logσ(scoreot,t)+log(1σ(scoreot,t))]+λΘF2

    其中:Θ={MI,MP,K,MP,V,MR,K,MR,V}embedding 矩阵的集合,||||F 为矩阵的 Frobenius 范数,λ 为正则化系数。

    注意,我们丢弃了 padding item 的损失。

  3. 模型通过 Adam 优化器优化。由于每个训练样本 (S(u),T(u),o,o) 可以独立构建,因此我们应用 mini-batch SGD 来加快训练效率。

31.2 实验

  1. 我们的实验旨在回答以下研究问题:

    • RQ1:我们提出的方法是否在序列推荐中优于 state-of-the-artbaseline
    • RQ2:对于序列推荐,绝对位置或相对时间间隔,哪个更重要?
    • RQ3:超参数如何影响模型性能,如 embedding 维度 d 、序列最大长度 n 、最大时间间隔 k
    • RQ4:个性化的时间间隔在这个模型中有用吗?
  2. 数据集:我们在六个数据集上评估,这些数据集具有不同的领域、规模、以及稀疏性,并且它们都是可以公开访问的。

    • MovieLens:用于评估协同过滤算法的广泛使用的 benchmark 数据集。我们使用包含 100 万用户评分的版本,即 MovieLens-1M
    • Amazon:该数据集包含从 Amazon.com 抓取的大量商品评论数据。我们考虑了四个类目,包括 CDs and VinylMovies and TVBeautyVideo Games 。该数据集高度稀疏。
    • Steam:该数据集是从大型在线视频游戏分发平台 Steam 上抓取的,包含用户的游戏时间、媒体评分、以及开发人员等信息。

    所有这些数据集都包含时间戳或交互的特定日期。

    为了预处理,我们遵循 《Translation-based Recommendation》SASRecFPMC 中的过程:

    • 对于所有数据集,我们将评论或评分视为隐式反馈(即,用户与 item 交互),并按时间戳对 item 进行排序。
    • 对于所有用户,我们在他们自己的序列中减去最小的时间戳,让时间戳从零开始。
    • 我们过滤掉冷启动用户和冷启动 item ,即互动少于 5 次的 user 和互动少于 5 次的 item
    • 遵从 SASRec 之后,我们使用最近的 item 用于测试集,使用第二近的 item 用于验证集,剩余的 item 用于训练集。

    数据集的统计结果如下表所示。MovieLens-1m 是最稠密的数据集,具有最长的平均 action 和最少的用户和最少的 itemAmazon BeautyAmazon Games 具有最短的平均 action

  3. 评估指标:Hit@10NDCG@10Hit@10 评估了在 top 10 item list 中有多少比例的 ground-truth itemNDCG@10 考虑排名信息并将更高的权重分配给更靠前的排名。

    遵从 《Factorization meets the neighborhood: a multifaceted collaborative filtering model》 ,对于每个用户 u ,我们随机采样 100negative item ,并将这些 itemground-truth item 进行排序。我们根据这 101item 的排名来计算 Hit@10NDCG@10

  4. baseline 方法:

    • 不考虑序列模式的经典的通用推荐general recommendation

      • POP:所有item 根据它们在训练集中的流行度来排序。流行度是根据互动频次来统计的。
      • BPR:贝叶斯个性化排名 bayesian personalized ranking 是通用推荐的经典方法,其中矩阵分解用作推荐器。
    • 基于一阶马尔科夫链的方法:

      • FPMC:该方法结合了矩阵分解和一阶马尔科夫链,分别捕获了长期偏好和动态转移 dynamic transition
      • TransRec:该方法将每个用户建模为 itemitem 的翻译向量 tanslation vector 。这是捕获转移的一阶方法。
    • 基于神经网络的方法:

      • GRU4Rec+:建模用户行为序列从而用于 session-based 推荐。与 GRU4Rec 相比,GRU4Rec+ 采用了不同的损失函数和采样策略,相比于 GRU4Rec 表现出显著的提升。
      • Caser:将最近 item 的序列嵌入到潜在空间的 ”图像“ 中。该方法可以捕获考虑了最近 Litem 的高阶马尔科夫链。
      • MARank:最近提出的 state-of-the-art 模型。该方法考虑最近的一些 item 并应用 multi-order attention 来捕获 individual-levelunion-level 的依赖关系。
      • SASRec 可以视为一种仅考虑绝对位置的方法,将在实验部分与我们的模型进行比较和讨论。
      • 其它序列推荐方法,如 PRME, HRM, Fossil, GRU4Rec 的性能弱于上述 baseline,因此我们省略了与它们的比较。
  5. 配置:

    • 为了公平比较,我们使用带 Adam 优化器的 TensorFlow 来实现 BPR, FPMC, TransRec 。对于 GRU4Rec+, Caser, MARank,我们使用作者提供的代码。

    • 我们在 {10,20,30,40,50} 中搜索潜在维度,在 {104,103,102,101,100} 中搜索正则化系数,在 {104,103,102,101} 中搜索学习率。对于所有其它超参数,我们根据各自的论文使用默认设置。我们使用验证集调优超参数,如果验证集性能在 20epoch 内没有提高,则终止训练。

    • 对于 TiSASRec

      • 我们使用两层 Time Interval-Aware Self-attention Layer
      • 所有数据集的学习率为 0.001batch size128dropout rate0.2
    • 剩余的超参数设置如下表所示。所有实验均使用单个 GTX-1080 Ti GPU 进行。

  6. 推荐性能(RQ1):下表给出了所有方法在六个数据集上的推荐性能。可以看到:

    • 在所有 baseline 中,MARank 超越了其它 baselineMARank 可以捕获 individual-levelunion-level 的用户交互,并且很好地处理稀疏数据集。
    • 对于稠密数据集,基于神经网络的方法(即,GRU4Rec+, Caser)比基于马尔科夫链的方法具有显著更好的性能,因为这些方法具有更强的能力来捕获长期序列模式,而这对于稠密数据集很重要。
    • 由于基于马尔科夫链的方法(即,FPMC, TransRec)聚焦于 item 的动态转移,因此它们在稀疏数据集上表现更好。
    • TiSASRec 在所有稠密数据集和稀疏数据集上都超越了所有的 baseline 方法。

    其它方法都没有考虑时间信息,而 TiSASRec 考虑了时间信息,那么这篇论文仅仅证明了时间信息的价值,并不能证明模型架构是好的。为了证明模型架构是好的,论文应该和同时考虑了时间信息的模型去比较。

  7. 相对时间间隔( RQ2):为了比较仅有绝对位置、或者仅有相对时间间隔的模型的性能,我们修改Time Interval-Aware Self-attention Layer 的输出 ,使得 TiSASRec 仅考虑相对时间间隔而不考虑绝对位置。具体而言,我们修改Time Interval-Aware Self-attention Layer的输出为:

    zi=j=1nαi,j(msjWV+rV,r~i,j)αi,j=exp(ei,j)j=1nexp(ei,j),ei,j=(msiWQ)(msjWK+rK,r~i,j)d

    即,我们移除了该方程中的 positional embedding ,从而得到一个新的模型,称作 TiSASRec-R

    此外,我们将 SASRec 视为一种仅考虑绝对位置的 self-attention 方法。我们在这六个数据集上应用 SASRec, TiSASRec-R, TiSASRec 来比较它们。为公平比较,我们对 SASRec 使用与 TiSASRec 相同的最大序列长度。实验结果如下表所示。可以看到:

    • TiSASRec-RMovie-Lens, CDs&Vinyl, Beauty 数据集上比 SASRec 具有更好的性能,但是在其它三个数据集上则不然。
    • 总体而言,TiSASRec-R (仅使用相对时间间隔)将具有与 SASRec (仅使用绝对位置)相似的性能。
    • 结合了positional embedding 和相对时间间隔 embeddingTiSASRec 在所有数据集上超越了 SASRec, TiSASRec-R

    限制 TiSASRec-R 性能的主要原因是:用户序列中有许多相同的时间戳。在这种情况下,TiSASRec-R 将在没有任何位置信息的情况下降级为 self-attention 。为了缓解这个问题,我们结合了相对时间间隔和绝对位置。这样,TiSASRec 结合了更丰富的 item 关系来计算注意力权重。

  8. 超参数影响(RQ3):

    • embedding 维度 d :下图展示了在保持其它最佳超参数不变的情况下,维度 d1050NDCG 指标的影响。可以看到:

      • 在大多数情况下,较大的 d 会导致更好的模型性能。
      • d 的取值对 TransRec 的影响有限。
      • 对于数据集Amazon Beauty,当 d 较大时 Caser, MARank, TransRec 的性能较差。

    • 最大序列长度 n :下图展示了在保持其它最佳超参数不变的情况下,最大序列长度 n1050NDCG 指标的影响。可以看到:更大的 n 导致更好的性能,但是性能的增幅开始变缓。

    • 最大时间间隔 k :下图展示了在保持其它最佳超参数不变的情况下,最大时间间隔 kNDCG 指标的影响。我们为 MovieLens 数据集选择时间间隔 {1, 64, 256, 1024, 2048},为 Amazon CDs & Vinyl 数据集选择时间间隔 {1, 16, 64, 256, 512} 。可以看到:

      • TiSASRec 在不同的最大时间间隔下具有更稳定的性能。
      • k 正确选择时,TiSASRec-R 实现最佳性能,而对于较大的 k 则变得更差。
      • k 越大则意味着需要训练的模型参数更多。

  9. 个性化的时间间隔(RQ4):我们讨论不同的时间戳处理方法,具体而言为以下三种方法:

    • 直接使用时间戳作为特征。我们会减去数据集中最小的时间戳(全局粒度的),让所有时间戳从 0 开始。
    • 使用未缩放的时间间隔。对于每个用户,我们减去序列中的最小时间戳(用户粒度的),让用户的时间戳从 0 开始。
    • 使用个性化的时间间隔。对于每个用户,我们减去序列中的最小时间戳(用户粒度的),然后除以该序列的最小时间间隔。

    下表给出了时间戳不同处理方法的结果。注意,我们不会在前两种方法中裁剪时间戳。可以看到:第三种方法(即,个性化的时间间隔)在前三个数据集中获得了最佳性能。

  10. 可视化:我们使用 TiSASRec 来预测用户可能交互的 next item。然后,我们将所有时间间隔设为相同从而获得另一个预测。如下图所示,可以看到时间间隔影响了预测结果。

    下图展示了前 256 个时间间隔的平均注意力权重 αi,j 的四个热力图(|ij| 作为时间间隔)。注意,我们在计算平均权重时,分母是有效权重的个数,从而避免短序列中 padding item 的影响。从这四个热力图中我们可以看到:

    • 小的时间间隔通常比大的时间间隔具有更大的权重,这意味着最近的 itemnext item 的预测具有更大的影响。
    • 稠密数据集(如 MovieLens)比稀疏数据集(如CDs&Vinyl )需要更大范围的 item (即,间隔更大),因为 MovieLens 热力图左侧有一个较大的绿色区域同时右侧是黄色区域。
    • Amazon Beauty 数据集的热力图没有明显的绿色区域或黄色区域,可能是因为该数据集没有明显的序列模式。这就解释了为什么几种序列方法在这个数据集上表现不佳。