一、PIMI [2021]

《Exploring Periodicity and Interactivity in Multi-Interest Framework for Sequential Recommendation》

  1. 序列推荐系统缓解了信息过载的问题,在文献中引起了越来越多的关注。大多数先前的工作通常基于用户的行为序列获得一个 overall representation ,这不能充分反映用户的 multiple interests 。为此,我们提出了一种称为PIMI 的新方法来缓解此问题。PIMI 可以同时考虑 item 序列中的周期性(periodicity)和交互性(interactivity ),从而有效地建模用户的 multi-interest representation 。具体而言,我们设计了一个周期感知模块(periodicity-aware module )来利用用户行为之间的时间间隔信息。同时,我们提出了一种巧妙的 graph 来增强用户行为序列中 items 之间的交互性,该 graph 可以同时捕获全局的 item features 和局部的 item features 。最后,基于获得的 item representation ,我们采用一个 multi-interest extraction 模块来描述用户的 multiple interests 。在 AmazonTaobao 两个真实数据集上进行的大量实验表明,PIMI 的表现始终优于 SOTA 的方法。

  2. 序列推荐系统(Sequential recommendation systems )在帮助用户缓解信息过载的问题方面发挥着重要作用。在电商、社交媒体和音乐等许多应用领域,序列推荐系统可以帮助优化 CTR 等业务指标。序列推荐系统根据用户行为的时间戳对 items 进行排序,并专注于 sequential pattern mining 从而预测用户可能感兴趣的 next item 。大多数现有方法结合用户的偏好和 item representation 来进行预测,因此序列推荐的研究主要关注如何提高用户的和项目的 representation 质量。

    由于序列推荐系统具有很高的实用价值,人们已经提出了多种序列推荐方法并取得了良好的效果。例如:

    • GRU4Rec 是第一个应用 RNN 从而建模序列信息并用于推荐的工作。

    • 《Self-attentive sequential recommendation》 提出了 attention-based 的方法来捕获序列中的高阶的动态的信息。

    • 最近,一些研究(例如《Graph convolutional neural networks for webscale recommender systems》)利用基于 Graph Neural Network: GNN 的方法来获取用户的和项目的 representation ,以供下游任务使用。

    然而,我们观察到,大多数先前的研究都获得了用户行为序列的一个 overall representation ,但一个 unified user embedding 很难反映用户的 multiple interests 。在文献中,很少有研究尝试建模用户的 multi-interest representation 从而缓解单个向量的表达能力不足的问题。

    最近,MIND 利用基于胶囊网络的动态路由(dynamic routing )方法,将用户的历史行为自适应地聚合到用户的多个 representation 向量中,这可以反映用户的不同兴趣。遵从 MINDComiRec 利用自注意力机制和动态路由方法从而用于 multi-interest extraction 。然而,这些方法有以下局限性:

    • (1):它们仅使用时间信息对 items 进行排序,而忽略了 behaviors of different interests 在用户序列中具有不同的时间周期。例如,在 Figure 1 中,给定一个用户的行为序列,用户可能对日用品(daily necessities )、苹果的产品、以及零食(snacks )感兴趣。他/她可能每个月都会购买日用品,但他/她只在苹果新产品发布期间关注苹果产品。因此,对日用品感兴趣的时间间隔约为一个月,而对苹果产品感兴趣的时间间隔更长,约为一年。综上所述,用户对不同类型 items 的行为有不同的周期性。

    • (2):没有有效地挖掘 items 之间的交互性。这些方法仅对序列中相邻 items 之间的关联(correlation)进行建模,但在 multi-interest extraction 中没有考虑 items 之间的交互性(interactivity )。事实上,multi-interest extraction 可以看作是 items 之间的 soft clustering 过程,items 之间的交互性对于 clustering 任务是有效的(《Learning node embeddings in interaction graphs》),因为相同类型的 items 将通过 interaction 来学习相似的 representation

    因此,我们认为用户序列中 items 之间的时间间隔信息和交互信息对于捕获 multi-interest representation 更加 powerful

    为了解决这些问题,针对序列推荐,我们提出了一种名为PIMI 的新方法来在 MultiInterest 框架中探索周期性和交互性(Periodicity and Interactivity ) 。

    • 首先,我们对序列中 items 之间的时间间隔信息进行编码,以便周期性信息可以参与到用户的 multi-interest representation 中,从而反映用户行为的动态变化。

    • 其次,我们设计了一个巧妙的 graph 结构。以前 GNN-based 的方法忽略了用户行为中的序列信息,我们的 graph 结构克服了这一缺点并捕获了相邻用户行为之间的 correlation 。更重要的是,通过虚拟的中心节点(virtual central node),所提出的 graph 结构可以收集(gather )和分发(scatter )全局的和局部的 item interactivity 信息,以提高 multi-interest extraction 的性能。

    • 最后,我们基于注意力机制为用户获得 multi-interest representation ,可用于选择 candidate items 并进行推荐。

    这项工作的主要贡献总结如下:

    • 我们在用户行为序列中加入了时间间隔信息,可以对用户的 multiple interests 的周期性进行建模,并提高用户的 representation 的质量。

    • 我们设计了一种新颖的 graph 结构来捕获 items 之间的全局交互性和局部交互性,同时保留顺序信息(sequential information ),从而提高 itemrepresentation 的质量。

    • 我们的模型 PIMI 在两个现实世界的具有挑战性的数据集 AnazonTaobao 上实现了 SOTA 的序列推荐性能。

