二十二、COLD[2020 ] (Pre-Ranking 模型)

  1. 近年来,由于互联网服务的快速增长,用户一直在与信息过载作斗争。搜索引擎、推荐系统和在线广告已经成为每天为数十亿用户提供服务的基础信息检索application 。这些系统大多数遵循多阶段级联架构multi-stage cascade architecture ,即通过 matchingpre-rankingrankingreranking 等顺序模块sequential modules 来提取候选item。下图给出了一个简短的说明。

    已经有很多论文讨论如何建立一个有效effective 的、高效efficientranking 系统。然而,很少有工作关注 pre-ranking 系统。为简单起见,在本文的剩余部分只讨论展示广告系统display advertising systempre-ranking 系统的设计。这里讨论的技术可以很容易应用于推荐系统、搜索引擎等。

    长期以来,人们认为 pre-ranking 只是 ranking 系统的简化版本。

    • 一方面,考虑到在线 serving 的算力成本computing power cost挑战,需要对更大规模的候选item 集合进行排序。以阿里巴巴的展示广告系统为例。传统上,pre-ranking 系统要评分的候选集合的规模可以扩展到数万个 item,而在后续 ranking 系统中要评分的候选集合规模则变成数百个item
    • 另一方面,rankingpre-ranking 系统都有严格的延迟限制,例如 10 ~ 20 ms。在这种情况下,pre-ranking 系统通常被设计为轻量级排序系统,通过简化ranking 模型来处理在线推断的算力爆炸。
  2. pre-ranking 系统的发展历史简介:回顾 pre-ranking 系统在工业中的发展历史,我们可以简单地从模型的角度将其分为四代,如下图所示。 分别是 useradcross 的原始特征。 分别是useradcross 特征的 embedding

    • 第一代是非个性化的 ad-wise 统计得分。它通过平均每个广告的最近CTR 来计算 pre-rank scorescore 可以高频high frequency 更新。

      缺点:非个性化、无法处理新广告、曝光稀疏广告的 CTR 统计不置信。

    • 第二代是Logistic Regression: LR 模型。它是浅层机器学习时代大规模ranking 模型的轻量级版本,可以以online learningserving 的方式进行部署。

      缺点:需要大量的手工特征工程、无法捕获特征之间的非线性交互作用。

    • 第三代是基于向量内积的深度学习模型,也是目前state-of-the-artpre-ranking 模型。在该方法中,user-wise embedding 向量和 ad-wise embedding 向量分别以离线方式预计算,没有 user-ad 交叉特征,然后在线计算两个向量的内积从而获得 pre-rank score

      缺点:向量内积的方式过于简单,使得模型效果较差。

    尽管和前两代相比,基于向量内积的 DNN 显著提升了模型性能,但是它仍然面临量大挑战,还留有进一步改进的空间:

    • 模型表达能力受限。如 《Learning Tree-based Deep Model for Recommender Systems》 所述,模型的表达能力受限于向量内积形式的深度模型。
    • 模型更新频率较低。基于向量内积的 DNNembedding 向量需要离线预先计算。这意味着基于向量内积的 DNN 模型只能以低频方式更新,难以适应最新的数据分布的变化,尤其是在数据发生剧烈变化时(如双十一当天)。

    综上所述,上述三代 pre-ranking 系统都遵循相同的范式:将算力视为恒定约束,在此基础上开发了与训练系统、serving 系统相对应的 pre-ranking 模型。也就是说,模型的设计和算力的优化是解耦的,这通常会导致模型的简化以适应算力的需求。这会导致次优suboptimal 的性能。

  3. 下一代 pre-ranking 系统 COLD :在论文 《COLD: Towards the Next Generation of Pre-Ranking System》 中,作者从算法--系统协同设计co-design 的角度重新思考了 pre-ranking 系统的挑战。论文设计了一个新的 pre-ranking 系统,通过联合优化 pre-ranking 模型和它所消耗的算力来节省算力,而不是通过限制模型体系结构(这会限制模型性能)。作者将其命名为 Computing power cost-aware Online and Lightweight Deep pre-ranking system: COLD ,如上图所示。

    论文将 COLD 视为第四代 pre-ranking 系统。COLD 兼顾了模型设计和系统设计。COLD 中的算力成本也是一个可以与模型性能联合优化的变量。换句话讲,COLD 是一种灵活的 pre-ranking 系统,模型性能和算力成本之间的 trade-off 是可控的controllable

    COLD 的主要特点总结如下:

    • 具有交叉特征的任意深度模型可以在可控算力成本的约束下应用于 COLD。在论文的真实系统中,COLD 模型是一个七层全连接深度神经网络,具有 Squeeze-and-Excitation: SE blockSE block 有利于我们进行特征组的选择,以便于从复杂的ranking 模型中获得轻量级版本。该选择是通过考虑模型性能和算力成本来执行的。也就是说,COLD 模型的算力成本是可控的。
    • 通过应用优化技巧(例如,用于加速 inference 的并行计算和半精度计算),显著降低了算力成本。这进一步为 COLD 应用更复杂的深度模型以达到更好性能带来了空间。
    • COLD 模型以 online learningserving 的方式工作,为系统带来了出色的能力来应对数据分布变化的挑战。COLD 的全在线 pre-ranking 系统为我们提供了灵活的基础设施,支持新模型开发和快速的在线 A/B test,这也是目前 ranking 系统拥有的最佳系统实践。

    下图给出了所有四代ranking 系统在模型表达能力和更新频率方面的比较,其中COLD 实现了最佳的 trade-off

    2019 年以来,COLD 已经部署在阿里巴巴展示广告系统display advertising system 中几乎所有涉及pre-ranking 模块的产品中,每天为数亿用户提供高并发请求。和最新的在线的、基于向量内积的 DNN 版本相比,COLD 带来了 6% 以上的 RPM 提升,这对于业务而言是一个显著的提升。

22.1 模型

22.1.1 Pre-Ranking 系统概述

  1. pre-ranking 模块可以被视为 matching 模块和 ranking 模块之间的连接纽带:它接收 matching 结果并进行粗选,从而减少用于后续 ranking 模块的候选集的大小。

    以阿里巴巴的展示广告系统为例,输入 pre-ranking 系统的候选集大小往往达到万级。然后 pre-ranking 模型通过某些指标(例如 eCPM )选择 top N 候选 item 的量级通常为数百。这些获胜的 个候选 item 通过复杂的 ranking 模型进一步排序,从而得到最终结果展示给用户。

    一般而言,pre-rankingranking 具有相似的功能,二者之间最大的区别在于问题的规模。显然,pre-ranking 系统要排序的候选集合规模是ranking 系统的 10 倍或者更大。在 pre-ranking 系统中直接应用 ranking 模型似乎是不可能的,这将面临算力成本的巨大挑战。如何平衡模型性能和它所消耗的算力是 pre-ranking 系统的关键考虑因素。

  2. 基于向量内积的 DNN 模型:在深度学习成功的推动下,基于向量内积的 DNN 模型已经广泛应用于 pre-ranking 系统并实现了 state-of-the-art 性能。

    基于向量内积的 DNN 模型的架构由两个并行的子神经网络组成:用户特征被馈入到左侧子网络,广告特征被馈入到右侧子网络。对于每个子网络,特征首先输入 embedding 层,然后拼接在一起,然后是全连接FC层。这样我们得到两个固定长度的向量 ,它们分别代表用户信息和广告信息。 最后,pre-ranking score 计算如下:

    基于向量内积的 DNN 模型的训练遵循与传统ranking 模型相同的方式。为了关注pre-ranking 模型的关键部分,我们省略了训练的细节。

  3. 基于向量内积的 DNN 模型的pre-ranking 系统的缺点:基于向量内积的 DNN 模型在延迟latency 和计算资源方面是高效的。 的向量可以离线预先计算,score 可以在线计算。这使得它足以应对算力成本的挑战。下图说明了基础设施的经典实现。和前几代 pre-ranking 模型相比,基于向量内积的 DNN 模型取得了显著的性能提升。

    然而,基于向量内积的 DNN 模型通过将模型限制为向量内积的形式,过于关注降低算力成本,这导致模型性能欠佳。我们总结了以下缺点:

    • 模型表达能力受限于向量内积的形式,无法利用 user-ad 交叉特征。《Learning Tree-based Deep Model for Recommender Systems》 已经表明:采用复杂的深度模型比向量内积形式网络具有显著的预测效果优势。

    • 用户向量 和广告向量 需要枚举所有用户和所有广告进行离线预计算,从而减少计算资源并优化延迟。对于拥有数亿用户和数千万广告的业务,预计算通常需要几个小时,难以适应数据分布的变化。当数据发生剧烈变化时(如双十一当天),这会给模型性能带来很大的伤害。

    • 模型更新频率也受到系统实现的影响。对于基于向量内积的 DNN 模型,用户向量索引/广告向量索引版本之间的天级切换需要同时执行,这很难满足两个索引存储在不同在线系统中的情况。根据我们的经验,延迟切换也会损害模型性能。

      如果用户向量索引切换为新版本,而广告向量索引保留为旧版本,则出现索引不一致,会严重降低在线 serving 的效果。因此用户向量索引/广告向量索引需要同时切换。

    基于向量内积的 DNN 模型的 pre-ranking 系统的这些缺点源于对算力的过度追求,并且难以完全解决。在接下来的部分中,我们将介绍我们的新的解决方案,它打破了 pre-ranking 系统的经典设计方法。

22.1.2 COLD

  1. 在这一部分,我们将详细介绍我们新设计的 pre-ranking 系统 COLDCOLD 背后的核心思想是:同时考虑模型设计和系统设计。COLD 中的算力成本也是一个可以和模型性能联合优化的变量。换句话说,COLD 是一个灵活的 pre-ranking 系统,模型性能和算力成本之间的 trade-off 是可控的。

  2. COLD 中的深度 pre-ranking 模型:基于向量内积的 DNN 模型通过限制模型架构来降低算力成本,从而导致模型性能损失。与此不同,COLD 允许应用深度模型的任意复杂架构来确保最佳模型性能。换句话说,SOTA 深度ranking 模型可以用于 COLD

    例如,在我们的真实系统中,我们将 groupwise embedding network: GwEN 作为我们的初始模型架构,它是我们ranking 系统中在线模型的早期版本。GwENfeature group-wise embedding 的拼接作为输入。注意,交叉特征也包含在 GwEN 网络的输入中。

    当然,pre-ranking 直接应用具有复杂架构的深度 ranking 模型进行在线 inference 的算力成本是不可接受的,因为要在 pre-ranking 系统中进行排序的候选集合规模更大。为了应对这一关键挑战,我们采用了两种优化策略:

    • 一种方法是设计一种灵活的网络架构,可以在模型性能和算力成本之间进行 trade-off
    • 另一种方法是通过应用工程优化技巧进行 inference 加速来显著降低算力成本。
a. 灵活网络架构的设计
  1. 一般而言,我们需要引入合适的网络架构设计,从而从初始 GwEN 模型的完整版本中得到深度模型的轻量级版本。网络剪枝、特征选择、以及神经架构搜索等技术都可以应用于此。在我们的实践中,我们选择了便于在模型性能和算力成本之间进行可控trade-off 的特征选择方法。其它技术也适用,我们留给读者进一步地尝试。

    具体而言,我们应用 Squeeze-and-Excitation: SE block 进行特征选择。SE block 首先在 CV 中用于显式建模通道之间的内部依赖性。这里,我们使用 SE block 来获得 group-wise 特征的重要性权重,并通过度量模型性能和算力成本来选择 COLD 中最合适的特征。

  2. 重要性权重计算:令 为第 feature groupembedding ,总的 feature group 数量为 SE block 压缩为一个标量值

    其中:

    • 为一个向量,给出每个 feature group 的重要性。
    • 为向量拼接。
    • 为模型参数。

    然后通过 embedding 和重要性权重 之间的 field-wise 相乘从而得到新的加权 embedding

    SE block 相当于让模型自动学习每个 feature group embedding 的特征重要性。

  3. feature group 选择:权重向量 代表每个feature group 的重要性。我们使用权重对所有 feature group 进行排序,并选择 top K 权重最高的feature group。然后进行离线测试,从而评估选定 Kfeature group 的模型的候选轻量级版本的模型性能和系统性能。评估指标包括 GAUCquery per seconds: QPS(衡量模型的吞吐量)、return time: RT(衡量模型的延迟)。

    通过多次启发式尝试 K 次,我们最终选择在给定的系统性能约束下具有最佳 GAUC 的版本作为我们最终的模型。这样,可以灵活地进行模型性能和算力成本之间的 trade-off

b. 工程优化技巧
  1. 除了通过灵活的网络架构设计降低算力成本,我们还从工程角度应用了各种优化技巧,进一步为 COLD 应用更复杂的深度模型带来了空间,以达到更好的性能。下面以我们在阿里巴巴的展示广告系统为例,介绍一下实践经验。情况可能因系统而异。读者可以根据实际情况做出选择。

    在我们的展示广告系统中,pre-ranking 模块的在线 inference 引擎主要包含两个部分:特征计算和稠密网络计算。

    • 在特征计算中,引擎从索引系统中提取用户和广告特征,然后计算交叉特征。
    • 在稠密网络计算中,引擎首先将特征转换为 emedding 向量并将它们拼接起来作为网络的输入。
  2. all level 的并行性:为了以低算力成本实现低延迟和高吞吐量的 inference ,利用并行计算非常重要。因此,我们的系统会尽可能地利用并行性。幸运的是,不同广告的 pre-rank 分数是相互独立的。这意味着它们可以在一些成本上并行计算,这些成本涉及到一些与用户特征相关的重复计算。

    • high level 上,一个前端user query 将拆分为多个 inference query。每个 query 处理部分广告,并在所有 query 返回后合并结果。因此,在决定拆分多少个 query 时需要 trade-off。更多的 query 意味着每个 query 的广告很少,因此单个 query 的延迟更低。但是太多的 query 也会导致巨大的重复计算和系统开销。

      即划分广告空间,从而在广告空间上并行计算。

      此外,由于 query 是在我们的系统中使用 RPC 实现的,更多的 query 意味着更多的网络流量,并且可能有更高的延迟或失败可能性。

    • 在处理每个 query 时,多线程处理用于特征计算。同样,每个线程处理部分广告以减少延迟。

    • 最后,执行稠密网络 inference时,我们使用 GPU 来加速计算。

  3. 基于列的计算:传统上,特征计算是基于行的方式完成的:广告被一个接一个地处理。然而,这种基于行的方法对cache 不友好。相反,我们使用基于列的方法将一个 feature 列的计算放在一起。

    下图说明了两种计算模式。在计算交叉特征的时候(例如红色方块这一列),相同的 user 特征会被频繁使用。图 (a) 为基于行的方式,每次处理交叉特征的时候都需要重新加载 user 特征;图 (b) 为基于列的方式,在处理为交叉特征的时候可以重复使用缓存的 user 特征。

    通过这种方式,我们可以使用 Single Instruction Multiple Data: SIMD 这样的技术来加速特征计算。

    在计算交叉特征(如 ad_fg & u_fg ,右图最右侧一列)时,基于列的计算可以缓存 u_fg

  4. 低精度GPU 计算:对于 COLD 模型,大部分计算是稠密矩阵的乘法,这就留下了优化空间。在英伟达的 Turning 架构中,T4 GPUFloat16Int8 矩阵乘法提供了极致性能,非常符合我们的caseFloat16 的理论峰值 FLOPS 可以比 Float328 倍。

    然而,Float16 丢失了一些精度。在实践中,我们发现对于某些场景,当我们对某些 feature group 使用 sum-pooling 时,稠密网络的输入可能是一个非常大的数字,超过了 Float16 的表示范围。

    • 一种解决方案是使用 normalization layer,如 BN 层。然而,BN 层本身包含的 moving-variance 参数,其幅度可能甚至更大。这意味着计算图需要混合精度,即全连接层使用 Float16BN 层使用 Float32

    • 另一种解决方案是使用无参数parameter-free 归一化层。例如,对数函数可以轻松地将大数值转换为合理的范围。但是,log() 函数无法处理负值,并且当输入接近零时可能会导致一个巨大的数值。因此,我们设计了一个称为线性对数算子linear-log operator 的分段平滑函数来处理这种不必要的行为,即:

    linear_log() 函数的图形如下图所示。它将 Float32 数值转换为一个合理的范围。因此如果我们在第一层放置一个 linear_log 算子,就可以保证网络的输入很小。此外,linear_log() 函数是 连续的,因此不会使网络训练更加困难。在实践中,我们发现添加这一层之后,网络仍然可以达到与原始 COLD 模型相同的精度。

    使用 Float16 进行 inference 之后,我们发现 CUDA kernelrunning time 急剧下降,kernel 启动时间成为瓶颈。为了提高实际的 QPS,我们进一步使用 Multi-Process Service: MPS 来减少启动 kernel 的开销。结合 Float16MP,引擎的吞吐量是以前的两倍。

