返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十七、GCE-GNN [2020]

发布于 2023-07-17 23:38:23 字数 148232 浏览 0 评论 0 收藏 0

  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 是唯一一个结合了最近m$ m $ 个 session 中的协同信息,从而以端到端方式丰富当前 session representation 的工作。CSRMsession 视为最小粒度,并测量当前 session 和最近m$ m $ 个 session 之间的相似性从而抽取协同信息。

      然而,不幸的是,它可能会将其它 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 是最近的m$ m $ 个 session 之一,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,然后通过探索最近的m$ m $ 个 session 来丰富当前的 session representation ,最后利用融合门控机制来学习不同特征源的组合。

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

27.1 模型

  1. V={v1,v2,,v|V|}$ V=\{v_1,v_2,\cdots,v_{|V|}\} $ 为所有 item 的集合。每个匿名 sessionS={v1(S),v2(S),,vl(S)}$ \mathcal S=\left\{v_1^{(\mathcal S)},v_2^{(\mathcal S)},\cdots,v_l^{(\mathcal S)}\right\} $ 由根据时间顺序排列的一系列交互(即用户点击的 item )组成,其中vi(S)$ v_i^{(\mathcal S)} $ 表示在 sessionS$ \mathcal S $ 内点击的第i$ i $ 个 iteml$ l $ 为 sessionS$ \mathcal S $ 的长度。

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

  2. 对于每个 itemvV$ v\in V $ ,定义hvRd$ \mathbf{\vec h}_v\in \mathbb R^d $ 为它的 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 。给定 sessionS={v1(s),v2(s),,vl(s)}$ \mathcal S=\left\{v_1^{(s)},v_2^{(s)},\cdots,v_l^{(s)}\right\} $ ,令Gs=(Vs,Es)$ \mathcal G_{s} = (\mathcal V_{s},\mathcal E_{s}) $ 为对应的 session graph,其中VsV$ \mathcal V_{s}\sube V $ 是S$ \mathcal S $ 中 item 的集合,Es={ei,j(s)}$ \mathcal E_s=\left\{e_{i,j}^{(s)}\right\} $ 为边的集合。每条边ei,j(s)$ e_{i,j}^{(s)} $ 表示S$ \mathcal S $ 中的两个相邻 item(vi(s),vj(s))$ \left(v_i^{(s)},v_j^{(s)}\right) $ ,这被称作 session-levelitem-transition pattern

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

  2. SR-GNNFGNN 不同,我们的 session graph 根据 itemvi$ v_i $ 和 itemvj$ v_j $ 之间的关系有四种类型的边,分别表示为:rin,rout,rin-out,rself$ r_\text{in},r_\text{out},r_\text{in-out},r_\text{self} $ 。对于边ei,j(s)$ e_{i,j}^{(s)} $ :

    • rin$ r_\text{in} $ 表示仅有从vj(s)$ v_j^{(s)} $ 到vi(s)$ v_i^{(s)} $ 的转移 transition
    • rout$ r_\text{out} $ 表示仅有从vi(s)$ v_i^{(s)} $ 到vj(s)$ v_j^{(s)} $ 的转移 。
    • rin-out$ r_\text{in-out} $ 表示既存在从vj(s)$ v_j^{(s)} $ 到vi(s)$ v_i^{(s)} $ 的转移,也存在从vi(s)$ v_i^{(s)} $ 到vj(s)$ v_j^{(s)} $ 的转移。
    • rself$ r_\text{self} $ 表示一个 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 的概念(即,ϵ$ \epsilon $ 邻域集合Neighbor Set),然后给出全局图的定义。

  3. ϵ$ \epsilon $ 邻域集合Nϵ(v)$ \mathcal N_\epsilon(v) $ :对于 sessionSp$ \mathcal S_p $ 中的任意 itemvi(p)$ v_i^{(p)} $ ,vi(p)$ v_i^{(p)} $ 的ϵ$ \epsilon $ 邻域集合表示一组 item,其中每个元素定义为:

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

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

    其中:

    • i$ i^\prime $ 是 itemvi(p)$ v_i^{(p)} $ 在另一个 sessionSq$ \mathcal S_q $ 中出现的位置。

    • ϵ$ \epsilon $ 是一个超参数,用于控制vi(p)$ v_i^{(p)} $ 和S(q)$ \mathcal S^{(q)} $ 中的 item 之间的 item-transition 范围。

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

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

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

    不失一般性,global graph 定义如下:定义Gg=(Vg,Eg)$ \mathcal G_g = (\mathcal V_g, \mathcal E_g) $ 为 global graph,其中:

    • Vg$ \mathcal V_g $ 表示V$ V $ 中所有 item 对应的 graph node 集合。
    • Eg={ei,j(g)(vi,vj),viV,vjNϵ(vi)}$ \mathcal E_g = \left\{e_{i,j}^{(g)}\mid (v_i,v_j),v_i\in V,v_j\in \mathcal N_\epsilon(v_i)\right\} $ 表示边的集合,每条边对应于所有 session 中的一对 pairwise item

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

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

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

  5. 注意:V$ V $ 中的每个 itemlayert$ t $ 被编码到一个统一的 embedding 空间,即hitRd$ \mathbf{\vec h}_i^t\in \mathbb R^d $ ,d$ d $ 表示 item embeddign 的维度。其中初始化的 embeddignhi0R|V|$ \mathbf{\vec h}_i^0\in \mathbb R^{|V|} $ ,这里我们使用基于 one-hotembedding,并通过使用可训练的参数矩阵W0Rd×|V|$ \mathbf W_0\in \mathbb R^{d\times |V|} $ 将其映射到d$ d $ 维潜在向量空间。

    注意,应用在 Global Graph 上的 GNN 模型有多层。此外,这里的hi0$ \mathbf{\vec h}_i^0 $ 也可以结合 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 graphGg$ \mathcal G_g $ 的结构递归地融合每个节点的 neighbor embedding ,从而学习所有 sessionglobal-level item embedding
    • session-levelitem representation learning layer :它在 session graphGs$ \mathcal G_s $ 上使用 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 的预测。

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

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

    如前所述,图Gg$ \mathcal G_g $ 上itemv$ v $ 的邻域(即Nv(g)$ \mathcal N_v^{(g)} $ )的定义与Nϵ(v)$ \mathcal N_\epsilon(v) $ 相同。

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

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

    其中:

    • W1R(d+1)×(d+1)$ \mathbf W_1\in \mathbb R^{(d+1)\times (d+1)} $ ,q1Rd+1$ \mathbf{\vec q}_1\in \mathbb R^{d+1} $ 都是可训练的参数。

    • sRd$ \mathbf{\vec s}\in \mathbb R^d $ 可以视为当前 session 的特征,它可以通过当前 sessionitem representation 的均值得到:s=1|S|vShv$ \mathbf{\vec s} = \frac{1}{|\mathcal S|} \sum_{v\in \mathcal S} \mathbf{\vec h}_{v} $ 。

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

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

    • wi,jR$ w_{i,j}\in \mathbb R $ 为 global graph 中的边(vi,vj)$ (v_i,v_j) $ 的权重。

      这里融合了两种相关性:

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

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

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

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

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

  3. Information Aggregation:最后一步是聚合 item representationhv$ \mathbf{\vec h}_v $ 及其 neighborhood representationhNv(g)$ \mathbf{\vec h}_{\mathcal N_v^{(g)}} $ 。我们实现的聚合函数 agg 如下:

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

    其中我们选择 relu 作为激活函数,W2Rd×(2d)$ \mathbf W_2\in \mathbb R^{d\times (2d)} $ 为参数矩阵。

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

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

    其中:hv(g),k1$ \mathbf{\vec h}_v^{(g),k-1} $ 是 itemv$ v $ 的 repersentation,它是从前一个 information propagation step 生成的。hv(g),0$ \mathbf{\vec h}_v^{(g),0} $ 在初始的 propagation 迭代中设置为hv$ \mathbf{\vec h}_v $ 。

    通过这种方式,一个 itemk$ k $ 阶 representation 是它的初始 representation 及其1k$ 1\sim k $ 阶邻域的混合。这使得可以在当前 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$ c_{i,j} $ 表示节点vj$ v_j $ 的特征对于节点vi$ v_i $ 的重要性,我们选择 LeakyReLU 作为激活函数。
    • ri,j$ r_{i,j} $ 是vi$ v_i $ 和vj$ v_j $ 之间的关系类型。
    • ari,jRd$ \mathbf{\vec a}_{r_i,j}\in \mathbb R^d $ 为待学习的权重向量。对于不同的关系类型,我们训练了四个权重:ain,aout,ain-out,aself$ \mathbf{\vec a}_\text{in},\mathbf{\vec a}_\text{out},\mathbf{\vec a}_\text{in-out},\mathbf{\vec a}_\text{self} $ 。

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

    由于图中不是每两个节点都连接,因此我们仅计算节点vjNvi(s)$ v_j\in \mathcal N_{v_i}^{(s)} $ 从而将图结构注入模型,其中Nvi(s)$ \mathcal N_{v_i}^{(s)} $ 为vi$ v_i $ 在 sessionS$ \mathcal S $ 中的一阶邻域。

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

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

    在上式中,注意力系数αi,j$ \alpha_{i,j} $ 是非对称的,因为vi$ v_i $ 和vj$ v_j $ 的邻域是不同的,这意味着它们对彼此的贡献是不相等的。

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

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

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

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

    由于 session graph 包含 self loop,因此viNvi(s)$ v_i\in \mathcal N_{v_i}^{(s)} $ 。

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

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$ \mathbf H = \left[\mathbf{\vec h}_{v_1}^\prime,\mathbf{\vec h}_{v_2}^\prime,\cdots,\mathbf{\vec h}_{v_l}^\prime,\right]\in \mathbb R^{d\times l} $ 。我们还使用可学习的 position embedding 矩阵P=[p1,p2,,pl]Rd×l$ \mathbf P = \left[\mathbf{\vec p}_1,\mathbf{\vec p}_2,\cdots,\mathbf{\vec p}_l\right]\in \mathbb R^{d\times l} $ ,其中piRd$ \mathbf{\vec p}_i\in \mathbb R^d $ 是特定位置i$ i $ 的 position embeddingl$ l $ 是当前 session 序列的长度。位置信息通过拼接和非线性变换进行融合:

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

      其中:W3Rd×(2d),b3Rd$ \mathbf W_3\in \mathbb R^{d\times (2d)},\mathbf{\vec b}_3\in \mathbb R^d $ 都是可学习的参数。

      这里我们选择 reversed position embedding ,因为 session 序列的长度不是固定的。与 forward position 信息相比,当前 item 与待预测的 item 之间的距离包含了更多的有效信息。例如,在 session{v2v3?}$ \{v_2\rightarrow v_3 \rightarrow ?\} $ 中,v3$ v_3 $ 是序列中的第二个,对预测的影响很大。但是在 session{v2v3v5v6v8?}$ \{v_2\rightarrow v_3\rightarrow v_5\rightarrow v_6\rightarrow v_8\rightarrow ?\} $ 中,v3$ v_3 $ 的重要性会相对较小。因此,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×d$ \mathbf W_4,\mathbf W_5\in \mathbb R^{d\times d} $ 和q2,b4Rd$ \mathbf{\vec q}_2,\mathbf{\vec b}_4\in \mathbb R^d $ 为待学习的参数。

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

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

    s=i=1lβihvi

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

    注意,reversed position embedding 仅参与 attention 的计算,它不会修改hvi$ \mathbf{\vec h}_{v_i}^\prime $ 。