1.1 模型

  1. 现有的序列推荐方法通常使用单个向量来表示用户,这很难反映现实世界中用户的 multiple interests 。基于上述观察,我们探索使用多个向量来表示用户的 multiple interests 最近用于序列推荐的 multiple interests 框架忽略了两个问题:用户兴趣的周期性(periodicity )、序列中 items 之间的交互性。我们认为用户的兴趣点具有不同的时间周期性,因此将时间信息添加到 multi-interest vectors 中可以提高 user representation 的质量。同时,序列中 items 之间的交互性可以有效地提高 item representation 的质量。 在本节中,我们首先形式化序列推荐问题。然后,我们提出了一种新方法,用于为 recommendation 来探索 Periodicity and Interactivity in Multi-Interest framework,称为 PIMI (如 Figure 2 所示)。

1.1.1 Problem Statement

  1. 假设 U 表示用户集合,I 表示 items 集合。每个用户 uU 都有一个排序好的历史行为序列。给定用户行为历史 Su=(i1u,i2u,,i|Su|u)iruI 表示序列中的第 ritem。序列推荐的目标是预测用户可能感兴趣的 next item

1.1.2 Multi-Interest Framework

  1. Embedding Layer:如 Figure 2 所示,PIMI 的输入是用户行为序列,其中包含一系列 item IDs,表示按时间排序的 user’s actions with items 。我们将用户行为序列 Su=(i1u,i2u,,i|Su|u) 转换为固定长度的序列 Su=(i1u,i2u,,inu),其中 n 表示我们考虑的最大序列长度。如果序列长度大于 n ,我们截断它并仅取最近的 n items ;否则,我们将序列填充为固定长度 n

    根据实验部分的描述,这里是采用一个大小为 n 的滑动窗口,每滑动一次生成一个样本。

    我们为所有 items 构建一个 embedding matrix MIR|I|×d,其中 dembedding 向量的维数。embedding look-up 操作将序列中的 itemsID 转换为 unified low-dimension latent space 。我们可以得到它的 embedding

    EI=[e1,,en]Rn×d

    其中:erR1×d 为第 ritemembedding 向量。

  2. Periodicity Module:对应于用户的行为序列 Su ,我们也可以得到一个时间序列 Tu=(t1u,t2u,,tnu),其中按顺序包含了每个 item 的时间戳。我们只关注用户行为序列中时间间隔的相对长度,并将其建模为任意两个 items 之间的关系。具体而言,给定用户u 的一个定长的时间序列 Tu=(t1u,t2u,,tnu)item aitem b 之间的时间间隔 da,bu 定义为用户 u 与它们互动的天数,其中da,buN。根据这个定义,da,budb,au 相等。我们还为时间间隔设置了一个阈值 pN,以避免 sparse encodingda,bu=min(p,da,bu)。因此,用户序列的时间间隔矩阵 DtNn×n 定义为:

    Dt=[d1,1ud1,2ud1,nud2,1ud2,2ud2,nudn,1udn,2udn,nu]

    p 用于截断时间间隔,防止间隔太大。

    这里 Dt 可能是个瓶颈。假设序列长度 n1000,那么 Dt1M 的规模,无法应用于长序列的场景。

    itemsembedding 类似,时间间隔 emebdding matrixMTRn×n×d 。对于序列中的每个 item ,我们利用 time-aware attention 方法得到 time interval matrixattention score matrix A1Rn×n

    A1=softmax(MTW1)

    其中:W1Rd 是可训练参数。

    attention score matrix A1 表示每个 item 对于序列中其他 item 的时间间隔的注意力权重。当我们根据注意力得分对时间间隔的 embedding 进行求和时(这里使用 Python 中的广播机制),我们可以得到 itemsmatrix representation ETRn×d,它表示每个 item 在整体序列的 timeline 中的 position

    ET=A1MT

    这类似于 position embedding

  3. Interactivity Module:在 embedding layerperiodicity module 之后,我们聚合了 itemsembedding EIitemstime interval representation ET ,并将它们馈入到 interactivity module 中。在 interactivity module 中,我们设计了一个巧妙的 graph 结构,将序列中的每个 item 视为一个 node 。我们的 graph 结构不仅可以捕获序列信息,还可以允许 items 通过 graph neural network: GNN 进行交互。实验结果证明,items 之间的交互可以有效改善 multi-interest soft clustering

    • 首先,我们从序列中构建一个有意义的 graph 。如 Figure 2 所示,graph 结构包含一个虚拟中心节点(virtual central node )和 nitem nodes

      • virtual central node 负责跨所有 item nodes 来接收和分发特征。

      • 对于每个 item node ,黑色边表示与virtual central node 的无向连接。这样的 graph 结构可以使任何两个不相邻的 item nodes 成为 two-hop neighbors ,并且可以捕获 non-local information

      • 由于用户的行为是一个序列,我们按顺序连接 item node ,如图中红色连接所示。这样的 graph 结构可以建模相邻 items 之间的 correlation,允许每个 item node 从邻居那里收集信息,并捕获local information

    • 接下来,我们介绍如何通过 GNN 获取节点的 feature vectors 。我们分别使用 clR1×dHlRn×d 来表示 step lvirtual central nodeall the item nodes 。我们将 H0c0 初始化为:

      H0=EI+ETc0=avg(H0)R1×d

      其中 avg() 为均值池化。

      step l 的所有节点的更新分为两个阶段:

      • 在第一阶段,每个 item node 聚合以下信息:按顺序的相邻节点 hr1l1 从而用于 local informationvirtual central node cl1 用于 global information 、还有该节点的 previous feature hrl1、以及该节点对应的 item embedding er。之后,我们基于注意力机制来更新每个 item node r 在在 step l 的特征:

        grl=concat[hr1l1;cl1;hrl1;er]R4×dhrl=MultiAtt(Q=hrl1,K=grl,V=grl)

        其中:MultiAtt() 表示 Multi-Head Attention 网络。

        这里考虑了 previous feature hrl1hr1l1,cl1,hrl1,er 之间的相似度,基于相似度来融合后者。

        grl 实际是一个矩阵而不是一个向量。

      • 在第二阶段,virtual central node 聚合所有 item nodes Hl 、以及virtual central node 先前特征 cl1 的信息。与 item node 类似,它也使用注意力机制来更新状态:

        ql=concat[cl1;Hl]R(n+1)×dcl=MultiAtt(Q=cl1,K=ql,V=ql)

      interactivity module 的整体更新算法如 Alg-1 所示。

    经过 L 轮更新后,item nodesfinal feature matrix H=HLRn×d 可用于用户交互序列的 multi-interest extraction

  4. Multi-Interest Extraction Layer:我们使用自注意力方法从用户序列中提取 multi-interest 。给定 interactivity module 中所有 itemshidden embedding representation HRn×d。我们可以通过以下公式获得 multi-interest 的注意力权重:

    A2=softmax(W3tanh(W2H))RK×n

    其中:W3RK×(4d)W2R(4d)×d 为可训练参数; K 为用户兴趣的数量。

    为什么 attention layer 采用了 4 倍的膨胀率?

    矩阵 A2 表示用户序列的 K 个视角,反映了用户 uK 个兴趣。因此,所有 item embedding 与注意力权重的加权和可以获得 K 个向量,反映了用户的不同兴趣:

    Mu=A2HRK×d

    由于目标函数是在 Kvector representation 中找到最相关的一个,因此 K 越大则该任务越容易、K 越小则该任务越难。但是实验阶段发现 K 太大会降低性能,可能是因为 K 太大则包含噪音太多。