22.1.3 全在线基础设施

  1. 受益于不受限制的模型架构,COLD 可以在全在线基础设施fully online infrastructure 下实现:训练和 serving 都以 online 的方式执行,如下图所示。从行业角度来看,这是目前最好的系统实践。这种基础设施有两个方面的好处:

    • COLD 模型的 online learning 带来了其应对数据分布漂移 shift 的挑战的出色能力。

      根据我们的经验,当数据发生剧烈变化时(如双十一当天),COLD 模型相对于基于向量内积的 DNN 模型的性能提升更为显著,正如我们在实验部分所示。此外,COLD 模型的 online learning 对于新广告更加友好。

      这是 online learning 的优势:能实时学习最新的数据分布。

    • COLD 全在线的 pre-ranking 系统为我们提供了灵活的基础设置,从而支持高效的新模型开发和在线 A/B test

      注意,对于基于向量内积的 DNN 模型,用户侧向量和广告侧向量需要离线预计算并通过索引加载到 inference 引擎。因此,它涉及多个系统的开发,以进行基于向量内积的 DNN 模型的两个版本的 A/B test 。根据我们的经验,获得可靠的 A/B test 结果的典型时间成本是几天,而 COLD 则是几个小时。此外,全在线 serving 也有助于 COLD 避免基于向量内积的 DNN 模型所遭受的延迟切换。

      从下图结构可以看到,COLD 使用了大量的、人工构造的交叉特征 cross features 。因此 COLD 中,user 信息和 ad 信息在两个 level进行了融合:

      • 在输入特征 levelCOLD 显式地、人工地构造了交叉特征,从而融合了 user-ad 信息。
      • 在模型架构 levelCOLD 通过全连接层,从而融合了 user-ad 信息。

22.2 实验

  1. 我们进行仔细的比较,从而评估所提出的 pre-ranking 系统 COLD 的性能。作为一个工业系统,COLD 在模型性能和系统性能上都进行了比较。据我们所知,这项任务只有公共数据集或 pre-ranking 系统(而没有二者的结合)。以下实验在阿里巴巴在线展示广告系统中进行。

  2. baseline 方法:COLD 模型最强的 baseline 是基于 SOTA 向量内积的 DNN 模型,它是我们展示广告系统中在线 pre-ranking 模型的最新版本。

  3. 配置:

    • COLD 模型和基于向量内积的 DNN 模型都使用超过 900 多亿个样本进行训练,这些样本都是从真实系统的日志中收集的。注意:基于向量内积的 DNN 模型和 COLD 模型共享相同的用户特征和广告特征。基于向量内积的 DNN 模型不能引入任何 user-ad 交叉特征,而 COLD 模型使用 user-ad 交叉特征。

      为了公平比较,我们还评估了具有不同交叉特征groupCOLD 模型的性能。

    • 对于 COLD 模型,特征 embedding 向量被拼接在一起,然后被馈送到全连接网络。这个全连接网络的结构是 ,其中 为所有被选中特征的 embedding 的拼接。

      对于基于向量内积的模型,全连接层的结构为

      对于基于向量内积的模型,全连接层表示单侧网络的全连接层。

    • 两种模型的输入特征 embedding 维度均设置为 16

    • 我们使用 Adam 优化器来更新模型参数。

  4. 评估指标:

    • 模型性能评估指标:GAUC 作为评估模型离线性能的指标。

      此外,我们引入了一个新的 top-k 召回率指标,从而度量 pre-ranking 模型和后续 ranking 模型之间的对齐程度alignment degreetop-k 召回率定义为:

      其中:

      • top k ad 候选top m ad 候选 是从同一个候选集合(即 pre-ranking 模块的输入)生成的。
      • top k ad 候选 是根据 pre-ranking 模型排序的,top m ad 候选 是根据 ranking 模型排序的,并且
      • 排序指标为 eCPM = pCTR x 点击出价

      在我们的实验中,ranking 模型使用 DIEN,这是在线 ranking 系统的以前的版本。

    • 系统性能评估指标:为了评估系统性能,我们使用的指标包括 Queries Per Seconds: QPS(用于衡量模型的吞吐量)、return time: RT(用于衡量模型的延迟)。这些指标反映了模型在相同大小的pre-ranking 候选集合下的算力成本。粗略地说,较低 RT 下较大的 QPS 意味着给定模型的算力成本较低。

  5. 离线模型效果评估:下表给出了不同模型的离线性能评估结果。可以看到:COLD 保持了与我们之前版本的 ranking 模型 DIEN 相当的 GAUC,并且与基于向量内积的模型相比,在 GAUCRecall 上都取得了显著的提升。

  6. 在线 A/B test 效果评估:下表显示了 COLD 模型相对于基于向量内积的 DNN 模型的在线 A/B test 提升。 可以看到:

    • 在正常情况下,COLD 模型实现了 6.1%CTR 提升和 6.5%Revenue Per Mille: RPM 提升,这对我们的业务意义重大。
    • 此外,在双十一活动期间,COLD 模型实现了 9.1%CTR 提升和 10.8%RPM 提升。这证明了全在线基础设施的价值,在数据急剧变化时,它可以使得模型适应最新的数据分布。

  7. 系统性能的评估:我们评估了使用不同模型的 pre-ranking 系统的 QPSRT,如下表所示。基于向量内积的模型在具有 2Intel(R) Xeon(R) Platinum 8163 CPU@2.50GHz (96 cores)512GB RAMCPU 机器上运行。COLD 模型和 DIEN 在配备 NVIDIA T4 的一个 GPU 机器上运行。

    可以看到:

    • 基于向量内积的 DNN 模型实现了最佳系统性能,这符合预期。
    • DIEN 算力成本最高,COLD 达到算力和效果的平衡。

  8. 消融研究:为了进一步了解 COLD 的性能,我们在模型设计视角和工程优化技术视角进行了实验。对于后一种方法,由于很难将所有的优化技术从集成系统中解耦出来并进行比较,因此这里我们仅对 GPU 低精度计算这个最重要因素进行评估。

    • pre-ranking 系统的不同版本 COLD 模型的 trade-off 性能:在模型设计阶段,我们使用 SE block 来获取特征重要性权重,并选择不同的 feature group 作为模型的候选版本。然后我们进行离线实验以评估模型的 QPS,RT,GAUC 等性能,如下表所示。* 是我们用于产品中的 COLD 模型的平衡版本,它使用部分交叉特征。

      可以看到:

      • COLD 模型的算力成本因为特征不同而不同,这符合我们灵活的网络架构设计。
      • 交叉特征越多的 COLD 模型性能越好,这也相应增加了 online serving 的负担。

      通过这种方式,我们可以在模型性能和算力成本之间进行 trade-off。在我们的真实系统中,我们根据经验手动选择平衡的版本。

      COLD 需要大量的、人工构造的交叉特征,这会增加人工特征工程的负担。

    • 不同 GPU 精度的计算比较:实验是在配备 NVIDIA T4GPU 机器上运行。在运行实验时,我们从客户端逐渐提高 QPS,直到超过 1% 的服务器响应时间开始超过延迟限制。然后我们将当前 QPS 记录为可用 QPS。实验结果如下表所示。可以看到:

      • Float32 版本的可用 QPS 最低。

二十三、ComiRec[2020] (matching阶段)

  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 框架在两个具有挑战性的真实数据集上为序列推荐实现了 state-of-the-art 的性能。
  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,从而用于评分预测。

23.1 模型

  1. 序列推荐问题:假设有用户集合 item 集合 。对于每个用户 ,我们有一个用户历史行为序列historical behaviors sequence (根据行为发生时间来排序) ,其中 记录用户 交互的第 item。给定历史交互数据,序列推荐的问题是预测用户可能交互的下一个 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 。胶囊向量的长度表示胶囊所代表的实体在当前输入条件下的概率。令 primary layer 中的胶囊 (它就是用户行为序列中第 itemembedding ),然后我们根据 primary capsules 来计算兴趣胶囊

    • 我们首先计算预测向量prediction vector 为: ,其中 为转换矩阵。

    • 然后兴趣胶囊 的总输入是所有预测向量 的加权和: ,其中 是由迭代式iterative 的动态路由过程所确定的耦合系数 coupling coefficients

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

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

      其中 表示primary胶囊 应该耦合到兴趣胶囊 的对数先验概率 log prior probability

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

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

  5. 动态路由算法:

    • 输入:

      • primary capsules
      • 迭代次数
      • 兴趣胶囊数量
    • 输出:兴趣胶囊

    • 算法步骤:

      • 对于每个 primary 胶囊 和每个兴趣胶囊 ,初始化

      • 迭代:,执行:

        • 对每个 primary 胶囊 ,计算

        • 对每个兴趣胶囊 ,计算

        • 对每个兴趣胶囊 ,计算

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

      • 返回

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

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

    其中 为可训练的参数。

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

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

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

      最终的用户兴趣矩阵 为:

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

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

    其中 表示 target item embedding

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

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

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

    由于计算 的代价昂贵,因此我们使用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,这可以形式化为:

    其中 为用户 的第 个兴趣 embedding

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

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

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

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

    • 如果追求准确性accuracy,即 ,则我们使用上面简单的方法获取整体的 item
    • 如果追求多样性,即 ,则可控模块controllable module 为用户找到最多样化的 item

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

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

  10. 贪心推断Greedy Inference 算法:

    • 输入:

      • 候选 item 集合
      • 输出item 数量
    • 输出:item 集合

    • 算法步骤:

      • 初始化

      • 迭代 ,迭代步骤为:

      • 返回

  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 方法。此外,我们的框架还利用可控聚合模块来平衡基于用户多种兴趣的推荐准确性和多样性。

23.2 实验

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

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

    具体而言,我们采用了训练序列推荐模型的通用设置。设用户 的行为序列为 。每个训练样本使用 的前 个行为来预估第 个行为,其中

  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 维度 sampled softmax loss 的样本数为 10 ,最大训练迭代次数设置为 100 万次,多兴趣模块的兴趣 embedding 数量设置为 K = 4 。我们使用学习率 0.001Adam 优化器进行优化。

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

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

      其中 为用户 top-N 推荐item 集合, 为用户 的测试 item 集合。

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

      其中 为示性函数。

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

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

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

    • 我们的模型在所有评估指标上都大大优于所有 SOA 的模型。
    • GRU4Rec 的性能优于其它仅为每个用户输出单个 embedding 的模型。
    • MIND 相比,由于动态路由方式的不同,ComiRec-DR 获得了更好的性能。
    • ComiRec-SA 展示了通过self-attention 机制捕获用户兴趣的强大能力,并获得了与 ComiRec-RD 相当的结果。

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

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

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

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

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

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

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

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

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

二十四、EdgeRec[2020]

  1. 互联网上可用的信息(如电影、商品、新闻等等)的爆炸性增长和多样性经常让用户不知所措。推荐系统是处理信息过载问题的一种有价值的手段,它从海量候选中选择一个 item 列表,以满足用户的多样化需求。

    在商业推荐系统的大部分场景中,尤其是在手机上,推荐的 item 都是以瀑布流的形式waterfall form 展示。如下图所示,大部分瀑布流式的推荐系统都是基于 cloud-to-edge 框架来部署的。当用户在瀑布流式推荐场景中滚动时,移动客户端 mobile client 首先向云服务器发起分页请求 paging request。然后在云服务器上servingmatching 模型和 ranking 模型响应分页请求并生成显示给用户的 ranking item 列表。在这种情况下,当前的基于 cloud-to-edge 的瀑布式推荐系统存在以下局限性:

    • 系统反馈延迟Delay for System Feedback:由于 cloud-to-edge 框架中的分页机制,云端推荐系统无法在相邻的两个分页请求之间及时调整推荐结果,无法进一步满足用户不断变化的需求。

      以下图为例,用户点击了当前页面第 5 个位置的一件衣服,这反映了用户对衣服类目的突然偏好sudden preference。然而,云端推荐系统无法响应,除非用户滚动到下一页,因此无法及时满足用户的需求、降低了用户体验。

    • 用户感知延迟Delay for User Perception:对于服务于云端的推荐模型,由于网络延迟,捕获用户行为存在长达1 分钟的延迟,因此它们在响应 edge 时无法对用户的实时偏好进行建模。

      以下图为例,用户对页面第49 个位置上item 的行为表明该用户目前对收音机的偏好,但是云端的推荐系统无法在下一页推荐类似的收音机,因为云端推荐系统没有及时接收到这些行为。此外,网络带宽进一步限制了当前推荐系统在 edge 捕获多样的diverse 、详细detailed 的用户行为。

    综上所述,云端推荐系统的局限性在于推荐结果的延迟调整导致无法匹配 edge 端用户偏好的实时变化,从而严重损害了商业推荐系统的用户体验。

    缺陷:实时性不足。除非用户滚动到下一页,否则客户端不会请求新的推荐 list ;即使客户端请求新的推荐 list,但是云端推荐系统无法及时处理实时用户行为。

     

    边缘计算edge computing 非常适合需要高实时性能的 application,并且有可能解决当前基于 cloud-to-edge 框架的推荐系统的上述问题。在论文《EdgeRec: Recommender System on Edge in Mobile Taobao》 中,论文率先设计并实现了一个新颖的边缘推荐系统 recommender system on edge: EdgeRec,该系统实现了实时用户感知Realtime User Perception 和实时系统反馈Real-time System Feedback ,而无需向云服务器发出额外请求。

    论文的主要贡献如下:

    • 系统架构System Architecture:论文设计了 EdgeRec 架构来在移动设备上进行 reranking,与提供候选 item 的云端推荐系统协作。

    • 系统实现System ImplementationEdgeRec 支持大规模神经网络模型,通过跨 edgecloud 之间分配模型,考虑了移动设备上的高效计算和存储。

    • 用户行为建模User Behavior Modeling:论文提出异质用户行为序列建模Heterogeneous User Behavior Sequence Modeling 来捕获用户不断变化的行为和动作。

      论文首先设计新颖的特征系统,然后同时考虑交互的 item 及其相应的动作,从而同时对 useritem 之间的正反馈和负反馈进行建模。基于 EdgeRec,特征系统中多样化diverse 的、详细detailed 的用户行为在edge 端被收集、存储、和消费,这些行为可以实时馈入模型中。

      特征体系创新:使用了更多的用户行为特征,不仅仅是点击/转化行为。

作者对淘宝首页 feeds 的真实流量进行了广泛的离线和在线评估。定量和定性分析都证明了论文提出的 EdgeRec 系统的合理性和有效性。此外,EdgeRec 在在线 A/B test 中贡献了高达 1.57%PV 提升、7.18%CTR 提升、8.87%CLICK提升、10.92%GMV 提升,这对当前的淘宝推荐系统带来了重大改进。现在 EdgeRec 已经上线部署,并服务于主要流量。

24.1 模型

