一、ComiRec [2020]

《Controllable Multi-Interest Framework for Recommendation》

  1. 近年来,电商的发展彻底改变了我们的购物方式。推荐系统在电商公司中扮演着重要的角色。传统的推荐方法主要使用协同过滤来预测用户和 item 之间的得分。近年来,由于深度学习的快速发展,神经网络在电商推荐系统中得到了广泛的应用。神经推荐系统为用户和 item 生成 representation,并且优于传统的推荐方法。然而,由于电商用户和item 的规模较大,很难使用深度模型直接给出每对 user-item 之间的点击率(CTR)预估。当前的业界实践是使用 fast KNN (如 Faiss)来生成候选 item,然后使用深度模型结合用户属性和 item 属性来优化业务指标(如点击率)。

    最近的一些工作使用 graph embedding 方法来获取user representationitem representation ,然后用于下游 application。例如,PinSage 建立在 Graph-SAGE 基础之上,并将基于图卷积的方法应用于具有数十亿节点和边的生产级数据。GATNE 考虑了不同的用户行为类型,并利用异质图 embedding 方法来学习 user representationitem representation 。然而,这些方法忽略了用户行为中的序列信息,无法捕获到用户的相邻行为之间的相关性。

    最近的研究将推荐系统形式化为一个序列推荐(sequential recommendation)问题。序列推荐任务是根据用户的行为历史,预测用户可能感兴趣的 next item。该任务反映了现实世界的推荐情况。许多近期提出的模型可以从每个用户的行为序列中给出该用户的整体 embedding 。然而,统一的用户 embedding 很难代表多种兴趣(multiple interests)。例如在下图中,点击序列显示了 Emma 的三种不同兴趣。作为一个现代女性,Emma 对珠宝(jewelry)、手提包(handbags)、化妆品(make-ups)很感兴趣。因此,她可能会在这段时间内点击这三个类目的item

    在论文 《Controllable Multi-Interest Framework for Recommendation》 中,作者提出了一种新的、可控的多兴趣框架( multi-interest framework),称作 ComiRec。上图展示了 ComiRec 多兴趣框架的一个示例。

    • ComiRec 的多兴趣模块(multi-interest module)可以从用户行为序列中捕获用户的多种兴趣,这些兴趣可独立地从大规模item 池中检索候选 item

    • ComiRec的聚合模块(aggregation module)将这些来自不同兴趣的 item 组合在一起,并输出整体 top-N 推荐。聚合模块利用可控的因子来平衡推荐的准确性(accuracy)和多样性(diversity)。

    论文对序列推荐进行了实验。另外,ComiRec 框架也成功地部署在阿里巴巴分布式云平台上。十亿级工业数据集的结果进一步证明 了ComiRec 在实践中的效果(effectiveness)和效率(efficiency)。

    总而言之,本文的主要贡献是:

    • 提出了一个综合的框架ComiRec ,将可控性(controllability)和多兴趣组件集成在一个统一的推荐系统中。

    • 通过在线推荐场景中的 implementingstudying 来调研可控性在个性化系统中的作用。

    • ComiRec 框架在两个具有挑战性的真实数据集上为序列推荐实现了 SOTA 的性能。

  2. 相关工作:这里我们将介绍有关推荐系统和推荐多样性的相关文献,以及我们在论文中使用的胶囊网络和注意力机制。

    • 协同过滤方法已经在现实世界的推荐系统中被证明是成功的,它可以找到相似的用户和相似的 item,并在此基础上做出推荐。

      • 矩阵分解(Matrix Factorizaion: MF)是经典推荐研究中最流行的技术,它将用户和 item 映射到联合潜在因子空间(joint latent factor space)中,这样 user-item 交互被建模为该空间中的内积。

      • 分解机(Factorization Machine: FM)使用分解的参数(factorized parameters)对变量之间的所有交互进行建模,因此即使在推荐系统等具有巨大稀疏性的问题中也可以估计交互(estimate interaction)。

    • 神经推荐系统(Neural Recommender System):

      • 神经协同过滤(Neural Collaborative Filtering: NCF )使用神经网络架构对用户和 item 的潜在特征进行建模。

      • NFM无缝地结合了 FM 在建模二阶特征交互时的线性、以及神经网络在建模高阶特征交互时的非线性。

      • DeepFM 设计了一个端到端的学习模型,同时强调了低阶特征交互和高阶特征交互以进行 CTR 预测。

      • xDeepFM 扩展了 DeepFM,可以显式地学习特定的、阶次有界(bounded-degree)的特征交互。

      • 深度矩阵分解( Deep Matrix Factorization: DMF )使用深度结构学习的架构(deep structure learning architecture),基于显式评分和非偏好(non-preference)的隐式反馈,学习 user representationitem representation 的通用低维空间。

      • DCN 保留了深度模型的优点,并引入了一种新颖的交叉网络,该网络在学习特定的、阶次有界的特征交互方面更有效。

      • CMN 利用潜在因子模型的全局结构和基于局部邻域的结构的优势,以非线性方式使用深度架构来统一两类 CF 模型。

    • 序列推荐(Sequential Recommendation):序列推荐是推荐系统的关键问题。最近很多关于推荐系统的工作都集中在这个问题上。

      • FPMC 对于序列 basket 数据同时包含了一个常见的马尔科夫链和一个普通的矩阵分解模型。

      • HRM 扩展了 FPMC 模型,并采用两层结构来构建最近一次交互的 useritem 的混合 representation

      • GRU4Rec 首次引入了一种RNN-based 方法来建模整个session,以获得更准确的推荐。

      • DREAM 基于RNN ,学习用户的动态 representation 以揭示用户的动态兴趣。

      • Fossilsimilarity-based 方法和马尔科夫链平滑地结合在一起,从而对稀疏和长尾数据集进行个性化的序列预测。

      • TransRecitem 嵌入到向量空间中,其中用户被建模为在item 序列上进行的向量操作(vectors operating),从而用于大规模序列的预测。

      • RUM 使用了一个 memory-augmented 神经网络,融合了协同过滤的洞察(insights)来进行推荐。

      • SASRec 使用基于 self-attention 的序列模型来捕获长周期(long-term)语义,并使用注意力机制来基于相对较少的动作进行预测。

      • DIN 设计了一个局部激活单元(local activation unit)来自适应地从历史行为中学习关于目标广告的用户兴趣的 representation

      • SDM 使用 multi-head self-attention 模块对行为序列进行编码以捕获多种类型的兴趣,并使用长短期门控融合模块(long-short term gated fusion module)来融入长期偏好。

    • 推荐多样性(Recommendation Diversity):研究人员已经意识到,只遵循最准确(most accurate)的推荐可能不会产生最好best 的推荐结果,因为最准确的结果往往会向用户推荐相似的 item,从而产生无聊的推荐结果。为解决这些问题,推荐item 的多样性(diversity)也起着重要作用。

      在多样性方面,有聚合多样性(aggregated diversity),指的是向用户推荐长尾 item 的能力。很多研究聚焦于提高推荐系统的聚合多样性。

      另外有一些工作聚焦于推荐给单个用户的 item 多样性,这指的是推荐给单个用户的 item dissimilarity

    • 注意力(Attention):注意力机制的起源可以追溯到几十年前的计算机视觉领域。然而,它在机器学习的各领域中的普及只是近年来才出现的。它最早是由 《Neural machine translation by jointly learning to align and translate》 引入机器翻译的,后来作为 tensor2tensor 成为一种突破性的方法。 BERT 利用 tensor2tensor 并在NLP 方面取得了巨大成功。注意力机制也适用于推荐系统,并在现实世界的推荐任务中相当有用。

    • 胶囊网络(Capsule Network): 胶囊的概念最早由 《Transforming auto-encoders》提出,并且自从动态路由方法被提出以来就广为人知。

      • MIND 将胶囊引入推荐领域,并利用胶囊网络基于动态路由机制来捕获电商用户的多个兴趣,可以用于聚类(clustering) 历史行为并提取多样化的兴趣。

      • CARP 首先从用户和 item 评论文档中抽取观点和aspect,并根据每个逻辑单元的组成观点和 aspect 推导出每个逻辑单元的 representation,从而用于评分预测。

