一、S3-Rec [2020]

《S3-Rec: Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization》

  1. 近年来,深度学习在序列推荐(《 sequential recommendation》)方面取得了显著进展。现有的神经序列推荐模型通常依赖 item prediction loss 来学习 model parameters 或 data representations 。然而,用这种 loss 来训练好的模型容易出现数据稀疏问题(data sparsity problem )。由于它过于强调 final performance ,在序列推荐中,context data 和 sequence data 之间的关联(association )或融合(fusion )没有得到很好的捕获和利用。 为了解决这个问题,我们提出了 S3-Rec 模型,即基于自注意力神经架构的 Self-Supervised learning for Sequential Recommendation 。我们方法的主要思想是:利用固有的 data correlation 来导出自监督信号,并通过 pre-training 方法增强 data representations,以改进序列推荐。对于我们的任务,我们设计了四个辅助自监督目标,利用互信息最大化(mutual information maximization: MIM )原则来学习attribute 、item、subsequence 和 sequence 之间的相关性。MIM 提供了一种统一的方式来描述不同类型数据之间的相关性,特别适合我们的场景。在六个真实世界数据集上进行的大量实验表明,我们提出的方法优于现有的 SOTA 方法,尤其是在训练数据有限的情况下。此外,我们将自监督学习方法扩展到其他推荐模型,也提高了它们的性能。

  2. 近年来,许多在线平台取得了巨大成功,如 Amazon 和 Taobao 。在在线平台中,用户行为是动态(dynamic )的,并且会随着时间而演变。因此,捕获用户序列行为的动态对于做出合适的推荐至关重要。为了准确描述用户兴趣并提供高质量的推荐,序列推荐任务在文献中得到了广泛研究。 通常,序列推荐方法从用户的历史行为中捕获有用的序列模式(sequential patterns)。深度学习对这一动机进行了广泛探索。各种使用循环神经网络(recurrent neural network: RNN )、卷积神经网络(convolutional neural network: CNN )和自注意力机制的方法被提出来学习用户偏好的 good representations ,并刻画 sequential user-item interactions 。 此外,研究人员将丰富的上下文信息(如 item attributes)纳入神经序列推荐器(neural sequential recommenders)。已经证明,考虑上下文信息对于提高序列推荐系统( sequential recommender systems )的性能很重要。 尽管现有方法在一定程度上被证明是有效的,但有两个主要缺点可能会影响推荐性能:

    • 第一,它们依赖 item prediction loss 来学习整个模型。当纳入上下文数据时,所涉及的参数也通过唯一的 optimization objective 进行学习。已经发现,这种优化方式很容易出现数据稀疏等问题。

    • 第二,它们过于强调 final performance ,而在 data representations 中,上下文数据(context data )和序列数据(sequence data )之间的关联(association )或融合(fusion )没有得到很好的捕获。例如,来自各个领域的越来越多的证据所示,有效的 data representation(例如,pre-trained contextualized embedding )是提高现有模型或架构性能的关键因素。因此,需要重新思考 learning 的范式,以开发更有效的序列推荐系统。

    为了解决上述问题,我们借鉴自监督学习(self-supervised learning)的思想来改进序列推荐。自监督学习是一种新兴的范式,旨在让模型从原始数据的固有结构中学习。自监督学习的一般框架是:首先直接从原始数据中构建训练信号,然后使用额外设计的优化目标对模型参数进行预训练。如前所述,有限的监督信号和无效的 data representations 是现有神经序列方法的两个主要学习问题。幸运的是,自监督学习似乎为这两个问题都提供了一个有前景的解决方案:它利用固有的 data correlation 来设计辅助训练目标,并通过具有丰富自监督信号的 pre-trained方法来增强 data representations 。然而,对于序列推荐,上下文信息以不同的形式或具有不同的固有特性来特性存在,包括 item 、attribute 、subsequence 或 sequence 。开发一种统一的方法来描述这种 data correlations 并不容易。对于这个问题,我们受到最近提出的互信息最大化(mutual information maximization: MIM )方法的启发。通过最大化这些视图的 encoded representations 之间的互信息,该方法在捕获原始输入的不同视图(或 parts )之间的相关性方面特别有效。 为此,在本文中,我们提出了一种新颖的基于 MIM 的自监督学习方法来改进序列推荐,称为 S3-Rec 。基于自注意力推荐架构,我们建议:首先使用自监督信号对序列推荐器进行预训练,然后根据推荐任务对模型参数进行微调。主要的创新点在于 pre-training 阶段。具体来说,我们精心设计了四个自监督优化目标,分别用于捕获 item-attribute 、sequence-item 、sequence-attribute 和 sequence-subsequence 之间的相关性。这些优化目标以 MIM 的统一形式开发。因此,S3-Rec 能够以通用的方式描述不同粒度级别或不同形式之间的相关性。它也能够灵活地适应新的数据类型或新的相关性模式(correlation patterns )。通过这种预训练方法,我们可以有效地融合各种上下文数据,并学习 attribute-aware contextualized data representations 。最后,将学到的 data representations 馈入到神经推荐器中,神经推荐器将根据推荐性能而被优化。 为了验证我们提出的 S3-Rec方法的有效性,我们在六个不同领域的真实世界推荐数据集上进行了广泛的实验。实验结果表明,与许多有竞争力的方法相比,S3-Rec 达到了 SOTA 的性能,尤其是在训练数据有限的情况下。我们还表明,我们的 S3-Rec 能够有效地适应其他类别的神经架构,如 GRU 和 CNN 。

    我们的主要贡献总结如下:

    • 据我们所知,这是首次将基于 MIM 的自监督学习应用于改善序列推荐任务。

    • 我们提出了四个自监督优化目标(self-supervised optimization objectives ),以最大化不同形式或粒度的上下文信息的互信息(mutual information of context information )。

    • 在六个真实世界数据集上进行的大量实验证明了我们提出的方法的有效性。