24.1.1 系统

  1. 这里我们介绍 EdgeRec 系统,该系统旨在及时捕获丰富的用户行为(即实时感知Real-time Perception )并及时响应用户的需求(即实时反馈Real-time Feedback),而无需向云服务器发出任何额外请求。我们首先概述 EdgeRec 系统,然后详细说明每个设计良好的模块的实现。

  2. 系统概述:在下图中我们展示了 EdgeRec 系统的概况,其中左侧模块部署在手机淘宝客户端,右侧模块部署在云端。。注意,EdgeRec 旨在和云端的推荐系统协作,而不是取代后者。主要的模块和工作流程如下:

    • 本地客户端 Client Native: CN

      • 本地客户端首先发起分页请求paging request,并缓存推荐系统服务器返回的、具有相应特征的候选 item

        服务器不仅返回推荐的 item list,还返回这些 item 对应的特征。

        EdgeRec 中分页大小设置为 50,为了稳定性,这和淘宝中原始推荐系统的取值一样。同时,从推荐系统服务器返回的 item 数量设置为 100,以便为移动设备上的 reranking 提供更多空间。

      • 然后,本地客户端收集用户对曝光item 的行为并触发model serving 模块。

      • model serving 模块接收到候选item (尚未曝光的)的排名之后,本地客户端调整 itemUI 显示。

    • model serving: MS:是 EdgeRec 系统的核心模块。当 model serving 被本地客户端触发时:

      • 首先model serving 对从本地客户端接收到的用户行为和候选 item 进行特征工程。
      • 然后通过基于神经网络的模型,其目的是用户行为建模从而捕获及时的用户行为和上下文感知的reranking,从而及时响应用户。
      • 最后,model serving 将日志发送到云端(为了后续离线模型训练),并将候选item 的排名结果返回给本地客户端。
    • Recommender System on server:可以视为 EdgeRec 中的召回模块,其目的是响应来自本地客户端的分页请求,为候选 item 提供初始排名。

      此外,它可以在响应本地客户端之前,从云上的 key-value 存储中为候选 item 查找model serving 模块中模型需要的 item 特征和 embedding (例如category embedding )。

    • 离线训练Offline Training: OT模块:

      • 首先从model serving 收集日志并在模型训练之前构建样本。
      • 接下来,训练好的模型被分为三个部分:用户行为建模User Behavior Modeling的子模型、上下文感知重排Context-aware Reranking的子模型、embedding 矩阵(如类目和品牌)。
      • 最后,前两个子模型都部署在model serving 模块上,而 embedding 矩阵作为 key-value 形式存储在云端。

  3. 接下来我们介绍 EdgeRec 系统中两个关键模块的实现细节:本地客户端和 model serving 模块。

    • 本地客户端 Client Native: CN :本地客户端一个关键部分是在手机淘宝推荐系统中收集客户端上用户丰富的行为,例如浏览记录、点击记录(更详细的行为在后面会讲到)。这些用户行为随后被存储在设备的数据库中。

      由于 EdgeRec 模型(即 Model Serving )的运行是由本地客户端触发的,因此另一个关键的部分是触发 model serving 的策略。这里我们根据用户的在线实时行为设置了几个触发点trigger points :用户点击了一个 item、用户删除了一个 item (即长按)、Kitem 已经曝光但是没有点击。我们认为这三种类型的用户行为揭示了用户在当前推荐系统上的偏好,推荐系统应该及时响应用户(即触发 Model Serving )。

      根据业务规则来设定 trigger

    • Model Serving:在移动设备上的深度神经网络 model serving 相比较于传统的云服务面临着许多挑战,例如计算开销和存储开销。EdgeRec 模型有两个关键实现,分别针对计算效率和存储效率。其思想是跨 edgecloud 来分布模型,这使得 EdgeRec 支持在移动设备上为推荐系统提供大规模神经网络的 serving

      • 计算效率Computing Efficiency:用户行为建模User Behavior Modeling 和上下文感知重排Context-aware Reranking 一起训练,但是单独部署并在设备上异步运行。

        用户行为建模使用 RNN-based 序列建模方法,如果它总是从一开始就进行推断(即具有 时间复杂度),那么效率低得多。因此,它通过 RNN 的循环特性recurrent characteristic (即时间复杂度为 )与用户的 online incoming behaviors 一起被实时独立推断independently inferred ,并产生行为编码behavior encoding 。该编码被存储在设备上的数据库中。上下文感知重排将首先从数据库中检索行为编码,然后基于这些行为编码进行模型推断。

      • 存储效率Storage EfficiencyID 类型的特征在推荐模型中很常见而且很重要,我们总是利用 embedding 技术来转换它们。然而,当在移动设备上 serving 时,ID embedding 面临存储效率的挑战。例如,我们模型中的 item 品牌是一个 ID 特征,字典大小大约为 150 万。当 ID 通过 embedding 层转换为维度 40embedding 向量时,embedding 矩阵的大小为 150万 x 40 (即大约 230MB )。当部署在移动设备上时,具有如此大 embedding 矩阵的模型将面临存储开销的问题。

        EdgeRec 系统中,我们从训练好的模型中提取 embedding 矩阵以部署在云端的 key-value 数据库中。当服务器上的推荐系统响应来自本地客户端的分页请求时,这些 embedding 矩阵将被相应的 item 检索,并作为 item 特征发送到客户端。移动设备上的、没有 embedding 层的剩余模型部分(大约 3MB)将把 embedding 特征作为输入,然后进行模型推断。

      此外,我们设计了一个模型版本策略 model version strategy 来确保模型更新时的同步,因为在移动设备上成功部署模型可能比在云端部署模型(即 embedding 矩阵)有更大的延迟,这取决于用户移动设备的当前状态(如,是否连接到 wifi 、是否连接到 3G/4G/5G )。在 EdgeRec 系统中,我们将为每个训练好的模型生成一个唯一的版本 ID。该版本 ID 与部署在移动设备上的模型、以及存储在云端的 embedding 矩阵一起保存。本地客户端首先在设备端用模型版本号发起分页请求,然后云端推荐系统获取模型版本号,检索对应版本的 embedding 矩阵,再响应客户端。

      版本 ID 用于确保模型各组件的一致性。这也意味着需要在云端部署多套 embedding (因为可能有的手机客户端未能更新到最新的模型)。

24.1.2 算法

  1. 这里我们介绍了用于用户行为建模和上下文感知重排的特征系统和方法。

  2. 我们提出的 EdgeRec 系统旨在将 reranking 方法应用于 edge targeting waterfall flow 推荐场景。给定云端现有推荐系统生成的、缓存在 edge 端的初始排序 item 列表 ,对于本地客户端模块触发的 model serving 模块中的 reranking 请求 ,我们的目标是找到一个评分函数 ,其中: 为目标 item 的特征, 为来自初始模型的本地排序上下文local ranking context(从 抽取而来), 为当前推荐环境中的实时用户行为上下文real-time user behavior context (从本地客户端上用户行为序列抽取而来)。

    这里本地排序上下文指的是推荐系统服务器返回的候选 item 列表。

    考虑本地排序上下文的 reranking 模型在以前的工作中已经得到了很好的研究。并且本地排序上下文表示为初始排序候选 item 之间的 list-wise 交互,其可以由 RNN 或者 Transformer 建模。但是,我们认为实时用户行为上下文对于 reranking 问题也很重要,尤其是在瀑布推荐场景中,而之前很少有工作考虑过它。

    接下来我们将介绍如何使用异质用户行为序列建模实时用户行为上下文,以及如何使用行为注意力网络Behavior Attention Network 的上下文感知重排Context-aware Reranking 来建模候选 item 和实时用户行为上下文之间的交互。通过结合边缘计算 edge computing 系统和上下文感知重排模型,我们可以在推荐系统中实现实时感知Real-time Perception 和实时反馈Real-time Feedback ,更好地满足用户的在线多样化需求。

    EdgeRec 系统的整体架构如下图所示。

a. 特征系统
  1. 这里我们首先讨论我们的特征系统 feature system,然后介绍 item 曝光上、以及 item 详情页上的详细用户操作特征以及相应的 item 特征。

  2. 洞察 insight: 在个性化搜索和推荐系统的文献中,用户的行为通常被建模从而表征用户的个性化偏好。因此,这些模型仅考虑用户和 item 之间的直接 “正反馈”positive feedback (例如点击或交易),很少关注间接“负反馈”negative feedback(如跳过或删除)。虽然正反馈相对更清晰、噪音更小,但是实时的负反馈也很重要,尤其是在瀑布流推荐系统中。以在线淘宝推荐系统为例,一个item 类目实时多次曝光之后,如果继续曝光该类目的 item 那么点击率 CTR 会显著下降。

    另一方面,以前的工作仅考虑与用户交互的 item 的特征(如,类目、品牌)。然而,用户对 item 的“动作”action 也应该受到关注。例如,用户点击一个 item 之后,其详情页(称作 item page-view)中的操作(例如,添加到收藏夹、添加到购物车)反映了用户对该 item 的真实偏好。此外,尽管用户没有点击某个 item,但是对该 item 曝光的操作(例如滚动速度和曝光)可以代表该 item 被视为“负反馈” 的程度。有时,如果用户长时间聚焦于某个 item 曝光而没有点击它,这并不能绝对表明用户不喜欢该 item 。在目前瀑布流推荐系统中,item 展示的信息量越来越大,例如图片更大、关键词更多、甚至自动播放视频,因此点击已经成为一些用户非常“奢侈”的正反馈。

    最后,基于我们提出的 EdgeRec 系统,所有的用户行为特征都在edge(即用户的移动设备)上收集、抽取、和消费。与当前的基于 cloud-to-edge 的推荐系统相比,这有可能突破网络延迟和带宽的限制。因此,可以结合丰富的、详细的用户行为以更实时的方式推断用户偏好。此外,在用户自己的移动设备上处理和利用用户的原始行为,可以在一定程度上缓解用户数据隐私问题。

    总而言之,我们工作中的特征系统是新颖的,并且从 “仅依赖正反馈交互” 到 “同时关注正负反馈交互”,从“仅关注交互 item ” 到 “同时考虑交互的 item 及其相应的动作”, 从“准实时方式” 到 “超实时方式”。

  3. item 曝光用户行为特征 Item Exposure User Action Featureitem 曝光 Item Exposure: IE 用户行为揭示了用户在推荐系统当前展示页面中的 item 曝光上的行为。下图(a)说明了手机淘宝瀑布流推荐系统中的 item 曝光。

    相应用户行为特征可以分类为(下表给出了更详细的细节):item 曝光统计信息(e1~e2)、用户滚动统计信息(e3~e5)、用户删除反馈信息(e6)、时间衰减(e7)。这里我们将 item 对应的 e1 ~ e7 拼接起来,作为item 的曝光行为特征向量exposure action feature vector

    下表中,e1 ~ e7item 曝光用户行为特征,d1 ~ d12item 详情页用户行为特征,p1~p7item 特征。

  4. item 详情页用户行为特征 Item Page-View User Action FeatureItem Page-View: IPV 用户行为揭示了用户在点击 item 后在 item 详情页中的行为。上图 (b) 说明了手机淘宝中的 item 详情页,并且相应用户行为特征可以分类为(下表给出了更详细的细节):item 详情页统计信息 (d1)、每个区域是否点击(d2 ~ d11)、时间衰减(d12)。这里我们将 item 对应的 d1 ~ d12 拼接起来,作为item 的详情页行为特征向量 page-view action feature vector

  5. item 特征 Item Feature:除了用户行为特征,我们还需要相应 item 的特征。item 特征可以分类为:离散特征(p1~p6,它们将学习 embedding)、从base ranking 模型提供的原始特征 (p7)。这里我们将 item 对应的 p1 ~ p7 拼接起来,作为 item item feature vector

b. 异质用户行为序列建模
  1. 这里我们将介绍如何对定义为 的实时用户行为上下文real-time user behavior context 进行建模。根据以前的工作,我们也应用序列建模方法。然而,之前的工作仅考虑用户的positive 交互 item,正如我们前面所讨论的,因此他们不能很好地处理基于我们提出的特征系统的用户行为序列建模。挑战来源于用户行为数据存在两个方面的异质性heterogeneity。因此在我们的工作中,我们提出了异质用户行为序列建模 Heterogeneous User Behavior Sequence Modeling: HUBSM,具体而言是针对以下两个异质性:

    • 第一个异质性是 item 曝光行为和 item 详情页行为的异质性。由于和 item 曝光行为相比,item 点击行为要稀疏得多(item 详情页就是点击之后带来的),如果曝光行为和点击行为以一个序列编码在一起,那么我们相信item 曝光行为将占据主导地位。所以我们选择分别对 item 曝光行为和 item 详情页行为进行建模,即 Item Exposure Behavior Sequence ModelingItem Page-View Behavior Sequence Modeling

      Item 曝光行为刻画的是用户的负向意图,而 Item 详情页行为刻画的是用户的正向意图。所以在构建特征体系的时候,Item 曝光用户行为特征描述了哪些行为能够体现用户的 “不喜欢”,Item 详情页用户行为特征描述了哪些行为能够体现用户的 “喜欢”。

    • 第二个异质性是用 user behavior action 和对应的 user interacted item 的异质性,这代表了两种特征空间。用户行为动作特征揭示了用户在 item 上行为的分布,而 item 特征代表了 item 属性的分布。

      我们选择首先对用户行为动作和用户交互item 进行独立编码,然后在接下来的上下文感知重排模型中进行关于行为注意力机制Behavior Attention mechanism 的融合。

    曝光行为和点击行为分开独立建模可以理解,但是将动作序列和 item 序列分开独立建模好像讲不通?只有动作、而没有被作用的 item 无法刻画用户的偏好,只有动作和 item 结合在一起才能完整地刻画用户偏好。因此第二个异质性是否不成立?

  2. item 曝光行为序列建模:我们将 Item Exposure 动作特征向量输入序列定义为 ,对应的 item 特征向量输入序列为 。其中 Item Exposure 行为序列的预定义最大长度,对于较短的序列我们用零来填充。

    通过以下方程我们得到了动作编码输出序列 item 编码输出序列 、融合的行为编码输出序列

    其中 为编码后的动作特征向量、item 特征向量、融合行为向量。

  3. item 详情页行为序列建模:我们将 Item Page-View 动作特征向量输入序列定义为 ,对应的 item 特征向量输入序列为 。其中 Item Page-View 行为序列的预定义最大长度,对于较短的序列我们用零来填充。

    通过以下方程我们得到了动作编码输出序列 item 编码输出序列 、融合的行为编码输出序列

    其中 为编码后的动作特征向量、item 特征向量、融合行为向量。

  4. 如前所述,在item 曝光行为序列建模和item 详情页行为序列建模中,对于户行为动作、用户交互item ,我们都采用常用的 gate recurrent unit: GRU 作为我们的编码器函数。我们用多层 GRU 网络定义序列编码器函数为:

    其中 为输入序列, 为编码的输出序列,RNN 的最终状态。

    我们采用向量拼接来作为融合函数fusion function,即:

    其中 为编码后的动作特征向量, 为编码后的item 特征向量, 为融合后的特征向量。

    当然,这里可以采用更复杂的编码模型(例如 Transformer),也可以采用更复杂的融合函数(例如 DNN)。考虑到移动设备上模型的大小,我们在实现中分别使用了 GRU 和拼接。最终用户行为上下文 由两个元组构成:

    我们在 EdgeRec 的设备上部署 HUBSM。基于 RNN 的循环计算特性,我们对 online incoming 用户行为进行同步地、实时地建模,如前面内容所述。

c. 上下文感知重排
  1. 这里我们研究了我们的 reranking 方法的细节,该方法称作行为注意力网络的上下文感知重排Context-aware Reranking with Behavior Attention Networks ,以共同捕获 local ranking 上下文以及候选 item ,与实时用户行为上下文之间的交互。

    我们使用 GRU 网络对由初始 ranking 模型排序的候选 item 序列进行编码,并将最终状态作为 local ranking 上下文 。借助于注意力技术,我们的 reranking 模型可以自动搜索与target item 排序相关的用户行为上下文部分。

    以前的 CTR 预估模型(如 DINDUPN)仅学习与 target item 相关的attend 用户历史交互 item,因此它们无法基于上述注意力机制对用户行为动作进行建模。作为比较,我们的方法首先从用户行为上下文中 attend 相关的交互 item(也就是找到相似的交互 item),然后attentively 结合相应的用户行为动作(这些用户行为动作表明用户对这些item 的潜在意图),一起作为上下文表示从而指导target item 预测。我们在这里称之为 Behavior Attention,它特别地同时使用了 item 曝光行为上下文和 item 详情页行为上下文。

    简而言之,首先找到目标 item 相似的用户交互 item,然后找到对于该 item 的动作。

  2. Candidate Item Sequence Encoder :我们将候选 item 序列定义为 ,它是由推荐系统服务器中的prior 模型生成和排序的。这里的 是候选 item 序列的预定义最大长度,对于较短的item 序列我们使用零来填充。

    候选 item 序列如何生成?猜测可能就是常规的 ranking 模型得到的。因此EdgeRec 需要两套模型:一套是服务器端的常规 ranking 模型,另一个是 EdgeRec 模型。

    我们应用 GRU 网络对其进行编码,并将 RNN 的最终状态表示为 local ranking 上下文,即:

    其中: 为候选 item 编号后的 embedding 向量,local ranking 上下文。

    因为服务器返回的是有序的 item list,所以这里用 GRU 网络来捕获序列关系。

  3. Behavior Attention:具体到编码为 target 候选 item

    • 我们首先分别关注 item 曝光行为item 编码序列 item 详情页 item 动作编码序列

    • 然后我们根据 Bahdanau 注意力机制将将注意力分布表示为 以及

      即,计算曝光行为 item / 详情页行为 item 和目标 item 的相似度。

    • 最后,我们通过结合注意力分布,以及用户行为序列的融合行为编码fused behavior encoding ,从而生成用户行为上下文

    具体而言,遵循 Transformer 中的三元组 (Query,Key,Value) 的符号,我们在模型中定义 QueryKeyValue 。我们认为,这里的注意力计算是为了搜索相似或相关的 item,因此比较的两个特征空间的 representation 应该是同质的。这就是为什么我们选择对 user behavior actions 和相应的 user interacted items 分别进行编码,并以用户行为item 序列作为 Keytarget item 作为 Query

    比较的两个特征空间也可以是异质的,可以通过一个参数矩阵映射到相同的空间中来。但是论文中的方法是否更好,可以通过实验来比较。

    详细信息可以参考以下公式:

    其中 为训练的参数。

  4. 模型学习:为了建模 ,我们首先简单地将 IPVIE上的上下文(即 )、target 候选的 representation (即 )、local ranking 上下文(即 )拼接起来,并将它们馈入多层感知机MLP 中进行非线性变换,随后使用交叉熵损失进行模型训练。

24.2 实验

  1. 这里我们通过离线和在线评估,在真实的淘宝推荐系统数据集上验证了我们模型的有效性。

