《Intent Contrastive Learning for Sequential Recommendation》
用户与 items 的交互受多种意图驱动(例如,为节日礼物做准备、购买钓鱼装备等)。然而,用户的底层意图(intents )往往是未被观察到的 / 潜在的,这使得利用这些潜在意图(latent intents )进行序列推荐具有挑战性。为了探究潜在意图的益处并有效地将其用于推荐,我们提出了意图对比学习(Intent Contrastive Learning: ICL),这是一种将潜在意图变量(latent intent variable )融入序列推荐的通用学习范式。其核心思想是:从无标签的用户行为序列中学习用户的意图分布函数(intent distribution functions ),并通过对比自监督学习来优化序列推荐模型,同时考虑所学到的意图以提升推荐效果。
具体而言,我们引入一个潜在变量(latent variable )来表示用户意图,并通过聚类来学习潜在变量的分布函数。我们提议通过对比自监督学习将所学到的意图融入序列推荐模型,这能够最大化 view of sequence 与其相应意图之间的一致性。训练过程在广义的期望最大化(expectation-maximization: EM)框架内的 intent representation learning 和 sequential recommendation model optimization 步骤之间交替进行。将用户意图信息融合到序列推荐中还能提高模型的鲁棒性。在四个真实世界数据集上进行的实验证明了所提出的学习范式的优越性,它提高了性能,并且在面对 data sparsity and noisy interaction 的问题时增强了鲁棒性。
推荐系统已广泛应用于许多场景,从 items 的大 vocabularies 中为用户提供个性化 items 。一个有效的推荐系统的核心是根据用户的历史交互准确预测他们对 items 的兴趣。随着深度学习的成功,深度序列推荐(Sequential Recommendation: SR)模型旨在通过不同的深度神经网络来动态地刻画用户行为,可以说是代表了当前的 SOTA 。
一般来说,深度序列推荐模型是通过深度神经网络基于用户的交互行为进行训练的,假设用户的兴趣取决于历史行为。然而,用户的消费行为可能会受到其他潜在因子的影响,即由他们的底层意图驱动。考虑 Figure 1 所示的例子,两个用户过去在 Amazon 上购买了一系列不同的 items 。鉴于这种截然不同的交互行为,系统会向他们推荐不同的 items 。然而,他们都是钓鱼爱好者,并且正在为钓鱼活动购物。结果,他们未来都购买了 “钓鱼转环”(fishing swivels )。如果系统知道这两个用户是为钓鱼活动购物,那么就可以推荐钓鱼常购买的 items ,比如 “钓鱼转环”。这促使我们挖掘用户之间共享的底层意图,并使用所学到的意图来指导系统提供推荐。