1.1 基础概念

  1. 问题描述:假设我们有一组用户 U 和一组 items I,其中 u∈U 表示一个用户, i∈I 表示一个 item 。用户数量和 item 数量分别表示为 |U| 和 |I|。一般来说,用户 u 具有一个按时间顺序排序的 items 交互序列:{i1,⋯,in},其中 n 是交互的数量,it 是用户 u 交互的第 t 个 item 。为了方便起见,我们使用 ij:k 表示子序列,即 ij:k={ij,⋯,ik},其中 1≤j<k≤n。此外,每个 item i 都与几个属性相关联 Ai={a1,⋯,am} 。例如,对于音乐推荐,一首歌曲通常具有艺术家(artist )、专辑(album )和流行度(popularity )等辅助信息。所有属性构成一个属性集合 A,属性的数量记作 |A|。

    基于上述符号,我们现在定义序列推荐任务。正式地,给定用户的历史行为序列 {i1,⋯,in} 和每个 item i 的属性 Ai,序列推荐任务是预测用户在第 (n+1) 步可能与之交互的 next item 。

  2. 互信息最大化:我们方法中的一个重要技术是互信息最大化(Mutual Information Maximization : MIM )。它基于互信息(mutual information)这个核心概念发展而来,互信息用于衡量随机变量之间的依赖关系。给定两个随机变量 X 和 Y ,可以认为互信息表达了 X 能在多大程度上减少 Y 的不确定性;反之亦然。正式地,X 和 Y 之间的互信息为:

    I(X,Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)

    直接最大化互信息通常是难以处理的。因此,我们采用 I(X,Y) 的一个下界。在实践中被证明效果良好的一个特定下界是 InfoNCE ,它基于噪声对比估计(Noise Contrastive Estimation: NCE )。InfoNCE 定义为:

    Ep(X,Y)[fθ(x,y)−Eq(Y~)[log⁡∑y~∈Y~exp⁡fθ(x,y~)]]+log⁡|Y~|

    其中:

    • x,y 为给定 input 的不同视图。

    • fθ 是一个由 θ 所参数化的函数。例如,一个单词及其上下文的 encoded representations 之间的内积;或者,一个图像及其局部区域的 encoded representations 之间的内积。

    • Y~ 是从 proposal distribution q(Y~) 中采样的一组样本,|Y~| 表示采样数量。Y~ 中包含一个正样本 y 和 |Y~|−1 个负样本。

    请注意,InfoNCE 与交叉熵相关。如果 Y~ 总是包含随机变量 Y 的所有可能值(即 Y~=Y),并且它们是均匀分布的,则最大化 InfoNCE 类似于最大化标准交叉熵损失:

    Ep(X,Y)[fθ(x,y)−log⁡∑y~∈Yexp⁡fθ(x,y~)]

    该方程表明: InfoNCE 与最大化 pθ(y∣x) 相关,并且它通过负采样来近似 Y 中元素的求和(即 partition function )。基于此公式,我们可以利用特定的 X,Y 来最大化原始数据的不同视图之间的互信息,例如,一个 item 及其属性,或一个序列及其包含的items 。

1.2 方法

  1. 现有研究主要强调使用单一的 item-level 优化目标来强调 sequential characteristics 的效果。受 MIM 最近进展的启发,我们从不同的角度出发,通过最大化原始数据不同视图之间的互信息来开发神经序列推荐器。 我们方法的基本思想是:纳入几个精心设计的自监督学习目标(self-supervised learning objectives )来增强原始模型。为了开发这些目标,我们利用 input 的固有特性中反映的有效的 correlation 信号。对于我们的任务,我们考虑不同粒度级别的信息,包括 attribute 、item 、segment (即子序列)和 sequence ,这些被视为输入的不同视图。通过捕获 multi-view correlation ,我们将这些自监督学习目标与最近在语言建模中提出的 pre-training 框架统一起来。 S3-Rec 的概述如 Figure 1 所示。在以下部分中,我们首先介绍我们提出的方法的 base model ,该模型基于 Transformer 架构开发。然后,我们将描述如何利用 attribute 、item 、segment 和 sequence 的 correlation 信号,基于 InfoNCE 方法来增强data representations 。最后,我们对我们的方法进行讨论。

    • (1) 图有问题:Item Embedding 不需要经过 Bidirectional Self-Attention 而直接馈入 Item-Attribute MIM 即可。

    • 这四个任务如何训练?根据论文的实验部分,这四个任务是通过共同训练来进行的:四个损失(即 AAP、MIP、MAP 和 SP)的权重分别设置为 0.2、1.0、1.0 和 0.5 。

    • 注意:预训练是双向 Transformer,main task 是单向 Transformer 。

1.2.1 Base Model

  1. 我们通过堆叠 embedding layer 、self-attention blocks 和 prediction layer ,开发了序列推荐模型的基本框架。

  2. Embedding Layer:在 embedding mapping 阶段,我们维护一个 item embedding matrix MI∈R|I|×d 以及一个 attribute embedding matrix MA∈R|A|×d 。这两个矩阵将 item 或 attribute 的高维 one-hot representation 投影到低维 dense representations 。给定一个长度为 n 的 item sequence ,我们从 MI 应用 look-up 来形成 input embedding matrix E∈Rn×d 。

    此外,我们引入一个可学习的 position encoding matrix P∈Rn×d 来增强 item sequence 的 input representation。通过这种方式,sequence representation EIn×d 可以通过对两个 embedding 矩阵求和得到:EI=E+P 。由于我们的任务利用辅助的上下文数据,我们还从整个 attribute embedding matrix MA 为每个 item 形成一个 embedding 矩阵 EA∈Rk×d ,其中 k 为 item attributes 的数量。

  3. Self-Attention Block:基于 embedding layer ,我们通过堆叠多个 self-attention blocks 来开发 item encoder 。一个 self-attention block 通常由两个子层组成,即一个 multi-head self-attention layer 和一个 point-wise feed-forward network 。

    • multi-head self-attention 机制用于从不同的 representation 子空间中有效地选择性提取信息。具体来说,multi-head self-attention 定义为:

      MultiHeadAttn(Fl)=[head1,head2,⋯,headh]WOheadi=Attention(FlWiQ,FlWiK,FlWiV)

      其中:

      • Fl∈Rn×d 为第 l 层的输入。当 l=0 时,我们设置 Fl=EI 。

      • WiQ∈Rd×(d/h),WiK∈Rd×(d/h),WiV∈Rd×(d/h) 为每个 head 对应的可学习的参数矩阵。WO∈Rd×d 为投影矩阵。

      • attention function 实现为 scaled dot-product 操作:

        Attention(Q,K,V)=softmax(QK⊤d/h)V

        其中:Q=FlWiQ,K=FlWiK,V=FlWiV 是 input embedding matrix 的线性变换,d/h 是缩放因子,用于避免内积的值过大。

    • 由于 multi-head attention 函数主要基于线性投影构建。我们通过应用 point-wise feed-forward network 赋予 self-attention block 非线性。计算定义为:

      Fl=[FFN(F1l)⊤;⋯;FFN(Fnl)⊤]FFN(x→)=(ReLU(x→W1+b→1))W2+b→2

      其中:W1,b→1,W2,b→2 为可训练的参数。

    在序列推荐中,只能利用当前 time step 之前的信息,因此我们对 multi-head self-attention 函数的 output 应用掩码操作,以去除 Qi 和 Ki 之间的所有 connections 。受 BERT 启发,在预训练阶段,我们移除掩码机制,以获取 item sequence 中每个 item 的双向 context-aware representation 。从两个方向整合上下文信息对于 sequence representation learning 是有益的。

  4. Prediction Layer:在 S3-Rec 的最后一层,我们计算在 user history 的上下文下,用户在第 (t+1) 步对 item i 的偏好得分:

    P(it+1=i∣i1:t)=e→i⊤FtL

    其中:

    • e→i 是从 item embedding matrix MI 中得到的 item i 的 representation 。

      事实上 target item 除了 item id i 之外,还有对应的属性信息。如果考虑 target item 的属性信息,是不是对任务更有帮助?根据后面的 Modeling Item-Attribute Correlation, item embedding 已经融合了 attribute 信息,因此仅使用 target item 的 item id 是可以的。

    • FtL 为 L-layer self-attention block 在第 t 步的输出,L 为 self-attention blocks 的数量。