24.2.1 离线评估

  1. 数据集:我们从手机淘宝的 EdgeRec 系统收集在线日志以及相应的 item 特征。具体而言,我们从两个不同日期(2019-11-142019-11-15)的日志中随机抽样,并将它们分为训练集(22072671 个样本)和测试集(200000 个样本)。此外,我们收集的数据集的 Item 曝光行为序列平均长度为 56Item详情页行为序列的平均长度为 26

  2. baseline 方法:我们将我们的模型和两种在工业application 中广泛应用的代表性方法进行比较,即 DNN-rankDLCM

    为了检查我们提出的异质用户行为序列建模 HUBSM 和使用行为注意力网络的上下文感知重排 CRBAN 的有效性,除了我们的完整方法CRBAN+HUBSM(IE&PV)之外,我们还准备了 CRBAN 的以下变体:

    • CRBAN+HUBSM(IE):仅仅考虑 Item 曝光行为序列建模 IE-BSM

    • CRBAN+HUBSM(IPV):仅仅考虑 Item 详情页行为序列建模 IPV-BSM

    • CRBAN+HUISM(IE&IPV):尽管 IE 曝光行为序列和 Item 详情页行为序列都被考虑,但是使用 DIN 而不是 HUBSM 对用户行为上下文建模。

      DIN 仅考虑历史行为序列和目标 item 相关性,没有利用到序列的顺序特性。

  3. 配置:我们使用 PAI 支持的分布式 Tensorflow 训练模型,训练配置如下:batch size = 512、学习率为 0.005GRU 隐单元数量为 32attention 隐单元数量为 32MLP 隐单元数量为 32、优化器为 Adam

    注意:DNN-rankDLCM 仅利用云端的特征,因为它们无法捕获 edge 特征。

  4. 评估指标:GAUC 是一种广泛使用的推荐指标,通过对用户的 AUC 取平均。在我们的论文中,我们通过对 EdgeRec 系统中的本地客户端请求 取平均 AUC 来扩展 GAUC ,这可以视为一个 reranking session,计算如下:

    其中: 为请求 item 曝光量, 为请求 AUC

  5. 不同方法的 GAUC 性能如下表所示。这里 * 表示和 baseline (DLCM ) 相比,通过 t-testp-value=0.05 的统计显著性提升。

    可以看到:

    • DLCM 优于 DNN-rank ,这验证了将 local ranking context 纳入 reranking 模型的有效性。

    • 所有基于 CRBAN 的方法都显著优于 DLCM。特别地,我们的完整方法 CRBAN+HUBSM(IE&IPV) 实现了 GAUC2% 的显著相对提升。这证明了在 reranking 模型中考虑实时用户行为上下文的优势。因此,如何对用户行为上下文进行建模是我们将在以下讨论中重点讨论的内容。

    • 为了验证我们提出的异质用户行为序列建模方法,我们将 HUBSM(IE&IPV)HUBSM(IE)HUBSM(IPV) 进行了比较。结果表明:正反馈(即 IPV)和负反馈(即 IE)的用户行为都有助于对用户行为上下文进行建模。

      我们还发现 HUBSM(IPV) 优于 HUBSM(IE) ,这表明 Item 详情页用户行为可能比 Item曝光用户行为更重要。

    • 最后,通过比较 HUBSM(IE&IPV)HUISM(IE&IPV) 的结果表明:通过同时考虑交互 item 及其相应action 的行为注意力机制可以带来效果提升。

24.2.2 在线评估

  1. 在线 A/B test:我们在手机淘宝上部署的 EdgeRec 系统上进行了在线实验(A/B test)。在淘宝瀑布流推荐系统中,在线指标包括 PV、CTR、CLICK、GMV,这些指标评估用户在推荐系统中查看(PV)、点击(CTR,CLICK)、购买(GMV)的意愿有多大。

    EdgeRec 已经全面部署在手机淘宝 application 中,服务于数十亿用户。baseline (即 A test)是没有 EdgeRec 的常规淘宝推荐系统。在这里,数百万不同的随机用户同时分别进行在线A/B test 。在 2019-10-262019-11-08 近两周的测试中,拥有完整模型 CRBAN+HUBSM(IE&IPV)EdgeRec 平均贡献高达 1.57% PV7.18% CTR8.87% CLICK10.92% GMV 的提升。这绝对是一项重大的改进,并证明了我们提出的系统的有效性。

    此外,我们还回顾了淘宝推荐系统中不同展示位置display position 的在线平均 item 点击率。从下图可以看到:部署 EdgeRec 后,当前页面末尾的 CTR 会有很大的提升。这说明在推荐系统中加入实时感知和实时反馈可以大大提高用户的点击意愿,因为推荐系统能够及时满足用户的在线需求。

  2. 在线系统性能:除了在线 A/B test 以展示生产中的业务效果之外,我们还在手机淘宝中进行了 EdgeRec 的效率测试,从三个关键方面揭示了部署 EdgeRec 后系统效率的显著提升。

    • 用户行为的延迟时间会影响系统捕获用户对 item 个性化偏好的及时性,从而影响用户在推荐系统中的体验。

      由于网络带宽和延迟的限制,仅仅基于 cloud-to-edge 框架的推荐系统可能会导致捕获用户行为的延迟时间长达 1 分钟。然而,部署 Edge 之后,用户行为可以在设备上被收集和消费,无需任何网络通信开销,这可以使延迟时间在 300 毫秒以内(例如,从设备上的数据库读取用户行为的时间)。

    • 系统的响应时间是影响推荐系统用户体验的另一个因素。当本地客户端随着用户在推荐系统场景中滚动并向系统发送请求时,系统应该及时响应并将已排序的 item 提供给用户,否则用户将等待并可能导致用户离开。

      由于为淘宝上亿用户提供如此复杂的推荐系统模型的计算开销,仅基于云端计算的推荐系统可能会导致包括网络传输在内的 1 秒的响应时间。而在 EdgeRec 中,model serving 在每个用户的移动设备上,解决了集中计算开销的问题,使得响应时间在 100 毫秒以内,无需任何网络通信。

    • 系统对用户的平均反馈次数是影响推荐系统用户体验的另一个关键因素。它反映了当用户在推荐系统中浏览时,系统可以调整向用户展示的 item 排名的频率。系统调整结果的频率越高,就越能够满足用户在推荐系统中的各种需求。

      然而,没有 EdgeRec 的推荐系统不能使系统反馈的次数变得更大,因为这会加重云端服务器上的计算开销。所以在目前 cloud-to-edge 的框架下,没有 EdgeRec 的淘宝推荐系统中用户的平均系统反馈次数为 3 次,平均分页大小为 50 (即用户平均发出 3 次分页请求)。相比之下,EdgeRec 中没有显式的分页点,而是根据用户行为由本地客户端来触发。在不增加云端额外计算开销的情况下,EdgeRec 中系统反馈的平均次数可以达到 15 次(即本地客户端平均在一个页面中触发了 5reranking 请求,因此总数为 15 次)。

    EdgeRec 和不带 EdgeRec 的推荐系统在这三个方面的性能如下表所示。结果数据是在流量高峰时观察到的,并且通过对用户取平均来计算。

24.2.3 案例研究

  1. 我们在下图中对手机淘宝进行了案例研究,以展示异质用户行为序列建模和行为注意力网络的上下文感知重排的有效性。总之,我们有以下观察:

    • 用户在item 详情页中的行为表明用户具有 positive intention degreeitem 偏好,例如添加到购物车或者和客服咨询;而item 曝光中的用户行为通常推断出对 itemnegative intention ,如快速划过或删除。

      这意味着异质用户行为序列建模能够捕获用户对历史交互 item 的潜在正向和负向意图。

    • 借助于item 详情页中两件相似的衬衫,候选衬衫被预测为postive ;借助于item 曝光中具有lower negative intention degree 的两个相似的交互 item,候选帽子被预测为 negative

      这表明行为注意力网络的上下文感知重排能够利用用户行为上下文对候选item 之间的交互进行建模,从而更好地指导target item 的预测。

二十五、DPSR[2020](检索)

  1. 近年来,在线购物平台(如 Ebay、沃尔玛、亚马逊、天猫、淘宝、京东)在人们的日常生活中越来越受欢迎。电商搜索帮助用户从数十亿商品中找到用户需要的东西,因此电商搜索是这些平台的重要组成部分,并且在所有渠道中贡献了最大比例的交易。例如,服务于数亿活跃用户的天猫、淘宝、京东等中国顶级电商平台,Gross Merchandise Volume: GMV 高达数千亿美元。在论文 《Towards Personalized and Semantic Retrieval: An End-to-End Solution for E-commerce Search via Embedding Learning》 中,作者将重点关注深度学习最近对电商搜索系统产生的巨大影响。下图给出了京东手机 App 上搜索的用户界面。

  2. 搜索系统的三个组件Three Components of Search System :下图展示了一个典型的电商搜索系统,它具有三个组件:query 处理query processing、候选检索candidate retrieval、排序ranking

    • query 处理将 query (例如 “爷爷的手机”)重写为可以由下游组件处理的 term-based representation (例如 [term 手机] AND [term 爷爷])。这个阶段通常包括词干化 tokenization、拼写纠正spelling correctionquery 扩展 query expansion、以及重写 rewriting
    • 候选检索使用离线构建的倒排索引inverted indexes ,根据 term matching 高效地检索候选 item 。这一步将 item 数量从数十亿减少到数十万,使得 fine ranking 变得可行。
    • ranking 根据相关性、预估转化率等因子对检索到的候选进行排序。生产系统可能具有级联的 ranking steps,其中从上游到下游依次应用从简单到复杂的 ranking 函数。

    在论文中,我们仅关注候选检索阶段,以实现更加个性化personalized 和语义化 semantic 的搜索结果,因为这个阶段在我们的搜索产品中贡献了最多的 bad cases 。根据我们的分析,JD.com 作为全球最大的电商搜索引擎之一,搜索流量的不满意案例 dissatisfaction cases 大约 20% 可以归结于这一阶段的失败。如何在 ranking 阶段处理这一点不在本文讨论范围内,但是将是我们未来的工作。

  3. 候选检索中的两个挑战Two Challenges in Candidate Retrieval :如何有效地检索更加个性化和语义相关的item 仍然是现代电商搜索引擎面临的主要挑战。

    • 语义检索问题Semantic Retrieval Problem :指的是传统的倒排索引无法检索语义相关、但是不包含queryexact termsitem 。正如《Semantic Matching in Search》所述,搜索系统最关键的挑战是 queryitem 之间的 term mismatch ,尤其是对于电商搜索,item 标题通常很短。

      传统的互联网搜索通常使用 query rewriting 来解决这个问题,它将原始 query 转换为另一个可能更好地代表搜索需求的 similar query 。但是,很难保证通过 middle man “中间人” (即重写的 query)来保持相同的搜索意图search intention,并且也不能保证包含不同 terms 的相关 item 可以通过有限的rewritten query 集合来检索到。

    • 个性化检索问题Personalized Retrieval Problem :指的是传统的倒排索引无法根据当前用户的性别、购买力等特征检索出不同的 item。例如,如果用户是女性,那么我们希望检索更多的女性 T-shirt ,反之亦然。

      一些基于规则的解决方案已经在我们的系统中使用了很多年,包括:为 item 建立 tag 索引,如购买力、性别等等,就像 token 进入倒排索引一样;为不同的用户组建立独立的索引。然而,以前的这些方法太过于人工设计hand-crafted ,因此很难满足更精巧subtle 的个性化需求。

  4. 论文的贡献:在论文中,作者提出了深度个性化和语义化的检索 Deep Personalized and Semantic Retrieval: DPSR 来解决前述的工业级电商搜索引擎中的两个挑战。论文的贡献可以总结如下:

    • 论文概述了由离线模型训练、离线索引、在线 serving 组成的完整 DPSRembedding 检索系统。作者分享了将基于神经网络的候选检索产品化为工业级电商搜索引擎的关键设计决策。
    • 论文开发了一种新颖的神经网络模型,该模型具有双塔架构、query 塔为 multi-head 设计、attention-based 损失函数、负采样方法、高效的训练算法和人工监督数据。所有这些对于训练表现最好的模型都是必不可少的。
    • 论文展示了作者在构建大规模深度检索训练系统方面所做的努力,其中论文定制化了现有的 TensorFlow API 以实现在线/离线一致性、输入数据存储、以及可扩展的分布式训练。论文还展示了作者在构建用于 embedding 检索的工业级在线 serving 系统方面所做的努力。
    • 论文进行了广泛的embedding 可视化、离线评估、在线 A/B test,结果表明论文的检索系统可以帮助找到语义相关的 item,并显著改善用户的在线搜索体验,尤其是对于传统搜索系统难以处理的长尾 query (转化率提升 10% )。

    2019 年以来,论文的 DPSR 系统已经成功部署在京东的搜索产品中。

  5. 相关工作:

    • 传统的候选检索Traditional Candidate Retrieval :对于候选检索,大多数研究都集中在学习 query rewrites 作为一种间接方法来弥合 querydoc 之间的vocabulary gap 。仅有少数的几种新的模型方法,包括矩阵分解的潜在语义索引 latent semantic indexing: LSI、概率模型的概率潜在语义索引 probabilistic latent semantic indexing: PLSI、自编码模型的语义哈希semantic hashing 。所有这些模型都是从 doc 中的单词共现中无监督学习的,没有任何监督的 label

      我们的方法和之前的方法不同,因为我们训练了一个监督模型来基于具有相关信号(即 click )的大规模数据集直接优化相关性度量relevance metrics (而不是优化单词共现)。

    • 基于深度学习的相关性模型Deep Learning Based Relevance Model:随着深度学习的成功,大量基于神经网络的模型被提出,以学习 querydoc 之间语义相关性的方式来改进传统的信息检索information retrieval: IR方法和 learning to rank: LTR 方法。

      有关语义匹配和基于深度神经网络的信息检索的全面综述,可以参考《Semantic Matching in Search》《An Introduction to Neural Information Retrieval》。特别是 DSSM 及其后续工作 CDSSM 开创了使用深度神经网络进行相关性评分的工作。最近,包括 DRMMDuet 在内的新模型得到了进一步发展,以将传统的信息检索lexical matching 信号(如 query term 重要性、exact matching )包含在神经网络中。然而,这个方向所提出的大部分工作都集中在 ranking 阶段,其优化目标和要求与我们在本文工作所关注的候选检索有很大不同。

      深度神经网络的双塔架构已经在现有的推荐工作中广泛采用,以进一步结合 item 特征。这种模型架构在自然语言处理中也被称作双编码器dual encoder 。这里我们提出了一个更高级的双塔模型,它由用于query 塔的 multi-head 和基于 soft 内积(而不是简单内积)的 attention 损失函数组成。

    • 搜索引擎中的 embedding 检索 Embedding Retrieval in Search Engine:近年来,embedding 检索技术已广泛应用于现代推荐系统和广告系统,但是尚未广泛应用于搜索引擎。我们发现了关于在搜索引擎中检索问题的一些工作,但是它们尚未被应用到工业生产系统中。据我们所知,我们是在工业搜索引擎系统中应用 embedding 检索的首批实践探索之一。

25.1 模型

  1. 在我们介绍细节之前,先展示以下我们的 embedding 检索系统的全貌。下图说明了我们的生产系统具有以下三个主要模块:

    • 离线模型训练Offline Model Training 模块:训练由 query embedding 模型(即 query 塔)和 item embedding 模型(即 item 塔)组成的双塔模型,分别用于在线 serving 和离线索引。

      这种双塔模型架构是一种谨慎且必要的设计,能够实现快速的在线 embedding 检索,具体细节在后面讨论。此外,我们在后面还讨论了我们优化离线训练系统的努力。

    • 离线索引Offline Indexing 模块:加载 item embedding 模型(即 item 塔),从 item 语料库中计算所有 item embedding,然后离线构建 embedding 索引以支持高效的在线 embedding 检索。

      由于不可能在数十亿个itemitem 语料库中进行全量搜索,因此我们采用了一种 state-of-the-art 的算法来来对稠密向量进行有效的最近邻搜索,从而为 query embedding 找到相似的 item embedding

    • Online Serving 模块:加载 query embedding 模型(即 query 塔)从而将任何用户输入的 query 文本转换为 query embedding,然后将其馈送到 item embedding 索引以检索 K 个相似 item

      注意,这个在线 serving 系统必须以几十毫秒的低延迟来构建。此外,它必须能够 scale 到每秒数十万次查询query per second: QPS ,并且能够灵活地对实验进行敏捷迭代。我们将在后面详细讨论我们为了构建这样一个在线 serving 系统所作的努力。

    这里将 User Profileembedding 进行 Concat,而 User History Events, Query Tokens, Item Title Tokensembedding 都是进行 Average,有两个原因:

    • 首先,User Profile 的字段数量是固定的,因此 embedding 拼接之后的长度是确定的。而 User History EventsQuery TokensItem Title Tokensembedding 数量是可变的,拼接之后的长度是可变的。
    • 其次,User Profile 的各字段是异质的,例如 “年龄” 和 “性别” 是不同的,它们的 embedding 难以直接相加;而 User History Eventembedding 是同质的,它们可以直接相加。
  2. 接下来我们逐步介绍 embedding learning 模型,按照双塔架构two tower architecturequery 塔的多头设计multi-head design 、注意力损失函数attentive loss function 、混合负采样hybrid negative sampling 、人工监督数据human supervision data 的顺序。所有这些对于训练我们的最佳表现的模型都是不可或缺的。