1.1.3 Training Phase

  1. 通过 multi-interest extraction layer 从用户行为计算出 interest embedding 后,基于 interest attention layer 中的 hard attention 策略,对于 target item ,我们使用 argmax 操作在 Kvector representation 中找到最相关的一个:

    mu=Mu[:,argmax(Mueo)]R1×d

    其中:Mu 为用户的 multi-interest representation matrixeoR1×dtarget itemembedding

  2. 给定一个训练样本 (u,o),其中 user embedding mutarget item embedding eo ,我们应该在训练阶段最大化用户 uitem o 交互的概率(softmax )。由于计算成本高昂,我们利用 sample softmax 方法来计算用户 utarget item o 交互的可能性。最后,我们通过最小化以下目标函数来训练我们的模型:

    L(θ)=uUlogexp(mueo)vSample(I)exp(muev)

    注意:mu 已经包含了 eo 的信息,因为前者是通过后者来检索 Mu 从而得到。

 

1.1.4 Testing Phase

  1. multi-interest extraction layer 之后,我们根据每个用户的历史行为获得 multiple interests embedding ,可用于 recommendation prediction 。在测试阶段,每个 interest embedding 都可以独立地从全局 item pool 中聚类 top N items ,在 interest clustering layer 中通过 nearest neighbor library(如,Faiss)来基于 inner product similarity

    因此,我们可以得到 K×Ncandidate items ,然后通过最大化以下价值函数得到最终的推荐结果,即包含 Nitems 的集合R

    Q(u,R)=xRmax1kK(exmuk)

    其中:excandidate itemembeddingmuk 为用户 u 的第 kinterest embedding

    第一步:基于每个 interenst embedding 检索 Nitems,得到 K×Ncandidates

    第二步:对每个 candidate 计算它与 Kinterenst embedding 的相似度,最大的相似度为这个 candidatescore。然后获取 top-N scorecandidates