1.2.2 Self-supervised Learning with MIM

  1. 基于上述 self-attention 模型,我们进一步利用互信息最大化(MIM )引入额外的自监督信号,以增强 input data 的 representations。我们采用 pre-training 的方式,基于 multi-view correlation 构建不同的损失函数。

  2. Modeling Item-Attribute Correlation:我们首先最大化 items 和 attributes 之间的互信息。对于每个 item ,其 attributes 提供了关于它的细粒度信息。因此,我们旨在通过建模 item-attribute correlation 来融合 item-level 和 attribute-level 的信息,期望将有用的属性信息注入到 item representations 中。

    给定一个 item i 以及属性集合 Ai={a1,⋯,ak},我们将 item 本身及其相关属性视为两个不同的视图。形式上,设 e→i 表示通过 emebdding layer 得到的 item embedding ,e→aj 表示第 j 个属性 aj∈Ai 的 embedding 。我们通过对比学习框架(contrastive learning framework )设计一个损失函数,来最大化这两个视图之间的互信息。根据公式 Ep(X,Y)[fθ(x,y)−log⁡∑y~∈Yexp⁡fθ(x,y~)],我们最小化 Associated Attribute Prediction: AAP 损失:

    LAAP(i,Ai)=Eaj∈Ai[f(i,aj)−log⁡∑a~∈A∖Aiexp⁡(f(i,a~))]

    其中:

    • 我们采样 negative attributes a~ ,从而增强 item i 与 ground-truth attributes aj 之间的关联。\ 表示 set subtraction 操作。

    • 函数 f(⋅,⋅) 由一个简单的双线性网络(bilinear network)实现:

      f(i,aj)=σ(e→i⊤WAPPe→aj)

      其中:WAPP∈Rd×d 为待学习的参数矩阵,σ(⋅) 为 sigmoid 函数。

    为了清晰起见,我们给出了单个 item 的 loss 的定义 LAPP 。很容易将这个 loss 扩展到整个 item set 。

  3. Modeling Sequence-Item Correlation:传统的序列推荐模型通常被训练用于预测 item item 。这种方法只考虑了 item sequence 从左到右的 sequential characteristics。然而需要注意的是,在训练过程中模型实际上可以观察到整个交互序列。受类似 BERT 的 masked language model: MLM的启发,我们提出通过完形填空任务来对 item sequence 中的双向信息进行建模。对于我们的任务,完形填空设置如下:在每个 training step 中,我们随机掩码 input sequence 中一定比例的 items (即用 special tokens “ [mask] ” 来替换它们)。然后,我们根据双向的上下文,从原始序列中预测 masked items 。 因此,我们考虑的第二个损失是利用 input sequences 的双向上下文来恢复 actual item 。为此,我们准备了 Base Model 的一个 pre-trained 版本,它是一个双向 Transformer 架构。举例来说,假设我们在序列 {i1,⋯,it,⋯,in} 中掩码第 t 个 item it ,将剩余的序列 {i1,⋯,mask,⋯,in} 作为 it 的上下文,记作 Cit 。给定上下文 Cit 和 masked item it ,我们将它们视为两个不同的视图进行融合,以学习 data representations 。根据 Ep(X,Y)[fθ(x,y)−log⁡∑y~∈Yexp⁡fθ(x,y~)],我们最小化 Masked Item Prediction: MIP 损失:

    LMIP(Cit,it)=f(Cit,it)−log⁡∑i~∈I∖{it}f(Cit,i~)

    其中:

    • i~ 表示 irrelevant item 。

    • f(⋅,⋅) 根据以下公式实现:

      f(Cit,it)=σ(Ft⊤WMIPe→it)

      其中:WMIP∈Rd×d 是一个待学习的参数矩阵;Ft 为使用与 Self-Attention Block 章节中相同的方式并通过双向Transformer 架构得到的第 t 个位置的 learned representation 。

  4. Modeling Sequence-Attribute Correlation:在对 item-attribute correlation 和 sequence-item correlation 进行建模之后,我们进一步考虑直接将 attribute 信息与 sequential contexts 进行融合。具体来说,我们采用与 Modeling Sequence-Item Correlation 类似的方法,基于 surrounding contexts 来恢复 masked item 的 attributes 。给定一个 masked item it ,我们将其 surrounding contexts Cit 和 attribute set Ait 视为用于互信息最大化( MIM )的两个不同视图。因此,我们可以通过以下方式开发 Masked Attribute Prediction: MAP 损失:

    LMAP(Cit,Ait)=Ea∈Ait[f(Cit,a)−log⁡∑a~∈A∖Aiexp⁡(f(Cit,a~))]

    其中:

    • a~ 表示采样的 negative attributes 。

    • f(⋅,⋅) 根据以下公式实现:

      f(Cit,a)=σ(Ft⊤WMAPe→a)

      其中:WMAP∈Rd×d 是一个待学习的参数矩阵。

    需要注意的是,现有方法很少直接对 sequential context 和属性信息之间的 correlation 进行建模。然而,我们希望显式地对这种 correlation 进行建模,以获得更有意义的监督信号,这对于改进多粒度信息的 data representations 是有用的。

    注意:这里是通过 surrounding contexts 的 item id (而不是属性),来预测 masked item 的属性。

  5. Modeling Sequence-Segment Correlation :如上文所示,完形填空学习(Cloze learning )策略在我们的预训练方法中,对于融合 sequential contexts 和 target information 起着关键作用。然而,item sequence 与 word sequence 的一个主要区别在于:单个 target item 可能与 surrounding contexts 的相关性并不高。例如,用户购买某些商品可能仅仅是因为它们在打折。基于这种考虑,我们将完形填空策略从单个 item 扩展到 item subsequence (即 segment )。显然,一个 item segment 比单个 item 更能反映清晰的、稳定的用户偏好。因此,我们采用与 Modeling Sequence-Item Correlation 类似的策略,从 surrounding contexts 恢复 item subsequence 。我们期望以此来增强自监督学习信号,并提高 pre-trained performance 。

    令 ij1:j2 表示从 item ij1 到 ij2 的子序列,Cij1:j2 表示 ij1:j2 在整个序列中的上下文。与公式 LMIP(Cit,it) 类似,我们可以用互信息最大化(MIM )公式来恢复缺失的 item segment ,即所谓的 Segment Prediction: SP 损失:

    LMIP(Cij1:j2,ij1:j2)=f(Cij1:j2,ij1:j2)−log⁡∑i~j1:j2f(Cit,i~j1:j2)

    其中:

    • i~j1:j2 为 corrupted negative subsequence 。

    • f(⋅,⋅) 根据以下公式实现:

      f(Cij1:j2,ij1:j2)=σ(s→⊤WSPs→~)

      其中:WSP∈Rd×d 是一个待学习的参数矩阵;s→,s→~ 别是上下文 Cij1:j2 和子序列 ij1:j2 的 learned representations 。为了学习 s→,s→~,我们应用双向 Transformer 来获得序列中最后一个位置的 state representations 。

1.2.3 学习与讨论

  1. 在这部分,我们介绍 S3-Rec 用于序列推荐的学习过程及相关讨论。

  2. 学习过程:S3-Rec 的整个过程包括两个重要阶段,即 pre-training 阶段和 fine-tuning 阶段。我们在两个阶段分别采用双向 Transformer 和单向 Transformer 架构。

    • 在预训练阶段,我们通过考虑四种不同类型的相关性来优化自监督学习目标。

    • 在微调阶段,我们利用预训练阶段学到的参数来初始化单向 Transformer 的参数,然后利用从左到右的监督信号来训练网络。我们采用 pairwise rank loss 来优化其参数:

      Lmain=−∑u∈U∑t=1nlog⁡σ(P(it+1∣i1:t)−P(it+1−∣i1:t))

      其中,我们将每个 ground-truth item it+1 和一个随机采样的 negative item it+1− 配对。

  3. 讨论:我们的工作提供了一种新颖的自监督方法,通过 pre-trained models 从输入中捕获固有的数据相关性,并将其作为额外信号。这种方法具有很强的通用性,许多现有方法都可以纳入这个框架。下面我们进行简要讨论。

    • Feature-based 方法,如因子分解机(Factorization Machine: FM )和 AutoInt ,主要通过 context features 之间的交互来学习 data representations。final prediction 是根据 user and item features 之间的实际交互结果来做出的。在S3-Rec 中,associated attribute prediction loss LAAP 和 masked attribute prediction loss LMAP 在特征交互方面有类似的效果。然而,我们并没有显式地对 attributes 之间的交互进行建模,而是专注于捕获 attribute 信息与 item/sequential contexts 之间的关联。我们工作的一个主要区别在于,利用特征交互作为额外的监督信号来增强 data representations,而不是用于直接进行预测。

    • Sequential models 方法,如 GRU4Rec 和 SASRec 主要侧重于按从左到右的顺序对 contextual items 和 target item 之间的序列依赖关系(sequential dependencies )进行建模。S3-Rec 额外引入了一个预训练阶段,利用四种不同类型的自监督学习信号来增强 data representations。特别是,masked item prediction loss LMIP 与 GRU4Rec、SASRec 在捕获序列依赖关系方面有类似的效果,不同之处在于它还可以利用双向序列信息。

    • Attribute-aware sequential models 方法,如 TransFM 和 FDSA 利用 contextual features 来改进序列推荐模型,这些特征被视为辅助信息,用于增强 representation of items or sequences 。在我们的 S3-Rec 中,LAAP 损失和 LMAP 损失旨在将 attribute 与 items or sequential contexts 进行融合,这能够达到与之前方法相同的效果。此外,pre-trained data representations 也可以用于改进现有方法。

1.3 实验

  1. 数据集:我们在从四个真实世界平台收集的六个数据集上进行实验,这些数据集具有不同的领域和稀疏度水平。预处理后这些数据集的统计信息总结在 Table 1 中。

    • Meituan 数据集:该数据集包含 2014 年1 月至 2020 年1 月美团平台在北京的六年交易记录。我们选择类别、位置以及从客户评论中提取的关键词作为 attributes 。

    • Amazon Beauty, Sports, and Toys :这三个数据集来自 Amazon 评论数据集。在本研究中,我们选择了三个子类别:“美妆”、“运动与户外” 和 “玩具与游戏”,并将商品的 fine-grained categories 和品牌作为 attributes 。

    • Yelp 数据集:这是一个用于商业推荐的流行数据集。由于其规模非常大,我们仅使用 2019 年 1 月1 日之后的交易记录。我们将商业类别作为 attributes 。

    • LastFM 数据集:这是一个音乐艺术家推荐数据集,包含用户对艺术家的 tagging behaviors 。在该数据集中,用户给艺术家的 tags 被用作 attributes 。

    对于所有数据集,我们按对 interaction records 按照 user 进行分组,并按交互时间戳升序排序。遵循以往研究,我们仅保留 5-core datasets ,并过滤掉低于 5 条 interaction records 的冷门 items 和不活跃用户。

  2. 评估指标:我们采用 top-k Hit Ratio: HR@k 、top- k Normalized Discounted Cumulative Gain: NDCG@k 、以及 Mean Reciprocal Rank: MRR 来评估性能,这些指标在相关工作中被广泛使用。由于 HR@1 等于 NDCG@1 ,我们报告 HR@{1, 5, 10} 、NGCG@{5, 10} 和 MRR 的结果。

    遵循以往工作,我们采用留一法(leave-one-out)进行评估。具体来说,对于每个 user interaction sequence,最后一个 item 用作测试数据,倒数第二个 item 用作验证数据,其余数据用于训练。由于 item set 较大,使用所有 items 作为测试的 candidates 非常耗时。按照常见策略,我们将 ground-truth item 与 99 个用户未交互过的随机采样 negative items 进行配对。我们根据 items 的 ranking 来计算所有指标,并报告所有测试用户的平均得分。

  3. Baseline Models:

    • PopRec:一种非个性化的方法,根据交互次数来衡量的流行度对 items 进行排名。

    • FM :使用 factorized model 来描述变量之间的 pairwise interactions 。

    • AutoInt:利用多头自注意力神经网络来学习特征交互。

    • GRU4Rec:应用GRU 对 user click sequence 进行建模,用于 session-based recommendation 。我们使用 embedding 向量而不是 one-hot 来表示 items 。

    • Caser :一种 CNN-based 的方法,通过应用水平卷积和垂直卷积操作来捕获高阶马尔可夫链,用于序列推荐。

    • SASRec :一种 self-attention based 的序列推荐模型,使用 multi-head attention 推荐 next item 。

    • BERT4Rec :通过双向 self-attention 机制,使用完形填空目标损失进行序列推荐。

    • HGN:最近提出的方法,采用 hierarchical gating networks 来捕获用户的长期兴趣和短期兴趣。

    • GRU4RecF :GRU4Rec 的改进版本,利用 attributes 来提高性能。

    • SARRecF :我们对 SASRec 的扩展,将 representations of item and attribute 拼接起来作为模型的输入。

    • FDSA :构建一个 feature sequence ,并使用 feature-level self-attention block 对特征转移模式(feature transition patterns )进行建模。这是序列推荐中的 SOTA 模型。

  4. 实现细节:

    • 对于 Caser 和 HGN ,我们使用作者提供的源代码。对于其他方法,我们使用 PyTorch 实现。所有超参数均按照原始论文的建议进行设置。

    • 对于我们提出 S3-Rec,我们将 self-attention blocks 的数量和 attention heads 的数量均设置为 2 。embedding 维度为 64,最大序列长度为 50 (遵循 《Self-Attentive Sequential Recommendation》)。需要注意的是,我们的训练阶段包含两个阶段(即预训练阶段和微调阶段),预训练阶段学到的参数用于初始化微调阶段模型的 embedding layers 和 self-attention layers 。

      • 在预训练阶段,item 的掩码比例设置为 0.2 ;据经验实验,四个损失(即 AAP、MIP、MAP 和 SP)的权重分别设置为 0.2、1.0、1.0 和 0.5 。

      • 我们使用 Adam 优化器,学习率为 0.001 ,预训练阶段的 batch size = 200 ,微调阶段的 batch size = 256 。我们对模型进行 100 epochs 预训练,然后在推荐任务上进行微调。

      代码和数据集可在链接:https://github.com/RUCAIBox/CIKM2020-S3Rec 上获取。

1.3.1 实验结果

  1. 不同方法在所有数据集上的结果如 Table 2 所示。基于这些结果,我们可以发现:

    • 对于三个 non-sequential 的基线方法,在所有数据集上的性能顺序是一致的,即 PopRec > AutoInt > FM 。

      • 由于 product adoption 中的 “富者更富” 效应,PopRec 是一个鲁棒的基线。

      • 在大多数数据集上,AutoInt 的表现优于 FM ,因为 multi-head self-attention 机制具有更强的 model attributes 的能力。然而,在 Meituan 数据集上,AutoInt 的性能比 FM 差。一个潜在的原因是, multi-head self-attention 可能会从 attributes 中引入更多噪声,因为这些 attributes 是从美团平台的评论中提取的关键词。

      一般来说,non-sequential recommendation 方法的性能比序列推荐方法差,因为在我们的任务中考虑序列模式(sequential pattern )很重要。

      有点不太符合预期,基于规则的、非个性化的PopRec 居然超越了 AutoInt 和 FM 。可能是因为模型的超参数没有优化好。

    • 对于序列推荐基线方法:

      • SASRec 和 BERT4Rec 分别利用单向的和双向的 self-attention 机制,并且比 GRU4Rec 和 Caser 取得了更好的性能。这表明 self-attention 架构特别适合对序列数据进行建模。然而,在使用传统的 next-item prediction loss 进行训练时,它们的改进并不稳定。

      • 此外,HGN 取得了与 SASRec 和 BERT4Rec 相当的性能。这表明 hierarchical gating network 能够很好地对紧密相关的 items 之间的关系进行建模。

      • 但是,当直接将 attribute 信息注入 GRU4Rec 和 SASRec (即 GRU4RecF和 SRSRecF)时,性能提升并不一致。这种方法在美妆、运动、玩具和 Yelp 数据集上有性能提升,但在其他数据集上却产生负面影响。一个可能的原因是,简单地拼接 item representations 及其 attributes representations 无法有效地融合这两种信息。

      • 在大多数情况下,FDSA 在所有基线方法中取得了最佳性能。这表明 feature-level self-attention blocks 能够捕获到有用的 sequential feature interaction patterns 。

    • 最后,通过将我们的方法与所有基线进行比较,可以明显看出,S3-Rec 在六个数据集上的表现始终优于它们,且优势明显。与这些基线不同,我们采用自监督学习来增强 representations of the attribute, item, and sequence 从而用于推荐任务,其中包含四个预训练目标,通过互信息最大化(MIM)对多种 data correlations 进行建模。这一结果也表明,自监督方法对于提高用于序列推荐的 self-attention 架构的性能是有效的。