25.1.1 双塔架构

  1. 如上图的离线模型训练模块所示,模型由 queryitem 组成。对于给定的 query item ,模型的输出得分为:

    其中:

    • 表示 维空间中 queryquery 塔的 个输出embedding
    • 表示 维空间中 itemitem 塔的 个输出 embedding
    • 评分函数 计算 queryitem 之间的最终得分。

    研究者和从业人员通常让 queryitem 都输出一个单一的 embedding,即 ,并选择内积作为评分函数,即:

    这种最简单的设置在很多应用中已经被证明是成功的。

  2. 这种双塔架构的关键设计原则是:在模型训练之后,使得 query embeddingitem embedding 相互独立。所以我们可以分别独立地计算它们。所有的 item embedding 都可以离线计算,以便为在线快速最近邻搜索构建 item embedding index,并且可以在线计算 query embedding 以处理所有可能的用户 query

    即使 embedding 是独立计算的,由于 query 塔和 item 塔之间简单的内积交互,理论上 query embeddingitem embedding 仍然在相同的几何空间中。因此,为给定的 query embedding 找到 K 个最近邻的 item ,等效于最小化给定 queryKquery-item pair 对的损失。

  3. 在下面的部分中,我们将介绍一个新颖设计的 query 和一个交互函数 ,从而达到出色的、且可解释的检索结果。

    由于 item representation 通常很直接明了,我们仍然简单地保持 item 不变。item 将所有 item 特征拼接起来作为输入层,然后通过多层感知机 MLP (采用 ReLU)来输出单个 itemembedding,最后归一化为与 query embedding 相同的长度,如上图离线模型训练模块右侧所示。类似的 MLP 结构可以在以前的工作中找到。

25.1.2 Multi-head 的 Query 塔

  1. 如上图中离线训练模块的左侧所示,query 塔和 item 塔有两个不同之处:

    • 一个投影层projection layer ,将一个输入的稠密 representation 投影为 个稠密的representation 。这里的另一个选择是使用 个独立的 embedding 集合,但是它需要更大的模型规模。在实践中,我们选择投影层来实现类似的效果,但是模型规模要小得多。

    • 个独立的encoding MLP,每个 MLP 独立输出一个 query embedding,它们可能会捕获 query 的不同意图。我们将这 个输出 embedding 称作multi-head representation

      这些 multiple query embeddingsquery 的意图提供了丰富的 representation。通常,我们在实践中发现:这可以为多义词 query (如 apple)捕获不同的语义含义,为商品 query (如 cellphone)捕获不同的流行品牌,为品牌query (如 Samsung )捕获不同的商品。

  2. 值得一提的是,encoding 层可以使用任何更强大的神经网络,如 RNN 和其它 state-of-the-arttransformer-based 模型。在一项独立的离线研究中,我们使用这些高级模型取得了相似或者稍好一些的结果。但是我们要强调的是,简单的 MLP 更适合于我们的工业级生产建模系统,因为它对离线训练和在线 serving 都更加高效,这意味着我们能够向模型训练馈送更多的数据(因为MLP 的计算效率高),并部署更少的机器来serving 模型。

25.1.3 Attention 损失函数

  1. 除了单个 embedding 和内积 setup 之外,这里我们为multiple query embeddings 开发了一种更通用的形式。我们将query 个输出简写为 ,其中 item 只有一个输出为 。那么queryitem 之间的 soft 内积可以定义为:

    这个评分函数基本上是 query embeddingitem embedding 之间所有内积的加权和。权重 是从同一组内积的 softmax 计算而来:

    其中 softmax 的温度超参数。

    • 注意, 越高,则注意力权重就越均匀。

      • 如果 ,那么上述评分函数等价于选择最大的内积,即:
      • 如果 ,那么上述评分函数等价于 embedding 内积的均值。
    • 时,上述评分函数退化为传统的embedding 内积形式。

    这种 multi-headmulti-head attention 有几点不同:

    • 首先,这里item 只有一个 head,而 multi-head attention 中的 item 有的 head
    • 其次,这里内积采用不同 head 的加权和来计算,而 multi-head attention 中的内积就是直接 sum 而计算。

    因此这里 multi-head 的物理意义为:计算 query 的不同意图和 item 的相似度,然后对于相似度进行加权和。相似度越大的意图,其权重越大。

  2. 典型的工业点击日志数据集通常只包含 queryitem 的点击 pair 对。这些 pair 对通常都是相关的,因此可以被视为正样本。除此之外,我们还需要通过各种采样技术收集负样本,这将在后面详细讨论。我们将所有训练样本的集合 定义为:

    其中每个训练样本是一个三元组,由 query query 相关的 postive item 、以及一个negative item 集合 组成。其中 中的每个 item 都和 query 无关(即 ) , label 信息。

    然后我们在训练集 上使用带 margin hinge 损失函数:

    这要求 postive item 评分比 negative item 评分至少高出

    注意,该注意力损失函数仅适用于离线训练。在在线检索期间,每个 query head 检索相同数量的 item,然后将所有 item 根据它们与被检索 head 的内积得分进行排序和截断。

25.1.4 负样本

  1. 训练深度模型需要大量的数据。我们探索点击日志,它代表用户的隐式相关反馈 implicit relevance feedback 并由 query 及其点击 item 组成,从而训练我们的 embedding 检索模型。直观地,我们可以假设:如果item 在给定的 query 条件下被点击,那么该 itemquery 相关,至少是部分相关。

    形式地,我们可以将点击日志视为只有正样本的数据集的特例。那么如何有效地收集负样本是这里的一个关键问题。在我们的实践中,我们采用了一种混合方法,该方法混合了两种负样本来源,包括随机负样本和 batch 负样本。

  2. 随机负样本Random Negatives :随机负样本集合 在所有候选 item 中均匀采样。

    形式上,给定所有 个可用 item 的集合,我们从均匀分布 中随机抽取一个整数,并将item 集合中第 个元素放入到随机负样本集合 中。然而,如果我们直接应用这种均匀采样,则计算成本将非常高,因为每个负样本都必须经过 item 塔,更不用说对这些负样本进行采样并获取其特征的成本了。为了在保持效果的同时最小化计算成本,我们对一个 batch 中的所有训练样本使用相同的随机负样本集合。在实践中,我们发现结果与使用纯随机负样本的结果相似,但是前者训练速度要快得多。

  3. batch 负样本Batch Negatives :将 batchquery 的正样本视为其它 query 的负样本,从而得到 batch 负样本集合 。具体而言,对于一个训练 batch

    我们可以为第 个样本收集负样本为:

    我们可以看到 batch 负样本基本上是根据数据集中 item 频率来采样的。这些随机生成的 query-item pair 对不太可能偶然相关。具体而言,偶然相关的可能性等于两个随机抽取的点击日志具有彼此相关的 item 。给定一个包含数亿个点击日志的数据集,这个可能性在训练准确性accuracy 方面基本上可以忽略不计。

    此外,上述batch 负样本的主要优点是 item embedding 计算的复用。在 batch 中每个 item embedding 有一次作为正样本、有 次作为负样本,但是只需要一次特征提取及只需要一次 item 塔的前向计算。

  4. 混合比例Mixing Ratio:最终的完整负样本集合 是上述两个负样本集合的并集:

    在我们的电商搜索检索实践中,我们发现混合比例参数 对于负样本集合的组成通常很有用。形式上,我们采用 比例的随机负样本、 比例的batch 负样本。

    我们发现 的值与从模型中检索到的 item 的流行度popularity 高度相关(参考实验部分),因此对在线指标影响很大。直观地,我们可以看到混合比例 决定了负样本中的 item 分布,从均匀分布( )到实际 item 频率的分布( )。通过这种方式,该模型倾向于为较大的 检索到更多流行的 item,因为流行的 item 在随机负样本中出现的频率,相对于在 batch 负样本中出现的频率更低。

    如果均匀采样,则所有item 成为负样本的概率都是相同的。如果 batch 内负采样,则热门item 成为负样本的概率更高,这使得模型检索到热门item 的概率更低。

  5. 我们在DPSR 训练算法中总结了带有 batch 负采样和随机负采样的完整训练算法。

    每个训练 step 的计算复杂度为 ,即 batch size 的二次方。 因为batch 负样本需要在 batch 中需要为每个 query 和每个 item embeddingpair 对之间计算内积。在实践中,由于 batch size 通常很小(如 64 或者 128),因此二次效应实际上比其它计算成本(如特征提取、梯度计算等)小得多。事实上,由于 batch 负样本对每个 item 塔输出的有效利用,总的收敛速度实际上更快。

  6. DPSR 训练算法:

    • 输入:

      • postive 数据集
      • batch size
      • 最大迭代step
      • 混合比例
    • 输出:训练好的 queryitem

    • 算法步骤:

      迭代 ,迭代步骤为:

      • 采样一个 batch 个样本
      • 为这个 batch 随机采样一组负样本 。注意, 中的每个正样本都共享这组相同的负样本。
      • query 塔计算 query head embeddings
      • batch 以及随机负样本集合 内每个 item 计算 item embeddings
      • 计算损失函数 ,其中包含了 batch 负样本集合
      • 通过反向传播更新 queryitem

      返回训练好的 queryitem

25.1.5 人工监督信息

  1. 除了使用点击日志数据之外,我们的模型还能够利用额外的人工监督来进一步纠正极端 case,结合先验知识并提高其性能。人工监督来自三个来源:

    • 大多数跳过的 item 可以从在线日志中自动收集,这些 item 和相关的 query 可以用作负样本。

      即曝光但是未点击的 item 可以视为负样本。

    • 可以基于领域知识收集人工生成的数据作为人工负样本和人工正样本。例如:

这些人工监督数据可以作为正样本和负样本输入到模型中。

这些人工监督数据可以配置更高的样本权重,从而使得模型更关注这些 “特殊” 的样本。

25.2 Embedding 检索系统

  1. 我们采用 TensorFlow 作为我们训练和在线 serving 的框架,因为它已经被广泛应用于学术界和工业界。尤其是TensorFlow 具有以下优点:训练之前预先建立静态图、训练速度快、训练与在线 serving 无缝集成。

    我们基于 TensorFlow 的高级 API Estimator 构建了我们的系统。为了确保最佳性能和系统的一致性,我们还做出了巨大努力来简化现有的 Tensorflow package 和工业级深度学习系统。

25.2.1 训练系统优化

  1. 在线和离线的一致性Consistency Between Online and Offline:构建机器学习系统的常见挑战之一是保证离线和在线的一致性。典型的不一致通常发生在特征计算阶段,尤其是在离线特征预处理和在线 serving 系统中使用两个独立的编程脚本时。

    在我们的系统中,最脆弱的部分是文本 tokenization,它在数据预处理、模型训练、在线 serving 中进行了三次。意识到这一点,我们用 C++ 实现了一个unique tokenizer ,并用一个非常轻量的 Python SWIG 接口包装它以进行离线数据 vocabulary 计算,并使用 TensorFlow C++ 自定义运算符进行离线训练和在线 serving 。因此,可以保证相同的 tokenizer 代码贯穿原始数据预处理、模型训练、在线预测。

  2. 压缩的输入数据格式Compressed Input Data Format:工业搜索和推荐训练系统的典型数据格式通常由三种类型的特征组成:用户特征(例如 query、性别、地域)、item 特征(例如流行度popularity)、user-item 交互特征(例如,item 是否被用户看到)。由于训练数据存储所有 user-item 交互 pair 对,因此原始输入数据会多次重复用户特征和 item 特征,这会导致数百 TB 的磁盘空间占用、更多的数据传输时间、更慢的训练速度。

    为了解决这个问题,我们自定义了 TensorFlow Dataset 来从三个独立的文件中组装训练样本:一个用户特征文件、一个 item 特征文件、一个包含 query, user id , item id 的交互文件。用户特征文件、item 特征文件首先作为特征 lookup 字典被加载到内存中,然后交互文件在训练step 中迭代,迭代时从内存读取并添加了用户特征和 item 特征。通过这种优化,我们成功地将训练数据的规模减少为原始大小的 10%

    在典型的工业级系统中,用户规模在亿级、item 规模在千万级,因此将用户特征文件、item 特征文件加载到内存中是个瓶颈。一个解决方案是采用内存数据库,如 redis ,但是这会增加系统的复杂度(需要维护一套 redis 集群,以及处理 redis 请求失败的 case )。

  3. 可扩展的分布式训练 Scalable Distributed Training:在具有参数服务器 parameter servers 的分布式训练场景中,常见的瓶颈之一是网络带宽。工业界大部分大型机网络带宽是 10G bits,对于大型深度学习模型而言远远不够。我们观察到,现有的 TensorFlow Estimator 实现在处理 embedding 聚合(例如 embeddingsum)时没有得到足够的优化,因此在增加一些 worker 时网络带宽很快成为瓶颈。

    为了进一步提高训练速度,我们改进了 TensorFlow 官方实现中的 embedding 聚合操作,将 embedding 聚合操作移到参数服务器中,而不是在 worker 中。因此对于每个 embedding 聚合,在参数服务器和 worker 之间只需要传输一个 embedding,而不是数十个embedding。因此,网络带宽显著降低,分布式训练系统可以扩展到五倍以上的机器。

25.2.2 在线 Serving 系统

  1. DPSR 在线 serving 系统的概述如下图所示。该系统由两个新颖的部分组成:一个是 TensorFlow Servable 模型、另一个是模型sharding 代理。

  2. One Servable ModelDPSR 的简单实现可以由两个独立的部分组成:query embedding 计算和最近邻查找。如果没有精心的设计,可以简单地为它们构建两个独立的在线服务。然而,从以下两个方面来看,这不是最优的系统设计:

    • 它引入了管理 query embedding 模型和 item embedding 索引之间映射的复杂性,如果发生映射错误,那么将完全导致系统故障。
    • 它需要两次网络往返(一次计算 query embedding、一次搜索最近邻)来计算给定 query 文本的最近邻。

    为了克服这些问题,我们通过 TensorFlow Servable 框架采取了一种更优化的方法。在该框架中,我们可以将两个部分统一到一个模型中。如上图所示,这两个部分可以封装到一个 Servable 中。query embedding 直接从 query embedding model 发送到 item embedding 索引,通过计算机内存而不是计算机网络。

    这里将 Query Embedding ModuleEmbedding Indexes 部署在一起。对于规模在千万级的 item,其 Embedding Indexes 可能单机内存无法处理。例如,假设embedding size = 128embedding 为双精度浮点,那么 1 千万 item 需要消耗 9.5 GB 内存。

  3. 模型分片 Model Sharding:系统的进一步扩展需要同时支持数百个 DPSR 模型在线,用于不同的检索任务、以及各种模型的 A/B test 。然而,一个由 query embedding 模型和一个 item embedding 索引组成的 servable 模型通常需要数十 GB 的内存。因此,将所有模型存储在单台机器的内存中变得不可行,我们必须构建一个系统来支持为数百个 DPSR 模型的 serving

    我们通过一个代理模块来解决这个问题,这个代理模块的作用是将模型预估请求定向到一个保持相应模型的model server,如上图所示。这个基础设施不仅是为 DPSR 设计的,而且是作为一个通用系统来支持我们搜索产品的所有深度学习模型。

25.3 实验

  1. 在本节中,我们首先利用 t-SNE 可视化 embedding 结果,以便我们可以直观地了解模型的工作原理。然后我们和不同方法进行比较来评估离线效果。接下来我们报告了我们的搜索产品中的在线 A/B test 结果。最后我们报告了 DPSR 系统的离线索引和在线 serving 耗时,以证明其效率,这在工业环境中至关重要。

  2. 我们的生产 DPSR 模型是在 60 天用户点击日志的数据集上训练的,其中包含 56 亿次 session。我们在 548-cores 机器的集群中进行分布式训练,共启动了 40worker5 个参数服务器。

    我们使用了 margin 参数 Adam 优化器、学习率 0.01batch size embedding 维度 。训练大约 4 亿step 收敛,耗时约 55 个小时。

