二十三、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 可以计算为: