一、FDSA [2019]

《Feature-level Deeper Self-Attention Network for Sequential Recommendation》

  1. 序列推荐旨在预测用户在不久的将来可能与之交互的 next item ,这在各种互联网应用中至关重要。现有方法通常考虑 items 之间的转移模式(transition patterns ),但忽略了 features of items 之间的转移模式。我们认为,仅 item-level sequences 无法揭示完整的序列模式(sequential patterns ),而显式的和隐式的 feature-level sequences 有助于提取完整的序列模式。在本文中,我们提出了一种名为 Feature-level Deeper Self-Attention Network: FDSA 的序列推荐新方法。具体来说:

    • FDSA 首先通过普通注意力机制将 items 的各种异构特征以不同权重整合到 feature sequences 中。

    • 然后,FDSA 分别在 item-level sequencesfeature-level sequences 上应用独立的 self-attention blocks,对 item transition patternsfeature transition patterns 进行建模。

    • 接着,我们将这两个模块的输出整合到一个全连接层(fully-connected layer )中,以进行 next item recommendation

    最后,综合实验结果表明,考虑特征之间的转移关系可以显著提高序列推荐的性能。

  2. 随着互联网的快速发展,序列推荐在 ad click predictionpurchase recommendationweb page recommendation 等各种应用中变得至关重要。在这些应用中,每个用户行为都可以被建模为按时间顺序排列的 activities 的序列,用户后续的 activities 会受到之前 activities 的影响。序列推荐旨在通过从用户历史行为中捕获有用的序列模式(sequential patterns ),来推荐用户可能与之交互的 next item 人们对序列推荐的研究兴趣日益浓厚,并提出了各种模型。

    • 为了对序列模式进行建模,经典的 Factorizing Personalized Markov Chain: FPMC 模型通过考虑马尔可夫链来分解 user-specific 的转移矩阵。然而,马尔可夫假设在构建因子之间更有效的关系方面存在困难。

    • 随着深度学习的成功,Recurrent Neural Network: RNN 方法在序列推荐中得到了广泛应用。这些 RNN 方法通常使用 RNN 的最后一个 hidden state 作为 user representation ,用于预测 next action 。尽管取得了成功,但即使使用 Long Short-Term Memory: LSTMGated Recurrent Units: GRU 等先进的 memory cell 结构,这些 RNN 模型也难以保持长程依赖关系(long-range dependencies )。此外,RNN-based 的方法需要学习前向地 step by step 地传递 relevant information ,这使得 RNN 难以并行化。

    • 最近,自注意力网络(self-attention networks: SANs )在机器翻译、自然语言推理和问答等各种自然语言处理任务中取得了有前景的实证结果。自注意力网络的一个优点是能够通过计算序列中每对 items 之间的注意力权重来捕获长程依赖关系。受自注意力网络的启发,《Self-attentive sequential recommendation》 提出了自注意力序列推荐模型(Self-Attentive Sequential Recommendation: SASRec ),该模型应用自注意力机制取代传统的 RNN 进行序列推荐,并取得了 SOTA 的性能。然而,它只考虑了 items 之间的序列模式,忽略了features 之间的序列模式,而后者对捕获用户细粒度偏好是有益的。

    实际上,我们的日常活动通常在 item feature level (即,类别等显式特征、或其他隐式特征)呈现转移模式。例如,用户在购买衣服后更有可能购买鞋子,这表明 next product 的类别与 current product 的类别高度相关。

    • 这里,我们将用户对结构化的属性(如 categories )的演变的偏好(evolving appetite )称为显式特征转移( explicit feature transition )。

    • 此外,一个 item 可能还包含一些其他非结构化的属性,如描述文本或图像,这些属性提供了 item 更多细节。因此,我们希望从这些非结构化属性中挖掘用户潜在的 feature-level patterns ,我们称之为隐式特征转移(implicit feature transition )。

    然而,现有方法往往忽略了 item features 之间的显式的和隐式的特征转移。我们认为,仅 item-level sequences 无法揭示完整的序列模式,而 feature-level sequences 可以更好地帮助实现这一目标。为此,在这项工作中,我们提出了一种新颖的 feature-level deeper self-attention network 用于序列推荐。

    • 为了捕获 explicit feature-level transition patterns ,我们没有使用 combined representation of item and its features ,而是分别在 item sequencesfeature sequences 上应用独立的 self-attention blocks ,以捕获 item-itemfeature-feature 之间的关系。然后,我们结合 item-levelfeature-levelcontext 进行推荐。

    • 此外,我们进一步研究如何从 items 的异构属性中捕获有意义的 implicit feature transition patterns 。我们额外利用普通注意力机制来辅助 feature-based self-attention block ,从 items 的各种类型属性中自适应地选择重要特征,并进一步学习潜在的 implicit feature transition patterns

    • 然后,我们将 item transition patternsimplicit feature transition patterns组合到一个全连接层中进行推荐。

    最后,我们在一个著名电子商务平台的两个真实数据集上进行了广泛的实验。实验结果表明,考虑 feature-level transition patterns 可以显著提高推荐性能。

    本文的主要贡献总结如下:

    • 我们提出了一种新颖的框架用于序列推荐,即 Feature-level Deeper Self-Attention Network: FDSAFDSA 应用 self-attention networksitem-level transitionsfeature-level transitions 相结合,从而对用户的序列意图进行建模。

    • 通过分别在 item sequencesfeature sequences 上应用不同的 self-attention blocks ,我们对 explicit and implicit feature transitions 进行建模。为了获得 implicit feature transitions ,我们添加了普通注意力机制来辅助 feature-based self-attention block ,从 item 的各种属性中自适应地选择重要特征。

    • 我们在两个真实数据集上进行了广泛的实验,以证明我们提出的方法的有效性。