1.1 模型

  1. 序列推荐问题:假设有用户集合 Uitem 集合 I 。对于每个用户 uU ,我们有一个用户历史行为序列(historical behaviors sequence)(根据行为发生时间来排序) {i1(u),i2(u),,in(u)} ,其中 it(u) 记录用户 u 交互的第 titem。给定历史交互数据,序列推荐的问题是预测用户可能交互的下一个 item

  2. 在实践中,由于对延迟和性能的严格要求,工业推荐系统通常会包含两个阶段,即 matching 阶段和 ranking 阶段。matching 阶段对应于检索 top-N 个候选 item,而 ranking 阶段用于通过更精确的score 对候选 item 进行排序。我们的论文主要聚焦于提高 matching 阶段的有效性。在本节的剩余部分,我们将介绍我们的可控多兴趣框架ComiRec,并说明ComiRec框架对于序列推荐问题的重要性。

  3. 由于工业推荐系统的 item 池通常由数百万甚至数十亿的 item 组成,matching 阶段在推荐系统中起着至关重要的作用。具体而言,matching 模型首先根据用户的历史行为计算 user embedding,然后根据 user embedding 为每个用户检索候选 item 集合,最后借助于fast KNN 算法从大规模item 池中选择最近邻的 item 为每个用户生成候选集合。换句话讲,matching 阶段的决定性因素是根据用户历史行为计算的 user embedding 的质量。

    现有的 matching 模型通常使用 RNN 来计算用户的 embedding,大多数只为每个用户生成一个 embedding 向量。但是单个 embedding 缺乏表达能力,因为单个 embedding 无法代表用户的多种兴趣。为此我们为序列推荐提出了一个多兴趣框架ComiRec ,整体如下图所示:

    • 模型的输入是一个用户行为序列,其中包含一个 item ID 列表,代表用户和 item 根据发生时间排序的交互。

      模型的输入都是 item ID,没有任何用户侧辅助信息,也没有任何 item 侧辅助信息,甚至也没有 user ID

    • item ID 被馈入 embedding layer 并被转换为 item embedding

    • 多兴趣抽取模块(multi-interest extraction module)接收 item embedding 并为每个用户生成多个兴趣,然后这些兴趣可用于模型训练和 serving

      • 对于模型训练,将选择与目标 item embedding 最近的兴趣 embedding 来计算sampled softmax 损失。

      • 对于模型 serving,每个兴趣 embedding 将独立检索 top-N 个最近邻的 item,然后将其馈入聚合模块(aggregation module)。聚合模块通过平衡推荐准确性(accuracy)和多样性(diversity)的可控过程来生成整体的 top-Nitem

    有多种可选的方法用于构建多兴趣抽取模块,在本文中我们探索了两种方法:动态路由(dynamic routing)方法和(self-attention)方法,对应的框架分别命名为 ComiRec-DRComiRec-SA

    ComiRec 是基于 interest-level 来检索itemtrigger 为用户的各个兴趣。传统的 Item CF 是基于 interest-level 来检索 itemtrigger 为用户的历史互动 item

    如果获取 interest 则有各种不同的方法,因此本论文并没有多少创新点。

  4. 动态路由方法(Dynamic Routing):我们利用动态路由方法作为多兴趣抽取模块。用户序列的 item embedding 可以视为主胶囊( primary capsules),多个用户兴趣可以视为兴趣胶囊(interest capsules)。我们使用 CapsNet 中的动态路由方法。

    这里我们简要介绍计算胶囊向量输入(vector inputs)和向量输出(vector outputs)的动态路由。胶囊是一组神经元,其激活向量(activity vectors)代表特定类型实体(例如对象或者对象的一部分)的实例化参数(instantiation parameters)。胶囊向量的长度表示胶囊所代表的实体在当前输入条件下的概率。令 eiprimary layer 中的胶囊 i (它就是用户行为序列中第 iitemembedding ),然后我们根据 primary capsules 来计算兴趣胶囊 j

    • 我们首先计算预测向量(prediction vector)为:e^ji=Wi,jei ,其中 Wi,j 为转换矩阵。

    • 然后兴趣胶囊 j 的总输入是所有预测向量 e^ji 的加权和:sj=ici,je^ji ,其中 ci,j 是由迭代式(iterative)的动态路由过程所确定的耦合系数 (coupling coefficients)。

      注意:primary 胶囊 i 和所有兴趣胶囊之间的耦合系数之和应该为 1,即 jci,j=1.0

      我们使用 routing softmax 来计算耦合系数,并使用初始 logits bi,j

      ci,j=exp(bi,j)kexp(bi,k)

      其中 bi,j 表示primary胶囊 i 应该耦合到兴趣胶囊 j 的对数先验概率( log prior probability)。

    • 《Dynamic routing between capsules》 提出了一种非线性 squashing 函数来确保短向量收缩到几乎为零的长度、长向量收缩到略低于 1 的长度。然后兴趣胶囊 j 的向量计算为:

      vj=squash(sj)=sj21+sj2×sjsj

      vj 的计算是自依赖的,因此人们提出动态路由方法来解决这个问题。整个动态路由过程如下述算法所示。然后用户 u 的输出兴趣胶囊构成矩阵 Vu=[v1,,vK]Rd×K 从而用于下游任务。

  5. 动态路由算法:

    • 输入:

      • primary capsules {ei}

      • 迭代次数 r

      • 兴趣胶囊数量 K

    • 输出:兴趣胶囊 {vj,j=1,,K}

    • 算法步骤:

      • 对于每个 primary 胶囊 i 和每个兴趣胶囊 j ,初始化 bi,j=0

      • 迭代:iter=1,,r,执行:

        • 对每个 primary 胶囊 i ,计算 ci=(ci,1,,ci,K)

        • 对每个兴趣胶囊 j ,计算 sj=ici,jWi,jei

        • 对每个兴趣胶囊 j,计算 vj=squash(sj)

        • 对每个 primary 胶囊 i 和每个兴趣胶囊 j ,更新 bi,j

          bi,j=bi,j+vjWi,jei
      • 返回 {vj,j=1,,K}

  6. self-attention 方法:self-attention 方法也可以应用于多兴趣抽取模块。

    给定用户行为的 embedding HuRn×d ,其中 n 为用户 u 行为序列的长度,我们使用 self-attention 机制获得权重向量 auRn ,该权重向量代表用户行为的注意力权重:

    au=softmax(tanh(HuW1)w2)

    其中 w2RdaW1Rd×da 为可训练的参数。

    我们根据注意力权重 sum 用户行为 embedding ,从而得到用户的向量 representationvu=Huau

    • 我们将可训练的positional embeddings 添加到输入 embedding 中,从而利用用户行为序列的顺序(order)。positional embeddingitem embedding 具有相同的维度 d ,二者可以直接相加。

    • 为了表示用户的整体兴趣,我们需要从用户行为序列中得到聚焦于不同兴趣的多个 vu 。因此,我们需要执行多次attention。为此我们将 w2 扩展为矩阵 W2Rda×K ,因此 attention 权重向量变成一个 attention 矩阵 AuRn×K

      Au=softmax(tanh(HuW1)W2)

      最终的用户兴趣矩阵 VuRd×K 为:

      Vu=HuAu=[vu1,,vuK]

      其中 vukRdVu 的第 k 列,表示用户的第 k 个兴趣。

  7. 模型训练:在通过多兴趣抽取模块计算用户行为的兴趣 embedding 之后,我们使用 argmax 算子为 target item i 选择相应的用户兴趣 embedding 向量:

    k=argmax1kKvukei,vu=vuk

    其中 ei 表示 target item iembedding

    给定一个训练样本 (u,i) ,我们可以计算用户 uitem i 交互的可能性为:

    pθ(iu)=exp(vuei)jIexp(vuej)

    模型的目标函数是最小化以下负对数似然:

    L=uUiIulogpθ(iu)

    其中 Iu 为用户 u 交互的 item 集合。

    由于计算 pθ(iu) 的代价昂贵,因此我们使用sampled softmax technique 来训练我们的模型。

  8. online serving:对于在线 serving,我们使用我们的多兴趣抽取模块来计算每个用户的多个兴趣。用户的每个兴趣向量都可以通过最近邻 library (如 Faiss )从大规模item 池中独立检索 top-Nitem 。由多个兴趣检索的 item 被馈送到聚合模块中,以确定整体的 item 候选。最后,在 ranking 模块中ranking score 较高的 item 被推荐给用户。

  9. 聚合模块(Aggregation Module):在多兴趣抽取模块之后,我们根据用户的历史行为从而为每个用户获取多个兴趣 embedding 。每个兴趣 embedding 可以根据内积邻近性独立检索 top-Nitem 。但是,如何将这些来自不同兴趣的 item 聚合起来,从而得到整体的 top-Nitem

    一种basic 且直接的方法是根据 item 和用户兴趣的内积邻近性来合并 merge 和过滤 item,这可以形式化为:

    f(u,i)=max1kK(eivuk)

    其中 vuk 为用户 u 的第 k 个兴趣 embedding

    这是聚合过程最大化推荐准确性(accuracy)的有效方法。但是,当前推荐系统不仅仅关注准确性,还关注多样性。这个问题可以形式化为:给定用户 uK 个兴趣中检索到的 K×Nitem 的一个集合 M ,目标是找到一个包含 Nitem 的集合 SM 使得预定义的价值函数最大化。

    我们的框架使用一个可控的过程(controllable procedure)来解决这个问题。我们使用以下价值函数 Q(u,S) 通过可控因子(controllable factorλ0 来平衡推荐的准确性和多样性:

    Q(u,S)=iSf(u,i)+λiSjSg(i,j)

    其中 g(i,j) 为多样性函数(或者不相似性函数),定义为:

    g(i,j)=δ(cat(i)cat(j))

    其中 cat(i)item i 的类目,δ(,) 为示性函数。

    • 如果追求准确性accuracy,即 λ=0,则我们使用上面简单的方法获取整体的 item

    • 如果追求多样性,即 λ=,则可控模块(controllable module)为用户找到最多样化的 item

    我们提出了一种贪心推断算法来近似最大化值函数 Q(u,S) ,如下述算法所示。

    最后,我们在实验中研究了可控因子。

  10. 贪心推断(Greedy Inference)算法:

    • 输入:

      • 候选 item 集合 M

      • 输出item 数量 N

    • 输出:item 集合 S

    • 算法步骤:

      • 初始化 S=ϕ

      • 迭代 iter=1,2,,N,迭代步骤为:

        i=argmaxiMS(f(u,i)+λjSg(i,j))S=S{i}
      • 返回 S

  11. 和已有模型的关联:我们将我们的模型和现有模型进行比较。

    • MIMNMIMNranking 阶段的近期代表性工作,它使用 memory 网络从长的序列行为数据中捕获用户兴趣。MIMN 和我们的模型都是针对用户的多种兴趣。对于非常长的序列行为,memory-based 架构也可能不足以捕获用户的长期兴趣。和 MIMN 相比,我们的模型利用多兴趣抽取模块来利用用户的多种兴趣,而不是一个具有 memory utilization 正则化和memory induction unit 的复杂 memory 网络。

    • MINDMINDmatching 阶段的近期代表性工作,它提出了一种行为到兴趣(Behavior-to-Interest: B2I)的动态路由,用于自适应地将用户的行为聚合到兴趣 representation 向量中。和 MIND 相比,ComiRec-DR 沿用了 CapsNet 使用的原始动态路由方法,可以捕获用户行为的序列信息。我们的框架还探索了一种用于多兴趣抽取的self-attention 方法。此外,我们的框架还利用可控聚合模块来平衡基于用户多种兴趣的推荐准确性和多样性。

1.2 实验

  1. 这里我们对序列推荐进行实验,以验证我们框架和其它 SOTA 方法相比的性能。此外,我们还报告了我们框架在十亿级工业数据集上的实验结果。

  2. 我们在强泛化(strong generalization)下评估所有方法的性能。我们将所有用户按照 8:1:1 的比例分为训练集、验证集、测试集。我们使用训练用户的完整点击序列来训练模型。为了评估,我们从验证用户和测试用户中获取每个用户前 80% 的行为,以从训练好的模型中推断用户 embedding,并通过预测剩余的 20% 的行为来计算指标。这种设置比弱泛化(weak generalization )更困难,弱泛化指的是用户行为序列同时用于训练和评估。

    具体而言,我们采用了训练序列推荐模型的通用设置。设用户 u 的行为序列为 {i1(u),i2(u),,ik(u),,in(u)} 。每个训练样本使用 u 的前 k 个行为来预估第 (k+1) 个行为,其中 k=1,2,,n1

  3. 数据集:我们在两个具有挑战性的公共数据集上进行了实验,这些数据集的统计数据如下表所示。

    • Amazon 数据集:包含来自 Amazon 的商品评论和元数据。在我们的实验中,我们使用 Amazon Book 子集。每个训练样本的用户行为序列被截断为长度 20

    • Taobao 数据集:包含来自淘宝推荐系统中收集的用户行为。在我们的实验中,我们仅使用点击行为并按时间对单个用户的所有行为进行排序。每个训练样本的用户行为序列被截断为长度 50

  4. baseline 方法:我们将我们提出的模型 ComiRec-SA/ComiRec-DRSOA 的模型进行比较。在我们的实验设置中,模型应该为验证集和测试集中的、训练期间未见过的用户提供预测,因此基于分解的方法不适合这种设置。

    • MostPopular:是一种传统的推荐方法,向用户推荐最后热门的 item

    • YouTube DNN:是工业推荐系统最成功的深度学习模型之一。

    • GRU4Rec:是第一个为推荐引入循环神经网络的工作。

    • MIND:是与我们模型相关的、最新的、SOA 的模型。它基于胶囊路由机制设计了一个多兴趣抽取器层(multi-interest extractor layer),适用于对历史行为进行聚类(clustering)并抽取不同的兴趣。

  5. 实现:我们的实验是基于 TensorFlow 1.14 以及 Python 3.6 。一些关键的超参数为:embedding 维度 d=64sampled softmax loss 的样本数为 10 ,最大训练迭代次数设置为 100 万次,多兴趣模块的兴趣 embedding 数量设置为 K = 4 。我们使用学习率 0.001Adam 优化器进行优化。

  6. 评估指标:我们使用以下三个常用指标来评估我们提出的模型的性能。

    • 召回率(Recall):为了更好的可解释性,我们使用 user 粒度的均值而不是全局均值:

      Recall@N=1|U|uU|I^u,NIu||Iu|

      其中 I^u,N 为用户 utop-N 推荐item 集合,Iu 为用户 u 的测试 item 集合。

    • 命中率(Hit Rate: HR):HR 衡量推荐 item 中包含至少一个用户交互的、正确的item 的比例,这在以前的工作中被广泛使用:

      HR@N=1|U|uUδ(|I^u,NIu|>0)

      其中 δ() 为示性函数。

    • Normalized Discounted Cumulative Gain: NDCGNDCG 考虑到了正确推荐item 的位置:

      NDCG@N=DCG@NZ=1Z×1|U|uUk=1Nδ(i^u,kIu)log2(k+1)

      其中 i^u,k 为用户 u 推荐列表中的第 iitemZ 为归一化常数,表示 Ideal Discounted Cumulative Gain: IDCG@N,它是 DCG@N 的最大可能值。

  7. 为了和其它模型进行公平地比较,我们在聚合模块中设置 λ=0 (从而追求准确性)。所有模型在公共数据集上的序列推荐性能如下表所示,粗体是每列的最佳性能,表中所有数字均为百分比数字(省略了 % )。可以看到:

    • 我们的模型在所有评估指标上都大大优于所有 SOA 的模型。

    • GRU4Rec 的性能优于其它仅为每个用户输出单个 embedding 的模型。

    • MIND 相比,由于动态路由方式的不同,ComiRec-DR 获得了更好的性能。

    • ComiRec-SA 展示了通过self-attention 机制捕获用户兴趣的强大能力,并获得了与 ComiRec-RD 相当的结果。

    注意:MIND 检索top-N titem 的方式和 ComiRec 相同。

  8. 参数敏感性:我们研究了兴趣数量 K 的敏感性。下表说明了当 K 改变时,我们框架的性能,粗体是每列的最佳性能,表中所有数字均为百分比数字(省略了 % )。可以看到:这两个模型显示出了对超参数 K 的不同属性。

    • 对于 Amazon 数据集:ComiRec-SAK=2 or 6 时性能最好,而 ComiRec-DRK=4 时性能最好。

    • 对于 Taobao 数据集:当 K2 增加到 8ComiRec-DR 性能越来越好,但是 ComiRec-SAK=2 时性能最好。

  9. 可控性研究:推荐多样性在当前的推荐系统中扮演着更重要的角色,许多研究目标是提高推荐多样性(diversity)。我们提出的聚合模块可以控制推荐准确性和多样性的平衡。

    我们使用以下基于 item 类目的个体多样性(individual diversity)定义:

    Diversity@N=i=1Nj=i+1Nδ(cat(i^u,i)cat(i^u,j))N×(N1)/2

    其中 cat(i)item i 的类目,i^u,i 为对用户 u 推荐的第 iitemδ() 为示性函数。

    下表展示了当我们控制因子 λ 以平衡推荐质量和多样性时,Amazon 数据集的模型性能。粗体是每列的最佳性能,表中所有数字均为百分比数字(省略了 % )。可以看到:当可控因子 λ 增加时,推荐多样性显著增加,召回率略有下降。这充分证明了:我们的聚合模块可以通过为超参数 λ 选择合适的值从而实现准确性和多样性之间的最佳 trade-off

  10. 工业数据集:我们在 202028 号手机淘宝 App 采集的工业数据集上进行了进一步实验,数据集的统计数据如下表所示。工业数据集包含 2200 万个优质item1.45 亿用户、40 亿条 user-item 交互。

    我们的框架已经部署在阿里巴巴分布式云平台上,其中每两个 worker 共享一个具有 16GB 内存的 NVIDIA Tesla P100 GPU。我们拆分用户为训练集、验证集、测试集,并使用训练集用户的点击序列来训练我们的模型。为了进行评估,我们使用我们的模型来计算测试集中每个用户的多个兴趣。用户的每个兴趣向量通过 fast KNN 方法独立地从大规模 item 池中检索 top-Nitem 。由不同用户兴趣检索的 item 被馈入到我们的聚合模块。在聚合模块之后,K×Nitem 中的 top-Nitem 是最终候选 item ,用于计算评估指标 recall@50

    我们在我们的框架和 SOA 的序列推荐方法 MIND 之间进行了离线实验,结果表明我们方法的显著提升:和 MIND 相比,我们的 ComiRec-SAComiRec-DR 分别将 Recall@50 提高了 1.39%8.65%

    ComiRec 并未进行在线 A/B test 实验。

  11. 案例研究:下图给出了一个电商用户的案例研究。通过我们的模型,我们从用户的点击序列中生成四个兴趣 embedding,代表四种不同的兴趣。我们发现用户的四个兴趣是关于糖果、礼品盒、手机壳、配件。

    • 左图展示了用户点击行为序列中,分别与这四个兴趣相对应的点击 item

    • 右图展示了通过兴趣 embedding 从工业 item 池中检索到的 item

    值得注意的是,我们的模型仅使用 item ID 进行训练,并没有使用人工定义的 item 类目信息。尽管如此,我们的模型仍然可以从用户行为序列中学习 item 类目。 我们的模型学习到的每个兴趣大约对应于一个特定类目,并且可以从大规模工业item 池中检索同一类目的相似 item