1.2 实验

  1. 在本节中,我们介绍了我们的实验设置,并与几个可比较的基线进行了比较,评估了所提出方法的性能。为了保持比较的公平性,我们遵循 《Controllable multi-interest framework for recommendation》 的数据划分和数据处理方法,这是强泛化条件。我们按照8:1:1 的比例将所有用户分成训练集/验证集/测试集,而不是像弱泛化条件那样,所有用户都参与训练和评估。

    • 在训练时,我们使用用户的整个序列。具体而言,给定行为序列 (i1u,i2u,,iku,,i|Su|u),每个训练样本 (ik(n1)u,,ik1u,iku) 使用前 nitems 来预测第 (k+1)item ,其中 n 表示我们考虑的最大序列长度。

    • 在评估中,我们将验证集和测试集用户的前 80% 的用户行为作为模型输入,以获得用户的 embedding representation ,并通过预测剩余 20% 用户行为来计算指标。

      这种评估方式有问题?模型训练的是 next item prediction,而评估的是 next 20% items prediction 。因此是不公平的比较,实验结论存疑。

    此外,我们还进行了一些分析实验来证明 PIMI 的有效性。

  2. 数据集:

    • Amazon 数据集:包括来自于 Amazon 的评论(评分、文本等)、产品元数据(价格、品牌等)以及链接。我们在实验中使用Amazon 数据集的 Books 类别。

    • Taobao 数据集:包含 1 million users 的交互行为,包括点击、购买、加入购物车和收藏商品。我们使用 Taobao 数据集中的用户点击行为进行实验。

    我们丢弃交互次数少于 5 次的用户和 items ,以及一些非法的时间戳信息。我们分别设置 AmazonTaobao 的训练样本最大长度为 2050 。经过预处理后,数据集的统计数据如 Table 1 所示。

  3. Baselines

    • YouTube DNN:是一个非常成功的深度学习模型用于工业级的推荐系统,它结合了 candidate generation modelranking model

    • GRU4Rec :这是第一项将循环神经网络引入 recommendation 的工作。

    • MIND:是一种基于 dynamic routing 算法的模型,它针对 multi-interest extraction

    • ComiRec:它是 SOTAmulti-interest extraction 模型,有两种不同的实现 ComiRec-SAComiRec-DR ,分别基于注意力机制和动态路由。

  4. 评估指标:Recall@NNDCG@NHit Rate@N

    • Recall@N:表示有多少比例的 ground truth items 被包含在推荐结果中。

    • NDCG@N:衡量 ranking quality,该 ranking quality 会为 top position rankshit分配 high scores

    • Hit Rate@N:表示有多少比例的推荐结果满足条件:top N position 至少包含一个 ground truth item

  5. 实现细节:

    • 我们使用 Python 3.7 中的 TensorFlow 1.13 实现 PIMI

    • embedding 维度为 64Amazon 数据集和 Taobao 数据集的 batch size 分别为 128256dropout rate = 0.2 ,学习率为 0.001

    • Amazon 数据集和 Taobao 数据集的时间间隔阈值分别为 647

    • 我们使用三个 GNN layers 来使 items 充分地交互。

    • 我们将 interest embedding 的数量设置为 4 ,并使用 10 samples 来计算 sample softmax loss

    • 最后,我们在训练阶段最多迭代 1 million 轮。

  6. 训练和测试之间的差距:在训练阶段,我们为 next target item 选择最相关的用户兴趣 embedding ;而在测试阶段,我们为用户的每个兴趣 embedding 提取 top N items ,然后根据价值函数 Q 对它们进行排序。

    我们这样做有两个原因:

    • (1):我们的实验是在强泛化条件下进行的。如果测试阶段与训练阶段一致,则模型仅根据最相关的用户兴趣 embedding 来预测 next item ,这是一种弱泛化条件,不适合现实世界的情况。

    • (2):为了公平比较,我们保持与基线相同的实验条件。

  7. 为了证明我们的模型 PIMI 的序列推荐性能,我们将其与其他 SOTA 的方法进行了比较。Table 2 列出了所有方法在 Amazon 数据集和 Taobao 数据集上的实验结果,我们得到以下观察结果。

    • 首先,YouTube DNNGRU4Rec 使用单个向量来表示用户,而 MINDComiRecPIMI 使用用户的 multi-interest representation 来进行推荐。实验结果表明,基于用户行为序列的 multi-interest representation 可以更充分地反映现实世界的推荐情况。

    • 其次,MINDComiRec-DR 都使用基于胶囊网络的 dynamic routing 方法来提取 multiple interests ,而 ComiRec-SA 是一种基于注意力机制的方法。我们观察到,在稀疏数据集 Amazon 上,自注意力方法可以更好地捕获用户行为序列中 items 之间的 correlation ;而在稠密数据集 Taobao 上,动态路由方法更好。这表明虽然自注意力机制可以在稀疏数据集上捕获 global feature ,但在稠密数据集上捕获 local feature 的能力不足。

      "这表明虽然自注意力机制可以在稀疏数据集上捕获 global feature ,但在稠密数据集上捕获 local feature 的能力不足",这个结论如何得来?数据似乎无法支撑这个结论。

    • 再次,我们提出的方法 PIMI 在两个数据集上的三个评估指标上都优于其他竞争方法。这表明:利用用户行为的时间戳、以及编码时间间隔信息可以感知 multi-interest representation 中的周期性。特别是 NDCG 指标的显著改进,这意味着由于添加时间间隔信息,推荐结果的 ranking 质量得到了改善,这也可以证明 periodicity module 的有效性。更重要的是,实验表明我们的 interactivity module 可以克服长程依赖和短程依赖的问题,允许 itemslocal featuresnon-local features 有效地交互,大大提高 user’s multi-interest extraction 的性能。这些结果验证了 PIMI 对于序列推荐的可用性和有效性。

  8. 消融研究:我们进一步研究发现,periodicity moduleinteractivity module 都是序列推荐任务的重要组成部分。我们进行了消融研究,将 PIMIPIMI-PPIMI-I 进行比较。

    • 对于模型变体PIMI-P ,我们删除了periodicity module ,只让 items 通过 interactivity module 进行交互。

    • 对于模型变体 PIMI-I ,我们删除了 interactivity module ,只在 periodicity module 中引入了时间间隔信息。

    我们在 Table 3 展示了 PIMIPIMI-PPIMI-IAmazon 验证集和 Taobao 验证集上的实验结果。根据实验结果,我们得出以下观察结果:

    • PIMIRecallNDCGHit Rate 方面的表现均优于 PIMI-PPIMI-I,这表明每个组件都有效地提高了性能。

    • PIMI-I 的表现比 PIMI-P 差,这表明我们的 graph 结构的有效性。造成这种结果的原因可能是,尽管具有相似时间间隔的 items 可能属于同一兴趣;但是,如果没有 items 之间的交互,那么 multi-interest extraction 时可能会出现错误的 clustering

    Table 3Table 2PIMI 数据不一致?数据质量存疑。

  9. virtual central node 的影响:为了证明我们的 graph 结构在解决序列推荐中 items 之间的交互性方面非常有效,我们进行了一个实验来比较 PIMIPIMI-central_node 。对于模型变体 PIMI-central_node ,我们删除了 graph 结构中的 virtual central node ,只对序列中相邻 items 之间的 correlation 进行建模。

    Table 4 中的实验结果证明,仅对序列信息进行建模无法充分探索 items 之间的交互性。

  10. time interval threshold 的影响:Table 5 给出了在 Amazon 数据集上不同时间间隔阈值对 Metrics@50 的影响。我们选择时间间隔阈值为 {32,64,128,256} days 进行分析实验。实验结果表明:较大的时间间隔阈值会导致 sparse encodings ,较小的时间间隔阈值会导致 insufficient learningAmazon 数据集上的最佳时间间隔阈值设置为 64

  11. GNN layers 数量的影响:Figure 4 展示了在 Amazon 数据集上不同 GNN 层数的性能对比。实验结果表明:

    • 随着 GNN 层数的增加,通过 Lfeature transferitems 之间的交互会使得 items 学习到更高质量的 representation ,模型的性能也会更高。

    • 然而,当 GNN 层数积累到一定程度时,由于过拟合,multi-interest extraction 的有效性会略有降低,计算成本也会增加。

  12. 兴趣数量 K 的影响:Figure 5 显示了在 Amazon 数据集上兴趣数量 K 对于 Metrics@20Metrics@50 的影响。对于 Amazon 数据集,当 K=4 时,PIMI 获得更好的性能。在现实世界中,每个用户的兴趣数量通常不会太多或太少。因此,设置太小或太大的兴趣数量都无法反映用户的真实情况。

  13. 案例研究:如 Figure 3 所示,在 Amazon 数据集中,我们随机选择一个用户并从用户的行为序列中生成四个 interest embedding 。我们发现用户的四个兴趣是关于历史(history)、健康(health)、商业(business)和宗教(religion)。我们观察到:用户对健康书籍的阅读周期约为五个月,而用户对商业书籍的阅读周期约为半年。这表明我们提出的 PIMI 可以成功捕获这些周期性信息,从而有助于更好地表示兴趣。