二十二、COLD(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 更新。
    • 第二代是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 模型,用户向量索引/广告向量索引版本之间的天级切换需要同时执行,这很难满足两个索引存储在不同在线系统中的情况。根据我们的经验,延迟切换也会损害模型性能。

    基于向量内积的 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 网络的输入中。

    当然,直接应用具有复杂架构的深度 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

    注意: 本质上是根据 的线性关系得到。对于 ,我们有 个权重 以及一个 bias 。则上式等价于:

  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 这样的技术来加速特征计算。

  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 对于新广告更加友好。

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

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

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。在我们的真实系统中,我们根据经验手动选择平衡的版本。

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

      • Float32 版本的可用 QPS 最低。
      • 单独使用 Float16 可以提高大约 21% 的可用 QPS
      • 结合 Float16CUDA MPS,我们可以将可用 QPSFloat32 提高一倍,并且可以在不超过延迟限制的情况下充分利用 GPU

二十三、ComiRec(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 被馈入 embedding layer 并被转换为 item embedding

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

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

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

  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%

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

    • 左图展示了用户点击行为序列中,分别与这四个兴趣相对应的点击 item
    • 右图展示了通过兴趣 embedding 从工业 item 池中检索到的 item

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

二十四、EdgeRec

  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 端用户偏好的实时变化,从而严重损害了商业推荐系统的用户体验。

     

    边缘计算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 端被收集、存储、和消费,这些行为可以实时馈入模型中。

    • 上下文感知重排Context-aware Reranking:论文提出使用带行为注意力网络的上下文感知重排Context-aware Reranking with Behavior Attention Network ,从而在edge 端重排 reranking

      具体而言,论文通过提出的行为注意力机制对候选 item 和实时用户行为上下文之间的交互进行建模。依靠基于 EdgeRecedge reranking 能力,EdgeRec 实现了实时响应以满足用户的需求。

    作者对淘宝首页 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

        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 )。

    • 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 矩阵,再响应客户端。

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 Exposure Behavior Sequence ModelingItem Page-View Behavior Sequence Modeling

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

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

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

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

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

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

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

    • 我们首先分别关注 item 曝光行为动作编码序列 item 详情页行为动作编码序列
    • 然后我们根据 Bahdanau 注意力机制将将注意力分布表示为