25.3.1 Embedding 可视化

  1. Embedding Topology :为了直观了解我们的 embedding 检索模型是如何工作的,我们展示了从我们平台中最热门的 33 个类目中选择的高频item 的二维 t-SNE 坐标。如下图所示,我们可以看到 item embedding 的结构非常明确和直观。

    基本上,我们可以看到:

    • 与电子产品相关的类目(如手机、笔记本电脑、平板电脑、耳机、显示器)都很好地放置在图的左侧。
    • 与家电相关的类目(如冰箱、平板电视、空调、洗衣机)都放置在图的左下方。
    • 与食品相关的类目(如零食、速食、饼干、奶粉)都放置在右下方。
    • 与清洁和美容相关的类目(如洗面奶、洗发水)都放置在右侧。
    • 与衣服相关的类目(如鞋子、跑鞋、毛衣、羽绒服)都放置在右上方。

    总体而言,这种合理且直观的 embedding 拓扑反映了所提出的模型能够很好地学习 item 语义,从而使得 query embedding 能够检索相关 item

  2. Multi-Head 消歧:在下图中,我们还计算了从 10 个商品类目中选择的高频 item 的二维 t-SNE 坐标,以此说明在 query 塔中使用multi-head 的效果。我们在这里使用两个多义词query 作为示例,即 'apple''cellphone',这两个词也在我们平台的 top-10 query 中。

    • 在图 (b) 中,我们可以看到 query 'apple' 的两个 head 分别检索了 iPhone/Macbookapple fruit
    • 在图 c 中,我们可以看到 query 'cellphone' 的两个 head 分别检索了两个最受欢迎的品牌:华为和小米。

    这些都显示了不同的 head 能够聚焦于不同的潜在用户意图。相比之下,图 (a) 中的 single-head 模型不适用于手机类别,其中 iPhone 构成了远离其它手机的另一个cluster。这可能是由于最上面的 query 'apple' 的歧义性ambiguity

  3. 语义匹配 Semantic Matching:为了更好地理解我们提出的模型是如何执行的,我们在下表展示了我们的检索产品中的几个 good cases。可以看到:通过学习一些单词的语义,DPSR 令人惊讶地能够连接bridging query 和相关的 item 。例如:大童和 3-6 岁、自由泳器材和划臂等等。

    此外,DPSR 能够纠正 query 中的拼写错误,如 v 女包 和 LV女包、ovivo手机和 vivo 手机。部分原因是我们利用了 token vocabulary 的英文字母三元组。我们还观察到类似的汉字错字纠正,主要是从用户点击和 n-gram embedding 中学到的。

25.3.2 离线评估

  1. 评估指标:我们使用以下离线指标来评估检索方法。

    • Top-k 定义为在给定 queryN 个(我们使用 N = 1024 )随机 item 中,相关的 itemtop-k 检索结果中的概率。这个 top-k 值是通过平均 20 万个随机 query 来计算的。更高的 top-k 表示更好的检索质量,即命中率 hit rate
    • AUC 是在一个独立的数据集中计算的,其中人工标记了 query-item 相关性。label 为相关的、不相关的,然后 embedding 内积或者任何相关性得分(BM2.5)可以被视为预估分。更高的 AUC 代表更好的检索相关性。
    • time 是在 48-cores CPU 机器上从 query 文本到 1500 万个 item 中最相关的 1000item 的总检索时间。该指标决定了一种方法能否应用于工业级检索系统。通常,cutoff 时间是 50ms,但是最好是 20ms
  2. baseline 方法:我们将 DPSRBM2.5DSSMbaseline 进行了比较。

    • BM2.5:是一种基于倒排索引关键词匹配的经典信息检索方法,它使用启发式方法根据 term 频率和逆文档频率对文档进行评分。我们比较了 BM2.5 的两个版本:仅 unigram、同时包含 unigrambigram (记作 BM2.5-u&b)。
    • DSSM:是一个经典的深度学习模型,为 ranking 而不是检索而设计。我们仍然将它作为 baseline 进行比较。

    另外我们还对比了 DPSR 的几个变体:

    • DPSR 是指我们模型的普通版本,没有任何用户特征。
    • DPSR-p 指的是我们模型的basic 个性化的版本,包含额外的用户画像特征,如购买力、性别等。
    • DPSR-h 指的是我们模型的完整个性化版本,包含用户画像和用户历史 event
  3. DPSR 和上述 baseline 方法的比较结果如下表所示,可以看到:

    • BM2.5 作为一种经典方法表现出了良好的检索质量,但是从 1500 万个 item 中检索需要 1 分多钟,这意味着将其用于在线检索不太现实。
    • 将曝光未点击 item 作为负样本进行采样的 DSSMtop-kMRRAUC 等指标上表现最差。这主要是因为 DSSM 针对 ranking 任务进行优化,而 ranking 任务是与检索任务截然不同的任务。因此,我们可以得出结论:仅使用曝光未点击的 item 作为负样本并不能训练检索模型。
    • 普通版本的 DPSRbaseline 方法和其它个性化的 DPSR 版本中具有最高的 AUC 得分,这表明纯语义 DPSR 可以获得最高的检索相关性。
    • basic 个性化版本的 DPSR-p 方法的结果表明:用户画像特征有助于改善普通版本的检索质量指标(top-k),但是在相关性方面有所折衷。
    • 完整个性化版本的 DPSR-h 在所有模型中具有最佳检索质量指标(top-k),这表明可以从用户历史事件中提取大量信号。

    注意:个性化的模型通过权衡相关性指标(AUC)来提高检索质量指标(top-k),这是合理的。因为检索质量除了相关性之外还包含更多因素,如item 流行度、个性化等。

  4. 下图说明了随机负样本和 batch 负样本的混合比率 影响检索到的 item 流行度。可以看到:

    • 负采样中的随机负样本越多,检索到的热门 item 就越多(Popularity 指标)。
    • 但是太多的随机负样本(例如 ) 将损害检索到的 item 的相关性(AUC 指标)。

    因此,我们可以将 参数视为检索流行度popularity 和相关性relevancy 之间的 tradeoff。在实践中我们发现适当的 将有助于显著提升在线指标。

25.3.3 在线 A/B test

  1. DPSR 被设计为我们搜索系统中的一个关键组件,以改善整体用户体验。因此,我们将重点放在 DPSR 作为附加检索方法,从而对搜索系统的整体改进上。

    • 在对照组(baseline)中,包含我们当前生产系统中可用的所有候选item,这些item 通过启用了 query rewritten 的基于倒排索引的方法进行检索。
    • 在对实验组(DPSR)中,除了 baseline 中的候选item 之外,还从我们的 DPSR 系统中检索了最多 1000 个候选 item

    对照组和实验组都通过相同的 ranking 组件和业务逻辑。在这里,我们强调我们的生产系统是一个强大的 baseline 来进行比较,因为这个系统已经经过数百名工程师和科学家多年的优化,并应用了最先进的 query rewriting 和文档处理方法来优化候选 item 的生成。

    我们首先对检索到的 item 的相关性进行了人工评估。具体而言,给定相同的 500 个长尾 query ,我们要求人工评估员分别为来自于 baseline 系统、DPSR 系统的结果来标记相关性。标记结果分为三个类别:差bad、一般 fair、完美 perfect

    评估结果如下表所示,可以看到:DPSR 减少了大约 6%bad case 从而提高了搜索相关性。这证明了深度检索系统在处理 difficult 或者 unsatisfiedquery 时特别有效,这些 query 通常需要语义匹配。

  2. 然后我们使用标准的 A/B test,在两周内对整个站点流量的 10% 进行了在线实验。为了保护商业机密,我们只报告了相对的提升,实验结果如下表所示:

    • DPSR 检索改进了电商搜索中所有核心业务指标,包括用户转化率user conversation rate: UCVRgross merchandise value: GMVquery rewrite rate: QRRquery 重写率,这被认为是搜索满意度的一个很好的指标)。
    • 我们还观察到 query 塔的 2-head 版本和个性化版本(记作 1-head-p13n)都改进了没有任何用户特征的 1-head query 塔的普通版本。
    • 特别地,我们观察到改进主要来自长尾 query,这对于传统搜索引擎而言通常很难。

25.3.4 效率

  1. 我们在下表中展示了我们的离线索引构建和在线最近邻搜索的效率,不包括 query embedding 计算。我们报告了使用 NVIDIA Tesla P40 GPUIntel 64-core CPU 配置下索引和搜索 1500 万个 item 所消耗的时间。

    结果表明 DPSR 可以在 CPU 上在 10ms 内检索候选 item,并且可以从 GPU 中受益:索引时间消耗减少 85%、搜索延迟减少 92%query per second: QPS 吞吐量提高 14 倍。

  2. 我们在下表中报告了使用上述相同 CPUGPU 机器的整体模型 serving 性能。从 query 文本到 1000 个最近邻的总延迟可以在 15ms ~ 20ms 内完成,这甚至可以与标准倒排索引的检索相媲美。

二十六、PDN[2021](mathcing)

  1. 推荐系统在面向用户的电商平台(如淘宝、亚马逊)中很重要,目的是将用户连接到他们喜欢的 item 并产生更多利润。由于电商平台中可用的 item 数量巨大,许多工业系统被设计为具有 matching 阶段和 ranking 阶段。具体而言:mathcing 阶段期望以低延迟和低计算成本检索一小部分相关的 item,而 ranking 阶段旨在使用更复杂的模型根据用户的兴趣细化这些相关 item 的排名。在论文 《Path-based Deep Network for Candidate Item Matching in Recommenders》中,论文聚焦于 matching 阶段,因为它是系统的基础部分,也是系统的瓶颈。

    item-to-item CF(即 item-based CF)是一种用于 item matching 的信息检索解决方案。item-based CF 根据两个 item 的共现co-occurrence 来估计item 之间的相关性。一些突出的优点使得 item-based CF 成为业界matching 阶段的自然选择:

    • 由于只使用用户历史交互的 item 进行检索,因此 item-based CF 可以很好地匹配许多在线服务的效率要求。
    • 此外,用户的兴趣可能非常多样化。通过考虑每个交互item,可以最大限度地覆盖用户的兴趣。
    • 最后,item 之间的相关性主要是基于海量的用户行为推导出来的。这些信号能够有效识别与交互item 相关的item

    但是,这些方法也有一定的局限性:

    • 传统的倒排索引难以满足精巧subtle 的个性化需求。通过仅考虑item 共现模式,item-based CF 无法适应用户的独有特点,如性别、消费能力等。
    • 同样,鉴于电商平台中可用的item 数量不断增长,在不考虑辅助信息的情况下,item-based CF 可能会受到数据稀疏性问题的影响。

    为了克服上述限制,embedding-based retrieval: EBR ,尤其是双塔架构的深度学习网络,最近引起了越来越多的兴趣。简而言之,EBR 旨在通过分别嵌入用户画像和 item 画像来表示每个用户和每个 item 。从这个意义上来说,matching 过程被转移到在 embedding 空间中执行最近邻nearest neighbor: NN 搜索。

    虽然 representation learning 可以在一定程度上缓解数据稀疏性问题,但是这些方法也存在一定的局限性:

    • 双塔架构不容易显式集成 item 之间的共现信息。
    • 此外,用户通常表示为单个 embedding 向量,这不足以编码用户兴趣的多样性diversity

    即:item-based CF 难以满足个性化personalization ,而 EBR 难以满足多样性diversity

    一个普通用户每个月都会与数百个属于不同类目的 item 进行交互,这表明用户兴趣的多样性。实际上,在实际的工业系统中,为了同时捕获用户兴趣的多样性diversity 并确保个性化personalization ,通常有多种策略,例如基于协同过滤模型和不同网络结构的 EBR 策略的各种倒排索引。这些模型应用于 matching 任务并且并行部署。注意:候选 item 通常是使用不同 scale 的相关性得分生成的。这些得分通常不可比incomparable,因此很难融合起来从而得到更好的结果。作者认为,由于这些策略的高维护成本以及缺乏联合优化,因此这种多策略解决方案可能是次优的。

    Deep Interest Network: DIN 通过 target attention 引入交互itemtarget item 之间的相似性,以获得更好的推荐。然而,这种注意力机制只是用来融合用户交互序列,而忽略了用户对每个交互item 的兴趣。此外,DIN 很难应用于 matching 阶段,因为它需要为每个 target item 重新计算 user representation

    受到 DIN 的启发,在论文 《Path-based Deep Network for Candidate Item Matching in Recommenders》中,作者提出了一种新的matching 架构,叫做 Path-based Deep Network: PDN 。该架构通过在 item-based CFEBR 之间建立联系,将 item-based attentionuser representation learning 分离。

    PDN 中,作者使用 EBR(即用户画像、交互item 序列、item 画像)和 item-based CF(即 item 共现)的representation learning 思想来适应用户个性化和多样化的兴趣建模,从而获得更好的性能。具体而言,PDN 由两个主要的子网组成:Trigger Net: TrigNetSimilarity Net: SimNet

    • TrigNet 通过以下方式被引入:将每个交互item 视为一个trigger 来编码用户兴趣。也就是说,生成的 user representation 具有可变维度,使得每个维度都描述了用户对交互 item 的兴趣。

      维度 代表用户对交互 item 的兴趣强度。

    • 类似于 item-based CFSimNet 生成 item representation,每个维度描述交互itemtarget item 之间的相似性。

      维度 代表交互 item target item 的相似性。

    注意,由 EBR 提取的 user representationitem representation 的维度是恒定的,而 PDN 提取的 user representationitem representation 的维度是可变的,等于用户 trigger 的数量。如下图所示,通过用户交互item 将用户和 target item 连接起来,我们可以形成一系列 2-hop 路径。基于这些 2-hop 路径,PDN 通过显式考虑用户的不同兴趣来聚合用户和 target item 之间的相关性,从而获得更好的性能。具体而言,用户和 target item 之间的最终相关性是通过显式考虑用户的不同兴趣来计算的,即聚合 related two-hop 路径的相关性权重relevance weight(路径的 one-hop 对应于 user-item 交互,路径的 two-hop 对应于 item-item 相关性)。

    另一个优点是整个模型都是端到端的方式训练的,因此,相关性得分可以以统一的方式相互比较。

    值得强调的是,所提出的 PDN 具有 item-based CFEBR 的优点,可以实现高效的在线处理。

    • 一方面,通过 feature embedding,我们可以利用 TrigNet 提取与用户兴趣相关的 top m 最重要的 trigger,以满足实时性要求。
    • 另一方面,SimNet 独立于 TrigNet 工作。我们可以应用并行计算支持离线索引构建,其中使用 SimNet 计算的 item-to-item 相关性。

    总之,论文的主要贡献:

    • 一个新颖的 matching 模型。论文通过结合 item-based CFEBR 的优势提出了 Path-Based Deep Network: PDNPDN2-hop 路径聚合的形式集成了user attention 的所有画像信息、以及 target attentionitem 共现模式。PDN 考虑了用户个性化和兴趣多样性,从而实现更好的 item matching
    • 高效的在线检索。论文基于 PDN 构建了一个工业级的在线 matching 系统。特别地,论文描述了如何利用 PDN 以低延迟和低计算成本进行 item 检索。
    • 离线和在线实验。对几个真实世界数据集的大量离线实验表明:PDN 比现有替代方案实现了更好的性能。此外,论文在淘宝推荐系统上对 PDN 进行了为期两周的 A/B test。结果表明:几乎所有指标都获得了很大的性能提升。

    目前 PDN 系统已经成功部署在手机淘宝 App 上,处理了主要的在线流量。

  2. 相关工作:

    • CF-based 方法在构建推荐系统的 mathcing 阶段相当成功。item-based CF 由于其可解释性和高效,已经被广泛应用于工业环境中。其中, item-based CF 预先计算 item 的相似度矩阵,并推荐与用户历史点击item 相似的 item

      早期的工作利用余弦相似度和皮尔逊系数等统计量来估计 item 相似性。近年来,有几种方法试图通过优化 recommendation-aware 目标函数来学习 item 相似性。

      • SLIM 通过最小化原始 user-item 交互矩阵和重构矩阵之间的损失来学习 item 相关性。
      • NAIS 使用注意力机制来区分用户画像中历史互动 item 的不同重要性,这和 DIN 的想法相似。然而由于计算的复杂性,attention-based 方法仅适用于 ranking 阶段。
    • 随着 EBR 的成功,基于深度神经网络的双塔架构已经被广泛应用于工业推荐系统,从而通过利用丰富的内容特征来捕获用户的个性化信息。需要注意的是,在 matching 阶段,要以低延迟和低计算成本处理数十亿甚至数万亿个 item,因此两个塔不能相互交互以确保特征提取的并行性。

      • 基于 DSSM 的模型利用用户特征和 item 特征之间的内积学习相关性。
      • 为了提取更具有区分性的用户特征,Youtube DNN 通过平均池化用户行为来扩展用户特征。
      • BST 利用强大的 transformer 模型来捕获用户行为序列背后的序列信号。

    与上述方法不同的是, 我们提出的 PDN 结合了 item-based CFEBR-based 深度神经网络的优点,构建了 user-item 子网络以确保类似于 EBR 的个性化,并构建了 item-item 子网络类似于 item-based CF 从而捕获用户的多个兴趣。

26.1 模型