然而,精确发现用户意图的研究还不够深入。大多数现有的 user intent modeling 的工作需要辅助信息。
ASLI 利用用户动作类型(例如,点击、添加到收藏夹等)来捕获用户意图,然而这类信息在系统中并不总是可用的。
CoCoRec 利用 item category 信息,但我们认为类别特征无法准确表示用户意图。例如,像 “购买节日礼物” 这样的意图可能涉及来自多个不同类别的 items。
DSSRec 提出了一种 seq2seq 训练策略,在潜在空间中优化意图。然而,DSSRec 中的那些意图仅仅基于单个 sequence representation 来推断,忽略了不同用户意图之间的 underlying correlations 。
从用户行为中有效地对潜在意图进行建模存在两个挑战:
第一,由于我们没有意图的标记数据,准确地学习潜在意图极其困难。意图唯一可用的监督信号是用户行为数据。然而,如前面的例子所示,不同的行为可能反映相同的意图。
此外,将意图信息有效地融合到序列推荐模型中并非易事。序列推荐的目标是预测序列中的 next items ,这是通过对序列进行编码来解决的。将序列的潜在意图融入模型要求 intent factors 与 sequence embeddings 正交,否则会引入冗余信息。
为了发掘 latent intents 的益处并应对这些挑战,我们提出了意图对比学习(Intent Contrastive Learning: ICL),这是一种将 latent intent factor 融入序列推荐的通用学习范式。它通过聚类从所有 user behavior sequences 中学习用户的意图分布。并且它通过一种新的对比自监督学习将所学到的意图融入序列推荐模型,这最大化了 view of sequence 与其相应意图之间的一致性。intent representation learning 模块和对比自监督学习模块相互强化,以训练出更具表达能力的 sequence encoder。我们通过引入一个 latent variable 来表示用户意图,并通过期望最大化(expectation-maximization: EM)框架来将用户意图与 Sequential Recommendation model optimization交替学习来解决 intent mining 问题,从而确保收敛。我们建议通过所提出的对比自监督学习将所学到的意图信息融合到序列推荐中,因为它可以提高模型的性能和鲁棒性。在四个真实世界数据集上进行的大量实验进一步验证了所提出学习范式的有效性,即使推荐系统面临严重的数据稀疏问题,它也能提高性能和鲁棒性。
问题定义:假设一个推荐系统有一组用户和一组 items ,分别用 interacted items 序列 interacted items 的数量,step item 。我们用 embedded representation,其中 item embedding 。
在实践中,序列会被截断为最大长度
如果序列长度大于
如果序列长度小于 "padding" items ,直到长度为
对于每个用户 next item prediction 任务的目标是:在给定序列 item set step next item 。
用于 Next Item Prediction 的深度序列推荐模型:现代序列推荐模型通常使用深度神经网络对用户行为序列进行编码,以从(截断的)用户历史行为序列中建模序列模式。不失一般性,我们定义一个 sequence encoder position steps 上的 user interest representations position encoder 参数 positional steps 上,expected next items 的对数似然函数最大化:
这等价于最小化如下调整后的二元交叉熵损失:
其中:
item embedding 、以及所有未交互 items 的 embedding 。上式中的求和操作计算成本很高,因为 《Controllable multi-interest framework for recommendation》、《Self-attentive sequential recom- mendation》、《S3-rec: Self-supervised learning for sequential recommendation with mutual information maximization》,使用 sampled softmax 技术为每个序列的每个 time step 随机采样一个负样本。
sigmoid 函数,mini-batch size 。
序列推荐中的对比自监督学习:对比自监督学习(contrastive self-supervised learning )的最新进展启发了推荐领域,使其遵循互信息最大化(mutual information maximization: MIM)原则,利用对比自监督学习融合一个序列的不同视图之间的相关性。序列推荐中现有的方法可以看作是实例判别(instance discrimination )任务,优化 MIM 的下限,如 InfoNCE。它旨在优化 positive pairs 和 negative pairs 之间的 gap 比例。在这样的实例判别任务中,需要对序列进行增强,如 “掩码”、“裁剪” 或 “重新排序”,以在序列推荐中创建 unlabeled data 的不同视图。形式上,给定一个序列 positive 视图:
其中
通常,从同一序列创建的视图被视为 positive pairs ,而任何不同序列的视图被视为 negative pairs 。增强后的视图首先用 sequence encoder vector representations ,记为 time steps 的 interest representations 进行 “拼接”,从而作为 “聚合” 层。注意,序列在预处理后具有相同的长度,因此拼接后的 vector representations 也具有相同的长度。之后,我们可以通过 InfoNCE loss 来优化
其中:negative views 的 representations 。
Figure 2(a) 说明了 SeqCL 的工作原理。

序列推荐中的 Latent Factor Modeling :next item prediction 任务的主要目标是优化公式:
假设在一个推荐系统中也存在 intent variable item 交互的概率可以重写为:
然而,根据定义,用户意图是潜在的。由于变量
稍后,我们将展示广义 Expectation-Maximization: EM 框架为解决上述问题提供了一个方向,并保证收敛。通过 EM 优化
从模型参数 E step。
一旦我们得到了 M step 。
我们可以重复这个迭代过程,直到似然值不再增加。
这里有个假设:这里假设用户的潜在意图是与时间无关的,即
没有 的下标。该假设是否成立,有待商榷。
所提出的 ICL within EM framework 的概述如 Figure 2 (b) 所示。它交替执行 E step 和 M step ,以估计 intent variable 上的分布函数
在 E step 中,它通过聚类来估计
在 M step 中,它通过 mini-batch 梯度下降并考虑所估计到的
在每次迭代中,
核心:
通过聚类来获取潜在意图。注意,聚类在整个数据集上进行,而不是
batch上进行。通过对比学习来迫使
item representation靠近潜在意图。图中的
Mask是移除False Negative:在获取 “负意图” 的时候,不考虑batch内具有相同意图的其它序列。论文假设:没有
category信息。事实上,如果有category信息,可以直接将category作为intent,这可以降低算法的复杂度。

