《Feature-level Deeper Self-Attention Network for Sequential Recommendation》
序列推荐旨在预测用户在不久的将来可能与之交互的 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 sequences
和 feature-level sequences
上应用独立的 self-attention blocks
,对 item transition patterns
和 feature transition patterns
进行建模。
接着,我们将这两个模块的输出整合到一个全连接层(fully-connected layer
)中,以进行 next item recommendation
。
最后,综合实验结果表明,考虑特征之间的转移关系可以显著提高序列推荐的性能。
随着互联网的快速发展,序列推荐在 ad click prediction
、purchase recommendation
和 web 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: LSTM
和 Gated 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 sequences
和 feature sequences
上应用独立的 self-attention blocks
,以捕获 item-item
和 feature-feature
之间的关系。然后,我们结合 item-level
和 feature-level
的 context
进行推荐。
此外,我们进一步研究如何从 items
的异构属性中捕获有意义的 implicit feature transition patterns
。我们额外利用普通注意力机制来辅助 feature-based self-attention block
,从 items
的各种类型属性中自适应地选择重要特征,并进一步学习潜在的 implicit feature transition patterns
。
然后,我们将 item transition patterns
与 implicit feature transition patterns
组合到一个全连接层中进行推荐。
最后,我们在一个著名电子商务平台的两个真实数据集上进行了广泛的实验。实验结果表明,考虑 feature-level transition patterns
可以显著提高推荐性能。
本文的主要贡献总结如下:
我们提出了一种新颖的框架用于序列推荐,即 Feature-level Deeper Self-Attention Network: FDSA
。FDSA
应用 self-attention networks
将 item-level transitions
与 feature-level transitions
相结合,从而对用户的序列意图进行建模。
通过分别在 item sequences
和 feature sequences
上应用不同的 self-attention blocks
,我们对 explicit and implicit feature transitions
进行建模。为了获得 implicit feature transitions
,我们添加了普通注意力机制来辅助 feature-based self-attention block
,从 item
的各种属性中自适应地选择重要特征。
我们在两个真实数据集上进行了广泛的实验,以证明我们提出的方法的有效性。
在详细介绍我们提出的模型之前,我们首先介绍本文中使用的符号,并定义序列推荐问题。我们用 item
集合,其中 items
数量。我们使用 items
序列,其中 item
item
items
上的历史活动的情况下,推荐用户可能采取行动的 next item
。
如前所述,日常人类活动通常呈现 feature-level
(如 category-level
)的转移模式(transition patterns
)。在本文中,我们提出了一种新颖的用于序列推荐的 feature-level deeper self-attention network
(FDSA
)。FDSA
不仅利用 item-based self-attention block
来学习 item-level sequence patterns
,还利用 feature-based self- attention block
来搜索 feature-level transition patterns
。
如 Figure 1
所示,FDSA
由五个组件组成,即 Embedding layer
、Vanilla Attention layer
、Item-based self-attention block
、Feature-based self-attention block
、以及 Fully-connected layer
。具体来说:
我们首先将 items
的 sparse representation
和 items
的 discrete 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 patterns
、feature-based self-attention block
用于捕获 feature-level transition patterns
。
最后,我们将这两个模块的输出整合到一个全连接层中,以获得 final prediction
。
接下来,我们将介绍 FDSA
每个组件的详细信息。
Embedding layer
:由于用户行为序列的长度不固定,我们从用户历史序列中选取一个固定长度的序列
如果用户的行为序列长度小于
如果用户的行为序列长度大于
同样地,我们以相同的方式处理 feature sequence
。以类别信息为例,由于每个 item
都对应一个类别,我们得到一个固定长度的category sequence
lookup layer
将行为序列 category sequence
one-hot
向量转换为稠密向量。对于其他 categorical features
(如品牌、卖家),也采用相同的方法。
对于文本特征(即描述文本、标题),我们首先利用广泛使用的 topic model
提取文本的 topical key-words
,然后应用 Word2vector
模型来学习文本的 semantic representations
。在本文中,我们从每个 item
的描述文本和标题中提取五个 topical keywords
,然后应用均值池化方法将五个 topical keyword vectors
融合为一个向量。
Vanilla attention layer
:由于 items
的特征通常是异构的,很难知道哪些特征将决定用户的选择。因此,在捕获用户对属性(如类别、品牌)多样化偏好的过程中,我们采用普通的注意力机制来辅助 feature-based self-attention block
。给定 item
embeddings
为:
其中:
item
item
representation
。
形式上,注意力网络定义如下:
其中:
注意,这个公式应该是:
最后,我们将 item
feature representation
计算为 item
attribute vector representations
的加权和,权重为注意力分数,如下所示:
值得注意的是,如果 item
item
feature representation
就是
上述公式描述有问题,读者认为应该是这样的:
其中:
将 展平为 的向量。
为待学习的参数,它们来自于一个 DenseLayer
。这个DenseLayer
的输入单元为、输出单元为 、激活函数为 sigmoid
。
Feature-based self-attention block
:由于 item-based self-attention block
和 feature-based self-attention block
仅在输入上有所不同,我们重点详细说明 feature-based self-attention block
的过程。从上述注意力层中,我们可以得到 item
feature representation
feature sequence
:
为了对 feature-level transition patterns
进行建模,我们利用自注意力网络,该网络可以保留序列上下文信息,并捕获类别序列中类别之间的关系,而不管它们之间的距离。虽然自注意力网络可以确保计算效率并导出长程依赖关系,但它忽略了序列输入的位置信息。因此,我们将一个位置矩阵 input embedding
中。即 feature-based self-attention block
的输入矩阵为:
scaled dot-product attention: SDPA
为:
其中:query, key, value
;
这里,the feature-based self-attention block
中的 query, key, value
都来自 SDPA
中,如下所示:
其中:representation subspaces
的信息,自注意力采用 multi-head attention: MH
。multi-head attention
定义如下:
其中:feature-based self-attention block
中的 head
数量。
此外,自注意力网络采用残差连接、layer normalization
和带有 ReLU
激活函数的两层全连接层来增强自注意力网络的性能。最后,feature-based self-attention block
的输出定义如下:
其中:
为了简单起见,我们将整个自注意力模块定义如下:
在第一个 self-attention block
之后,embeddings
。然而,它可能需要通过另一个基于 feature transitions
。因此,我们堆叠 self-attention block
,第 block
定义如下:
其中:
Item-based self-attention block
:item-based self-attention block
的目标是学习有意义的 item-level transition patterns
。对于给定的用户,我们可以得到一个 item action sequence
item-based self-attention block
的输出为:
其中:
Fully-connected layer
:为了同时捕获 items
的和特征的 transition patterns
,我们将 item-based self-attention block
的输出 feature-based self-attention block
的输出
其中:
注意:
在所有 个 position
上进行广播。
最后,我们通过点积运算计算用户对 item
的偏好:
其中:
position
的 representation
。
item embedding matrix
,item
的 embedding
。
items
(即,item
next item
的 relevance
。
值得注意的是,在训练过程中,模型输入一个序列 next item
。
在本小节中,为了从训练过程中有效地学习,我们采用二元交叉熵损失作为FDSA
模型的优化目标函数,定义如下:
此外,对于每个行为序列中的每个 target item
negative item
在本节中,我们进行实验以评估所提出的 FDSA
方法在两个真实数据集上的性能。我们首先简要介绍数据集和基线方法,然后将 FDSA
与这些基线方法进行比较。最后,我们分析实验结果。
数据集:我们在两个公开可用的数据集上进行实验,即 Amazon
数据集和 Tmall
数据集。
Amazon
是一个电子商务平台,广泛用于 product recommendation
的评估。我们采用其中一个子类别:玩具和游戏(Toys and Games
)。对于 Toys and Games
数据集,我们过滤掉评分少于 5
个 items
的用户、以及被少于 10
个用户评分的 items
。该数据集中,每个 item
的特征集合包含类别、品牌和描述文本。
Tmall
是中国最大的 B2C
平台,我们使用的是从 IJCAI 2015
竞赛中获得的 user-purchase
数据。我们移除了被少于 30
个用户观察到的 items
,并剔除了评分少于 15
个 items
的用户。Tmall
数据集中每个 item
的特征是类别、品牌和卖家。
两个数据集的统计信息总结在 Table 1
中。
评估指标:为了评估每个模型在序列推荐中的性能,我们采用两个广泛使用的评估指标,即:hit ratio: Hit
、normalized discounted cumulative gain: NDCG
。Hit ratio
衡量推荐的准确性;NDCG
是一种位置感知指标,对较高位置赋予更大的权重。在我们的实验中,我们选择 Hit@K
和 NDCG@K
的不同结果。
实现细节:除非文中另有说明,我们将所有模型的 embedding
维度固定为 100
,batch size
固定为 10
。此外,在两个数据集上,最大序列长度 50
。
基线方法:我们将我们的模型 FDSA
与以下基线方法进行比较,简要介绍如下:
PopRec
:根据 items
的流行度对 items
进行排名。将最受欢迎的 items
推荐给用户。
BPR
:是一种从隐式反馈数据中构建推荐系统的经典方法,它提出了一种 pair-wise
损失函数来建模用户的相对偏好。
FPMC
:融合矩阵分解和一阶马尔可夫链,分别捕获长期偏好和短期 item-item transitions
,用于 next item
的推荐。
TransRec
:将用户视为连接 items
的 relational vector
。
GRU4Rec
:应用 GRU
对用户点击序列进行建模,用于 session-based
的推荐。
CSAN
:基于自注意力网络对多种类型的行为和多模态内容进行建模。在这里,我们仅考虑数据集中的内容和行为。
SASRec
:是一种基于自注意力的序列模型,它可以考虑 consumed items
来推荐 next item
。
SASRec+
:是我们对 SASRec
方法的扩展,它将 item vector representations
和 category vector representations
拼接在一起,作为 item-level
自注意力网络的输入。
SASRec++
:是我们对 SASRec
方法的扩展,它将 item representation
和 items
的各种异构特征拼接在一起,作为 item-level
自注意力机制的输入。
CFSA
:是我们提出的方法的简化版本,它仅考虑类别特征。它分别在 item-level sequences
和 category-level sequences
上应用独立的 self-attention blocks
。
有没有考虑将各种异构特征
sum
起来而不是拼接起来,类似于position embedding
的使用方式?
性能比较:我们将 FDSA
的性能与十个基线方法在 Hit
和 NDCG
指标上进行比较。Table 2
报告了它们在两个数据集上的整体实验性能。我们对实验分析总结如下:
首先,在两个数据集上,BPR
和 GRU4Rec
的性能均优于 PopRec
。这表明了个性化推荐方法的有效性。
在基线方法中,序列模型(如 FPMC
和 TransRec
)在两个数据集上的表现通常优于非序列模型(即 BPR
)。这证明了在 next item recommendation
时考虑序列信息的重要性。
其次,与 FPMC
和 TransRec
相比,SASRec
在两个指标上表现更优。这证实了使用自注意力机制对序列模式进行建模的优势。
尽管 CSAN
将 items
的异构特征拼接在 item representation
中,以帮助自注意力机制学习序列模式,但自注意力机制可能只能更好地建模时间顺序信息。然而,SASRec
不仅使用自注意力机制捕获长期偏好,还通过残差连接考虑了短期偏好(即最近一个行为)。
第三,SASRec +
和 SASRec++
在 Toys and Games
数据集上的结果优于SASRec
,但在 Tmall
数据集上的表现比 SASRec
差。这种现象可以解释为,将 items’ representations
和 items’ feature representations
拼接在一起作为自注意力机制的输入向量,可能无法稳定地对序列模式进行建模。
此外,CFSA
的性能优于 SASRec+
,FDSA
的性能超过 SASRec++
。这表明,分别在 item-level sequences
和 feature-level sequences
上应用独立的 self-attention blocks
来捕获 item transition patterns
和 feature transition patterns
(即 CFSA
和 FDSA
),比将 item representations
及其 feature representations
的拼接作为自注意力机制的输入(即 SASRec +
和 SASRec++
)更有效。
上述实验表明,通过两个独立的 item-level sequences
和 feature-level sequences
对item transition patterns
和 feature transition patterns
进行建模,对于序列推荐是有价值且有意义的。
最后,无论数据集和评估指标如何,我们提出的 FDSA
都取得了最佳性能。
我们的简化模型 CFSA
始终优于大多数基线方法。这表明了使用自注意力网络对独立的 category-level sequences
进行建模的有效性。
FDSA
的性能优于 CFSA
,这表明在 feature-level sequences
中对更多特征进行建模的有效性。
超参数的影响:我们研究了超参数的影响,如 embedding
维度 item-based self-attention block
中的 head
数 feature-based self-attention block
中的 head
数 NDCG@10
的实验结果。在 Hit@10
指标上,我们也获得了类似的实验结果。
没有分析
self-attention block
层数的影响。也没有分析Vanilla attention layer
的消融研究。
embedding
维度 Figure 2
展示了我们的模型在两个数据集上使用不同 embedding
维度 Figure 2
中可以看出,高维度可以为 items
建模更多信息,但当维度超过 100
时,FDSA
和 CFSA
的性能会下降。这表明当模型的 embedding
维度过高时,可能会发生过拟合。
head
数量 Table 3
展示了 NDCG@10
的实验结果。我们可以观察到:
在 Tmall
数据集上,CFSA
和 FDSA
在
而在 Toys and Games
数据集上,它们在 Toys and Games
数据集中,每个 items
都包含描述文本和标题,我们的模型需要更多的 heads
来捕获特征之间的转移关系;而 Tmall
数据集中这些 items
的特征数据类型单一,可能不需要太复杂的结构来对特征之间的关系进行建模。