26.1.1 基本概念

  1. 下图以用户和 target item 之间的 2-hop 路径的形式总结了推荐问题。其中 代表交互item 。边的粗细表示了相关性程度。这里:

    • 代表用户 的用户信息,例如用户 id、年龄、性别、点击次数、每个类目的购买次数。
    • 代表 target item 的信息,如 item id、品牌 id、类目 id、月销售额。
    • 表示用户 交互的 item 的信息。
    • 表示用户 在这 item 上的行为信息,如停留市场、购买次数。
    • 表示这 itemtarget item 的相关性信息,这是从 item-based CF 算法或者 item co-occurrence-based pattern 统计而来。

    如下图所示,用户和 target item 之间存在直接联系(虚线所示),这表明用户对 target item 的直觉的兴趣 intuitive interest 。此外,我们可以通过连接交互 item 来进一步形成 2-hop 路径:第一跳表示用户对交互 item 的兴趣,第二跳表示交互 itemtarget item 之间的相关性。因此,采用上述的可用信息,item matching 可以形式化为:

    其中: 定义为推荐算法, 定义为用户 target item 之间的相关性得分, 为用户 历史交互的 item 集合。

  2. 推荐系统的大部分现有工作,包括 item-based CFEBR,可以看作是上式的特例。

    • item-based CF 的回归形式regression form 可以表述为:

      其中:

      • 是一个加权函数,用于捕获用户对每个 trigger 的兴趣。 为行为特征向量的维度。
      • 表述基于 item co-occurrence 信息的、交互 item target item 的相关性。

      因此,该方法可以视为基于 的所有 2-hop 路径的权重之和,并且每个路径权重可以计算为

    • EBR-based 方法中的矩阵分解 matrix factorization: MF 可以表述:

      其中:

      • target item 信息 embedding 向量。
      • 为互动item 信息 embedding 向量。
      • 为用户信息 embedding 向量。

      MF 可以视为 条路径的权重之和。具体而言:一条1-hop 路径的权重为 n2-hop 路径的权重为

    • YoutubeDNN 利用深度神经网络作为矩阵分解的推广,可以表述为:

      这里 MLP 是一个多层感知机,|| 表示向量拼接。

    • DIN 也可以表述为:

      其中 为逐元素乘法。

      注意,根据 target item 和每个 trigger 之间的相关性,DIN 可以被视为 2-hop 路径( )的 representation 。但是,它需要重新计算每个 target itempath representation ,使得DIN 仅适用于 ranking 阶段。

  3. 为了保证检索效率,item-based CF 构建倒排索引inverted index,而 EBR 应用 KNN 搜索进行在线 serving。然而,由于两种模型体系结构都受到效率的限制,它们无法利用上图中的所有可用信息,从而导致性能欠佳。例如,item-based CF 缺少用户画像和 item 画像,而 EBR 缺少 item 之间的显式共现信息。因此,在本文中我们提出了一种叫做 PDN 的新型架构,从而支持低延迟的个性化和多样性检索。

26.1.2 PDN

  1. 在这一部分,我们介绍了用于推荐系统 matching 阶段的 Path-based Deep Network: PDN的设计。我们首先介绍 PDN 的整体架构,然后详细阐述 PDN 的各个模块,包括 Embedding LayerTrigger Net: TrigNetSimilarity Net: SimNetDirect NetBias Net

  2. 根据公式 PDN 的基本工作流程可以表述为:

    其中:

    • TrigNetSimNet 是前面提到的两个独立的子网络。
    • 为通过 trigger item 2-hop 路径的相关性权重。
    • Merge(.) 是合并每条 2-hop 路径中相关性权重的函数。
    • 为获取直接路径direct path 相关性权重relevance weight 的函数。
    • Agg(.) 为一个评分函数,用于对 条路径(一条1-hop 路径、2-hop 路径)的相关性权重求和得到用户和 target item 的最终相关性得分。

    为了使 PDN 能够执行快速的在线 item 检索,我们首先将 Agg 定义为1-hop 相关性权重和2-hop 相关性权重的 summation,然后 也被定义为 user representationtarget item representation 之间的内积。因此,PDN 的最终形式为:

    PDN 的整体架构如下图所示(该图最好用彩色观看):

    • Direct Net 用于获取 1-hop 路径的权重从而捕获用户对 target item 的直观兴趣。
    • TrigNetSimNet 分别获取每条 2-hop 路径的第一跳权重和第二跳权重,从而捕获细粒度的、针对用户的个性化和多样性的兴趣。
    • Bias Net 用于捕获各种类型的选择偏差selection bias 从而进一步提供无偏 serving

    注意:在每条 2-hop 路径中,当 TrigNetSimNet 的输出为向量时,它们可以被视为对应边的 representation,称之为 vector-based PDN。这种 setting 可能具有更高的模型容量,并且使得在线检索更加复杂。另一方面,当 TrigNetSimNet 的输出为标量时,它们可以被视为对应边的权重,称之为 scalar-based PDN 。和 vector-based PDN 相比, scalar-based PDN 具有较低的自由度,可以减轻基于路径检索的贪心策略在线检索的复杂性。因此,接下来我们介绍了 PDN 的每个组件,以及 scalar-based PDN 的设置。

    整个 PDN 模型分为三部分:

这里存在一个问题:如何迫使模型的子结构预期工作,例如 Direct Net 学到 user-item 直接相关性、Trigger Net 学到 trigger 重要性。这里是否应该增加某些正则化,使得模型朝着预期方向进行优化。

  1. 特征组合Feature CompositionEmbedding Layer:如上图所示,我们的推荐系统中有四个特征字段feature field :用户字段 、用户行为字段 item 共现字段 item 字段 (以及交互 item 集合 也是用的 item 字段)。 这些字段包括 one-hot 特征(如用户iditem id、年龄 id、品牌 id),也包括连续特征(如月销售额、停留时长、item 之间的统计相关性)。

    • 首先,我们通过离散化将连续特征转换为 one-hot 特征。
    • 然后,我们将每个 one-hot 特征投影到固定长度的 dense representation 中。
    • 最后,在embedding 之后,我们拼接属于同一个字段的 embedding 向量作为该字段的 representation

    形式上,用户字段、用户行为字段、item 共现字段、item 字段的 field representation 可以写作: ,其中 为相应字段的 embedding 维度。

  2. Trigger NetSimilarity Net:经过 embedding layer 之后,我们计算用户和 target item 之间每条 2-hop 路径的相关性权重。

    • 对于第一跳,我们利用 TrigNet 通过计算每个 trigger 的偏好来捕获用户的多种兴趣。具体而言,给定用户 及其 trigger item ,偏好得分计算为:

      其中 为用户embedding、用户行为 embedding、交互 item embedding 的拼接。 代表用户 对交互 item 的偏好。

      当存在 个不同的交互 item 时, 可以视为用户 的可变维度的 representationEBR-based 方法采用一个固定维度的 representation 向量来表示用户兴趣,这可能是捕获用户不同兴趣的瓶颈,因为所有关于一个用户不同兴趣的信息混合在一起,导致 matching 阶段的 item 检索不准确。与使用固定维度向量对用户 representation 进行编码的 EBR-based 方案相比, 显式描述了用户对每个交互 item 的偏好,可以更好地表达用户的多样化diverse 兴趣并且更具有可解释性。

      值得一提的是,TrigNet 可以使用其它更强大的神经网络,例如Recurrent Neural Network: RNNtransformer-based 的模型来建模用户行为。不过我们想强调,一个简单的MLP 对我们的工业系统而言更具有性价比cost-effective

      一种直觉是:转化trigger 要比点击 trigger 更重要、转化多次的 trigger 要比转化一次的 trigger 更重要、转化长尾 trigger 要比转化热门 trigger 更重要。注意,这里的 trigger 既可以是正向的(点击/购买)、也可以是负向的(不感兴趣/快滑),包含用户所有的历史行为。

      因此,这里通过 TrigNet 自动从用户embedding、用户行为 embedding、交互 item embedding 中抽取 trigger 重要性。

    • 对于第二跳,我们利用 SimNet 根据 item 画像和共现信息来计算每个交互 itemtarget item 之间的相关性:

      其中 为交互item embedding、共现 embeddingtarget item embedding 的拼接。 item item 之间的相关性。

      这里的共现很重要:基于什么共现准则?点击共现、还是购买共现、还是不感兴趣共现?个人理解这和任务目标有关。如果任务是点击率预估,那么这里就是点击共现,从而捕获在点击意义下的 item pair 相关性。

      当存在 个不同的交互 item 时, 可以视为 target item 的可变维度的 representation

      我们强调 SimNet 基于item 共现信息co-occurrence information和辅助信息 side information 来显式地学习相关性。从这个意义上讲,它可以独立地部署从而进行 item-to-item 检索。

      一种直觉是:共现次数越高的 item pair 相似度越高、同类目的 item pair 相似度更高、同店铺的 item pair 相似度更高。

      这相当于将 DIN 中的行为 embedding attention 聚合拆分为 TrigNet + SimNet

    在得到 之后,PDN 将它们合并从而得到每个 2-hop 路径的相关性权重 ,即:

    这个 Merge 函数有两个特点:确保非负;将相关性乘积转换为加法操作,从而方便在线 serving

  3. Direct Net:我们进一步使用另一组 user embeddingitem embedding 在更广的范围内建模用户的一般兴趣general interest 。例如,女性对连衣裙更感兴趣,而男性对腰带更感兴趣。这可以被认为是将用户直接连接到 target item1-hop 路径。因此,我们利用由用户塔和 item 塔组成的直接网络direct network

    具体而言,这两个塔分别通过基于用户字段 target item 字段 MLP (采用 LeakyReLU 激活),从而得到用户 representation item representation 。然后 direct path 的相关性权重可以表述为:

    其中 为用户 target item 之间的直接相关性direct relevance

  4. Bias Net:位置偏差 position bias 和许多其他类型的选择偏差 selection bias 被广泛研究,并验证为推荐系统中的一个重要因素。例如,用户通常倾向于点击靠近列表顶部显示的 item ,即使它不是整个语料库中最相关的 item

    为了在模型训练期间消除选择偏差,我们训练了一个浅层塔,其输入特征有助于selection bias ,例如位置偏差的位置特征position feature、时间偏差temporal bias 的小时特征 hour feature 。得到的偏差 logit 被添加到主模型的最终 logit 中,如上图所示。

    注意,在 serving 期间,bias net 被移除从而得到无偏的相关性得分。

  5. 损失函数Loss Function:用户 是否会点击 target item 可以视为一个二分类任务。因此,我们将 个路径的相关性权重和 bias logit 合并,得到 之间的最终相关性分数,并将其转换为用户点击概率

    注意,softplus 函数使得相关性分数 的取值范围在 之间,因此我们将其转换为 0.0 ~ 1.0 之间的概率值。

    为了训练模型,我们应用交叉熵目标函数:

    其中: ground-truth,表示用户 是否点击 item

  6. 讨论:为了确保 PDN 的训练能够收敛到一个更好的最优值,我们仔细设计了每条路径的相关性权重。如前所述,我们利用 而不是其它激活函数来将输出约束为正值(即 ),从而实现每条 2-hop 路径权重的合并。这种将输出限制为正值的处理是直观的,并且符合现实世界的合理性。

    即:

    注意,相关性权重本质上可以为负值(即负相关),但是这可能允许 PDN 在更广泛的参数空间中搜索局部最优值,这很容易导致过拟合。在下图中,我们通过允许相关性权重为负来说明两个bad cases

    • 在图 (a) 中,当一个 negative targetlabel = unclick )被两个完全不相关的 trigger 连接时,SimNet 可能会为一条路径生成一个正的相关性权重,并为另一条路径生成一个负的相关性权重。聚合后,点击概率仍然很低,即与 ground-truth 完美匹配。

      因为

      但是很明显,牛奶不能和手机产生postive 的相关性。这意味着SimNet 产生了过拟合。

    • 在图 (b) 中,TrigNet 也可以学习对 triggernegative 偏好,从而过拟合数据。

26.1.3 系统

  1. 在这一部分,我们详细描述了 PDN 在淘宝上进行item 推荐的实现和部署。当用户打开手机淘宝 App 时,推荐系统首先会从包含多达数十亿个 item 的语料库中为该用户检索数千个相关的 item 。然后,每个检索到的 item 都通过 ranking 模型进行评分,并将根据评分排序的item 列表作为推荐给用户展示。

  2. 在线检索Onling Retrieval :如前所述,matching 阶段需要处理数十亿甚至数万亿个item 。为了满足在线实时 serving,不可能利用 PDN 对所有可用 item 进行评分。基于 PDN 的架构,很直观的一点是 ,路径相关性权重越大,用户对 item 感兴趣的可能性就越大。因此,matching 问题可以看作是在用户的 2-hop 邻域中检索具有较大路径权重的 item 节点。

    如下图所示,我们通过贪心策略以路径检索的形式实现了在线实时 top-K 最近邻检索。具体而言,我们将路径检索分解为两个部分:

    • 使用 TrigNettop-m 重要的 trigger 搜索(第一跳)。
    • 基于 SimNet 生成的索引对每个 top-m trigger 执行 top-k item 搜索(第二跳)。

    对于 TrigNet,我们将模型部署在实时在线服务中,用于用户 trigger 的打分。对于 SimNet,我们使用该模型以离线方式计算和索引 item 相关性。

    详细而言,PDN 的在线检索可以概括为:

    • 索引生成(第一步):基于 SimNet,离线生成语料库中每个 itemtop-k 最相似的 item,并与相关性得分 一起存储在数据库中。

    • trigger 提取(第二步):当用户打开手机淘宝 App 时,我们取出用户交互的所有item,并利用 TrigNet 得到用户所有的 trigger 的评分 ,并返回 top-m trigger

    • top-k 检索(第三步):我们从这些 top-m trigger 开始查询数据库并获得总共 个候选 item。在移除 bias feature 的情况下,返回 top-k item 进行推荐:

    注意:

    • 是静态的 representation,这两种 representation 也可以离线推断并存储在数据库中。在执行在线服务时,可以直接根据user id 或者 item id 来查询它们。
    • 推断时评分函数仅使用了 top -mtrigger(训练时使用 n 个);推断时评分函数使用简化的 、基于加法操作的Merge 函数(训练时使用复杂的、基于对数操作的 Merge 函数)。

  3. 索引生成Index Generation:对于具有大型 item 语料库的工业系统,我们需要压缩 item 相关性的稠密矩阵,即 ,从而减少索引构建时间成本和存储成本。即使这个过程可以离线完成,计算所有 item pair 对的相关性成本太高,所以我们首先根据候选生成 candidate generation 降低到 ,其中 要比 大一个量级。压缩操作主要包括三个步骤:

    • 候选 item pair 对生成:我们主要从两种策略生成 item pair 对:一种基于共现信息,例如在同一个session 中点击的 item ;另一种基于 item 的画像信息,例如同一个品牌。从这个意义上讲,历史没有共现的、但是具有一些相似属性的 item pair 对也可以被视为候选。
    • 候选 item pair 对排序:我们使用 SimNet 提取每个 item pair 对的相关性得分
    • 建立索引:对于每个 item,我们获取 top-k 相似的 item 组成 item pair 对,同时 也一并存储在数据库中。

    值得一提的是, SimNet 可以独立地用于索引,因此也可以用于 item-to-item 检索。

    对每个 item 基于 SimNet 生成 top k 相似的 item 非常关键。如果对全量 item 库进行计算,那么每个 item 需要调用 SimNet 次,全量计算需要调用 SimNet 次,即使是离线计算也不现实。为此,需要根据先验知识,挑选出可能相关的 item 进行打分。

26.2 实验

  1. 在这一部分,我们将 PDN 和已有的 SOA 方案进行离线和在线的对比,包括消融研究、模型分析、案例研究。