1.1 模型

1.1.1 问题描述

  1. 在详细介绍我们提出的模型之前,我们首先介绍本文中使用的符号,并定义序列推荐问题。我们用 U={u1,u2,,uN} 代表用户集合,I={i1,i2,,iM} 代表 item 集合,其中 N 为用户数量、Mitems 数量。我们使用 S={s1,s2,,s|S|} 表示用户之前与之交互过的按时间顺序排列的 items 序列,其中 siI 。每个 item i 都有一些属性,如类别、品牌和描述文本。这里我们以类别为例,item i 的类别表示为 ciC ,其中 C 为类别集合。序列推荐的目标是:在给定用户在 items 上的历史活动的情况下,推荐用户可能采取行动的 next item

1.1.2 FDSA

  1. 如前所述,日常人类活动通常呈现 feature-level (如 category-level )的转移模式(transition patterns )。在本文中,我们提出了一种新颖的用于序列推荐的 feature-level deeper self-attention networkFDSA)。FDSA 不仅利用 item-based self-attention block 来学习 item-level sequence patterns ,还利用 feature-based self- attention block 来搜索 feature-level transition patterns

    Figure 1 所示,FDSA 由五个组件组成,即 Embedding layerVanilla Attention layerItem-based self-attention blockFeature-based self-attention block 、以及 Fully-connected layer 。具体来说:

    • 我们首先将 itemssparse representationitemsdiscrete attributes (即 onehot representation)投影到低维稠密向量中。对于 items 的文本属性,我们使用 topic model 提取这些文本的 topical keywords ,然后应用 Word2vector 获得这些关键词的 word vector representation

    • 由于 items 的特征(属性)通常是异构的,并且来自不同的领域和数据类型。因此,我们利用普通注意力机制来辅助 self-attention network ,从 items 的各种特征中自适应地选择重要特征。

    • 之后,通过两个 self-attention networks 学习用户的 sequence patterns ,其中 item-based self-attention block 用于学习 item-level sequence patternsfeature-based self-attention block 用于捕获 feature-level transition patterns

    • 最后,我们将这两个模块的输出整合到一个全连接层中,以获得 final prediction

    接下来,我们将介绍 FDSA 每个组件的详细信息。

  2. Embedding layer:由于用户行为序列的长度不固定,我们从用户历史序列中选取一个固定长度的序列 s=(s1,s2,,sn) 来计算用户的历史偏好,其中 n 表示我们的模型处理的最大长度。

    • 如果用户的行为序列长度小于 n ,我们在序列左侧添加零填充,将用户的行为序列转换为固定长度。

    • 如果用户的行为序列长度大于 n ,我们选取最近的 n 个行为。

    同样地,我们以相同的方式处理 feature sequence 。以类别信息为例,由于每个 item 都对应一个类别,我们得到一个固定长度的category sequence c=(c1,c2,,cn) 。然后,我们应用 lookup layer 将行为序列 s 及其相应的category sequence cone-hot 向量转换为稠密向量。对于其他 categorical features(如品牌、卖家),也采用相同的方法。

    对于文本特征(即描述文本、标题),我们首先利用广泛使用的 topic model 提取文本的 topical key-words ,然后应用 Word2vector 模型来学习文本的 semantic representations。在本文中,我们从每个 item 的描述文本和标题中提取五个 topical keywords,然后应用均值池化方法将五个 topical keyword vectors 融合为一个向量。

  3. Vanilla attention layer:由于 items 的特征通常是异构的,很难知道哪些特征将决定用户的选择。因此,在捕获用户对属性(如类别、品牌)多样化偏好的过程中,我们采用普通的注意力机制来辅助 feature-based self-attention block 。给定 item i ,它的属性的 embeddings 为:

    Ai={vec(ci),vec(bi),vec(itemitext)}

    其中:

    • vec(ci),vec(bi) 分别表示 item i 的类别和品牌的密集向量。

    • vec(itemitext) 表示 item i 的文本特征的 representation

    形式上,注意力网络定义如下:

    αi=softmax(WfAi+bf)

    其中:WfRd×dbfRd

    注意,这个公式应该是:

    αi=softmax({Wfvec(ci)+bf,Wfvec(bi)+bf,Wfvec(itemitext+bf)})

    最后,我们将 item ifeature representation 计算为 item iattribute vector representations 的加权和,权重为注意力分数,如下所示:

    fi=αiAiRd

    值得注意的是,如果 item i 只考虑一个特征(如类别),那么 item ifeature representation 就是 vec(ci)

    上述公式描述有问题,读者认为应该是这样的:

    Ai={vec(ci),vec(bi),vec(itemitext)}Rd×3αi=softmax(Wfflatten(Ai)+bf)R3×1fi=AiαiRd×1

    其中:

    • flatten()Ai 展平为 (3d)×1 的向量。

    • WfR3×3d,bfR3×1 为待学习的参数,它们来自于一个 DenseLayer。这个 DenseLayer 的输入单元为 3d 、输出单元为 3 、激活函数为 sigmoid

  4. Feature-based self-attention block:由于 item-based self-attention blockfeature-based self-attention block 仅在输入上有所不同,我们重点详细说明 feature-based self-attention block 的过程。从上述注意力层中,我们可以得到 item ifeature representation fi 。因此,对于给定的用户,我们得到 feature sequencef={f1,f2,,fn}

    为了对 feature-level transition patterns 进行建模,我们利用自注意力网络,该网络可以保留序列上下文信息,并捕获类别序列中类别之间的关系,而不管它们之间的距离。虽然自注意力网络可以确保计算效率并导出长程依赖关系,但它忽略了序列输入的位置信息。因此,我们将一个位置矩阵 PRn×d 注入到 input embedding 中。即 feature-based self-attention block的输入矩阵为:

    F=[f1+p1f2+p2fn+pn]Rn×d

    scaled dot-product attention: SDPA 为:

    SDPA(Q,K,V)=softmax(QKd)V

    其中:Q,K,V 分别表示查 query, key, valued 表示每个特征的特征维度。

    这里,the feature-based self-attention block 中的 query, key, value 都来自 F 。我们首先通过线性变换将 F 转换为三个矩阵,然后将它们馈入到 SDPA 中,如下所示:

    Hf=SDPA(FWQ,KWK,VWV)

    其中:WQ,WK,WVRd×d 都是投影矩阵。为了使模型能够在不同位置联合关注来自不同 representation subspaces 的信息,自注意力采用 multi-head attention: MHmulti-head attention 定义如下:

    Mf=MH(F)=concat(Hf,1,Hf,2,,Hf,lf)WOHf,i=SDPA(FWiQ,KWiK,VWiV)

    其中:WO,WiQ,WiK,WiV 表示待学习的参数;lffeature-based self-attention block 中的 head 数量。

    此外,自注意力网络采用残差连接、layer normalization 和带有 ReLU 激活函数的两层全连接层来增强自注意力网络的性能。最后,feature-based self-attention block 的输出定义如下:

    Mf=LayerNorm(Mf+F)Of=ReLU((MfW1+b1)W2+b2)Of=LayerNorm(Of+Mf)

    其中:W,b 为模型参数。

    为了简单起见,我们将整个自注意力模块定义如下:

    Of=SAB(F)Rn×d

    在第一个 self-attention block 之后,Of 基本上聚合了所有先前特征的 embeddings 。然而,它可能需要通过另一个基于 Of 的自注意力块来捕获更复杂的 feature transitions 。因此,我们堆叠 self-attention block ,第 q 个(q>1block 定义如下:

    Of(q)=SAB(Of(q1))Rn×d

    其中:Of(0)=F

  5. Item-based self-attention blockitem-based self-attention block 的目标是学习有意义的 item-level transition patterns 。对于给定的用户,我们可以得到一个 item action sequence s ,其相应矩阵为 S。因此,堆叠的 item-based self-attention block 的输出为:

    Os(q)=SAB(Os(q1))Rn×d

    其中:Os(0)=SRn×d

  6. Fully-connected layer :为了同时捕获 items 的和特征的 transition patterns ,我们将 item-based self-attention block 的输出 Os(q)feature-based self-attention block 的输出 Of(q) 拼接起来,并将它们投影到一个全连接层中:

    Osf=[Os(q);Of(q)]Wsf+bsfRn×d

    其中:WsfR2d×d,bsfRd

    注意:bsf 在所有 nposition 上进行广播。

    最后,我们通过点积运算计算用户对 item 的偏好:

    yt,iu=os,ftni

    其中:

    • os,ft 表示 Osf 的第 t 行,表示第 tpositionrepresentation

    • NRM×ditem embedding matrixni 为其中的第 i 项表示第 iitemembedding

    • yt,i 是在给定前 titems (即,s1,s2,,st )的情况下,item i 作为 next itemrelevance

    值得注意的是,在训练过程中,模型输入一个序列 (i1,i2,,in1) ,其期望输出是同一序列的 “移位” 版本:(i2,i3,,in) 。在测试过程中,我们取矩阵 Os,f 的最后一行来预测 next item

1.1.3 损失函数

  1. 在本小节中,为了从训练过程中有效地学习,我们采用二元交叉熵损失作为FDSA 模型的优化目标函数,定义如下:

    L=ist[1,2,,n][log(σ(yt,i))+jslog(1σ(yt,j))]

    此外,对于每个行为序列中的每个 target item i ,我们随机采样一个 negative item j

1.2 实验

  1. 在本节中,我们进行实验以评估所提出的 FDSA 方法在两个真实数据集上的性能。我们首先简要介绍数据集和基线方法,然后将 FDSA 与这些基线方法进行比较。最后,我们分析实验结果。

  2. 数据集:我们在两个公开可用的数据集上进行实验,即 Amazon 数据集和 Tmall 数据集。

    • Amazon 是一个电子商务平台,广泛用于 product recommendation 的评估。我们采用其中一个子类别:玩具和游戏(Toys and Games )。对于 Toys and Games 数据集,我们过滤掉评分少于 5items 的用户、以及被少于 10 个用户评分的 items 。该数据集中,每个 item 的特征集合包含类别、品牌和描述文本。

    • Tmall 是中国最大的 B2C 平台,我们使用的是从 IJCAI 2015 竞赛中获得的 user-purchase 数据。我们移除了被少于 30 个用户观察到的 items,并剔除了评分少于 15items 的用户。Tmall 数据集中每个 item 的特征是类别、品牌和卖家。

    两个数据集的统计信息总结在 Table 1 中。

  3. 评估指标:为了评估每个模型在序列推荐中的性能,我们采用两个广泛使用的评估指标,即:hit ratio: Hitnormalized discounted cumulative gain: NDCGHit ratio 衡量推荐的准确性;NDCG 是一种位置感知指标,对较高位置赋予更大的权重。在我们的实验中,我们选择 K={5,10} 来说明 Hit@KNDCG@K 的不同结果。

  4. 实现细节:除非文中另有说明,我们将所有模型的 embedding 维度固定为 100batch size 固定为 10 。此外,在两个数据集上,最大序列长度 n 都设置为 50

  5. 基线方法:我们将我们的模型 FDSA 与以下基线方法进行比较,简要介绍如下:

    • PopRec :根据 items 的流行度对 items 进行排名。将最受欢迎的 items 推荐给用户。

    • BPR :是一种从隐式反馈数据中构建推荐系统的经典方法,它提出了一种 pair-wise 损失函数来建模用户的相对偏好。

    • FPMC :融合矩阵分解和一阶马尔可夫链,分别捕获长期偏好和短期 item-item transitions ,用于 next item 的推荐。

    • TransRec :将用户视为连接 itemsrelational vector

    • GRU4Rec :应用 GRU 对用户点击序列进行建模,用于 session-based 的推荐。

    • CSAN :基于自注意力网络对多种类型的行为和多模态内容进行建模。在这里,我们仅考虑数据集中的内容和行为。

    • SASRec :是一种基于自注意力的序列模型,它可以考虑 consumed items 来推荐 next item

    • SASRec+ :是我们对 SASRec 方法的扩展,它将 item vector representationscategory vector representations 拼接在一起,作为 item-level 自注意力网络的输入。

    • SASRec++ :是我们对 SASRec 方法的扩展,它将 item representationitems 的各种异构特征拼接在一起,作为 item-level 自注意力机制的输入。

    • CFSA :是我们提出的方法的简化版本,它仅考虑类别特征。它分别在 item-level sequencescategory-level sequences 上应用独立的 self-attention blocks

    有没有考虑将各种异构特征 sum 起来而不是拼接起来,类似于 position embedding 的使用方式?

  6. 性能比较:我们将 FDSA 的性能与十个基线方法在 HitNDCG 指标上进行比较。Table 2 报告了它们在两个数据集上的整体实验性能。我们对实验分析总结如下:

    • 首先,在两个数据集上,BPRGRU4Rec 的性能均优于 PopRec 。这表明了个性化推荐方法的有效性。

      在基线方法中,序列模型(如 FPMCTransRec )在两个数据集上的表现通常优于非序列模型(即 BPR )。这证明了在 next item recommendation 时考虑序列信息的重要性。

    • 其次,与 FPMCTransRec 相比,SASRec 在两个指标上表现更优。这证实了使用自注意力机制对序列模式进行建模的优势。

      尽管 CSANitems 的异构特征拼接在 item representation 中,以帮助自注意力机制学习序列模式,但自注意力机制可能只能更好地建模时间顺序信息。然而,SASRec 不仅使用自注意力机制捕获长期偏好,还通过残差连接考虑了短期偏好(即最近一个行为)。

    • 第三,SASRec +SASRec++Toys and Games 数据集上的结果优于SASRec ,但在 Tmall 数据集上的表现比 SASRec 差。这种现象可以解释为,将 items’ representationsitems’ feature representations 拼接在一起作为自注意力机制的输入向量,可能无法稳定地对序列模式进行建模。

      此外,CFSA 的性能优于 SASRec+FDSA 的性能超过 SASRec++ 。这表明,分别在 item-level sequencesfeature-level sequences 上应用独立的 self-attention blocks 来捕获 item transition patternsfeature transition patterns (即 CFSAFDSA ),比将 item representations 及其 feature representations 的拼接作为自注意力机制的输入(即 SASRec +SASRec++ )更有效。

      上述实验表明,通过两个独立的 item-level sequencesfeature-level sequencesitem transition patternsfeature transition patterns 进行建模,对于序列推荐是有价值且有意义的。

    • 最后,无论数据集和评估指标如何,我们提出的 FDSA 都取得了最佳性能。

      • 我们的简化模型 CFSA 始终优于大多数基线方法。这表明了使用自注意力网络对独立的 category-level sequences 进行建模的有效性。

      • FDSA 的性能优于 CFSA ,这表明在 feature-level sequences 中对更多特征进行建模的有效性。

  7. 超参数的影响:我们研究了超参数的影响,如 embedding 维度 ditem-based self-attention block 中的 headlsfeature-based self-attention block 中的 headlf 。由于篇幅限制,我们仅展示 NDCG@10 的实验结果。在 Hit@10 指标上,我们也获得了类似的实验结果。

    没有分析 self-attention block 层数的影响。也没有分析 Vanilla attention layer 的消融研究。

    • embedding 维度 d 的影响:Figure 2 展示了我们的模型在两个数据集上使用不同 embedding 维度 d 时的性能。从 Figure 2 中可以看出,高维度可以为 items 建模更多信息,但当维度超过 100 时,FDSACFSA 的性能会下降。这表明当模型的 embedding 维度过高时,可能会发生过拟合。

    • head 数量 lslf 的影响:我们进行实验研究了在两个数据集上,改变 lslf 时模型的性能。Table 3 展示了 NDCG@10 的实验结果。我们可以观察到:

      • Tmall 数据集上,CFSAFDSAls=4lf=2 的设置下取得最佳性能。

      • 而在 Toys and Games 数据集上,它们在 ls=2lf=4 的设置下获得最佳结果。这可能是因为在 Toys and Games 数据集中,每个 items 都包含描述文本和标题,我们的模型需要更多的 heads 来捕获特征之间的转移关系;而 Tmall 数据集中这些 items 的特征数据类型单一,可能不需要太复杂的结构来对特征之间的关系进行建模。