在以下部分,我们首先推导目标函数,以便将 latent intent variable EM 框架下交替优化目标函数关于
为序列推荐来建模潜在意图:假设存在 latent intent prototypes )items 交互的决策,那么基于公式
然而,这很难直接优化。相反,我们构造它的一个下界函数并最大化这个下界。形式上,假设意图
根据 Jensen 不等式,有:
其中,positional step ,其定义为:
其中:
到目前为止,我们找到了 Intent Representa- tion Learning (E-step)和 Intent Contrastive SSL with FNM (M-step )之间交替优化模型,这遵循广义 EM 框架。我们将整个过程称为意图对比学习(Intent Contrastive Learning: ICL)。在每轮迭代中,
Intent Representation Learning :为了学习意图分布函数 encoder sequence representations K-means 聚类,以获得
我们 vector representation ,它是第个centroid representation 。在本文中,为简化起见,我们使用 “聚合层” 表示对所有 position steps 的均值池化操作。我们将其他先进的聚合方法(如基于注意力的方法)留作未来研究。Figure 2(b) 展示了 E-step 的工作原理。
Intent Contrastive SSL with FNM :我们已经估计了分布函数 L2 归一化的各向同性高斯分布,那么我们可以将
其中,vector representations 。
因此,最大化公式
其中:
我们可以看到 Contrastive SSL 中的
注意,在 SeqCL 中需要 sequence augmentations 来创建 positive views ,而在 ICL 中, sequence augmentations 是可选的,因为给定序列的视图是其从原始数据集学到的相应的 intent 。在本文中,我们应用 sequence augmentations 来扩大训练集,并基于公式 batch 的训练序列 positive views:
然后优化以下损失函数:
其中,batch 中的所有意图。
然而,直接优化公式 false-negative 样本,因为同一个 batch 中的用户可能具有相同的意图。为了减轻 false-negative 的影响,我们提出一种简单的策略,即通过不与它们进行对比来减轻影响:
其中, mini-batch 中与具有相同意图的用户集合。我们将此称为 False-Negative Mitigation: FNM。Figure 2(b) 展示了 M-step 的工作原理。
我们使用多任务训练策略训练序列推荐模型,联合优化:通过公式 ICL、通过公式 next-item prediction 任务、通过公式 sequence level 自监督学习任务。
形式上,我们如下联合训练序列推荐模型
其中,ICL 任务和 sequence level 自监督学习任务的强度。原始论文附录 A 提供了整个学习流程的伪代码。特别地,我们在 Transformer encoder 上构建 learning 范式,以形成模型 ICLRec 。