1.3.2 进一步分析

  1. 接下来,我们继续研究 S3-Rec 在更详细的分析中是否表现良好。

  2. 消融研究:我们提出的自监督方法 S3-Rec 基于互信息最大化(MIM )设计了四个预训练目标。为了验证每个目标的有效性,我们在美团、美妆、运动和玩具数据集上进行消融研究,分析每个目标的贡献。本评估采用 NDCG@10 指标。同时还提供了最佳基线 FDSA 的结果作为比较。

    从 Figure 2 的结果中,我们可以观察到:

    • 去除任何一个自监督目标都会导致性能下降。这表明所有目标都有助于提高推荐性能。

    • 此外,这些目标的重要性在不同数据集上有所不同。总体而言,AAP (Associated Attribute Prediction)和 MAP (Masked Attribute Prediction)比其他目标更重要。在所有数据集上,去除这两个目标中的任何一个都会导致性能大幅下降。一个可能的原因是,这两个目标利用 attributes 信息增强了 representations of item and sequence 。

  3. 将自监督学习应用于其他模型:由于自监督学习本身是一种学习范式,它通常可以应用于各种模型。因此,在本部分中,我们进行了一项实验,以检验我们的方法是否能为其他模型带来改进。我们使用自监督方法在美妆和玩具数据集上对一些基线模型进行预训练。对于 GRU4Rec、 GRU4RecF、SASRec 和 SASRecF,我们直接应用我们的预训练目标来改进它们。值得注意的是,GRU4Rec 和 SASRec 是单向模型,因此在预训练阶段我们维持单向的 encoder layer 。对于 AutoInt 和 Caser ,由于它们的架构不支持某些预训练目标,我们仅利用 pre-trained parameters 来初始化 embedding layers 的参数。

    美妆和玩具数据集上NDCG@10 的结果如 Figure 3 所示。

    • 首先,经过我们的方法预训练后,所有基线模型都取得了更好的性能。这表明自监督学习也可以应用于提高它们的性能。

    • 其次,S3-Rec 在预训练后优于所有基线模型。这是因为我们的模型采用了在预训练阶段中的双向 Transformer encoder ,更适合我们的方法。

    • 第三,我们可以看到 GRU-based 的模型的改进程度比其他模型小。一个可能的原因是RNN-based 的架构限制了自监督学习的潜力。

  4. 不同训练数据量下的性能比较:传统的推荐系统需要大量的训练数据,因此在实际应用中可能会受到冷启动问题的影响。我们的方法可以缓解这个问题,因为所提出的自监督学习方法可以更好地利用输入中的 data correlation 。我们通过使用完整数据集的不同比例(即 20%、40%、60%、80% 和 100% )来模拟数据稀疏场景。

    Figure 4 展示了在运动和Yelp 数据集上的评估结果。

    • 正如我们所见,当使用较少的训练数据时,性能会大幅下降。

    • 然而,S3-Rec 在所有情况下都始终优于基线,尤其是在极端稀疏水平(20% )下。这一观察结果表明,S3-Rec 能够通过自监督方法更好地利用数据,在一定程度上减轻了序列推荐中数据稀疏问题的影响。

  5. 不同预训练 epochs 下的性能比较:我们的方法包括预训练阶段和微调阶段。在预训练阶段,我们的模型可以学习 enhanced representations of the attribute, item, subsequence, and sequence 从而用于推荐任务。预训练 epochs 会影响推荐任务的性能。为了研究这一点,我们使用不同的预训练 epochs 对模型进行预训练,并在推荐任务上进行微调。 Figure 5 展示了在美妆和玩具数据集上的结果。水平虚线表示 without pre-training 时的性能。我们可以看到:我们的模型在 first 20 pre-training epochs 中受益最大。之后,性能提升幅度较小。

    基于这一观察结果,我们可以得出结论,通过少量的预训练 epochs ,我们的自监督学习方法可以很好地捕获不同视图(即 the attribute, item, subsequence, and sequence )之间的相关性。因此,enhanced data representations 可以提高序列推荐的性能。

  6. 收敛速度比较:在获得 attribute, item, and sequence 的 enhanced representations 后,我们在推荐任务上对模型进行微调。为了检验在最终推荐任务上的收敛速度,我们逐渐增加微调阶段的 epochs ,并比较我们的模型和其他基线模型的性能。 Figure 6 展示了在美妆和玩具数据集上的结果。可以观察到:我们的模型收敛速度快,在大约 40 epochs 后达到最佳性能。与我们的模型相比,基线模型需要更多 epochs 才能达到稳定性能。

    这一结果表明,我们的方法可以利用 pre-trained parameters 帮助模型更快收敛并取得更好的性能。