d. Prediction Layer

  1. 基于获得的 session represntations$ \mathbf{\vec s}^* $ ,每个候选 item 的最终推荐概率为:

    y^i=softmax(shvi)

    其中:y^R|V|$ \hat{\mathbf{\vec y}}\in \mathbb R^{|V|} $ 给出了每个候选 item 作为 next click 的概率分布。

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

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

    其中yR|V|$ \mathbf{\vec y}\in \mathbb R^{|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$ 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 设置为测试数据,剩余的历史作为训练数据。

    • 此外,对于 sessionS={v1(s),v2(s),,vl(s)}$ \mathcal S =\left\{v_1^{(s)},v_2^{(s)},\cdots,v_l^{(s)}\right\} $ , 我们通过序列拆分来生成序列和相应的标签,即:

      ([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 来研究最近的m$ m $ 个 session,从而更好地预测当前 session 的意图。
    • FGNN:通过设计一个加权的 attention graph layer 来学习 item embedding,并且 sessiongraph level feature extractor 来学习。
  5. 参数配置:

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

    • 所有模型的 batch size 设为 100

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

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

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

    • 对于我们的模型:

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

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

      • L2$ L_2 $ 正则化系数为105$ 10^{-5} $ ,并且在验证集上搜索 dropout rate{0.1,0.2,,0.9}$ \in \{0.1,0.2,\cdots,0.9\} $ 。

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

        出于效率的考虑,我们仅保留Gg$ \mathcal G_g $ 上每个 itemvi$ v_i $ 的权重最高的 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)$ \mathbf{\vec h}_v^\prime = \mathbf{\vec h}_v^{(\mathcal s)} $ 。
    • GCE-GNN w/o session:没有 session-level feature encoderGCE-GNN,它只有 global feature ,即hv=dropout(hv(g),k)$ \mathbf{\vec h}_v^\prime = \text{dropout}\left(\mathbf{\vec h}_v^{(g),k} \right) $ 。
    • 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 representationh(l)$ \mathbf{\vec h}^{(l)} $ 和 global feature representationh(g)$ \mathbf{\vec h}^{(g)} $ 之间使用线性差值:

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

      其中:σ()$ \sigma(\cdot) $ 是 sigmoid 激活函数,$ \odot $ 为逐元素乘积,而rv$ \mathbf{\vec r}_v $ 被学习从而平衡两个特征的重要性。

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

      hv=max(hv(g),hv(s))
    • 对于拼接操作,final representation 是向量hv(g)$ \mathbf{\vec h}_v^{(g)} $ 和hv(s)$ \mathbf{\vec h}_v^{(s)} $ 之间的拼接:

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

      其中:MRd×(2d)$ \mathbf M\in \mathbb R^{d\times (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$ p $ 随机丢弃神经元,同时使用所有神经元进行测试。

    下图展示了 dropout (作用在hv(g),k$ \mathbf{\vec h}_v^{(g),k} $ 上)对 DigineticaTmall 数据集的影响。可以看到:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文