26.2.1 离线评估

  1. 数据集:我们在三个公开的真实数据集上进行实验:MovieLensPinterestAmazon books 。这三个数据集的统计数据如下表所示。按照 《Neural collaborative filtering》 的设置,我们仅保留至少有 20 次交互的用户。关于这三个数据集的预处理的更多细节,参考 《Neural collaborative filtering》 ,我们不再赘述。

  2. 评估方式:为了评估 PDN 的性能,我们采用了留一法来评估。对于每个用户,最后一次交互作为 target item,而之前的交互 item 作为用户行为集合。具体而言,我们遵循惯例,在每个 test case 中使用所有negative items ,并在这些 negative items 中对 target item 进行排序。

    我们使用命中率 Hit Ratio: HRNormalized Discounted Cumulative Gain: NDCG 作为性能指标。在这里 HR 可以解释为基于召回的指标, NDCG 可以解释为基于 ranking 的指标。

  3. baseline 方法:我们将 PDN 与以下双塔方法和传统的 item-based CF 方法进行比较。为了确保公平地比较,超参数调整是通过网格搜索进行的,每种方法都用最佳超参数进行测试。

    双塔方法如下:

    • DSSMDSSM 使用 embedding 来表示用户和 item。相关性得分是基于 user representationitem representation 之间的内积来计算。
    • Youtube DNNYoutube DNN 利用用户的交互序列来得到user representation 。它平等地对待用户历史行为中的每个交互 item,并采用均值池化来提取用户的兴趣。
    • BSTBST 扩展了 Youtube DNN,通过利用 transformer layer 来捕获用户对历史行为序列的短期兴趣。我们使用 user representationitem representaiton 的内积,而不是 MLP

    item-based CF 方法如下:

    • Pearson-based CF: PCF:这是标准的 item-based CF,它根据皮尔逊系数估计 item 相关性。
    • SLIMSLIM 通过最小化原始 user-item 交互矩阵和从 item-based CF 模型重建的矩阵之间的损失来学习 item 相关性。

    ranking 方法如下:

    • DINDIN 利用 target attention 来提取用户交互序列和 target item 之间的关系。
  4. 三个公共数据集上HR@10NDCG@10 的实验结果如下表所示。所有实验重复 5 次并报告平均结果。最佳结果以粗体突出显示。对 baseline 方法的提升在 0.05 水平上具有统计显著性。

    • Personalise 是指输出的得分考虑了用户信息,例如 PDNEBR-based 方法。值得注意的是,CF 无法得到个性化的分数,因此用 - 表示。
    • Item to Item 指的是基于交互 itemtarget item 之间的相关性检索。具体而言,item 相似度的获取策略是基于 item-based CFSimNet 的输出、EBR 方法获取的 item embedding 之间的内积。

    显然,在大多数数据集下,PDN 优于所有比较方法。我们观察到:

    • 对于个性化检索(Personalise ),DSSM 在双塔方法中表现最差,这表明基于用户行为捕获用户兴趣对于推荐系统至关重要。

      BST 的性能优于 YouTube DNN,这是因为 transformer layer 通过考虑用户行为中的序列信息来提取用户的兴趣。

      PDN 实现了最佳性能,主要是因为这些双塔方法用一个固定维度的向量来表示每个用户,这是对不同兴趣进行建模的瓶颈。相比之下,PDN 利用 TrigNet 提取多兴趣的用户representation,每个维度都以细粒度的方式描述了用户对交互item 的兴趣。SimNet 在得到 itemtarget item 之间的相似性方面也很有效。因此,可以通过考虑用户对 target item 的潜在兴趣来估计更准确的相关性。

    • 在线部署时,我们采用 SimNet 代替item-based CF 来估计 item-to-item 相似性。因此,我们和 item-to-item 进行了对比(即下表中带有 Item to Item 的列)。

      SimNet 在所有Item to Item 方法中表现最好。原因是 SimNet 基于深度神经网络,通过集成双塔方法使用的 item 画像、以及item-based CF 使用的共现信息,显式优化了 item 之间的相似性。这种方式利用更多的信息来解决 CF 遇到的稀疏性问题。

    • PDNDIN 表现更好。我们认为 DIN 忽略了用户对交互 item 的注意力(而仅考虑 target item 对交互 item 的注意力),而 PDN 同时考虑了 user attentionitem attention 从而获得更好的个性化推荐。

    • 基于消融研究,PDN 产生了最佳性能,并且确认每个组件对最终效果都有贡献。

26.2.2 在线实验

  1. A/B test:除了离线研究,我们还通过在淘宝推荐系统中部署我们的方法从而进行为期两周的在线 A/B test 实验。

    • 在对照组(即 baseline )中,包含了我们当前生产系统中的所有matching 策略。
    • 在其中一个实验组,我们应用 SimNet 而不是 item-based 方法来构建倒排索引。

    为了公平地比较,在两个 matching 阶段之后都采用相同的 ranking 组件和业务逻辑。注意:在线指标给出的是相对提升,即:

    下表给出了淘宝上的在线 A/B test 实验提升,为期两周:

    下图给出了 PDN 每一天各种指标的在线提升,为期一周:

    可以看到:

    • PDN 改进了电商推荐系统的所有核心业务指标,包括页面点击率 page click-through rate: PCTR、用户点击率 user click-through rate: UCTR、每个用户点击量 clicks per user: ClkPU、平均session 时长 average session duration: avgSD,以及多样性diversity

      这些都被认为是推荐满意度recommendation satisfaction 的良好指标。其中多样性指标代表了覆盖的类目数量。尤其是个性化的多样性对于现有的生产系统而言通常是比较难的,而 PDN 大幅度增加了推荐item 的多样性,这说明 PDN 可以通过 TrigNetSimNet 来捕获用户的多样化兴趣,提升整体的用户体验。

    • 此外,我们还部署了 SimNet 来验证它可以独立地用于构建索引,而不是基于 item-based CF ,从而进行 item-to-item 检索。这也获得了性能的提升。

  2. 在线效率:这里我们报告在线serving 的效率。具体而言,从请求到候选生成candidate generation 的整体延迟可以在 6.75ms 内完成,即 queries per second: QPS 是在千级别,这与使用标准倒排索引的检索相当。基于巨大的性能提升和低延迟,我们将 PDN 部署到线上,从而服务于淘宝推荐系统的 matching 阶段。

26.2.3 案例研究

  1. 用户行为序列长度分析:基于淘宝离线日志训练得到的模型,我们研究了用户行为序列长度 对性能的影响。我们根据 对用户进行分组。

    • 如下表所示,我们发现 越小增益越大。评估指标为 HR@300,括号中的百分比表示相对于 BST 的提升。

      该结果表明:PDN 具有较强的鲁棒性,即使在用户行为序列稀疏的情况下也能获得优异的性能。

    • 如下图所示,我们发现随着 的增加,PDN 生成的候选的多样性逐渐增加,并且显著优于 BST

    这些结果表明:PDN 能够以细粒度的方式捕获用户的个性化和多样化兴趣,从而改善用户体验。

  2. SimNet 的多样性diversity和准确性accuracy

    • 为了验证 SimNet 的有效性,我们分别利用 SimNetitem-based CF 提供的相似性,利用相同的 trigger item 执行 item-to-item 检索。返回结果的相似性从左到右递减。

      如下图所示,通过形状像猫的玩偶来检索,SimNet 返回相似的猫形玩偶和印有猫爪图案的杯子,而 item-based CF 返回月销量高但是和猫无关的玩偶(例如狗形玩偶)。这个结果表明:SimNet 可以在不受交互次数(即 item 销量)干扰的情况下检索更相关和更多样的结果,而 item-based CF 会遭受 “马太效应”的影响,这引入了对热门item 的偏好的bias 。换句话说,item-based CF 仅基于 item co-occurrence 信息计算相似性,而我们的方法额外引入了更多信息,如 item 画像、用户画像、用户行为,从而实现更准确的 item 相似性估计。

    • 为了进一步验证基于 SimNetitem 相似性的可靠性,我们选择一批类目,然后每对类目随机选择 1000item pair 对,并基于在线 servingSimNet 构建的倒排索引计算它们的平均相似度。如下图所示:

      • 我们发现属于同一个类目的 item 具有更高的相似性。
      • 此外,相关类目的相似度高于不相关类目的相似度。例如,无论是 “女装 vs 童装” 还是 “电子产品 vs 家电”,都要比其它类目 pair 对具有更高的相似度。

  3. TrigNet 的个性化和有效性:

    • 在公共数据集上,我们基于 TrigNet 来探索用户对 item 的兴趣。如下图所示,user-to-itemtrigger 权重分别在 postive itemnegative item 上取平均。很明显,postive item 的权重高于 negative item 的权重。这个结果说明了 TrigNet 的合理性。

    • 为了验证 TrigNet 的个性化能力,我们随机选择了 1000 名男性和 1000 名女性,从几个类目中随机选择了 500item,然后基于在线 servingTrigNet 对所有 user-item pair 对进行评分,得到男性和女性之间的平均 trigger 权重的差异。如下图所示,我们可以发现 TrigNet 对性别的处理是不同的,从而准确反映用户特点。例如,男性更喜欢电脑、汽车和手表,女性更喜欢花卉、旅游和女鞋。

二十七、时空周期兴趣学习网络ST-PIL[2021]

  1. POI 推荐是基于位置的社交网络中的一项重要任务,它有助于建模用户和位置之间的关系。

    最近,学者根据长期兴趣和短期兴趣推荐 POI 并取得成功。长期兴趣是通过用户历史到店来获得,短期兴趣是通过最近到店来建模的。这些兴趣通过编码器网络(例如 LSTM)来编码。然而,它们未能很好地捕获到周期性的兴趣。人们倾向于在相似的时间或相似的地域访问相似的门店。因此,只有一小部分到店与用户的下一次到访行为高度相关。因此,到店序列作为输入会弱化相关部分的信号。

    有一些方法试图通过建模周期性来解决这个问题:

    • DeepMove 应用当前的移动状态mobility status 来捕获所有到店的周期性。
    • LSTPM 使用 time slot 计算时序相似性temporal similarity 从而获得时间加权的轨迹表达time-weighted trajectory representation

    但是,这些方法在学习周期兴趣方面仍然能力有限。

    到店上下文,例如空间信息spatial information 、时间信息temporal information ,可以用于建模周期兴趣。

    • 首先,用户活动受时间限制,呈现出天级别模式daily pattern 和小时级别模式hourly pattern 。例如,一些用户可能只在周末去度假,另一些用户会在晚上去餐馆。
    • 其次,用户在不同地域表现出地域模式areal pattern 。例如,用户在景区参观古迹、在商圈附近购物。
    • 第三,用户会在特定时间访问同一个 POI ,这就是 小时-区域级别的模式hourly-areal pattern 。例如,很多人八点钟去公司上班。

    DeepMoveLSTPM 等之前的方法在学习周期性时并没有充分利用时空信息。

    受上述分析的启发,论文《ST-PIL: Spatial-Temporal Periodic Interest Learning for Next Point-of-Interest Recommendation》提出了一个时空周期兴趣学习网络 Spatial-Temporal Periodic Interest Learning network: ST-PIL 。具体而言,ST-PIL 采用长短期兴趣学习的架构,但是充分利用时空上下文中从历史到店中检索到相关的部分,从而获得周期性兴趣。

    • 在长期模块中,我们学习天级别的时间周期兴趣,然后利用层内注意力 intra-level attention 来得到长期兴趣。
    • 在短期模块中,我们构造各种短期兴趣序列,从而分别获取小时粒度、地域粒度、小时 x 地域粒度的时空周期兴趣。
    • 最后,我们利用层间注意力 inter-level attention 自动融合多个兴趣。

    主要贡献:

    • 提出了充分考虑时空周期性的思想,具体而言,构建了天级别、小时级别、地域级别、小时-地域级别的周期性。
    • 提出了两个层级的注意力:层内注意力从用户的天级模式中学习长期兴趣、层间注意力融合了长期兴趣和短期兴趣。
  2. 相关工作:这里简要回顾一下近期关于 POI 推荐的一些研究并总结了差异。

    长期兴趣和短期兴趣的结合最近备受关注,并取得了 state-of-the-art

    • DRCF 通过协同过滤捕获长期兴趣,并通过 RNN 添加短期兴趣。
    • STGN 通过设计时空门 spatial-temporal gates 来修改 LSTM 从而提升兴趣。
    • Deep-Move 应用 RNN-based 方法来捕获短期规律,并设计一个历史注意力模块从而利用用户状态的移动周期性mobility periodicity
    • LSPLPLSPL 使用 attention layer 来获得长期兴趣,并使用 LSTM 对近期的连续行为进行建模从而获得短期兴趣。
    • LSTPM 使用各种技术得到的所有轨迹来捕获长期兴趣,例如:周期性的时间加权操作、用于捕获短期兴趣的 LSTMgeo-dilated LSTM

    之前的这些工作和我们的研究之间的差异是明显的。以前的工作通常从有限的粒度(例如 time slot)中捕获周期性,而我们充分利用时空上下文,并设计有效的注意力操作来自动结合combine

27.1 模型

  1. 已知条件:

    • 用户集合 POI 集合 ,类目集合
    • 每个 POI 都有一个类目
    • 空间信息:每个 POI 都有一个经纬度,我们使用 geohash-5 编码,得到 geohash 编码集合 。每个 POI 都对应于一个 geohash 编码。
    • 时间信息:我们有一周七天,即 。我们有一天 24 小时,即
    • 用户的第 个到店表示为

    给定用户的所有历史到店序列 ,以及用户当前的时空信息(即 ),我们预估用户可能到店的 top-k POI

    这里要求获取用户的实时地理位置,即用户当前位置和门店 POI 匹配。

  2. Long-Term Module:使用周几的时间上下文查找用户的天级别模式daily pattern,并使用注意力机制来建立长期兴趣。

    天级别模式旨在捕获用户的天级周期性,从周一到周日。

    • 首先,构建七组掩码:第 组掩码表示用户历史到店序列中,每个行为是否是周 k 产生的。

      例如,第一组掩码:[1,1,0,0,1,0,...0],这表示历史到店序列第一个行为、第二个行为、第五个行为都是周一产生的。

    • 接下来,我们用每一组掩码和到店序列进行逐元素相乘(从而得到周 k 的行为序列),然后通过均值池化以及一个全连接层(这个全连接层在周一...周日之间共享),从而得到周 k 的天级别 embedding

      我们得到七个天级别 embedding,记做

    • 我们创建一个 query 来获取 attention,第 query 由候选 POI 和已知上下文 的拼接组成:

      其中每个 POI 都可以作为候选,但是只有一个是 positive 的,并且这里的 ID 都转换为 embedding 向量。

    • 然后我们通过 Bahdanau attention 来聚合

      其中 都是attention 的参数。

  3. Short-Term Module:用于捕获基本序列模式和上下文感知(例如hourly 周期性 、areal 周期性、hourly-areal周期性)。

    在第 次 到店,假设我们有当前的时间槽 time slot 、有 area 。我们构建四条序列:

    • 序列 :到访序列中,最近的 5 个到访 POI 。捕获序列模式 Sequential Pattern
    • 序列 :到访序列中,最近的、相同 geohash=475 个到访 POI。捕获 Areal Pattern
    • 序列 :到访序列中,最近的、相同或者相近小时(22点、23点、或24点)的 5 个到访 POI。捕获 Hourly Pattern
    • 序列 :到访序列中,最近的、相同 geohash=47的、相同或相近小时(22点、23点、或24点)的 5 个到访 POI。捕获 Hourly-Areal Pattern

    每个序列都暗含某种行为模式,对于每个序列,我们使用 LSTM 来捕获用户对应 pattern 的兴趣:

  4. Inter-level Attention:用于获取用户最终的兴趣。

    在当前时刻 ,我们有五个兴趣: 。其中, 捕获长期的天级兴趣,其它四个捕获短期的兴趣。我们使用 Bahdanau attention 来获取用户最终的兴趣:

    其中 attention 权重。

    然后我们拼接所有的兴趣,得到最终的用户兴趣 representation

    这里有几点注意:

    • 由于兴趣都来自历史到店,因此我们为 query 和各个兴趣添加了一个 dropout layer,从而避免在计算注意力权重之前过拟合。
    • 其次,当这些兴趣捕获不同的 pattern 时,我们通过加权拼接来聚合他们,从而保留独特的模式。
    • 此外,我们在注意力权重上放弃了 softmax 来改善重要模式的表达能力。
  5. Prediction Layer:我们将 进行拼接,然后馈入 MLP

    模型的输出为交叉熵:

    其中 N 为所有候选POI(在所有候选里,只有一个 positive )。

    模型整体架构如下图所示。

27.2 实验

  1. 数据集:两个公开的、真实的数据集,来自于 NewYork city: NYCTokyo: TKY 。 每个到店包含:用户 IDPOI ID、类目ID、经度、纬度。

    数据处理:删除到店人数少于 5POI,并且对每个用户保留他/她最近的 500 个到店。

    评估方式:留一法,每个用户保留最近一次的到店作为测试集,剩余的到店用户训练集和验证集。然后从用户未到店的 POI 中挑选 20 个作为负样本。评估指标为 Acc@kMRR@k

  2. 评估结果:

    ST-PILL :只有长期兴趣的 ST-PIL 模型。 ST-PILS:只有短期兴趣的 ST-PIL 模型。

    • ST-PIL 明显优于其它方法。
    • ST-PILS 优于 ST-PILL,而 ST-PIL 是最好的。这表明同时融合长期兴趣和短期兴趣的价值。

  3. 长期模块的 attention 研究:att-qk 表示长期模块 attention 且包含 queryatt-k 表示长期模块 attention 但是不包含 queryseq-avg 表示长期模块不使用注意力而是取均值。

    L 表示仅使用长期模块而没有短期模块,L+S 表示同时使用长期模块和短期模块。

    结论:带 query 的注意力机制效果最佳。

  4. 短期模块的四种兴趣研究:依次采用不同的短期兴趣组合,从而评估这些短期兴趣的效用。

    • 就单个兴趣而言,空间周期性(S2)和时空周期性(S4)优于其它两个,表明它们的影响力强于序列效应和时间周期性。也就是,当用户选择某个区域的 POI 时,他/她更可能去之前访问过的 POI
    • 就组合兴趣而言,ST-PILS 的整体性能优于任何单个短期兴趣。此外,当我们逐渐增加四个短期兴趣时,效果越来越好。这表明这些兴趣是互补的。

  5. 未来工作:设计更加自动化的方法来代替构建不同序列的预操作。