ICL 是一个与模型无关的目标,因此我们也将其应用于 S3-Rec 模型。 S3-Rec 模型通过几个 items 、associated attributes 和子序列之间的相关性,并使用 ICL 进一步验证其有效性(详见实验章节)。
与序列推荐中对比自监督学习的联系:序列推荐中最近的方法《Contrastive Learning for Sequential Recommendation》、《S3-rec: Self-supervised learning for sequential recommendation with mutual information maximization》遵循标准的对比自监督学习,以最大化序列的两个 positive views 之间的互信息。例如,CL4SRec 使用 Transformer 对序列进行编码,并最大化从原始序列增强(裁剪、掩码或重新排序)得到的两个序列之间的互信息。然而,如果一个序列的 item relationships 容易受到随机扰动的影响,那么该序列的两个视图可能无法揭示原始序列的相关性。ICLRec 最大化序列与其相应 intent prototype 之间的互信息。由于 intent prototype 可以被视为通过考虑所有序列的语义结构学到的给定序列的 positive view ,反映了真实的序列相关性,因此 ICLRec 始终优于 CL4SRec。
时间复杂度和收敛性分析:在训练阶段的每次迭代中,我们提出的方法的计算成本主要来自 E-step 中对 M-step 中通过多任务训练对
对于 E-step ,聚类的时间复杂度为 embedding 的维度,
对于 M-step,由于我们有三个目标来优化网络 next item prediction objective 的 Transformer-based 的序列推荐(如 SASRec)的 3 倍。幸运的是,由于 Transformer,模型可以有效地并行化,我们将其留作未来工作。
在测试阶段,不再需要所提出的 ICL 以及 SeqCL 目标,这使得模型具有与 SASRec 相同的时间复杂度(ICL 在广义 EM 框架下的收敛性得到了保证,证明见原始论文的附录 B。
数据集:我们在四个公共数据集上进行实验。
Sports、Beauty 和 Toys 是文献中介绍的亚马逊评论数据的三个子类别。
Yelp 是一个用于商业推荐的数据集。
我们遵循文献 《Contrastive Learning for Sequential Recommendation》、《S3-rec: Self-supervised learning for sequential recommendation with mutual information maximization》 中的方法准备数据集。具体来说,我们只保留 “5-core” 数据集,其中所有用户和 items 至少有 5 次交互。Table 3 总结了数据集的统计信息。

评估指标:我们遵循文献 《On Sampled Metrics for Item Recommendation》、《Neural graph collaborative filtering》,在整个 item set 上对 prediction 进行排名,不进行负采样。性能通过多种评估指标进行评估,包括 Hit Ratio@k: HR@k、以及 Normalized Discounted Cumulative Gain@k: NDCG@k ,其中
基线方法:我们纳入了四组基线方法进行比较。
非序列模型:BPR-MF 通过矩阵分解模型刻画 pair-wise interactions,并通过 pair-wise Bayesian Personalized Ranking loss 进行优化。
标准的序列模型:我们纳入了使用 next-item prediction objective 来训练模型的方法。Caser 是一种基于 CNN 的方法,GRU4Rec 是一种基于 RNN 的方法,SASRec 是基于 Transformer 的序列推荐的最先进基线之一。
带有额外 SSL 的序列模型:
BERT4Rec 用完形填空任务取代 next-item prediction ,以融合用户行为序列中一个 item (一个 view )与其上下文信息之间的信息。
S3-Rec 使用 SSL 从给定的用户行为序列中捕获 item 、子序列和 associated attributes 之间的关系。由于我们的 item 没有属性,因此其挖掘属性的模块被移除,称作 S3-Rec_ISP 。
CL4SRec 将对比自监督学习与基于 Transformer 的序列推荐模型相融合。
考虑潜在因子的序列模型:我们纳入了 DSSRec,它使用 seq2seq 训练并在潜在空间中进行优化。我们没有直接与 ASLI 进行比较,因为它需要用户动作类型信息(例如,点击、添加到收藏夹等)。相反,我们在实验章节中进行了案例研究,以评估在有额外 item category 信息的情况下学到的 intent factor 的益处。
实现细节:
Caser、BERT4Rec、S3-Rec 由作者提供。
BPRMF、GRU4Rec 和 DSSRec 基于公开资源实现。
我们在 PyTorch 中实现 SASRec 和 CL4SRec。BERT4Rec 中的 mask ratio 在
所有基于自注意力的方法(SASRec、 S3-Rec、CL4SRec、DSSRec)的 attention heads 数量和自注意力层数分别在 DSSRec 中引入的潜在因子的数量在
我们的方法在 PyTorch 中实现。使用 Faiss 进行 K-means 聚类,以加快训练阶段和 query 阶段。对于 encoder 架构,我们将自注意力块的数量和 attention heads 数量设置为 2,embedding 维度设置为 64,最大序列长度设置为 50。模型由 Adam 优化器优化,学习率为 0.001,batch size 为 256。对于 ICLRec 的超参数,我们分别在
所有实验都在单个 Tesla V100 GPU 上运行。
Table 1 展示了不同方法在所有数据集上的结果。我们有以下观察。
首先,BPR 通常比序列模型表现更差,这表明挖掘用户行为序列下的序列模式(sequential patterns )的重要性。
对于标准的序列模型,SASRec 使用基于 Transformer 的编码器,比 Caser 和 GRU4Rec 表现更好,这证明了 Transformer 在捕获序列模式方面的有效性。
DSSRec 通过使用 seq2seq 训练策略进一步提高了 SASRec 的性能,并在潜在空间中重构 future sequence 的representation ,以缓解非收敛(non-convergence )的问题。
此外,尽管 BERT4Rec 和 S3-Rec 采用自监督学习来提供额外的训练信号以增强 representations ,但我们观察到它们在某些数据集(例如 Toys 数据集)上的表现比 SASRec 更差。原因可能是 BERT4Rec 和 S3-Rec 都旨在通过 masked item prediction 来整合给定用户行为序列的上下文信息。这样的目标可能与 next item prediction 目标不太一致,并且它要求每个用户行为序列足够长,以提供全面的 “上下文” 信息。因此,当大多数序列较短时,它们的性能会下降。
此外,S3-Rec 旨在融合额外的上下文信息。当没有这些特征时,其两阶段训练策略阻碍了 next-item prediction 任务和自监督学习任务之间的信息共享,从而导致结果不佳。CL4SRec 始终比其他基线表现更好,证明了在单独的 user level 通过对比自监督学习来增强 sequence representations 的有效性。
最后,ICLRec 在所有数据集上始终优于现有方法。与最佳基线相比,在 HR 和 NDCG 指标上的平均提升范围从 7.47% 到 33.33%。所提出的 ICL 估计了良好的意图分布,并通过新的对比自监督学习将其融合到序列推荐模型中,这有助于 encoder 发现不同用户行为序列之间的良好语义结构。

我们还报告了在 Sports 数据集上的模型效率。
SASRec 是最有效率的解决方案,每次模型更新花费 3.59 s/epoch 。
CL4SRec 和所提出的 ICLRec 每次更新分别花费 6.52 s/epoch 和 11.75 s/epoch 。具体来说,ICLRec 花费 3.21 s 进行intent representation learning ,其余 8.54 s 用于多任务学习。
SASRec、CL4SRec 和 ICLRec 的评估时间大致相同(在测试集上约为 12.72 s),因为引入的 ICL 任务仅在训练阶段使用。
对用户交互频率的鲁棒性:用户 “冷启动” 问题是推荐系统经常面临的典型数据稀疏问题之一,即大多数用户的历史行为有限。为了检查 ICL 在这种情况下是否提高了鲁棒性,我们根据用户行为序列的长度将其分为三组,并保持行为序列的总数不变。在每组用户上独立训练和评估模型。Figure 3 展示了在四个数据集上的比较结果。我们观察到:
(1):在所有用户组中,所提出的 ICLRec 始终比 SASRec 表现更好,而当用户行为序列较短时,CL4SRec 在 Beauty 和 Yelp 数据集上未能超过 SASRec。这表明 CL4SRec 需要单个用户行为序列足够长,以提供 “完整” 的信息用于辅助监督,而 ICLRec 通过利用 user intent 信息减少了这种需求;因此即使用户的历史交互有限,也能始终有益于 user representation learning。
(2):与 CL4SRec 相比,我们观察到 ICLRec 的改进主要在于它能为交互频率较低的用户提供更好的推荐。这验证了 user intent 信息是有益的,特别是当推荐系统面临数据稀疏问题,每个用户序列中的信息有限时。

对噪声数据的鲁棒性:我们还在 Sports 和 Yelp 数据集上进行实验,以验证 ICLRec 在测试阶段对噪声交互的鲁棒性。具体来说,我们随机向文本序列中添加一定比例(即 5%、10%、15%、20%)的负样本。从 Figure 4 中可以看出:
添加噪声数据会降低 CL4SRec 和ICLRec 的性能。
然而,ICLRec 的性能下降率始终低于 CL4SRec,并且在 Sports 数据集上,其在噪声比例为 15% 时的性能仍能超过无噪声数据集上的 CL4SRec。原因可能是所利用的意图信息是从所有用户中提取的协同信息(collaborative information)。ICL 帮助序列推荐模型从用户行为序列中捕获语义结构,这增加了 ICLRec 对单个序列上噪声扰动的鲁棒性。

我们提出的 ICLRec 包含一个新颖的 ICL 目标、一个缓解假阴性噪声(false-negative noise mitigation: FNM)策略、一个 SeqCL 目标、以及序列增强。为了验证每个组件的有效性,我们在四个数据集上进行了消融研究,并在 Table 2 中报告结果。(A) 是我们的最终模型,(B) 到 (F) 是去除了某些组件的 ICLRec 。
从 (A) - (B) 可以看出,FNM 利用所学到的意图信息,避免具有相似意图的用户在 representation 空间中相互远离,这有助于模型学习更好的 user representations 。
比较 (A) - (D),我们发现没有 ICL ,性能会显著下降,这证明了 ICL 的有效性。
比较 (A) - (C),我们发现单独的 user level 互信息也有助于增强 user representations 。正如我们在前面实验中分析的,它对长用户序列的贡献更大。
比较 (E) - (F),我们发现 ICL 可以在不进行序列增强的情况下进行对比自监督学习,并且性能优于 SASRec。而 CL4SRec 需要序列增强模块来进行对比自监督学习。
比较 (C) - (E),我们发现序列增强扩大了训练集,这有利于提高性能。
由于 ICL 是一种与模型无关的学习范式,我们还在微调阶段将 ICL 添加到 S3-Rec_ISP模型中,以进一步验证其有效性。结果如 Table 2 的 (G) - (H) 所示。我们发现模型也从 ICL 目标中受益。在四个数据集上,NDCG@20 的平均提升为 41.11%,这进一步验证了 ICLRec 的有效性和实用性。

意图类别数 ICL 目标强度 ICL 任务对最终模型的贡献越大。在 Yelp 数据集上的结果如 Figure 5 所示。我们发现:
(1):当 512 时,ICLRec 达到最佳性能,然后随着
当 intent prototype 下的用户数量可能会很大。结果,在对比自监督学习中引入了 false-positive 样本(即实际上意图不同的用户被错误地认为具有相同意图),从而影响学习。
另一方面,当 false-positive 下的用户数量较少,引入的 false-negative 样本也会损害对比自监督学习。
在 Yelp 数据集中,512 个用户意图能最好地概括用户的 distinct 行为。
(2):还可以找到 ICL 任务作为辅助任务可以有益于推荐预测。

Figure 6 显示了 CL4SRec 和所提出的 ICLRec 在 Yelp 上相对于 batch size 的性能。我们观察到:
随着 batch size 的增加,CL4SRec 的性能并没有持续提高。原因可能是:因为较大的 batch size 会引入 false-negative 样本,从而损害学习。
而 ICLRec 在不同 batch size 下相对稳定,并且在所有情况下都优于 CL4SRec。因为学到的意图可以看作是序列的伪标签,这有助于通过所提出的带有 FNM 的对比自监督学习来识别 true positive 样本。

Figure 8 显示了
当 ICLRec提高性能。
然而,当SeqCL 的局限性,因为专注于最大化各个 sequence pairs 之间的互信息可能会破坏用户之间的全局关系。

Sports 数据集包含 2277 个细粒度的 item categories ,Yelp 数据集提供了 1001 个商业类别。我们利用这些属性对所提出的 ICLRec 进行定量和定性研究。请注意,在训练阶段我们没有使用这些信息。
定量分析:我们通过将用户 interacted items 的 item 类别视为他们的意图来研究 ICLRec 的表现。具体来说,给定一个用户行为序列 trainable item category embeddings 的均值视为 intent prototype intent representation learning 。我们运行相应的模型 ICLRec-A,并在 Table 4 中显示比较结果。我们观察到在 Sports 数据集上:
(1):ICLRec-A 的表现优于 CL4SRec,这表明利用 item category 信息具有潜在的好处。
(2):当 ICLRec 实现了与 ICLRec-A 相似的性能。与上述定性结果的联合分析表明,ICL 可以通过 SSL 捕获有意义的用户意图。
(3):当 ICLRec 的表现优于 ICLRec-A。我们假设当 latent variables 可以更好地描述用户的意图,从而提高性能。(例如,现有 item categories 的父级)。
Yelp 数据集中也有类似的观察结果。

定性分析:我们还通过 t-SNE 可视化学到的 users’ representations ,将提出的 ICLRec 与 CL4SRec 进行比较。具体来说,我们随机抽样了 100 位曾经与某个 category 或另一个 category 的 items 互动的用户。这 100 位用户过去也与其他类别的 items 互动过。我们在 Figure 7 中通过t-SNE可视化学到的 users’ representations 。从 Figure 7 中我们可以看到:与 CL4SRec 相比,ICLRec 学到的 users’ representations 旨在将与同一类别 items 互动的用户拉近彼此,同时将其他用户推得更远。这反映出 ICL 学到的 representations 可以捕获更多的语义结构,因此提高了性能。
