二十四、MIMN[2019]

  1. 不断发展的互联网将我们带入具有个性化在线服务的数字世界。从在线系统收集的大量用户行为数据为我们提供了更好地了解用户偏好的绝佳机会。从技术上讲,从丰富的行为数据中捕获用户兴趣至关重要,因为它有助于典型的现实世界application (如推荐系统、在线广告)的显著改进。这里我们限制在点击率Click-Through Rate: CTR预估建模的任务上。CTR 预估在在线服务中起着至关重要的作用。这里讨论的解决方案也适用于许多相关任务,例如转化率 conversion rate: CVR 预估和用户偏好建模。

    在深度学习的推动下,人们已经提出了体系结构精心设计的、用于建模用户兴趣的深度 CTR 模型,从而实现了 state-of-the-art 效果。这些模型大致可以分为两类:

    • pooling-based 的架构:它将用户的历史行为视为独立的信号,并应用sum/max/attention 等池化操作来summarize 用户的兴趣representation

    • sequential-modeling 架构:它将用户的历史行为视为序列信号,并应用 LSTM/GRU 操作来summarize 用户的兴趣representation

    但是在工业应用中,需要大量的精力将这些复杂的模型部署到在线 serving 系统中以进行实时推断,其中每天都有数以亿计的用户访问该系统。当遇到非常长的用户行为序列数据时,问题变得更加困难:因为所有上述模型都需要在 online serving 系统中存储完整的用户行为序列(也称作特征),并在极短的延迟时间内获取它们以计算兴趣representation 。这里,"长" 表示用户行为序列的长度高达1000 甚至更多。实际上,系统延迟和存储成本随着用户行为序列的长度大致成线性关系。

    DIEN 做了大量的工程工作来部署序列模型,但是它也就最大能处理长度为 50 的用户行为序列。下图给出了在阿里巴巴线展示广告系统online display advertising system 中,用户行为序列的平均长度以及对应的 CTR 模型的性能。显然,解决长序列用户行为建模的挑战是值得的。

    在论文 《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》 中,论文共同设计(co-design)了机器学习算法和在线serving 系统来用于 CTR 预估任务,并介绍了工程实践。论文将用户行为建模和完整的 CTR 预估系统解耦,并相应地设计了特定的解决方案:

    • serving 系统的角度:论文设计一个叫做 UIC: User Interest Center 用户兴趣中心的独立模块,将用户兴趣建模中最耗资源的部分和整个模型解耦。UIC 聚焦于在线serving 的用户行为建模问题,它维护每个用户的最新兴趣representation

      UIC 的关键是它的更新机制。用户粒度的状态更新仅取决于实时的用户行为触发事件realtime user behavior trigger event ,而不依赖于流量请求。也就是说,UIC 对于实时 CTR 预估是无延迟的 latency free

    • 机器学习算法的角度:解耦UIC 模块无法解决存储问题,因为对于数以亿计的用户、且每个用户可能长达上千的用户行为序列的存储和推断仍然很困难。这里作者借鉴了 NTM 的记忆网络 memory network 的思想,并提出了一种叫做 MIMN: (Multi-channel user Interest Memory Network (多通道用户兴趣记忆网络)的新颖架构。MIMN 以增量的方式工作,可以很容易地使用 UIC 模块实现,这有助于解决存储挑战。

      此外,MIMN 通过记忆利用正则化 memory utilization regularization 和记忆归纳单元 memory induction unit 这两种设计改善了传统的 NTM ,使其在有限的存储空间下更有效地建模了用户行为序列,并大大提升了模型性能。

    从理论上讲,UICMIMN 的共同设计方案co-design solution 使得我们能够处理无限长度的用户行为序列数据的用户兴趣建模。实验表明:论文提出的方法在模型性能和系统效率上均具有优势。据作者所知,这是能够处理长达数千的用户行为序列数据的、最早的工业解决方案之一。目前该方案已经部署在阿里巴巴的 display advertising system 中。

    本文主要贡献:

    • 论文介绍了一个工程实践(hands-on practice):结合学习算法和 serving 系统的协同设计来完成 CTR 预估任务。该解决方案已经部署在世界领先的广告系统中,使我们能够处理长的用户行为序列建模。

    • 论文设计了一个新颖的 UIC 模块,它将沉重( heavy )的用户兴趣计算与整个 CTR 预估过程分离。UIC 对流量请求没有延迟,并允许任意复杂的模型计算,其中模型计算以离线模式工作。

    • 论文提出了一个新颖的 MIMN 模型,它改进了原有的 NTM 架构,具有记忆利用正则化memory utilization regularization 和记忆归纳单元 memory induction unit 两种设计,使其更适合用于兴趣的学习。MIMN 很容易用 UIC server 实现,其中 UIC server 增量地更新用户的兴趣representation

    • 论文对公共数据集和从阿里巴巴广告系统收集的工业数据集进行了仔细的实验。作者还详细分享了在部署所提出的解决方案的实际问题方面的经验。

  2. 相关工作:

    • Deep CTR Model:随着深度学习的快速发展,我们在计算机视觉、自然语言处理等诸多领域取得了进展。受这些成功的启发,人们提出了许多基于深度学习的 CTR 预估方法。与传统方法中的特征工程不同,这些方法利用神经网络来捕获特征交互。虽然这个思想看起来很简单,但是这些工作在 CTR 预估任务的发展上向前迈出了一大步。之后,工业社区更多地关注模型架构设计,而不是通过无穷无尽的特征工程来提高性能。

      除了学习特征交互之外,人们还提出了越来越多的方法来从丰富的历史行为数据中获取用户的洞察 insight

      • DIN 指出用户的兴趣是多样化的,并且随着目标 item 的不同而不同。DIN 中引入了注意力机制来捕获用户的兴趣。

      • DIEN 提出了一个辅助损失来从具体行为中捕获潜在的兴趣,并改进了 GRU 从而建模兴趣演变。

    • Long-term User Interest

      • 《Learning implicit user interest hierarchy for context in personalization》 认为长期兴趣意味着通用兴趣general interest ,这是用户大脑根深蒂固的、对个性化很重要的因素。

      • 《Framework for selecting and delivering advertisements over a network based on combined short-term and long-term user behavioral interests》 提出对用户对类目的长期兴趣建模。

      • 《Incremental update of long-term and short-term user profile scores in a behavioral targeting system》 增量地建模长期和短期用户画像 score,从而表达用户的兴趣。

      所有这些方法都通过特征工程来建模长期兴趣,而不是通过自适应端到端的学习。TDSSM 提出联合建模长期用户兴趣和短期用户兴趣来提高推荐质量。不幸的是,这些基于深度学习的方法,如 TDSSM、DIN、DIEN 很难部署在面临极长用户行为序列的实时预估 server 中。存储压力、计算延迟将随着用户行为序列的长度线性增长。在工业 application 中,行为序列的长度通常很小(例如 50),然而淘宝的活跃用户可能会在两周内留下长度超过 1000 的行为(如点击、转化等)。

    • Memory Network:记忆网络已经被提出用于使用外部记忆组件external memory component 提取知识。这个思想在 NLP 中得到了广泛的应用,如问答系统question answering system 。一些工作利用记忆网络进行用户兴趣建模。然而,这些方法忽略了长期兴趣建模和实际部署问题。

24.1 模型

24.1.1 UIC

  1. 在现实世界的推荐系统或者广告系统中,点击率预估模块是至关重要的组件。通常点击率预估模块接收一组候选对象(如item 或者广告),并通过执行实时的模型推断来返回相应的预估点击率。这一过程需要在严格的延迟时间内完成,实践中典型的延迟时间为 10ms

    下图简要介绍了在线展示广告系统online display advertising system 中用于 CTR 任务的实时预估(RealTime Prediction: RTP) 系统。为了便于读者理解,我们假设对 RTP 的请求输入仅包含用户和广告信息,忽略了上下文或其它信息。

  2. 在工业应用中,如电商行业的推荐系统,用户行为特征在特征集合中的贡献最大。例如,在我们的推荐系统中,接近 90% 的特征是用户行为特征,剩余 10% 的特征是用户人口统计特征 user demography featur 和广告特征。这些用户行为数据包含丰富的信息,对于用户兴趣建模很有用。

    下图显示了我们系统中不同天数收集的用户行为序列的平均长度,以及使用不同长度的用户行为特征训练的basic modelEmbedding & MLP)的离线性能。无需任何其它努力,当使用长度为 1000 的用户行为序列时,basic model 要比使用长度为 100 的用户行为序列,在 AUC 上提升 0.6% 。值得一提的是,仅 0.3%AUC 提升对我们的业务而言就足够了。

    这种AUC 的提升表明:利用较长的用户行为序列数据具有很大的价值。

  3. 然而,利用长的用户行为序列数据带来了巨大的挑战。

    实际上,数以亿计用户的行为特征非常庞大。为了在推荐系统中保持低延迟和高吞吐量,通常将行为特征存储在额外的分布式内存存储系统(distributed in-memory storage system)中,例如我们系统中的 TAIR (阿里巴巴实现的一个分布式 key-value 存储系统)。这些特征将被提取到预测服务器 prediction server ,并在流量请求到来时参与实时推断的计算。

    根据我们的实践经验,在我们的系统中实现 DIEN 会花费很多工程工作。为了使得延迟和吞吐量都满足 RTP 系统的性能需求,用户行为序列的长度最高为 150,无法达到长度为 1000 的情况。

    直接包含更多的用户行为数据非常困难,因为面临几个挑战。其中两个最关键的挑战包括:

    • 存储约束:我们系统中有超过 6 亿用户,每个用户的行为序列的最大长度为 150 。这将花费大约 1TB 的存储空间,该存储空间不仅存储 product_id,也会存储其它相关的特征id(如shop_idbrand_id 等)。

      当用户行为序列的长度最大为 1000 时,将会消耗 6TB 的存储空间,并且该数量还会随着用户行为序列的长度而线性增加。如前所述,我们的系统中使用高性能存储来保持低延迟和高吞吐量,而维持如此大的存储太昂贵了。庞大的存储量也导致用户行为特征的相应计算和更新的成本很高。

      因此,较长的用户行为序列意味着无法接受的存储消耗。

    • 延迟约束:众所周知,使用序列的深度网络sequential deep network 进行实时推断非常困难,尤其是在我们的请求量很大的情况下。DIEN 部署了多种技术,可以将我们系统中 DIEN serving 的延迟降低到 14ms,而每个 workerQuery Per Second: QPS 的容量 capacity500

      然而,当用户行为序列的长度最大为 1000 时,DIEN 的延迟在 500 QPS 时会高达 200ms 。我们的展示广告系统很难容忍 500 QPS 下的 30ms 延迟限制。因此,在当前的系统架构下,无法获得长的用户行为序列的好处。

  4. 为解决上述针对长的用户行为序列建模的挑战,我们提出了共同设计(co-design)机器学习算法和在线serving 系统的解决方案。由于用户行为建模是 CTR 预估系统最具挑战性的部分,因此我们设计了一个 User Interest Center: UIC 模块来处理它。

    下图的 B 部分说明了带有 UIC server 的、新设计的 RTP 系统。系统 AB 之间的差异是用户兴趣 representation 的计算。在 B 中,UIC server 为每个用户维护最新的兴趣representationUIC 的关键是其更新机制:用户状态的更新仅取决于实时用户行为触发事件,而不是取决于请求。 也就是说,UIC 对于实时 CTR 预测是无延迟 latency free 的。在我们的系统中,UIC 可以在 500QPS 下将长度 1000 的用户行为序列的 DIEN 模型的延迟从 200ms 降低到 19ms

    下图为CTR 任务的 RTP 系统示意图。通常 RTP 由三个关键组件构成:特征管理模块feature management module 、模型管理模块model management module、预估服务器prediction server 。系统 AB 的主要区别在于用户兴趣representation 的计算。

    • A 中,用户兴趣representation 针对每个请求在 prediction server 内执行。

    • B 中,用户兴趣 representation 针对实时的用户行为事件在 UIC server 中独立执行。也就是说,用户兴趣 representation 的计算和流量请求解耦并且是 latency free 的。

24.1.2 MIMN

  1. 这里我们详细介绍用于长的用户行为序列建模的机器学习方法。

  2. 从长序列数据中学习是困难的。众所周知,简单的 RNNRNN,GRU,LSTM )难以建模长的序列。

    注意力机制通过将序列数据中的必要信息necessary information 压缩到固定长度的张量中来提升模型的表达能力。例如,在 DIN 中,注意力机制通过 soft-search 隐状态序列(或者 source 行为序列)中与目标 item 相关的部分来工作。

    • 为了进行实时推断,注意力机制需要存储所有原始行为序列,这给在线系统的存储带来很大压力。

    • 此外,注意力的计算成本随着行为序列的长度线性增长,这对于长的用户行为序列建模是不可接受的。

    实际上,RNN 中的隐状态hidden state 并非旨在存储 source 序列历史的全部信息,而是更多地关注预测目标( predicting target)。因此,最后一个隐状态可能会遗忘长期的信息 long-term information 。此外,存储所有隐状态是多余的。

    最近,人们提出了神经图灵机 Neural Turing Machine: NTMsource 序列中捕获信息,并将其存储在固定大小的外部记忆中(external memory) 。在很多使用长序列数据进行建模的任务中,NTM 相比 RNN 模型取得了显著提升。

    借鉴 NTM 的想法,本文中我们提出了一个基于记忆网络memory network-based 的模型,该模型为处理长的用户行为序列建模提供了新的解决方案。我们将该模型命名为 Multi-channel User Interest Memory Network: MIMN ,如下图所示。

    MIMN 由两个主要部分组成:左子网络聚焦于用户行为序列的用户兴趣建模;右子网络遵循传统的 Embedding &MLP 范式,该范式采用左子网络的输出以及其它特征作为输入。

    NIMN 的贡献在于左子网络,它是由 NTM 模型驱动的,并且包含两个重要的记忆网络架构:

    • 基本的 NTM 记忆单元,它具有标准的记忆读取( memory read )和记忆写入( memory write )操作。

    • 多通道 GRU 的记忆归纳单元(memory induction unit),它用于基于先前学习的 NTM 记忆来捕获高阶信息。

  1. UIC 存储 MIMN 的外部记忆张量( external memory tensor),并利用用户的每个新行为来更新该张量。这样,UIC 从用户的行为序列中逐步捕获用户的兴趣。

    尽管 UIC 存储固定长度的记忆张量而不是原始行为序列,但是考虑到存储压力时,必须限制存储张量的大小。本文中,我们提出了记忆利用正则化(memory utilization regularization ),以通过 memory utilization 来提升 UIC 中的记忆张量的表达能力。

    另一方面,随着用户兴趣的变化以及随着时间的演变,我们提出使用记忆归纳单元( memory induction unit )来帮助捕获高阶信息。

  2. NTM:标准的 NTM 通过记忆网络从序列数据中捕获并存储信息。在 time step t ,记忆(memory )的参数记作 MtRM×d ,其中包含 M 个记忆槽 memory slot {mt(i)}i=1,,M ,其中 mtRd

    NTM 的两个基本操作是记忆读取 memory read 和记忆写入memory write ,它们通过一个控制器controller 来和记忆交互。

    readwrite 还是先 writeread?作者没有明确表达。读者猜测是先writeread,这样始终能够读取最新的状态。

    memory read 有两个作用:

    • 选择 top-k 重要的 slots ,从而更新 MIU

    • 输出 memory summarization rT 作为模型的特征。

    • 记忆读取memory read:给定第 t 个行为的 embedding 向量 etRde 作为输入,控制器会生成一个 read key ktRd 来寻址记忆( address memory )。它首先遍历所有的记忆槽,生成一个权重向量 wtrRM

      wtr(i)=exp(K(kt,mt(i)))j=1Mexp(K(kt,mt(j))),i=1,2,M

      其中:

      K(kt,mt(i))=ktmt(i)kt×mt(i)

      然后计算加权的memory summarization 作为输出 rtRd

      rt=i=1Mwtr(i)mt(i)
    • memory write:类似于memory read 操作,我们生成用于 memory write 寻址的权重向量 wtwRM 。控制器还生成了额外的两个keyadd vector atRderase vector ztRd ,从而控制 memory 的更新:

      Mt=(1Zt)Mt1+At

      其中:

      • Zt=wtwztRM×derase matrix 为向量的外积。

        Zt 相当于每个 slot 提供一个加权的 erase vector zt ,第 islot 权重为 wtw(i)

      • At=wtwatRM×dadd matrix

        At相当于每个 slot 提供一个加权的 add vector at ,第 islot 权重为 wtw(i)

      • 为逐元素乘积。(注:原文说的是 dot product )。

  3. Memory Utilization Regularization:实际上,basic NTM 会遭受 memory utilization unbalanced 的问题,尤其是在用户兴趣建模的场景下。即,热门的 item 倾向于在用户行为序列中频繁出现,并且主导着 memory 的更新,从而使得 memory 的使用变得低效。

    NLP 领域先前的一些工作已经提出使用 LRU 策略来平衡每个 memory 的利用(utilization)。由于 LRU 在处理过程的每个短序列中都非常注意平衡 memory 的利用,因此 LRU 几乎从来不会在相邻的时间步对相同的slot 写入信息。

    但是,在我们的场景中,用户可能会与隶属于相同兴趣的几种行为进行交互,这会写入同一个 slotLRU 将会使得内容寻址混乱 disorganize,并且不适合我们的任务。

    本文中,我们提出了一种称作memory 利用正则化(memory utilization regularization )的新策略,该策略被证明对用户兴趣建模是有效的。

    memory utilization regularization 背后的思想是:将不同 memory slot 之间的 write weight 方差进行正则化,从而使得 memory 利用达到平衡。

    gt=c=1twcw~ 为截止到 t 时刻的累积的、各 slot 的更新后的权重,其中 wcw~ 为时刻 c 的、re-balancedwrite weight

    Pt=softmax(Wggt)RM×Mwtw~=PtwtwRM

    其中:

    • wtw 为原始的 write weight,而 wtw~ 为新的 write weight

    • Ptslot 之间的权重转移矩阵,它取决于:

      • gt ,它代表了截止到 t 步每个 memory slot 的累积利用(accumulated utilization) 。

      • 参数矩阵 Wg ,它通过正则化损失来学习:

        g=gT=t=1Twtw~Lreg=λi=1M(g(i)1Mj=1Mg(j))2

        其中: Mslot 数量。注意:上式中没有下标 t 。该正则化的物理意义为:不同 slot 的累计 write weight 的方差最小化。

        Lreg 有助于降低不同 memory slotwrite weight 的方差。

    通过使用 ww~ 来代替 ww ,则所有的 M 个槽的更新频率将趋于均匀。通过这种方式,所有 memory slot 的利用都被提升从而得到平衡。因此,utilization regularization 可以帮助 memory tensor 存储来自于 source 行为数据的更多信息。

  4. Memory Induction UnitNTM 中的 memory 旨在尽可能多地存储源数据中的原始信息。美中不足的是,它可能会错过捕获某些高级信息的机会,例如各部分兴趣的动态演变过程。为了进一步提升用户兴趣抽取的能力,MIMN 设计了一个 Memory Induction Unit: MIU

    MIU 还包含了一个内部的 memory SRM×d ,它具有和 NTM 相同的槽数 M 。这里我们将每个 memory slot 视为一个用户兴趣通道user interest channel 。在时刻 tMIU

    • 选择 k 个通道,其中通道索引为:

      {i:wtr(i)topk(wtr)}i=1,,k

      其中 wtr 为前面提到的 NTMmemory read 中的权重向量。

      选择 top k 是为了挑选重要的通道,从而过滤掉噪音信号。k 怎么选择?论文没有给出指导,也没有给出消融实验。

    • 对于第 i 个选中的通道,更新 st(i)

      st(i)=GRU(st1(i),mt(i),et)

      其中 mt(i)NTM 的第 imemory slotet 为行为 embedding 向量。

      注意:一般情况下 k<M ,因此这里只有被选中的通道才会更新 st(i)

      上式表明:MIU 既从原始行为输入中捕获信息,又从 NTM 模块存储的信息中捕获信息。这是一个归纳过程 inductive process ,如下图所示。

    多通道 memoryGRU 参数是共享的,因此不会增加参数量。

    {sT(i)}i=1M 和目标广告 embedding ea 进行 attention-pooling 从而得到固定长度的 embedding 向量,并用于后续的向量拼接和 MLP

  5. Online Serving:与 DIEN,DIN 应用注意力机制从而获得 candidate-centric 兴趣的 representation 不同,MIMN 学会了显式地捕获和存储用户的多样化兴趣,并将其存储在每个用户的 external memory 中。这种 memory-based 架构无需在候选对象(如,我们系统中的目标广告)和用户行为序列之间进行交互式计算,并且可以增量执行,这使得它可扩展地用于长的用户行为序列建模。

    用于在线 servingMIMN 的实现非常简单。我们将整个模型拆分并实现到两个 server 中:

    • 左侧的子网是在 UIC server 中实现的,如下图所示。它使用 NTMMIU 进行计算量最大的用户兴趣建模。

    • 右侧的子网可以在 RTP server 中实现。

    NTMMIU 模块均享受增量计算的优势:最新的 memory state 代表用户的兴趣,并更新到 TAIR 以进行实时 CTR 预估。当收到最新的用户行为事件时,UIC 将再次计算用户兴趣 representation,并更新到 TAIR 。这样,不需要存储用户行为数据。

    在我们的系统中,长用户行为序列的存储量可以从 6T 减少到 2.7T

  6. UIC serverMIMNco-design 使得我们能够处理长的用户行为序列数据,序列长度可以扩展到数千。

    • UIC 用于用户兴趣representation 的更新和整个模型的计算无关,从而使它对于实时CTR 预估是无延迟latency free 的。

    • MIMN 提出以增量的方式对用户兴趣进行建模,而无需像传统解决方案一样存储整个用户行为序列。此外,MIMN 使用改进的 memory architecture,可以实现出色的模型性能。

    但是,它并不适合所有情况。我们建议将该解决方案应用于具有以下条件的应用程序:丰富的用户行为数据,以及实时用户行为事件的流量规模不能明显超过实时 CTR 预测请求的流量规模。

24.2 实验

  1. 实验分为两个部分:

    • 详细介绍了算法验证,包括数据集、实验配置、比较模型、以及相应的分析。

    • 讨论并分享在阿里巴巴展示广告系统中部署所提出的解决方案的实践经验。

24.2.1 实验结论

  1. 数据集:

    • Amazon Dataset:由Amazon 提供的商品评论、商品元信息组成。我们使用Amazon 数据集的 Books 子集。

      对于该数据集,我们将评论视为一种交互行为,并根据时间对一个用户的所有评论进行排序。假设用户 uT 个行为,我们的目的是使用之前的 T1 个行为来预测用户 u 是否会对第 T 个评论中的商品写下评论。

      为了聚焦长的用户行为序列预测,我们过滤了行为序列长度小于 20 的样本,并截断了行为序列长度为 100 (即超过100 截断为 100)。

    • Taobao Dataset:收集自淘宝推荐系统的用户行为。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约一百万用户的用户行为序列。我们采用每个用户的点击行为,并根据时间对其进行排序,从而尝试构建行为序列。

      假设用户 uT 个行为,我们使用之前的 T1 个商品作为特征来预测用户是否会点击第 T 个商品。行为序列长度被截断为 200

    • Industrial Dataset:收集自阿里巴巴在线展示广告系统。样本来自曝光日志,其中标签为这个曝光是 ”点击“ 或者”未点击“。训练集由过去49 天的样本组成,测试集由下一天的样本组成。这是工业建模的经典配置。

      在这个数据集中,每天每个样本的用户行为特征包含之前60天的历史行为序列,行为序列长度被截断为 1000

    下表给出了这些数据集的统计信息。

  2. 实验配置:

    • 对于所有模型,我们使用 Adam 优化器。我们采用指数衰减,学习率从 0.001 开始、衰减速率为 0.9

    • FCN: fully connected network 的层数设置为:200 x 80 x 2

    • embedding 维度设为 16,和 memory slot 的维度相同。

    • MIUGRU 的隐层维度设为 32

    • NTMMIU 中的 memory slot 数量是一个在消融研究部分仔细检查过的参数。

    • 我们将 AUC 视为衡量模型性能的指标。

  3. baseline 方法:我们将 MIMNstate-of-the-artCTR 预估模型进行比较。

    • Embedding & MLP:是CTR 预估的 basic 深度学习模型。它需要 sum 池化操作才能整合行为 embedding 序列。

    • DIN:是用户行为建模的早期工作,提出针对目标 item 条件下对用户行为进行软搜索soft-search

    • GRU4Rec:基于 RNN 的方法,并且是使用循环单元recurrent cell 来建模用户行为序列的首次研究。

    • ARNN:是 GRU4Rec 的一种变体,它使用注意力机制对所有隐状态进行加权和,从而得到更好的用户行为序列 representation

    • RUM:使用external memory 来存储用户的额行为特征。它还利用 soft-writingattention reading 机制来和memory 进行交互。我们使用 feature-level RUM 来存储序列信息。

    • DIEN:将 GRUcandidate-centric attention 技巧融合,从而捕获用户兴趣的演变趋势,并实现了 state-of-the-art 性能。

      为了进行公平地比较,我们省略了辅助损失的技巧,以便更好地在 DIEN 中进行 embedding 学习。否则应该针对上述所有模型都使用辅助损失技巧。

  4. 下表给出了所有模型的实验结果,每个实验重复 3 次并报告均值和标准差。可以看到:

    • 所有其它模型都击败了 Embedding & MLP,这验证了针对用户行为建模的网络体系架构设计的有效性。

    • MIMN 以很大的 AUC 优势击败了所有模型。我们认为,这是由于memory-based 架构的巨大容量capacity 适用于建模用户行为。

      如前所述,长的用户行为序列数据背后的用户兴趣是多样的,且随着时间而动态演化。MIMN 使用多通道 memory 在两个方面学会了捕获用户兴趣:

      • basic NTM 中的 memory 使用平衡的利用 balanced utilization 来记忆兴趣。

      • MIU 中的 memory 通过归纳兴趣的序列关系进一步捕获高阶信息,其中兴趣是基于 NTMmemory

  5. memoryslot 数量:我们在具有不同数量的memory slotMIMN 上进行了实验。为简化起见,我们使用最基本的 NTM 体系结构来评估 MIMN,省略了 memory utilization regularizationmemory induction unit 。下表给出了结果。

    可以看到,slot 数量会影响模型性能:

    • 对于 Amazon 数据集,最佳性能是 slot 数量为 4 时取得的。

    • 而对于 Taobao 数据集,最佳性能是 slot 数量为 8 时取得的。

    我们的分析结果表明,这与数据集中用户行为序列的长度有关。memory 中的每个slot 都是随机初始化的。

    • 对于行为序列较长的数据集,例如 Taobao 数据集,memory 有更多的机会学习和达到稳定(stable )的 representation

    • 对于行为序列较短的数据集,例如 Amazon 数据集,具有较大memory capacity 的模型遭受学习不足的影响。尤其是当 memory 的所有 slot 的利用不平衡时,部分 memory 向量可能无法充分利用和更新,这意味着这些 memory 向量仍然保持接近于初始化状态。

      这会损害模型的性能。因此我们提出了 Memory Utilization Regularization 来缓解该问题。

  6. Memory Utilization Regularization:由于每个用户的兴趣强度不一致,并且memory 进行了随机初始化,因此在basic NTM 模型中,存储的利用可能不平衡。这个问题将损害 memory 的学习,使其不足以利用有限的memory 存储。

    我们使用 memory utilization regularization 技巧来帮助解决该问题。下图显式了memory utilization ,它验证了所提出的正则化器的有效性。

    这种平衡的效果还带来了模型性能的改善,如下表所示。

  7. Memory Induction Unit:通过归纳从 basic NTMmemory,带 memory induction unitMIMN 能够捕获高阶信息并带来更多提升,如上表所示。它增强了用户兴趣抽取的能力,并有助于从长的用户行为序列数据中建模用户兴趣。

  8. 工业数据集结果:

    • 我们进一步对阿里巴巴在线展示广告系统收集的数据集进行实验。我们将 MIMNDIEN 模型进行了比较,下表给出了结果。MIMN0.01AUC 提升超越了 DIEN,这对于我们的业务而言意义重大。

    • 除了离线模型的性能,在系统方面 MIMNDIEN 模型之间还存在很大差异。下图给出了当 MIMNDIEN 作为 serving 模型时实际 CTR 预估系统的性能。

      MIMNUIC serverco-design 在很大程度上击败了 DIEN,前者具有随着不同行为序列长度保持恒定的延迟和吞吐量的特性。因此,MIMN 可以在我们的系统中利用长度可达数千个的、长的用户行为序列数据,并享受模型性能的提升。相反,DIEN serving 的系统会同时遭受延迟和系统吞吐量的困扰。

      由于系统的压力,作为我们最新产品模型的 DIEN 中使用的用户行为序列长度仅为 50 。这再次验证了我们提出的解决方案的优越性。

    • 我们已经在阿里巴巴的展示广告系统中部署了提出的解决方案。我们在 2019-03-30 ~ 2019-05-10 进行了严格的在线 A/B 测试实验,从而验证提出的 MIMN 模型。

      DIEN (我们的最新产品模型)相比,MIMNCTRRPMRevenue Per Mille 每千次收入)均提高了 7.5%。我们将此归因于提出的 co-design 解决方案从长的用户行为序列中挖掘的额外信息。

24.2.2 部署经验

  1. 这里我们讨论在我们的在线系统中,部署 UICMIMN 的实践经验。

  2. UIC ServerRTP Server 的同步synchronization:如前所述,MIMN 是通过 UIC serverRTP server 一起来实现的。因此,UIC serverRTP server 之间存在不同步out-sync 的问题。

    在周期性模型部署的实际系统中,两个 server 的异步参数更新可能导致不正确的模型推断,这具有很大的风险。下表给出了模拟不同步场景实验的结果。注意,在该实验中,out-sync 时间的间隔在一天之内,这是工业系统中的常见设置。实际上,在我们的真实系统中,模型部署被设计为每小时执行一次,这进一步降低了风险。

    可以看到 MIMN 针对 out-sync 具有很好的鲁棒性。我们认为这是由于 MIMN 学到的用户兴趣的稳定表示stable representation,从而使得 MIMN 具有良好的泛化性能。

  3. 超大规模big-scale 数据的影响:如今很多电商网站都采用大促来吸引用户进行在线消费,例如阿里巴巴的”双十一“活动。在这种极端情况下,样本的分布以及用户行为和日常情况大相径庭。我们比较了系统中 11.11 大促日收集的训练数据、以及不包含 11.11 大促日的训练数据,这两种情况下 MIMN 的性能。

    结果如下表所示。我们发现:最好移除 big-scale 数据。

  4. Warm Up Strategy:尽管 UIC 旨在进行增量更新,但是从一开始就需要相当长时间才能进入稳定积累stable accumulation。 实际上我们采用预热策略warm up strategy 来使用预先计算的用户兴趣表示来初始化 UIC 。即,我们为每个用户收集最近 120 天的历史行为(用户行为序列的平均长度为 1000),并以离线模式使用训练好的 MIMN 来推断,然后将累积的 memory 推送到 UIC 中以便进行进一步的增量更新。

    该策略可以尽快地部署MIMN ,并取得合理的模型性能。

  5. Rollback Strategy:如果出现意外问题,如大规模在线作弊对训练样本的污染,UIC server 的增量更新机制可能会遭受重大损失。 一个麻烦的挑战是寻找异常case 发生的时间点。

    为了抵御这种风险,我们设计了一种回滚策略 rollback strategy,该策略将每天00:00 学到的用户兴趣representation 副本存储起来,并保存最近 7 天的副本。

二十五、SIM[2020]

  1. 点击率Click-Through Rate: CTR预估建模在推荐系统recommender system 和在线广告online advertising等工业应用中起着至关重要的作用。由于用户历史行为数据user historical behavior data 的快速增长,以学习用户兴趣的意图representation 为重点的用户兴趣建模user interest modeling被广泛引入 CTR 预估模型。然而,由于真实在线系统中计算负担和存储负担的限制,大多数提出的方法只能对长度最多数百的用户行为序列数据进行建模。

    事实证明,丰富的用户行为数据具有巨大的价值。例如,在全球领先的电商网站之一的淘宝网中,有 23% 的用户在过去五个月内点击了 1000 多种商品。如何设计一种可行的解决方案来对长的用户行为序列数据long sequential user behavior data 进行建模,这一直是一个开放而热门的话题,吸引了来自工业界和学术界的研究人员。

    • 研究的一个分支借鉴了 NLP 领域的思想,提出使用 memory network 对长的用户行为序列数据进行建模,并取得了一些突破。阿里巴巴提出的 MIMN 是一项典型的工作,它是通过共同设计( co-design )学习算法和 serving system 来达到 SOTA 的。MIMN 是第一个可以对长度可达 1000 的用户行为序列进行建模的工业级解决方案。

      具体而言,MIMN 将一个用户多样化diverse的兴趣增量地incrementally 嵌入到固定大小的 memory matrix 中。该矩阵将通过每个新的行为进行更新,这样用户建模的计算就和 CTR 预估解耦。因此,对于在线 serving 而言,latency 将不再是问题。而存储代价依赖于 memory matrix 的大小,该大小远远小于原始的用户行为序列。

      在长期兴趣建模long-term interest modeling 中可以找到类似的思想。然而,对于 memory network-based 方法来建模任意长的序列数据仍然是具有挑战性的。实际上我们发现:当用户行为序列的长度进一步增加,比如增加到 10000 甚至更多时,对给定一个特定的候选item 的情况下,MIMN 无法精确地捕获用户的兴趣。这是因为将用户所有的历史行为编码到固定大小的 memory matrix 会导致大量的噪声被包含在 memory unit 中。

    • 另一方面,正如 DIN 在以前的工作中指出的,一个用户的兴趣是多样化diverse 的,并且在面对不同候选item 时会有所不同。DIN 的关键思想是:在面对不同的候选 item 时,从用户行为序列中搜索有效信息,从而建模用户的特定兴趣special interest 。通过这种方式,我们可以解决将用户所有兴趣编码为固定大小的参数parameter的挑战。

      DIN 确实为使用用户行为序列数据的 CTR 建模带来了很大的提升。但是,如前所述,面对长的用户行为序列数据,DIN 的搜索公式的计算成本和存储成本是不可行的。因此,我们能否应用类似的搜索技巧,并设计一种更有效的方法来从长的用户行为序列数据中提取知识?

    在论文 《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》 中,作者通过设计一个新的建模范式来解决这一挑战,并将其命名为基于搜索的兴趣模型 Search-based Interest Model: SIMSIM 采用了 DIN 的思想,并且仅捕获与特定候选 item 相关的用户兴趣。

    SIM 中,用户兴趣是通过两个级联 cascaded的搜索单元search unit 来提取的:

    • 通用搜索单元 General Search Unit: GSU:充当原始的、任意长的行为序列数据的通用搜索,并具有来自候选 itemquery 信息,最终得到和候选item 相关的用户行为序列子集Sub user Behavior Sequence: SBS

      为了满足latency 和计算资源的严格限制,在 GSU 中使用了通用、但是有效的方法。根据我们的经验,可以将 SBS 的长度缩短为数百个,并且可以过滤原始的、长的用户行为序列数据中的大部分噪声信息。

    • 精准搜索单元Exact Search Unit: ESU:对候选 itemSBS 之间的精确关系进行建模。在这里,我们可以轻松应用 DINDIEN 提出的类似方法。

    论文主要贡献:

    • 提出了一种新的范式 SIM,用于长的用户行为序列数据进行建模。级联的两阶段搜索机制的设计使得 SIM 具有更好的能力,可以在可扩展性scalability 和准确性accuracy 方面为长期的life-long 用户行为序列数据建模。

    • 介绍了在大规模工业系统中实现 SIM 的实践经验。自 2019 年以来,SIM 已经部署在阿里巴巴展示广告系统display advertising system 中,带来了 7.1%CTR 提升和 4.4%RPM 提升。现在 SIM 正在服务于主要流量。

    • 将长的用户行为序列数据建模的最大长度提高到 54000,比已发布的 SOTA 行业解决方案 MIMN54 倍。

  2. 相关工作:

    • 用户兴趣模型User Interest Model:基于深度学习的方法在CTR 预估任务中取得了巨大的成功。

      在早期,大多数前期作品使用深度神经网络来捕获来自不同 field 的特征之间的交互,以便工程师可以摆脱枯燥的特征工程的工作。最近,我们称之为用户兴趣模型User Interest Model 的一系列工作聚焦于从用户历史行为中学习潜在用户兴趣的 representation ,这些工作使用不同的神经网络架构(如 CNN, RNN, Transformer, Capsule 等等)。

      • DIN 强调用户的兴趣是多样化的,并引入了一种attention 机制来捕获用户对不同 target itemdiverse 兴趣。

      • DIEN 指出,用户历史行为之间的时间关系对于建模用户漂移drifting 的兴趣非常重要。在 DIEN 中设计了一个基于 GRU 的、带辅助损失的兴趣抽取层interest extraction layer

      • MIND 认为,使用单个向量来表示一个用户不足以捕获用户兴趣的变化的特性varying nature 。在 MIND 中引入了胶囊网络Capsule network 和动态路由方法 dynamic routing method,从而学习用户兴趣的、以多个向量表示的representation

      • 受到 self-attention 架构在 seq-to-seq learning 任务重成功的启发, DSIN 引入了 Transformer 来对用户的 cross-sessionin-session 中的兴趣进行建模。

    • 长期用户兴趣Long-term User InterestMIMN 的论文中显示了在用户兴趣模型中考虑长期历史行为序列可以显著提高 CTR 模型的性能。尽管更长的用户行为序列为用户兴趣建模带来了更多有用的信息,但是它极大地增加了在线 serving sysem 的延迟和存储负担,同时也为 point-wiseCTR 预估带来了大量的噪声。

      一系列工作聚焦于解决长期用户兴趣建模中的挑战。长期用户兴趣建模通常基于非常长的、甚至是 life-long 的历史行为序列来学习用户兴趣 representation

      • 《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》提出了一种 Hierarchical Periodic Memory Network,用于对每个用户进行 life-long 序列建模,其中对序列模式进行个性化memorization

      • 《Adaptive user modeling with long and short-term preferences for personalized recommendation》 选择一个attention-based 框架来结合用户的长期偏好和短期偏好。他们采用了 attentive Asymmetric-SVD 范式来对长期兴趣建模。

      • 《Practice on Long Sequential User Behavior Modeling for Click-through Rate Prediction》提出了一种 memory-based 的架构,称作 MIMN。该架构将用户的长期兴趣嵌入到固定大小的memory network 中,从而解决用户兴趣数据的大容量存储问题。并且他们设计了一个 UIC 模块来增量记录新的用户行为,从而解决latency 的限制。

        但是,MIMNmemory network 中放弃了 target item 的信息,而 target item 已经被证明对于用户兴趣建模很重要。

25.1 模型

  1. 通过建模用户行为数据来预估 CTR ,这已经被证明是有效的。典型地,attention-based CTR 模型(如 DIN, DIEN)设计复杂的模型结构,并且包含attention 机制,以通过从用户行为序列中搜索有效知识来捕获用户的多样化兴趣。其中搜索的 input 来自于不同的候选 item

    但是在现实世界的系统中,这些模型只能处理长度小于 150 的短期short-term 行为序列数据。另一方面,长期long-term 用户行为数据很有价值,并且对长期兴趣进行建模可以为用户带来更多样化的推荐结果。

    我们似乎陷入了一个两难的境地:在现实世界的系统中,我们无法通过有效而复杂的方法来处理有价值valuablelife-long 用户行为数据。为应对这一挑战,我们提出了一种新的建模范式,称之为基于搜索的兴趣模型Search-based Interest Model: SIMSIM 遵循两阶段搜索策略,可以有效地处理长的用户行为序列。

    我们首先介绍 SIM 的总体工作流程,然后详细介绍我们提出的两种搜索单元 search unit

  2. SIM 遵循一个级联的 two-stage search 策略,其中包含两个单元:通用搜索单元General Search Unit: GSU、精确搜索单元Exact Search Unit: ESUSIM 的整体工作流如下图所示。

    • 第一阶段:我们利用 GSU 从原始的长期行为序列中寻找 top-K 相关(relevant )的子行为序列,其复杂度为线性时间复杂度。这里 K 通常要比原始序列的长度要短得多。

      如果有时间和计算资源的限制,则可以执行一种有效的搜索方法来搜索相关relevant 的子行为序列。在后续内容中,我们提供了 GSU 的两种简单实现:软搜索soft-search 和硬搜索 hard-search

      GSU 采取一种通用general 但有效effective 的策略来减少原始的行为序列的长度,从而满足对时间和计算资源的严格限制。同时,长期用户行为序列中可能会破坏用户兴趣建模的大量噪声可以在第一阶段通过搜索策略进行过滤。

    • 第二阶段:ESU 将经过过滤的用户行为子序列作为输入,并进一步捕获精确的用户兴趣。

      由于长期用户行为序列的长度已经减少到数百,因此可以应用复杂体系结构的精巧(sophisticated) 的模型,如 DIN, DIEN 等等。

    然后遵循传统的 Embedding&MLP 范式,将精确的长期用户兴趣的输出、以及Other Feature作为输入。

    注意:尽管我们分别介绍了这两个阶段,但是实际上它们是一起训练的。

    长期用户行为序列是否包含短期用户行为序列?论文未说明这一点。看结构图的描述,似乎不包含。

25.1.1 General Search Unit

  1. 给定一个候选 item (即将被 CTR 模型打分的target item),只有一部分用户行为有价值。这部分用户行为与最终用户决策密切相关。挑选出这些相关relevant 的用户行为有助于用户兴趣建模。

    然而,使用整个用户行为序列直接对用户兴趣进行建模将带来巨大的资源占用和响应延迟(latency ),这在实际应用中通常是无法接受的。为此,我们提出了一个通用搜索单元(general search unit: GSU ),从而减少用户兴趣建模中用户行为的输入数量。这里,我们介绍两种通用的搜索单元:硬搜索hard-search 和软搜索 soft-search

  2. 给定用户行为的列表 B=[b1;b2;,bT] ,其中 bi 为第 i 个用户行为(这里每个行为就是用户点击或购买的 item ),T 为用户行为列表的长度。通用搜索单元计算每个行为 bi 相对于候选 item 的相关性得分 relevant score ri,然后选择得分 top-K 的相关relevant 行为作为行为子序列 sub behaviour sequence

    K 的大小对模型性能的影响如何?论文并未进行消融实验。

    硬搜索和软搜索的区别在于相关的分 ri 的计算:

    ri={I(ci=ca),hard-search(Wbei)(Waea),soft-search

    其中:

    • I() 为示性函数, ci 表示第 i 个行为 bi 的类目,catarget item 的类目。

    • WbRd×dWaRd×d 为权重参数,eiRd 为第 i 个行为 biembedding 向量,eaRdtarget itemembedding 向量。ditem embedding 的维度,d 为映射的新空间的维度。

      对于软搜索,GSUESU 共享相同的 embedding 参数。

  3. 硬搜索 hard-search:硬搜索模型是非参数(non-parametric) 的。只有和候选item 相同类目category 的行为被挑选出来,然后得到一个子行为序列并发送给 ESU

    硬搜索非常简单,稍后在实验中我们证明它非常适合在线 serving

    对于 hard-search,如何选择 top-k?因为它的 score 要么为 0、要么为 1 。这使得相同 category 的行为,其 score 全部为 1

  4. 软搜索soft-search:在软搜索模型中,首先将 bi 编码为one-hot 向量,然后嵌入到低维向量 ei 中。

    • 为了进一步加速成千上万个用户行为的 top-K 搜索,基于embedding 矩阵 E 的、亚线性时间sublinear time 的最大内积搜索 maximum inner product search 方法 ALSH 用于搜索和target item 最相关的 top-K 行为。其中 E 为所有distinct 行为的 embedding 向量组成。

      借助训练好的 embedding 和最大内积搜索Maximum Inner Product Search: MIPS 方法,成千上万个用户行为可以减少到数百个。

    • 需要注意的是:长期long-term数据和短期short-term数据的分布是不同的。因此,在软搜索模型中直接使用从短期用户兴趣建模中学到的参数可能会误导长期用户兴趣建模。所以在本文中,软搜索模型的参数是在基于长期行为数据的辅助 CTR 预估任务下训练的,如上图左侧的软搜索训练soft search training 所示。

      用户整体行为序列的representation ur 可以通过将 riei 相乘得到:

      ur=i=1Triei

      行为 representation urtarget Ad 向量 ea 然后拼接起来,作为后续多层感知机 Multi-Layer Perception: MLP 的输入,从而建模辅助任务。

      注意,如果用户行为序列增长到一定程度,则不可能将整个用户行为序列馈入辅助任务的模型。这种情况下,可以从长的用户行为序列中随机采样子序列,子序列仍然遵循原始行为序列相同的分布。

      作者提到 “对于软搜索,GSUESU 共享相同的 embedding 参数“,这意味着 embedding layer 的训练不仅依赖于 main task,还依赖于这里的辅助任务。

25.1.2 Exact Search Unit

  1. 在第一个搜索阶段,我们从长期用户行为中选择和 target item 最相关的 top-K 子用户行为序列 B()=[b1();;bK()] 。为了进一步从相关行为中建模用户兴趣,我们引入了精确搜索单元Exact Search Unit: ESUESU 是一个以 B() 为输入的、attention-based 的模型。

    考虑到这些选出来的用户行为横跨了很长时间,因此每个用户行为的贡献是不同的,所以涉及到每个行为的时间属性temporal property 。具体而言,target item 和选出来的 K 个用户行为的时间间隔 D=[Δ1;Δ2;;ΔK] 用于提供时间距离temporal distance 信息。

    B()D 被编码为 embedding 矩阵 E()=[e1();e2();;eK()]embedding 矩阵 E(t)=[e1(t);e2(t);;eK(t)] 。 其中, ej()ej(t) 的拼接作为第 j 个行为的最终 representation ,记作 zj=concat(ej(),ej(t))

    time info 用向量拼接还是直接逐元素相加?可以做个消融实验分析。

    我们利用 multi-head attention 来捕获用户的多样化兴趣:

    atti,score(j)=Softmax((Wi,zzj)(Wi,aea))=exp[(Wi,zzj)(Wi,aea)]k=1Kexp[(Wi,zzk)(Wi,aea)]z<i>=j=1Katti,score(j)×zj

    其中:

    • atti,score(j) 为作用在第 j 个行为 zj 上的第 iattention scorez<i> 为第 iheadattention

    • Wi,z,Wi,a 为第 ihead 的权重矩阵。

    最终的用户长期diverse 兴趣表示为:ulong=concat(z<1>;;z<H>) ,其中 Hhead 数量。然后 ulong 被馈入到 MLP 中用于点击率预估。

  2. 最终模型同时使用了长期用户行为和短期用户行为,其中:

    • 长期用户行为使用 ESU 来抽取长期用户兴趣representation ulong

    • 短期用户行为使用 DIEN 来抽取短期用户兴趣representation ushort

    长期用户兴趣representation ulong 、短期用户兴趣representation ushort 、以及Other feature representation 一起拼接作为后续 MLP 的输入。

    长期用户兴趣由长期用户行为来捕获,这里使用 GSU + ESU 的原因是序列太长,DIEN 无法处理。

    短期用户兴趣由短期用户行为来捕获,这里使用 DIEN 是因为序列较短因此可以更精细地建模。对于较短的序列,没必要使用 GSU 来硬过滤。

  3. 最后,我们在交叉熵损失函数下同时训练 GSUESU

    L=αLossGSU+βLossESU

    其中:

    • αβ 为超参数,用于控制损失之间的比例。在我们的实验中:

      • 如果 GSU 为软搜索模型,则 α=β=1

      • 如果 GSU 使用硬搜索模型,那么 α=0

    • LossESUESU 单元的损失,这也是SIM 模型主任务的目标损失。

    • LossGSUGSU 单元的损失。

      • 如果 GSU 为硬搜索,则由于硬搜索没有参数,因此不考虑其损失。

      • 如果 GSU 为软搜索,则它是 SIM 模型辅助任务的目标损失。辅助任务也是一个 CTR 预估任务,只是它采用了更简单的架构(没有 multi-head、没有 DIEN )、更少的特征(没有短期用户行为、没有 Other feature )。

    这个辅助损失函数本质上是强制 GSU 部分学到的 embedding 是任务相关的。

    SIMDeepMCPDMR 等模型都是类似的思想,要求模型的子结构也能够捕获到 CTR 相关的信息,从而使得约束了模型的解空间。

25.1.3 在线实现

  1. 这里我们介绍在阿里巴巴的展示广告系统display advertising system 中实现 SIM 的实际经验。

  2. life-long 用户行为数据在线serving 的挑战:工业级的推荐系统或广告系统需要在一秒钟内处理的大量的流量请求,这需要 CTR 模型实时响应。通常, serving latency 应该小于 30 毫秒。下图简要说明了我们在线展示广告系统中用于 CTR 任务的实时预测Real Time Prediction: RTP系统。该系统由两个关键组件组成:计算节点(Computation Node)、预估server

    考虑到 lifelong 的用户行为,在实时工业系统中建立长期的用户兴趣model serving 就变得更加困难。存储和延迟的限制可能是长期用户兴趣模型的瓶颈。实时请求的数据量(数据量 = 请求条数 x 单条请求的数据量)会随着用户行为序列长度的增加而线性增加。此外,我们的系统在流量高峰时每秒可为超过 100 万用户提供服务。因此,将长期模型部署到在线系统是一个巨大的挑战。

  3. 在线 serving 系统:前面我们提出了两种类型的 GSU:软搜索模型和硬搜索模型。

    对于软搜索模型和硬搜索模型,我们对从阿里巴巴在线展示广告系统收集的工业数据进行了广泛的离线实验。我们观察到软搜索模型生成的 top-K 行为数据与硬搜索模型的结果极为相似。换句话讲,软搜索的大部分 top-K 行为通常属于 target item 相同类目category 的。这是我们场景中数据的一个特色。在电商网站中,属于同一类目的 item 在大多数情况下是相似的。考虑到这一点,尽管在离线实验中软搜索模型的性能要比硬搜索模型稍好,但是在平衡性能提升和资源消耗之后,我们选择硬搜索模型将 SIM 部署到我们的广告系统中。

    对于硬搜索模型,包含所有长的用户行为序列数据的索引是关键组件。我们观察到,行为可以通过其所属类目自然访问到。为此,我们为每个用户建立一个两级的结构化索引 two-level structured index ,并将其命名为用户行为树(user behavior tree: UBT ),如下图所示。

    简而言之,UBT 遵循 Key-Key-Value 数据集结构:第一个 keyuser-id,第二个 keycategory id,最后一个value 是属于每个类目的特定的行为itemUBT 被实现为分布式系统,最大容量可达 22TB,并且足够灵活以提供高吞吐量的query

    然后,我们将 target itemcategory 作为我们的硬搜索query

    GSU 之后,用户行为的长度可以从一万多个减少到数百个。因此,可以缓解在线系统中 lifelong 行为的存储压力。

    下图显示了 SIM 的新 CTR 预估系统。新系统加入了一个硬搜索模块,以从长的用户行为序列数据中寻找 target item 相关的有效行为effective behaviors

    注意:GSUUBT 的索引可以离线构建。这样,在线系统中的 GSU 的响应时间可以非常短,与 GSU 的索引构建相比可以忽略。此外,其它用户特征可以并行计算。

    如何解决 category 不平衡问题?例如,某些类目的商品特别多,另一些类目的商品很少。

25.2 实验

  1. 这里我们详细介绍了我们的实验,包括数据集、实验配置、模型比较、以及一些相应的分析。由于 SIM 已经部署在我们的在线广告系统中,因此我们还会进行仔细的在线 A/B test,并比较几个著名的工业级的模型。

  2. 数据集:我们在两个公共数据集、以及阿里巴巴在线展示广告系统收集的工业数据集进行了模型比较。

    • Amazon Dataset:由 Amazon 的商品评论和元数据meta-data组成。我们使用 Amazon 数据集的 Books 子集,该子集包含 75053 个用户、358367item1583 个类目category

      对于该数据集,我们将评论视为一种交互行为,并按时间对一个用户的评论进行排序。Amazon Books 数据集的最大行为序列长度为 100。我们将最近的 10 个用户行为划分为短期short-term用户序列特征,将最近的 90 个用户行为划分为长期long-term用户序列特征。这些预处理方法已经在相关作品中广泛使用。

    • Taobao Dataset:是来自淘宝推荐系统的用户行为集合。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约800 万用户的用户行为序列。

      我们采用每个用户的点击行为,并根据时间对其进行排序从而构建用户行为序列。Taobao Dataset 的最大行为序列长度为 500。我们将最近的 100 个用户行为划分为短期用户序列特征,将最近的 400 个用户行为划分为长期用户序列特征。数据集将很快公开。

    • Industrial Dataset:是从阿里巴巴在线展示广告系统收集的。样本是由曝光日志构建的,标签为是否点击。训练集是由过去49 天的样本组成,测试集是第50 天的样本组成,这是工业建模的经典设置。

      在这个数据集中,每个样本的用户行为特征包含最近 180 天的历史行为序列作为长期行为特征,以及最近 14 天的历史行为序列作为短期行为特征。超过 30% 的样本包含长度超过 1 万的行为序列数据。此外,行为序列的最大长度达到 54000,这比 MIMN 中的行为序列长 54 倍。

    这些数据集的统计信息如下表所示。注意,对于Industrial Datasetitem 为广告。

  3. baseline 方法:我们将 SIM 和以下主流的 CTR 预估模型进行比较。

    • DIN:是用户行为建模的早期工作,旨在针对候选item 进行用户行为的软搜索。和其它长期用户兴趣模型相比,DIN 仅将短期用户行为作为输入。

    • Avg-Pooling Long DIN:为了比较长期用户兴趣下的模型性能,我们对长期行为应用了均值池化操作(没有使用任何 attention 操作),并将long-term embedding 、以及其它特征 embedding 拼接起来。

    • MIMN:它巧妙地设计了模型体系结构从而捕获长期的用户兴趣,实现了SOTA 性能。

    • SIM(hard):我们提出的 SIM 模型,其中第一阶段使用硬搜索,并且在 ESU 中没有 time embedding

    • SIM(soft):我们提出的 SIM 模型,其中第一阶段使用软搜索,并且在 ESU 中没有 time embedding

    • SIM(hard/soft) with Timeinfo:我们提出的 SIM 模型,其中第一阶段使用硬搜索/软搜索,并且在 ESU 使用 time embedding

  4. 实验配置:我们采用与相关工作(即 MIMN)相同的实验配置,以便可以公平地比较实验结果。

    • 对所有模型,我们使用 Adam 优化器。

    • 我们使用指数衰减,学习率从 0.001 开始。

    • 全连接网络FCNlayer 设置为 200 x 80 x 2

    • embedding 维数设置为 4

    • 我们使用 AUC 作为模型性能的评估指标。

  5. 下表显式了所有模型在公共数据集上的比较结果。a 表示SIM 采用软搜索且没有时间间隔的 embeddingb 没有在 Amazon Dataset 上实验,因为该数据集没有时间戳数据。

    • DIN 相比,具有长期用户行为特征的其它模型的性能要好得多。这表明长期用户行为对CTR 预估任务很有帮助。

    • MIMN 相比,SIM 取得了显著提升,因为 MIMN 将所有未过滤的用户历史行为编码到固定长度的 memory 中,这使得难以捕获多样化的长期用户兴趣。

    • SIM 使用两阶段搜索策略从庞大的历史行为序列中搜索相关的行为,并针对不同target item 来建模多样化的长期用户兴趣。

      实验结果表明:SIM 优于所有其它长期兴趣模型。这充分证明了我们提出的两阶段搜索策略对于长期用户兴趣建模很有用。而且,包含time embeding 可以实现进一步的提升。

    在这个 Taobao 数据集中,MIMN 的指标与原始 MIMN 中的指标对不上,可能的原因是:这里的 Taobao 数据集与之前的 Taobao 数据集不同。

  6. 消融研究--两阶段搜索的有效性:如前所述,我们的 SIM 模型使用两阶段搜索策略。

    • 第一阶段遵循通用搜索策略,从而过滤得到与target item 相关的历史行为。

    • 第二阶段对第一阶段的行为进行 attention-based 的精确exact搜索,从而准确地accurately 捕获用户对于target item 的多样化的长期兴趣。

    这里我们通过对长期历史行为应用不同操作的实验来评估所提出的两阶段搜索架构的有效性。这些不同的操作如下:

    • Avg-Pooling without Search :仅仅简单地应用均值池化来聚合长期行为 embedding,没有使用任何过滤。它和 Avg-Pooling Long DIN 相同。

    • Only First Stage(hard) :在第一阶段对长期历史行为应用硬搜索,并通过对过滤后的结果应用均值池化从而得到固定大小的、聚合的 embedding,从而作为 MLP 的输入。即没有第二阶段搜索策略。

    • Only First Stage (soft) 几乎和 Only First Stage(hard) ,但是前者采用软搜索而不是硬搜索。

      我们根据预训练pre-trainedembedding 向量,离线计算 target item 和长期用户行为之间的内积相似度得分。然后根据相似度得分选择 top 50 个相关行为来进行软搜索。

    • 最后三个实验是我们提出的两阶段搜索架构的搜索模型。

    实验结果如下表所示,可以看到:

    • 与简单的均值池化 embedding 相比,所有具有过滤策略的方法都极大地提高了模型性能。这表明在原始的长期行为序列中确实存在大量的噪声,而这些噪声可能会破坏长期用户兴趣的学习。

    • 和仅进行一阶段搜索的模型相比,我们提出的具有两阶段搜索策略的搜索模型通过在第二阶段引入 attention-based 的搜索而取得了进一步的提升。这表明:精确地建模用户对 target item 的多样化的长期兴趣,有助于 CTR 预估任务。并且在第一阶段搜索之后,过滤后的行为序列通常比原始序列短得多,attention 操作不会给在线 RTP 系统带来太多负担。

    • 包含time embedding 的模型得到了进一步的提升,这表明不同时期 peroid 的用户行为的贡献是不同的。

  7. 我们进一步对阿里巴巴在线展示广告系统收集的工业数据集进行实验,下表给出了实验结果。a 表示该模型目前已经部署在我们的在线serving 系统,并且服务于主要的流量。

    • SIM 相比 MIMNAUC 上提升了 0.008,这对于我们的业务而言意义重大。

    • 和第一阶段使用硬搜索相比,第一阶段使用软搜索的性能更好。

    • 在第一阶段,硬搜索和软搜索这两种搜索策略之间只有微小的差距。

      • 在第一阶段应用软搜索会花费更多的计算资源和存储资源。因为软搜索需要在 online serving 中使用最近邻搜索,而硬搜索只需要从离线构建的两级索引表中检索。因此,硬搜索更加有效且系统友好。

      • 对两种不同的搜索策略,我们对来自工业数据集的超过 100 万个样本和 10 万个具有长期历史行为的用户进行了统计。结果表明:硬搜索策略保留的用户行为可以覆盖软搜索策略的 75%

      最后,我们在第一阶段选择更简单的硬搜索策略,这是在效率efficiency 和性能 performance 之间的 trade-off

  8. 在线 A/B test:自 2019 年以来,我们已经在阿里巴巴的展示广告系统中部署了SIM 。从 2020-01-07 ~ 2020-02-07,我们进行了严格的在线 A/B test 实验,从而验证 SIM 模型。和 MIMN (我们的最新模型)相比,SIM 在阿里巴巴的展示广告场景中获得了巨大收益,如下表所示。现在,SIM 已经在线部署并每天为主要场景流量提供服务,这为业务收入的显著增长做出了贡献。

    下表为 2020-01-07 ~ 2020-02-07 期间,SIM 相对于 MIMN 的在线效果提升,其中模型应用于淘宝 App 首页的“猜你喜欢” 栏目。

  9. Rethinking Search Model:我们在用户长期兴趣建模方面做出了巨大努力,所提出的 SIM 在离线和在线评估方面都取得了良好的性能。但是 ,由于进行了精确的长期兴趣建模,SIM 的性能会更好吗?SIM 是否会倾向于推荐和人们长期兴趣相关的 item

    为回答这两个问题,我们制定了另一个指标,即点击样本的 Days till Last Same Category Behavior dcategorydcategory 定义为:在点击事件发生之前,用户在相同类目cateogryitem 上的最近行为距离当前点击事件的时间间隔。

    例如,用户 u1 点击了类目为 c1item i1 ,并且用户 u1 五天前点击了相同类目 c1item i2 (并且在这五天之内没有点击相同类目的其它item )。如果将点击事件记作 s1,那么样本 s1Days till Last Same Category Behavior5 ,即 dcateogrys1=5 。此外,如果用户 u1 历史上从未在类目 c1 上有任何行为,我们设置 dcateogrys1=1

    对于给定的模型,可以使用 dcategory 来评估模型在长期兴趣long-term interest 或短期兴趣short-term interest 上的选择偏好(selection preference) 。

    • 经过在线 A/B test 之后,我们根据提出的 dcategory 指标分析了 SIMDIEN (这是短期的CTR 预估模型的最新版本)的点击样本。点击样本越多则说明模型效果越好(模型找的越准)。

      根据 dcategory 我们将点击样本(这里指的是模型预估参与竞价的结果)拆分为两个部分:长期的(>14天)、短期的(<14天)。方框显示了不同 dcategorySIM 模型点击样本的提升比例(相对于 DIEN 模型)。曲线表示不同 dcategory 下不同模型找到的点击样本数量。

      可以看到:在短期部分( dcategory<14 )上的两个模型之间几乎没有差异,因为 SIMDIEN 在过去14 天中都具有短期的用户行为特征。在长期部分,SIM 提升比例更大。

    • 此外在工业数据集上,我们统计了 dcategory 的均值、以及用户拥有和 target item 相同类目的历史行为的概率。结果如下表所示(在线 a/b test 对应的点击样本,在离线上统计到的)。

      结果表明:SIM 的提升确实是更好的长期兴趣建模的结果。并且和 DIEN 相比,SIM 倾向于推荐与人们长期行为有关的item

    读者注:这里假设 A/B test 时流量相等,因此点击量的差异等价于 CTR 的差异。

  10. 部署的实践经验:这里我们介绍了在线 serving 系统中实现 SIM 的实践经验。

    阿里巴巴的高流量是众所周知的,它在流量高峰时每秒为超过100 万用户提供服务。此外,对于每个用户,RTP 系统需要计算数百个候选item 的预估CTR。我们对整个离线用户行为数据建立一个两阶段索引,该索引每天都会更新:第一阶段是user id;在第二阶段,一个用户的 life-long 行为数据由该用户所交互的类目来索引。

    虽然候选item 的数量为数百,但是这些item 的类目数量通常少于 20 。同时,来自 GSU 的每个类目的子行为序列的长度被截断为不超过 200 (原始的行为序列长度通常小于 150 )。这样,来自用户的每个请求的流量是有限的并且可以接受的。

    此外,我们通过 deep kernel fusion 优化了 ESUmulti-head attention 的计算。

    下图显示了我们的实时 CTR 预估系统相对于 DIEN,MIMN,SIM 流量的效率。值得注意的是:

    • MIMN 可以处理的最大用户行为长度是 1000,而这里显示的性能是基于截断的行为数据( MIMNDIEN 中,用户行为的长度被截断为 1000)。

    • SIM 中的用户行为的长度不会被截断,并且可以扩展到 54000,使得最大长度可以扩展到 54 倍。针对一万个行为的 SIM serving ,相比于截断用户行为的 MIMN servinglatency 仅增加了 5ms

    • DIEN 的最大流量为 200,因此图中只有一个点。

五十一、UBR4CTR [2020]

《User Behavior Retrieval for Click-Through Rate Prediction》

  1. CTR prediction 在现代的 online personalization services 中起着关键作用。在实践中,需要通过对用户行为序列进行建模来捕获用户的兴趣变化,以构建准确的 CTR prediction 模型。然而,随着用户在平台上积累越来越多的行为数据,对 sequential models 而言,利用每个用户的 whole behavior history 变得并非易事。

    • 首先,直接馈入长的行为序列将使在线推理时间和系统负载变得不可行。

    • 其次,如此长的历史行为序列中存在大量噪音,导致 sequential model learning 的失败。

    当前的业界的解决方案主要截断序列并仅将近期行为馈入 prediction model ,这导致一个问题,即:周期性或长期依赖性等 sequential patterns 未被纳入近期的若干个behaviors中,而是包含在很久以前的历史中。为了解决这些问题,在本文中,我们从数据的角度考虑它,而不仅仅是设计更复杂的模型,并提出了 User Behavior Retrieval for CTR prediction: UBR4CTR 框架。在 UBR4CTR 中:

    • 首先使用可学习的搜索方法从整个用户历史序列中检索最相关、最合适的user behavior

    • 然后将这些被检索到的行为(而不是简单地使用近期行为)馈入到 deep model 中以进行最终预测。

    以低成本将 UBR4CTR 部署到 industrial model pipeline 中是非常可行的。在三个真实世界大型数据集上的实验证明了我们提出的框架和模型的优越性和有效性。

  2. CTR prediction 在当今的在线个性化平台(例如电商、在线广告、推荐系统)中起着关键作用,其目标是预测用户在特定情境下点击特定 item 的概率。在线个性化平台经过十多年的发展,平台上记录的user behavior数量迅速增长。23% 的用户在六个月内在淘宝上有超过 1000behavior《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》)。由于user behavior中存在丰富的时间模式(temporal patterns ),因此建立一个有效且高效的模型,利用user behavior序列来获得准确的 CTR prediction 成为业界和学术界的一个重要问题。

    在深度学习时代,有许多 DNN-basedCTR prediction 模型,例如 Wide&DeepFNNDeepCrossDeepFMPNNxDeepFM,其中大多数已部署在商业的个性化平台上。这些模型强调挖掘特征交互(feature interactions ),并被用于更好地利用数据的 multi-categorical features 。然而,这些模型忽略了user behavior的序列模型或时间模式(sequential or temporal patterns)。

    《Spatio-temporal models for estimating click-through rate》《Vista: a visually, socially, and temporally-aware model for artistic recommendation》《Recurrent neural networks with top-k gains for session-based recommendations》《Collaborative filtering with temporal dynamics》 所示,user behaviortemporal dynamics 在预测用户未来兴趣方面起着关键作用。这些序列模式(sequential patterns )包括概念漂移(concept drifting )、长期behavior依赖性(long-term behavior dependency )、周期性模式(periodic patterns )等。因此,在 CTR prediction 和序列推荐任务中,人们提出了一些模型来捕获用户的序列模式。

    • 对于 CTR prediction ,有 attention-based 的模型,如 DINDIEN ;有 memory network-based 的模型,如HPMN

    • 对于序列推荐,人们提出了更多的 user behavior modeling 方法,这是一项与 CTR prediction 非常相似的任务。有 RNN-based 的模型、CNN-based 的模型、Transformer-based 的模型、以及 memory network-based 的模型。

    然而,上述大多数序列模型在实际应用中都有一个共同的问题。当平台记录了大量的user behavior时,常见的工业解决方案是截断整个行为序列,只使用最近的 Nbehavior作为 prediction model 的输入,如 Figure 1 上半部分所示。online serving time 的严格要求,加上系统负载和计算能力的瓶颈,限制了可使用的用户序列的长度。因此,在大多数情况下,使用的近期行为不超过 50 个(《Deep interest evolution network for click-through rate prediction》)。 使用最近 Nbehavior的传统框架可能会带来负面问题。很明显,有效的序列模式可能不仅仅包含在最近的行为序列中。它可以追溯到更远的历史,如周期性和长期依赖性。然而,如果我们尝试使用更长的序列,可能会引入大量不相关的behavior和噪音。更不用说更长的历史带来的时间复杂性和空间复杂性了。 在本文中,为了解决上述实际问题,我们尝试从数据的角度解决问题,而不是设计更复杂更精密的模型。具体来说,我们的目标是设计一个框架来检索对每个 CTR prediction target 最有用的有限数量的历史行为。如 Figure 1 所示,prediction target 由三部分组成,即:target usertarget item 和相应的上下文。prediction target 的特征包括用户的位置、性别、职业,以及itemcategory 、品牌、商家,以及时间和场景等上下文特征。然后我们使用模型选择这些特征的一个子集,该子集构建一个 query 来检索相关的历史行为。用户的所有behavior都作为information items 来存储在搜索引擎中,我们使用所生成的 query 从历史记录中进行搜索。被检索到的behavior用于 CTR prediction 对于同一用户的每个不同 target item ,我们将检索不同的 behaviors 来用于 prediction ,因为所生成的 queries 不同。对同一用户的不同 items 上的预测而言,与使用完全相同的最近 Nbehavior的传统框架相比,这是一个重大变化。

    最终的解决方案框架称为 User Behavior Retrieval for CTR: UBR4CTR。在 UBR4CTR 中,任务分为两个模块:

    • 第一个是可学习的检索模块,它由两个组件:

      • 一个 self-attentive network ,用于选择特征并形成 query

      • 以及一个搜索引擎,其中以倒排索引的方式存储user behavior

    • 另一个模块是 prediction 模块,其中构建了一个 attention-based deep neural network ,从而根据检索到的user behavior、以及 prediction target 的特征进行最终预测。

    本文的贡献可以概括为三点:

    • 我们揭示了一个重要事实,即在 user response prediction 中,检索更相关的user behavior比仅仅使用最近的behavior更重要。我们没有设计更复杂的模型,而是将更多注意力放在检索用户的behavior数据上。

    • 我们提出了一个名为 UBR4CTR 的新框架,该框架可以检索不同的 behaviors 从而用于同一用户在不同上下文中对不同 itemsCTR prediction 。所有先前的序列模型仅使用用户最近的behavior。我们提出了一种 search engine based 的方法和一种有效的训练算法来学习检索适当的behavior数据。

    • 我们在三个现实世界的大型电商数据集上进行了大量的实验,并将我们的框架与传统框架中几个强大的 baselines 进行了比较。结果验证了 UBR4CTR 框架的有效性。

    UBR4CTRSIM(hard) 的扩展。在 SIM(hard) 中,我们使用 catgory of target item 作为 query 从而执行检索。而在 UBR4CTR 中,我们根据不同的 input 来自动选择合适的 query 来执行检索。但是,更复杂的 query 引入了更复杂的检索系统(一个搜索引擎客户端),增加了工程量。

51.1 基础知识

  1. 在本节中,我们将问题公式化并引入符号。在 CTR prediction 任务中,有 M 个用户 U={u1,,uM},有 Nitems V={v1,,vN}user-item interactions 记作 Y={yu,vuU,vV},并且:

    yu,v={1,u has clicked v0,else

    此外,每个 user-item interaction 都有一个时间戳和一个上下文,时间戳和上下文是 interaction 发生时刻的。因此数据被公式化为四元组,即 {u,v,c,ts},表示用户 u 在时刻 ts 在上下文 c 的情况下点击了 item v

    为了建模用户不断变化的兴趣,我们将用户历史行为组织为 Hu={b1u,b2u,,bTu},其中 biu 代表用户 u 的第 ibehavior记录,按时间戳升序排序。点击率本质上是用户、item 、以及上下文之间的匹配概率,因此每条behavior biu 由以下三部分组成:biu=[u,vi,ci],其中 viV 是被用户 u 点击的第 iitemci 是发生交互的上下文。

  2. 在特征层面,每个用户 u 由一组特征表示,u=[f1u,,fKuu],其中 fpu 表示 u 的第 p 个特征。通常所有特征都是 multiple categorical 特征。如果有 numerical 特征,则将其离散化为 categorical 特征。

    类似地,v=[f1v,,fKvv]c=[f1c,,fKcc]Ku,Kv,Kc 分别为用户、item、以及上下文的特征数量。

    这里的特征数量就是 field 数量。例如,fiu 就是 user u 的第 ifield

  3. CTR prediction 的目标是:根据 u 在上下文 c 下的历史行为,预测 target user u 点击 target item v 的概率。其公式为

    y^u,v=f(u,v,cHu;θ)

    其中: f(;θ) 是具有参数 θ 的函数。

  4. 我们在 Table 1 中总结了符号和相应的描述。

51.2 方法论

  1. 本节将详细描述我们提出的 UBR4CTRUser Behavior Retrieval for CTR prediction )框架。我们首先给出整体框架的总体概述,然后详细描述 user behavior retrieval 模块和 prediction 模块。此外,以下各节将给出训练方法和一些时间复杂度分析。

51.2.1 整体框架

  1. UBR4CTR 的整体框架如 Figure 2 所示。该框架可分为两个主要模块:user behavior retrieval 模块和 prediction 模块。

    • user behavior retrieval 模块由一个 feature selection model 、一个 search engine client 和一个 user history archive 组成。所有用户历史行为都存储在 archive 中,并以 feature-based 的倒排索引方式组织,这将在后续章节中详细说明。

      Figure 2 所示,当我们需要在特定上下文中预测 target usertarget item 之间的点击率时,所有这三部分信息结合在一起形成 prediction targetprediction target 本质上是由 target usertarget item 和上下文的一系列特征组成。因此, prediction target 随后被馈入到 feature selection model 中,该模型将选择适当的特征来形成一个 queryfeature selection model 的详细设计见后续章节。然后,我们使用该 query 通过搜索 search engine clientuser history archive 中进行搜索。

    • search engine client 检索出一定数量的user behaviors,然后这些被检索到的 behaviorsprediction 模块使用。在 prediction 模块中,我们使用 attention-based 的深度模型来区分每个behavior对点击概率的影响,并做出最终预测,这将在后续章节中讨论。

    feature selection modelprediction model 轮流进行训练。feature selection model 的目标是选择最有用的特征子集。该子集的特征将组合起来生成一个 query ,该 query 用于检索与 final prediction 最相关的user behavior

51.2.2 User Behavior Retrieval Module

  1. 在本节中,我们介绍用 user behavior retrieval module ,该模块由 feature selection modelbehavior searching 过程组成。

  2. Feature Selection Model :如 Figure 3 所示,我们将 target user utarget item v 和对应的上下文 c 的所有特征作为 feature selection model 的输入。不失一般性,我们将 f1u 设置为 user id 特征。 user id 是一个特殊的特征,我们必须选择它,因为我们想要检索用户 u 自己的behavior。所有其他特征都拼接成一个整体。为简单起见,我们将所有特征 [f2u,,fKuu,f1v,,fKvv,f1c,,fKcc] 表示为 [f1,,fKq],其中 Kq=Ku+Kv+Kc1

    注意:这里的 fi 对应于一个 field。每个 field 的取值都是离散值。

    为了更好地建模特征之间的关系和交互模式,我们使用 self-attention 机制。具体来说,我们定义:

    Q=K=V=[f1fKq]RKq×d

    其中:fiRd 为第 i 个特征 fidense embedding representationdembedding size

    这里的 feature embedding 是否与 Prediction Module 共享?根据 Prediction Module 章节的描述,读者认为是共享的。

    self-attention 定义为:

    SA(Q,K,V)=softmax(QKd)V

    multi-head self-attention 定义为:

    E=Multihead(Q,K,V)=Concat(head1,,headh)WORKq×dheadi=SA(QWiQ,KWiK,VWiV)

    其中:hhead 数量;WORhd×d,WiQRd×d,WiKRd×d,WiVRd×d 为投影矩阵。

    然后,multi-head self-attention 的输出 E 被馈入到具有 ReLU(x)=max(0,x) 激活函数的 multi-layer perceptron

    E^=MLP(E)RKq×1

    相应特征被选择的概率通过取 sigmoid 函数获得:

    P=[p1pKq]=σ(E^)RKq×1

    其中:σ(x)=11+exp(x)

    然后我们根据这些概率对特征进行采样,从而得到选择好的特征子集。请注意,user id 特征始终在子集中,因为我们必须从 target user 自己的behavior中检索。

    实际上被采样到的是 field ;但是在下一步检索时,将这个 field 在这个样本上的取值作为条件。

  3. Behavior Searching :我们使用典型的搜索引擎方法来存储和检索user behavior。我们将每个user behavior视为一个文档,将每个特征视为一个 term 。倒排索引用于跟踪所有behavior,如 Figure 4 所示。每个 feature value 都与一个 posting list 相关联,该列表由具有此特定 feature value 的所有behavior组成。例如:

    • "user_id_1" 包含 user id = 1 的用户的所有behaviorposting list

    • "Nike" 具有由 brand id = "Nike" 的所有behavior组成的 posting list

    query 的逻辑本质上表述为:

    f1u AND (f1 OR f2 OR  OR fn)

    其中:f1uuser_id ;所选中的 query feature setQ={f1,f2,,fn}

    n 怎么选择?论文没有说明,实验部分也没有消融分析。

    我们将 f1uposting listf1 to fnposting lists 的并集进行相交,交集的结果就是 candidate behavior set 。然后我们使用 BM25 对候选集中的每个 behavior document 进行评分,并检索出 top Sbehavior document query qbehavior document D 之间的相似度 s 计算如下:

    s=i=1nIDF(fi)×tf(fi,D)×(k1+1)tf(fi,D)+k1×(1b+b×|D|avgdl)

    其中:

    • tf(fi,D) 为特征 fiD 中的频次,取值为 10

    • behavior document 的长度 |D| 定义为该behavior中的特征数量,因此所有 behavior document 的长度相同。因此平均长度是每个文档的长度,并且 |D|avgdl=1,其中 avgdl 为平均的文档长度。

    • k1b 是自由参数。我们选择 k1=1.2b=0.75

      可以进一步化简为: s=i=1nIDF(fi)×tf(fi,D)×(k1+1)tf(fi,D)+k1 。似乎 b 参数没什么用?

      考虑到 tf(fi,D) 取值为 01 ,因此:

      tf(fi,D)×(k1+1)tf(fi,D)+k1={0if tf(fi,D)=01else

      因此 k1 也没什么用?

    IDF 定义为:

    IDF(fi)=logNN(fi)+0.5N(fi)+0.5

    其中: N 是所有用户的所有 behavior documents 的总数,N(fi) 是包含特征fibehavior documents 总数。

    IDF 项赋予常见特征比罕见特征更少的重要性。与常见特征相比,罕见特征对用户偏好的暗示更强,这是有道理的。 通过使用 BM25candidate behaviors 进行排序,我们获得了 top Sbehavior documents 作为所检索到的behavior,记作 Bu

    实际应用时会采用双层索引,最外层为 user_id,最内层为各个特征的取值,从而降低存储需求。

51.2.3 Prediction Module

  1. 对于 prediction module ,我们使用 attention-based 的深度神经网络来建模不同user behaviorfinal prediction 的重要性。

    Figure 5 所示,我们通过加权池化得到 user representation ru

    ru=i=1Sαi×biu,biuBuαi=exp(wi)j=1Sexp(wj),wi=Att(biu,t)

    其中:

    • biu=[u||vi||ci] 为针对user behavior biu 的拼接后的 embedding 向量,|| 表示向量拼接。

    • S 为所选择的behavior document 的数量。

    • αi 为权重,用于刻画user behavior biu 对于 ru 的重要性。

    • t=[u||v||c]prediction target 向量。Att() 是一个具有 ReLU 激活函数的多层深度网络。

      这个 prediction target 向量 t 的内容和 Q,K,V 几乎相同,区别在两个地方:

      • t 包含了 user ID 特征 f1u ,而 Q,K,V 不包含。

      • t 是向量拼接而成,维度为 (Kq+1)d×1 ;而 Q,K,V 为向量堆叠而成,维度为 Kq×d

    final prediction 计算如下:

    y^u,v=fϕ(Bu,u,v,c)=fϕ(ru,u,v,c)

其中: fϕ 实现为三层感知器,宽度分别为 200/80/1ϕ 为参数;输出层采用 sigmoid 函数,其他层采用ReLU 作为激活函数。

51.2.4 Model Training

  1. 由于目标是准确估计点击率,我们使用对数似然作为目标函数,其定义为:

    Jπθ,fϕ=maxθmaxϕuvEBuπθ(Buq)[LL(yu,v,fϕ(Bu,u,v,c))]

    其中:

    • LL(.) 是在给定所检索到的user behavior Bu 以及上下文 c 的情况下,对 target user-item pair (u,v) 的预测分数的对数似然。其定义为: LL(y,y^)=ylogy^+(1y)log(1y^)

    • q 是由所选定的特征组成的 query 。我们使用抽样来选择特征,然后被选中的特征形成 query stringquery string 形成后,搜索结果(即,检索到的behavior)是确定性的。因此,我们可以认为这些behavior是从概率分布 πθ(Buq) 中采样的。

  2. 优化 Prediction Module:为了优化 attention-based 预测网络 fϕ ,我们有:

    ϕ=argminϕ(Lce+λLr)=argminϕuvEBuπθ(Buq)[LL(yu,v,fϕ(Bu,u,v,c))]+12λ(||ϕ||22)

    其中:Lce 是交叉熵损伤,Lr 为正则化,λ 为正则化系数。

    注意,这里是负的对数似然,所以是 min

    当我们优化 prediction network 时,检索模块保持不变,因此如果函数 fϕ 关于 ϕ 是可微分的,则上述优化可以通过典型的随机梯度下降算法解决。

  3. 优化检索模块:对于检索模块,只需要优化 feature selection model 。随着采样过程的发展,我们不能直接使用 SGD 来优化它。相反,我们使用 REINFORCE 算法来处理离散优化(discrete optimization )。 具体而言,在保持 prediction network fϕ 固定的同时,通过执行最大化如下公式来优化 feature selection model

    θ=argmaxθuvEBuπθ(Buq)[LL(yu,v,fϕ(Bu,u,v,c))]

    我们将 LL(yu,v,fϕ(Bu,u,v,c)) 记作 LL() ,因为它没有参数 θ 。对于每个query q ,我们将目标函数表示为 Jq,即:

    Jq=EBuπθ(Buq)[LL()]

    我们将检索模块 πθ(Buq) 视为一种策略,并使用 likelihood ratio 来估计其梯度:

    θ(Jq)=θEBuπθ(Buq)[LL()]=BiuBθπθ(Biuq)[LL()]=BiuBπθ(Biuq)θlog(πθ(Biuq))[LL()]=EBuπθ(Buq)θlog(πθ(Biuq))[LL()]1Ll=1Lθlog(πθ(Bluq))[LL()]

    这是对 Jq 的梯度的无偏估计。其中 L 为采样的 query 数量。

    由于整个检索模块的不确定性实际上来自 feature selection model ,我们可以得出:

    πθ(Buq)=j=1np(fj)

    其中:fj{f1,,fn}p(fj) 为采样概率。因此:

    θ(Jq)1Lj=1nl=1Lθlog(p(fjl))[LL()]

    其中:其中 fjl 是第 lquery 的第 j 个特征。

    为了使用reward 训练一个更好的模型,我们在这里用相对信息增益 (Relative Information Gain: RIG )替换 LL(·) 作为奖励函数。 RIG 定义为 RIG = 1 − NE ,其中 NE 是归一化熵:

    NE=LL()plogp+(1p)log(1p)

    其中 p 是平均经验 CTR

    可以参考 UBR 模型,它是 UBR4CTR 的升级版。

  4. 训练过程的伪代码:在本小节中,我们给出了训练过程的详细伪代码。

    • 首先,我们使用 feature selection model 对预测网络进行预热。

      feature selection model 如何初始化?如果是随即初始化是否会带来不利影响?作者没有提及。读者猜测是不影响的,因为后续的迭代训练会对 feature selection model 进行优化。

      为什么要预热?因为 prediction modelfeature selection model 的奖励函数,它必须要有一定的准确性才能指导 feature selection model 的学习。

    • 预训练后,我们轮流优化两个模型,每个模型被训练一个 epoch 之后,再训练另一个模型一个 epoch,轮流往复。

    Algorithm 1 显示了训练过程。

51.2.5 模型分析

  1. 本节分析了该方法的时间复杂度和可行性。我们使用 N 表示所有user behavior的总数,使用 F 表示整个数据集中出现过的 unique features (相当于 term )的总数。然后,user history archiveposting lists 的平均长度为 N/F

    • 回想一下之前内容所描述的搜索操作,我们首先检索 q 中特征的所有 postings ,这需要 O(1) 时间。

    • 然后交互操作需要 O(T+Kq×N/F) 时间,其中 T 是用户序列的平均长度,Kq=Ku+Kv+Kc1selected features 数量的上限。

    • 接下来的 scoring 操作不会增加复杂度,因为它与 O(T+Kq×N/F) 成线性关系。

    • feature selection model 中的 self-attention 的复杂度为 O(Kq2)

    • attention-based prediction network 需要 O(C) 时间,其中 C 是计算个 wi=Att(biu,t) 操作的成本,因为所有 attention 操作都可以并行执行。

    两个常数可以忽略,因此 UBR4CTR 的总时间复杂度为 O(T+Kq×N/F)

51.3 实验

  1. 在本节中,我们详细介绍了我们的实验设置和相应的结果。我们将我们的模型与几个强大的 baselines 进行了比较,并实现了 SOTA 的性能。此外,我们已经发布了代码用于复现(https://github.com/qinjr/UBR4CTR )。 我们从三个研究问题(research question: RQ )开始,并用它们来引导以下讨论。

    • RQ1 :与其他 baselines 相比,UBR4CTR 是否实现了最佳性能?

    • RQ2Algorithm 1 的收敛性能如何?训练过程是否有效且稳定?

    • RQ3UBR4CTR 中的检索模块有什么影响,retrieval size 如何影响性能?

  2. 数据集:我们使用三个真实的、大型的 users online behaviors 数据集,它们来自阿里巴巴集团三个不同平台。数据集的统计数据可以在 Table 2 中找到。

    • Tmall 数据集:由阿里巴巴集团提供,其中包含 20155 月至201511 月天猫电商平台上的user behavior历史记录。

    • Taobao 数据集:包含来自中国最大的电商平台之一淘宝中检索到的user behavior数据。它包含 20171125 日至 123日的user behavior,包括点击、购买、添加到购物车、以及喜欢商品等几种behavior类型。

    • Alipay 数据集:由在线支付应用程序支付宝收集。用户的在线购物behavior是从 201571日到20151130日。

  3. 数据集预处理:

    • 对于 UBR4CTR ,数据集被处理成逗号分隔特征的格式。包含 user, item and context features 的一行被视为一个 behavior document

    • 对于 baselinesuser behavior仅按时间戳排序。由于数据集不包含特定的上下文特征,我们使用 behavior timestamp 手动设计一些特征,以便能够捕获周期性。我们设计了一些特征,例如 season id (春季、夏季等)、是否是周末、以及是哪个半月(上半月还是下半月)。

  4. 搜索引擎:数据集预处理后,使用逗号分隔的 tokenizer 将它们插入搜索引擎。我们使用基于 Apache LuceneElastic Search 作为搜索引擎客户端。

  5. Train & Test Splitting :我们使用 time step 来拆分数据集。

    • 训练集包含第 1(T2)user behavior,其中第 1(T3)behavior用于预测第 (T2)behavior

    • 类似地,验证集使用第 1(T2)behavior来预测第 (T1)behavior;测试集使用第 1(T1)behavior来预测第 Tbehavior

  6. 超参数:

    • UBR4CTRfeature selection model 的学习率从 {1×106,1×105,1×104} 中搜索,attention based prediction network 的学习率从 {1×104,5×104,1×103} 中搜索,正则化项从 {1×104,5×104,1×103} 中搜索。

    • baseline 模型的学习率和正则化项的搜索空间与 UBR4CTRprediction network 相同。

    • 所有模型的 batch size 均从 {100,200} 中搜索。

    每个模型的超参数都经过调优并报告最佳性能。

  7. 评估指标:CTRLogloss

  8. Baselines:我们将我们的框架和模型与来自 sequential CTR prediction 和推荐场景的七个不同的强基线进行比较。

    • GRU4Rec 基于 GRU ,它是第一个工作使用 recurrent cells 建模user behavior序列从而用于 session-based 推荐。

    • Caser 是一个 CNNs-based 的模型,它将用户序列视为图像,因此使用 horizontal and vertical convolutional layers 来捕获user behavior的时间模式。

    • SASRec 使用Transformer。它将user behavior视为 tokens 的一个序列,并使用自注意机制和 position embedding 来捕获behavior之间的依赖关系。

    • HPMN 是一个 hierarchical periodic memory network ,旨在处理非常长的用户历史序列。此外,user memory state 可以增量更新。

    • MIMN 基于 Neural Turing Machine ,它建模了用户兴趣漂移的 multiple channels 。该模型作为 user interest center 的一部分实现,可以对非常长的user behavior序列进行建模。

    • DIN 是第一个在在线广告 CTR prediction 中使用注意力机制的模型。

    • DIEN 使用具有注意力机制的双层 RNN 来捕获不断变化的用户兴趣。它使用所计算出的 attention values 来控制第二个 recurrent layer ,称为 AUGRU

    • UBR4CTR 是我们提出的框架和模型。

51.3.1 性能比较:RQ1

  1. 我们对 UBR4CTR 和基线模型进行了两组比较。

    • 在第一组实验中,所有模型都使用相同数量的user behavior,对三个数据集分别为 202012 。唯一的区别是:baselines 使用的是最近的behavior(约占总长度的 20% ),而 UBR4CTR 从整个序列中检索了 20%behavior。实验结果如 Table 3 所示。

      从表中,我们可以发现以下事实:

      • (i):与 baseline 相比,UBR4CTR 的性能显著提高。在三个数据集上 AUC 分别提高了 4.1%10.9%22.3%Logloss 分别改善了 9.0%12.0%32.3%

      • (ii):巨大的改进表明最近的behaviors没有包含足够的时间模式(temporal patterns ),因此 baselines 无法有效地捕获它们。尽管有些 baselines 模型相当复杂和 fancy ,但如果它们试图捕获的模式不包含在最近的行为序列中,它们就无法很好地发挥作用。

      根据 MIMN 论文的报告,MIMN 的效果是优于 DIEN 的。这里 MIMN 效果反而更差,因为这里对 MIMN 近使用最近的 20behaviors ,而没有用所有的 behaviors 。这是不公平的比较。

    • 在第二组实验中,我们对 baselines 模型使用不同的设置,对 UBR4CTR 的设置与第一组实验完全相同。我们将整个序列馈入到所有的 baseline 模型,其中这三个数据集的序列长度分别为 10010060 。它们是这些数据集中user behavior的最大长度。对于 UBR4CTR ,检索到的behavior大小保持不变,分别为 202012

      结果如 Table 4 所示。在 Table 4 中,UBR4CTR 的性能与 Table 3 中相同,因为我们没有更改任何设置。从表中,我们可以发现以下事实:

      • (i)UBR4CTR 使用的behavior比其他 baselines80% ,但仍然具有最佳性能。这表明较长的序列可能包含更多噪音和不相关信息,因此有必要从整个序列中仅获取最有用的数据。

      • (ii):与 Table 3 相比,大多数 baselines 都取得了比其自身更好的性能,尤其是 DINDIEN 。这表明来自更远历史的behavior确实包含更丰富的信息和模式。并且这些模式更容易通过 attention 机制被捕获。

      • (iii) :虽然由于性能更好的 baselines 导致 AUC 的改进要小得多,但 Logloss 仍然有显著改善。原因是 retrieval module 的优化目标为 RIG (相当于对数损失)。

        retrieval module 的优化目标会影响最终模型的指标。

51.3.2 学习过程:RQ2

  1. 为了说明我们框架的收敛性,我们绘制了 UBR4CTRlearning curves。在 Figure 6 中,

    • 上面的三个子图分别是在三个数据集上训练时 attentive prediction networkAUC 曲线。x 轴的每个 step 对应于超过 4% 的训练集的迭代。

    • 下面的三个子图显示了 REINFORCE 算法相对于检索模块的 feature selection model 的 “奖励”。“奖励”本质上是 RIG ,它是对数似然的一种变体。x 轴的每个 step 表示超过 4% 的训练集的迭代。在训练过程中,奖励会增加,这意味着 feature selection model 实际上学习了有用的模式。

    AUC 图中,我们可以发现我们的模型有效地收敛了。对于 prediction network ,我们可以观察到在训练过程的中间有平坦区域,然后快速增加,尤其是在第二和第三个 AUC 图中。回想一下我们在 Algorithm 1 中描述的训练过程,检索模块是在 prediction network 之后训练的。这意味着当 prediction network 即将收敛时,检索模块开始训练,之后 prediction network 的性能将有所突破。

51.3.3 广泛研究:RQ3

  1. 在本节中,我们对我们的框架进行了一些广泛的和消融的研究。

    采样的特征数量 n 、采样的 query 数量 L ,作者都没有进行消融分析。

  2. Figure 7 说明了不同 retrieval sizes 对预测性能的影响。从图中可以看出,AUCLogloss 的波动在绝对值方面并不是很严重。然而,每个数据集都存在一个最佳大小。这表明:

    • 太少的 retrieved behaviors 可能未包含足够的behavior和信息。

    • 而太多的 retrieved behaviors 也不总是提高性能,因为它会引入太多噪音。

  3. 为了说明我们框架的检索模块的重要性,我们绘制了 sum pooling modelattention network ,分别在具备和不具备 user behaviors retrieval 的情况下的性能比较。 sum pooling model 只是对user behavior做了一个非常简单的 sum 池化操作。结果如 Figure 8 所示。从图中我们发现:

    • 没有检索的 sum 池化模型(SP )表现很差。一旦配备了检索模块,它的性能就会显著提高(UBR_SP )。

    • 同样的现象也适用于注意力网络,当配备了 behavior retrieval module 时,其性能会大大提高(ATT vs. UBR4CTR )。

51.4 部署

  1. UBR4CTR 已在某主流银行旗下的 daily item recommendation 平台的 engineering schedule 中部署。本节主要讨论 UBR4CTR 框架在工业应用中的可行性。

    • 首先,将目前的模型流程切换到 UBR4CTR 并不困难,因为 UBR4CTR 带来的主要变化是如何获取历史user behavior。要将 model pipeline 更新为 UBR4CTR ,需要构建历史user behavior的一个搜索引擎,而整个 CTR prediction model pipeline 基本保持不变,但增加了一个额外的检索模块。如 Figure 2 所示,prediction module 与传统解决方案的 prediction module 并无不同。

    • 效率是工业应用中的另一个重要关注点。我们在 ”模型分析“ 章节中分析了 UBR4CTR 的时间复杂度,为O(T+Kq×N/F) 。对于大多数基于 RNNsequential CTR models ,它们的时间复杂度为 O(C×T),其中 T 是用户序列的平均长度,C 是一次操作(例如 GRU rolling )的成本。UBR4CTR 的时间复杂度并非完全不可行,因为 F 是一个大数,因此 N/F 非常接近常数。

    • 从系统负载的角度来看,UBR4CTR 更好,因为它不需要在内存中维护所有 Tbehavior。为维护所有 Tbehavior,这是传统方法的常见做法。

    • 此外,我们在实验中比较了我们的 UBR4CTR 和其他 sequential CTR baselines 之间的实际 inference time 。模型的平均 inference timeFigure 9 所示。时间是通过将测试数据集上的总时间(仅包含前向计算和behavior搜索的时间)除以 prediction targets 的数量来计算的。

      从图中可以看出,UBR4CTR 在三个数据集上的推理时间绝对值小于 1ms ,这对于 online serving 来说已经足够高效了。UBR4CTRinference time 是所有 sequential CTR models 中最长的,但差距并不大。具体而言,与已在阿里巴巴在线广告平台中部署的 DIEN 相比,UBR4CTR 的平均inference time 大约增加了 15%30% ,可以通过进一步的 infrastructure implementation 来进行优化。

五十二、ETA [2021]

《End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model》

  1. CTR prediction 是推荐系统的核心任务之一。它预测每个 user-item pair 的个性化的点击概率。最近,研究人员发现,通过考虑用户行为序列,尤其是长期用户行为序列,可以大大提高 CTR 模型的性能。某电商网站的报告显示,23% 的用户在过去 5 个月内点击次数超过 1000 次。尽管有大量工作专注于建模用户行为序列,但是由于现实世界系统中严格的 inference time 的限制,很少有工作能够处理长期用户行为序列。人们提出了两阶段方法来突破极限以获得更好的性能:

    • 在第一阶段,设计一个辅助任务来从长期用户行为序列中检索 top-k 相似的 items

    • 在第二阶段,在 target item 和第一阶段选择的 kitems 之间进行经典的注意力机制。

    然而,检索阶段和主体的 CTR 任务之间存在 information gap 。这种目标分歧会大大降低长期用户序列的性能增益。在本文中,受 Reformer 的启发,我们提出了一种局部敏感哈希(locality-sensitive hashing: LSH )方法,称为 End-to-end Target Attention: ETA ,它可以大大降低训练和推理成本,并使得采用长期用户行为序列进行端到端的训练成为可能。离线和在线实验都证实了我们模型的有效性。我们将 ETA 部署到一个大型的真实世界电商系统中,与两阶段的长用户序列的 CTR 模型相比,商品交易总额(Gross Merchandise Value: GMV )额外提高了 3.1%

  2. 推荐系统被广泛用于解决信息过载问题。在推荐系统中使用的所有深度学习模型中,CTR prediction 模型是最重要的模型之一。为了提高推荐系统的在线性能,工业界和学术界都非常重视提高CTR 模型的 AUC。在过去的十年中,CTR 模型的性能得到了很大的提高。其中一个显著的里程碑是引入用户行为序列,特别是长期用户行为序列。根据 《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》 的报告,电商网站中 23% 的用户在过去 5 个月内点击次数超过 1000 次。如何有效利用大量的且信息丰富的user behavior变得越来越重要,这也是本文的目标。

    人们提出了各种方法来建模用户行为序列。

    • 早期的方法,如 sum/mean pooling方法、RNN-based 的方法、CNN-based 的方法、以及 self-attention-based ,将不同长度的用户行为序列编码为固定维度的 hidden vector 。然而,它们在对不同的 target items 进行打分时无法捕获用户的动态局部兴趣(dynamic local interests )。这些方法还通过编码所有的用户历史行为从而引入了噪音。

    • 为了克服全局池化方法的缺点,人们提出 DIN 方法。DIN 通过 target attention 机制根据不同的 target items 生成 various user sequence representations ,其中 target item 充当 query Q,序列中的每个 item 充当 key Kvalue V 。然而,由于昂贵的计算和存储资源,DIN 使用最近的 50behavior用于 target attention ,这忽略了长用户行为序列中的丰富信息,显然是次优的。

    • 最近,人们提出 SIMUBR4CTRSOTA 方法。这些方法从较长的用户行为序列中捕获用户的动态兴趣。这些方法分两阶段进行:

      • 在第一阶段,设计一个辅助任务从长期用户行为序列中检索 top-k 相似的 items ,以便提前准备好 top-k 相似的 items

      • 在第二阶段,target item 和第一阶段选定的 kitems 之间进行 target attention

      然而,用于检索阶段的信息与 main CTR model 不一致或已过时。例如:

      • UBR4CTRSIM 使用 category 等属性从用户行为序列中选择与 target item 共享相同属性的 items ,这与 CTR 模型的目标不一致。

      • SIM 还尝试基于 pre-trained embedding 来构建离线倒排索引(offline inverted index )。在训练和推理过程中,模型可以搜索 top-k “相似” 的 items 。但大多数 CTR 模型都采用 online learning 范式,并且 embedding 会不断被更新。因此,与在线 CTR 模型中的embedding 相比,离线倒排索引中的 pre-trained embedding 已经过时。

      无论是不一致的目标还是过时的 retrieval vector ,都会阻止长期用户行为序列得到充分利用。

    在本文中,我们提出了一种称为 ETA 的方法,可以实现端到端的长期用户行为的检索,以缓解 CTR prediction 任务中上述 information gap (即不一致的目标和过时的 embedding )。我们使用 SimHash 为用户行为序列中的每个 item 生成指纹。然后使用汉明距离来帮助选择 top-kitem 从而用于 target attention 。我们的方法将 retrieval 复杂度从 O(LBd) 的乘法操作降低到 O(LB) 的汉明距离计算,其中 L 是用户行为序列的长度,B 是每次推荐时 CTR 模型要评分的 target items 数量,ditem embedding 的维度。复杂度的降低有助于我们在训练和服务过程中移除离线辅助模型并进行实时检索。与 SOTA 模型相比,这大大提高了 ranking improvements 。我们论文的贡献可以概括为三点:

    • 我们针对 CTR prediction 任务提出了一种端到端的 Target Attention 方法,称为 End-to-end Target Attention: ETA 。据我们所知,ETA 是第一个以端到端方式使用 CTR 模型对长期用户行为序列进行建模的工作。

    • 离线实验和在线 A/B tests 都表明,与 SOTA 模型相比,ETA 实现了显著的性能提升。与两阶段 CTR 模型相比,将 ETA 部署到大型现实世界电商平台后,GMV 额外提高了3.1%

    • 进行了全面的消融研究,以揭示在 inference time 限制的约束下更好地建模用户行为序列的实际经验。

    • 我们的方法还可以扩展到其他场景,扩展到需要处理极长序列的其他模型,例如长序列的时间序列预测模型。

    其核心思想就是:用近似的 similarityembedding 经过 LSH 之后的汉明距离)来代替精确的 similarityembedding 向量的内积)。

52.1 基础知识

  1. 在本节中,我们首先给出 CTR prediction 任务的公式。然后我们介绍如何通过 SimHash 机制生成 dembedding 向量的指纹。

52.1.1 Formulation

  1. CTR prediction 任务广泛应用于在线广告、推荐系统和信息检索。它旨在解决以下问题:给定一个 impression jI ,其中一个 item 被展示给一个用户,使用特征向量 xj 来预测 user click (标记为 yj)的概率。

    pj=P(yj=1xj;θ),jI
  2. CTR 任务通常被建模为二分类问题。对于每个 impression jI ,根据该 item 是否被点击从而标记一个二元标签 yj。然后以监督学习的方式训练 CTR 模型以最小化交叉熵损失:

    LCTR(θ)=1Nj=1N[yjlog(pj)+(1yj)log(1pj)]

    其中:Nimpression 的总数;xj 为特征向量,yjlabelθ 为模型的可训练参数。

52.1.2 SimHash

  1. SimHash 算法最早由 《Similarity estimation techniques from rounding algorithms》 提出,其中一个著名应用是 《Detecting near-duplicates for web crawling》,它通过 SimHash based 的指纹检测重复的网页。SimHash 函数将 itemembedding vector 作为输入,并生成其二进制指纹。Algorithm 1 显示了 SimHash 的一种可能的实现的伪代码。

    不用那么啰嗦,可以直接用矩阵乘法来实现:

    sigk=sign(ekH)

  2. SimHash 满足局部敏感特性(locality-sensitive properties ):如果输入向量彼此相似,则 SimHash 的输出也相似,如 Figure 1 所示。

    Figure 1 中的每个 random rotation 都可以看作一个“哈希函数”。旋转是通过将 input embedding vector 与随机投影列向量 H(i) 相乘来实现的,如 Algorithm 1 的第2 行所示。随机旋转后,球面上的点被投影到 signed axes 上( Algorithm 1 中的第 3-7 行)。在Figure 1 中,我们使用 4 个哈希函数和两个 projection axes ,将每个向量映射到一个具有 4 个元素的 signature vectorsignature vector 中的每个元素要么是1 ,要么是 0 。可以进一步使用一个整数对该向量进行解码,以节省存储成本并加快后续的汉明距离计算。

    例如,1001 可以解码为整数 9 = 1*8 + 0*4 + 0*2 + 1

    Figure 1 中我们可以观察到,附近的 embedding 向量可以以很高的概率获得相同的哈希签名(hashing signature ),参见 Figure 1 下半部与 Figure 1 上半部的比较。这种观察结果就是所谓的“局部敏感”特性。利用局部敏感特性,embedding 向量之间的相似性可以由哈希签名之间的相似性取代。换句话说,两个向量之间的内积可以用汉明距离代替。

    值得注意的是,SimHash 算法对每个旋转的 “哈希函数” 的选择不敏感。任何固定的 random hash vectors 就足够了(参见 Algorithm 1 中的 H(i))。它易于实现,可以轻松应用于批量的 embedding vectors

    4 个哈希函数和两个 projection axes ”?图中看起来只有一个轴啊,水平轴下方为 1 、上方为 0

52.2 模型

  1. 在本节中,我们首先介绍我们的 End-to-End Target Attention: ETA 模型的详细架构。然后介绍 ETA 模型的不同子模块。最后,我们介绍部署 ETA 的实际经验。

52.2.1 模型概况

  1. Figure 2 所示,我们的模型以 user/item-side features 作为输入,输出某个 user-item pair 的点击概率。

    • 长期用户行为序列 Hlu 、短期用户行为序列 Hsuuser profile xutarget item xt 和上下文信息 xc 是原始输入特征。θ 表示可训练参数。

      注意:长期用户行为序列 Hlu 不包含短期用户行为序列 Hsu ,它们是正交的。

      SIM 模型中,长期用户行为序列是否包含短期用户行为序列?这个不清楚,SIM 的原始论文未说明。

      MIMNUBR4CTR 模型中,只有长期用户行为序列,没有短期用户行为序列。

    • 有了这些特征,我们使用长期兴趣提取单元(Long-term Interest Extraction Unit)、多头目标注意力(Multi-head Target Attention)和 Embedding Layer 分别将 HluHsuxuxtxc 转换为 hidden vectors 。然后将 hidden vectors 拼接在一起并馈入到 Multi-layer Perception: MLP 部分。

    • MLP 的最后一层,使用 sigmoid 函数将 hiddenvector 映射为标量 p(yjHlu,Hsu,xu,xt,xc;θ),表示某个 user-item pair 的点击概率。此概率可作为下游任务的 ranking score

  2. 本文中这些符号的含义:

52.2.2 Embedding Layer

  1. 对于不同类型的特征,我们采用不同的 embedding 技术。原始输入特征主要分为两类:categorical 特征和 numerical 特征。

    • 在我们的模型中,我们对 categorical 特征使用 one-hot encoding

    • 对于 numerical 特征,我们首先将特征划分到不同的 numerical buckets 中。然后我们应用 one-hot encoding 来识别不同的桶,这与 《Interpretable Click-Through Rate Prediction through Hierarchical Attention》 的方式类似。

    请注意,由于有数十亿个 item idsone-hot encoding vectors 可能非常稀疏。因此,我们将所有 one-hot embedding vectors 映射到低维 hidden vectors 以减少参数数量。我们使用 eiRd×1 来表示 item iembedding vector 。然后将所有user behavior itemsembedding vectors 打包成矩阵 EsRL×d ,其中 L 是用户行为序列的长度,dembedding size

    Es=[e1e2eL]

52.2.3 Multi-head Target Attention

  1. 多头注意力机制由 《Attention Is All You Need》 首次提出,并广泛应用于 CTR prediction 任务。在 CTR prediction 任务中,target item作为 query Q,用户行为序列中每一个 item 作为 key Kvalue V。我们将这种多头注意力结构称为多头目标注意力机制(multi-head target attention ),缩写为 TA

    multi-head target attention 的计算如下:

    TA(Et,Es)=Concat(head1,,headh)WOheadi=Attention(EtWiQ,EsWiK,EsWiV),Attention(Q,K,V)=softmax(QKdk)V

    其中:

    • EtR1×dtarget itemembedding 矩阵;EsRL×d 为用户行为序列的 embedding 矩阵。L 为用户行为序列的长度,d 为每个 itemembedding size 。注意,为了清晰起见,我们只选择了一个样本(即,一个 target item ),而不是一个 batch 的样本。

    • WORhdv×d 为投影矩阵,hhead 数量。

    • 矩阵 Q,K,V分别表示 querykeyvalue

    • WiQRd×dk,WiKRd×dk,WiVRd×dv 为投影矩阵,它们分别将 Et,Es,Es 投影到 query, key, valuedkquery 中每一行的维度,也是 key 中每一行的维度;dvvalue 中每一行的维度。

    • dk 用于避免内积值过大。softmax 函数用于将内积值转化为 V 的加权权重。

  2. multi-head target attention 的主要部分是 dot-product attentiondot-product attention 由两步组:

    • 首先,根据 QK 计算 target item 和每个behavior item 的相似度。

    • 其次,以归一化的相似度作为注意力权重,并计算所有 behavior itemsweighted sum embedding

52.2.4 Long-term Interest Extraction Unit

  1. 这部分是我们 ETA 模型的主要贡献。它将用户行为序列的长度从数十扩展到数千甚至更长,从而捕获长期用户兴趣。如前所述,multi-head target attention的复杂度为 O(LBd),其中 L 是用户序列的长度,Btarget items 的数量(也就是 batch size ),drepresentation 维度。在大型在线系统中, B 接近 1000d 接近 128 。因此,直接对数千个长期的user behavior进行 multi-head target attention 是不可行的。 根据 Attention(Q,K,V) 的公式,softmax 由最大元素主导;因此,对于每个 query ,我们只需要关注与 query 最相似的 key ,这也得到了 《Reformer:Theefficient transformer》《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》《User Behavior Retrieval for Click-Through Rate Prediction》 的证实。因此我们可以首先从行为序列中检索 top-k items ,并对这些 kbehavior进行 multi-head target attention

    然而,一个好的检索算法应该满足两个约束:

    • 1):检索部分的目标应该与整个 CTR 模型保持一致。只有这样,检索到的 top-k items 才能对 CTR 模型做出最大贡献。

    • 2) :检索时间应满足严格的 inference time 限制,以确保该算法可以应用于实际系统,从而每秒处理数百万个 request

    我们在 Table 2 中比较了不同的检索算法。

    • SIMUBR4CTR 构建离线倒排索引(offline inverted index ),以便在训练和推理期间进行快速搜索。然而,它们用于构建索引的输入是 item 的属性信息(例如 category )或 itempre-trained embedding ,这与 CTR 模型中使用的 embedding 不同。这种差距违反了上述约束 1) ,并可能导致性能下降。

    • 如果直接使用 CTR 模型中的 embedding 并通过内积搜索 k-nearest neighbor,则需要 O(LBd) 次乘法,推理时间会大大增加。这将违反上述约束 2) ,并且无法在线部署。

    • 我们的 ETA 使用 SimHash 将两个向量的内积转换为汉明距离计算,如 Figure 2 所示。这使得它可以部署在现实世界的推荐系统中。此外,SimHash 的局部敏感特性可以确保 fingerprint 始终可以与 CTR 模型中的 original embedding 保持同步。实验章节的评估部分表明这种兼容性可以大大提高性能。

      如何选择正确的哈希函数、以及检索部分和 ETA 其余部分之间的联合学习将在后续章节中说明。

  2. 经过 SimHash 函数和 hamming distance layer 后,我们从 Hlu 中选择出 top-k 相似的 behavior items ,然后执行前面提到的 multi-head target attention 以生成 hidden vector 。该向量作为长期用户兴趣的 representation ,并与其他向量一起输入到 MLP layers 中。long-term user interest extraction unit 的公式如下:

    LTI(Et,Es)=TA(Et,Es)Es=[e1e2ek],eitopk(HammingDistance(hi,ht))hi=SimHash(ei),ht=SimHash(et)

    其中:

    • LTITA 分别是 long-term user interest extraction unitmulti-head target attention 的缩写。

    • EsR|Hlu|×d 是长期用户行为序列 Hluembedding 矩阵。Es 由从 Es中选择 k 行而来,这些行与 target item EtR1×d 具有最大的汉明距离。

  3. 相似度函数:如 Figure 2 所示,我们使用 SimHash 函数和汉明距离来计算两个 embedding 向量的相似度,而不是内积。SimHash 函数将上述 embedding layer 的输出作为输入。对于每个输入的 embedding向量,SimHash 函数生成其 compressed number 作为指纹(fingerprint )。 SimHash 满足局部敏感特性:如果 input features 彼此相似,则 hashing output 也相似。因此,embedding 向量之间的相似性可以用 hashed fingerprints 之间的相似性来代替。dembedding 向量可以编码为 m-bit number。然后可以通过汉明距离来测量两个指纹之间的相似性。

  4. Top-K Retrieval :与基于内积的模型相比,top-k retrieval layer 可以通过汉明距离更有效地找到与 target itemtop-k 相似的 user behavior items 。两个整数的汉明距离定义为对应 bits 不同的不同 bits positions 的数量。

    为了得到两个 m-bit numbers 的汉明距离,我们首先进行 XOR 运算,然后计算取值为 1 中的bits 数量。如果我们将乘法定义为原子操作,则两个 m-digit numbers 的汉明距离的复杂度为 O(1)。基于汉明距离的 top-k retrieval 的总复杂度为 O(L×B×1),其中 L 是序列长度,Btarget items 的数量。

    值得注意的是,每次执行 SimHash 函数时,hashed fingerprints 都可以与模型一起存储在 embedding table 中。在推理期间,只需要 embedding lookup ,其复杂性可以忽略不计。

52.3 部署

  1. 在本节中,我们展示了如何训练具有检索部分的 ETA 。然后我们介绍如何选择 SimHash 算法中使用的“哈希函数”。然后我们介绍工程优化技巧。

  2. Joint learning of retrieval part :在训练阶段,检索部分不需要更新梯度。检索的目标是为接下来的 multi-head target attention 部分选择 query 的最近邻的 keys 。在选择了 querytop-k 最近邻的 keys 之后,对这些 top-k itemsoriginal embedding vectors 进行正常的注意力机制和反向传播。检索的唯一事情是在训练开始时初始化一个固定的随机矩阵 HRd×m(参见 Algorithm 1 )。只要 input embedding vector ekR1×d 被更新,SimHash 的签名就会相应更新。局部敏感特性确保在每次迭代中,使用 CTR 模型的 latest embedding 无缝地选择 querytop-k nearest keys 。因此,检索和 CTR 模型之间的 gap of goal 比其他检索方法(例如 Table 2 中所示的基于离线倒排索引的方法)小得多。

    CTR 模型的角度来看,检索部分是透明的,但可以确保模型使用最邻近的 items 进行 multi head attention。实验章节表明,这种无需任何 pre-trainingoffline inverted index building 的端到端训练可以大大提高 CTR prediction 任务的性能。

  3. “哈希函数”的选择:SimHash 是一种著名的局部敏感哈希 (locality-sensitive hashing: LSH)算法。SimHash 的实现如 Algorithm 1 所示,其中我们使用固定的 random hash vector 作为“哈希函数”。任何将字符串映射为随机整数的传统散列函数都可以使用。但是,在我们的算法中,出于对矩阵计算的可扩展性和效率的考虑,我们选择了 random hash vectorAlgorithm 1 的实现,这与Reformer 相同。

    局部敏感哈希是通过随机旋转和投影实现的。随机旋转是指 embedding vector 与一个固定的 random hashing vector H(j) 相乘。这里可以使用任何随机的 d 维向量。值得注意的是,由于我们需要将内积的结果投影到两个 singed axes 上从而获得 binary signatureH(j) 中的元素应该在 0 附近随机生成。

  4. 工程优化技巧:当在线部署模型时,SimHash 的计算可以进一步减少一步。针对 embedding 向量 ek,对于 Algorithm 1 计算出的长度为 msignature vector sigk ,我们可以使用一个 log(m) 位的整数来表达 signature vector ,因为 sigk 中的每个元素要么为 1 要么为 0 。因此,这样可以大大减少内存开销,加快汉明距离的计算速度。两个整数的计算时间可以在 O(1) 时间复杂度下进行,可以忽略不计。

52.4 实验

  1. 在本节中,我们进行实验来回答以下研究问题:

    • RQ1 :我们的 ETA 模型是否优于 baseline 模型?

    • RQ2:与 baseline 模型相比,我们的 ETA 模型的推理时间是多少?推理时间和性能一样重要,因为它决定了模型是否可以在线部署以供服务。

    • RQ3:我们的 ETA 模型的哪一部分对性能和推理时间贡献最大?

  2. 数据集:为了对我们的 ETA 模型和 baseline 模型进行全面比较,我们使用了公共数据集和工业数据集。还进行了在线 A/B test 。对于公共数据集,我们选择了 Taobao 数据集,baseline 模型 SIMUBR4CTR 也采用了该数据集。我们也准备了一个工业数据集作为公共数据集的补充。Table 3 简要介绍了数据集。

    • Taobao 数据集:该数据集由 《Joint optimization of tree-based index and deep model for recommender systems》 首次发布,被广泛用作 CTR prediction 任务和序列推荐任务的公共基准。它由 Taobao Mobile Appuser behavior日志组成。user behavior包括点击、收藏、添加到购物车、以及购买。该数据集包含 100M 个实例。平均而言,每个用户大约有 101 次交互,每个item 受到超过 24 次交互。最近的 16behavior作为短期用户行为序列,最近的 256behavior作为长期用户行为序列。

    • 工业数据集:该数据集是从我们自己的在线推荐系统收集的,它是我国顶级的移动 app 之一。我们的工业数据集有三个优势:

      • (i) :我们的数据集包含 impression interaction ,这表示 item 展示给用户但未被用户点击。 impression interaction 自然是 CTR 模型的负样本。因此,不需要棘手的负采样。

      • (ii) :我们的工业数据集中的用户行为序列更长。有超过 142B 个实例,平均长度达到 938 ,比公开的 Taobao 数据集长 9 倍。

      • (iii) :我们的工业数据集具有由多位软件工程师设计的更多特征,更接近现实世界的推荐系统模型。最近的48behavior作为短期用户行为序列,最近的 1024behavior作为长期用户行为序列。在消融研究中,我们还尝试了长度为 {256, 512, 2048} 的长期用户行为序列。

  3. baseline :我们将我们的模型与以下主流的 CTR prediction baselines 。选择每个 baseline 来回答上述一个或多个相关的研究问题。

    • Avg-Pooling DNN :利用用户行为序列的最简单方法是均值池化,它将不同长度的用户行为序列编码为 fixed-size hidden vector 。该 baseline 可以看作是DIN 的变体,用均值池化代替 target attention ,类似于 YouTube 。与 DIN 相比,该 baseline 主要用于显示 target attention 的必要性。

    • DINDIN 通过注意力机制来建模具有不同 target items 的个性化用户兴趣,该注意力机制称为 target attention 。但是,DIN 仅利用短期用户行为序列。

    • DIN (Long Sequence) :是配备长期用户行为序列 HluDINHlu 由均值池化来编码。与 DIN 相比,此 baseline 用于衡量长期用户行为序列本身的信息增益。

    • SIM(hard)SIMCTR prediction 模型,它提出了一个 search unit ,以两阶段的方式从长期用户行为序列中提取用户兴趣。SIM(hard)SIM 的一种实现,它在第一阶段按 category id 搜索 top-k behavior items

    • UBR4CTRUBR4CTR 也是一种两阶段方法,它在 CTR prediction 任务中利用长期用户行为序列。在 UBR4CTR 中,通过一个 feature selection model 准备好 query,从而检索最相似的 behavior items 。它还准备了一个倒排索引以供在线使用。由于 UBR4CTRSIM 几乎同时发布,因此它们无法相互比较。在我们的论文中,我们首次比较了 UBR4CTRSIM

    • SIM(hard)/UBR4CTR + timeinfo :是在对用户行为序列进行编码时带有 time embeddingSIM(hard)/UBR4CTR

    《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》 中,作者提出 SIM(soft) 作为基础算法 SIM(hard) 的变体。他们最终采用 SIM(hard) 方法作为 online serving 算法,并在线部署 SIM(hard)+timeinfo 来服务主要流量。这是因为SIM(hard) 不需要 pre-training,对系统演进和维护更友好。此外,SIM(hard)+timeinfo 可以实现与 SIM(soft) 相当的性能。因此,我们选择 SIM(hard)SIM(hard)+timeinfo 作为我们的强基线。 MIMNDIN 是由同一个团队提出的。MIMN 提出了一个 multi-track offline user interest center 来提取长期用户兴趣。在发布时,它通过利用长期用户行为序列实现了 SOTA 的性能。然而,MIMN 被同一支队伍的 SIM 所击败。由于 MIMN 对我们的研究问题贡献不大,由于篇幅限制,我们省略了这个基线。

  4. 评估指标:

    • 离线实验:AUC 作为主要指标,推理时间作为补充指标。

      推理时间定义为:对某个模型请求的 a batch of items 进行评分时的往返时间。我们通过在线部署被测试的模型来服务用户请求从而测量推理时间,这些用户请求是从产品环境中复制而来。为了比较公平性,机器和用户请求数量控制相同。

    • 在线 A/B testCLICKCTR

      • CLICK:被点击 items 的总数。

      • CTR:衡量平台中用户的点击意愿。它的定义为 CLICK/PV ,其中 PV 定义为被展示的 items 的总数。

  5. 数据预处理:

    • Taobao 数据集仅包含 positive 交互,例如评论、点击、收藏、添加到购物车、以及购买。我们使用与MIMN 相同的数据预处理方法。

      • 首先,对于每个用户,我们选择最后一个behavior作为正样本。

      • 然后,对于该用户,我们随机采样一个与正样本相同 category 的新 item 作为负样本。

      • 其余的 behavior items 用作特征。

      根据正样本的时间戳 t ,将样本分为训练集(80%)、验证集(10%)和测试集(10%)。

    • 我们的工业数据集自然有正样本和负样本,因为我们记录了每个用户的所有 impressions 。如果用户点击了该 item ,则 impression 被标记为正样本;否则,它被标记为负样本。

      我们使用过去两周的日志作为训练集,following day 的日志作为测试集,这与 SIM 类似。

  6. 实验设置:对于不同数据集上的每个模型,我们使用验证集来调优超参数以获得最佳性能。学习率从 1×1041×102 搜索。L2 正则化项从 1×1041 搜索。所有模型都使用Adam 优化器。Taobao 数据集和我们的工业数据集的 batch size 分别为 2561024

52.4.1 性能比较

  1. Taobao 数据集:Taobao据集上的评估结果如 Table 4 所示。从表中我们发现:

    • 与所有 baselines 相比,我们的 ETA 具有一致的性能改进。

      • ETASIM(hard)0.46% ,比 DIN(Long Se-sequence)0.6%

      • 添加 time embedding 后,ETA+timeinfo 的性能比 SIM(hard)+timeinfo0.38% ,比 DIN(Long Sequence)0.85% 。在 UBR4CTR 上也可以观察到类似的结果(即,添加 time embedding 的效果更好)。

    • 观察到 DIN(Long Sequence)DIN 相比,AUC 提高了0.35% ,这表明对长期用户行为序列进行建模对于 CTR prediction 是有效的。

    • 我们还发现 UBR4CTR 的性能比 DIN(Long Sequence) 差。这是因为 UBR4CTRfeature selection model 仅选择特征(例如category 、星期几)与 target item 相同的behaviorUBR4CTR 中的这种过滤有助于从序列中去除噪音,但也会导致用户序列变短,当没有足够的 items 进行 top-k retrieval 时,这是有害的。

    • 我们发现DINAvg-Pooling DNN 的性能高出 1.84% ,这表明使用 target attention 来编码用户行为序列可以大大提高性能。

  2. 工业数据集:我们自己的工业数据集上的评估结果如 Table 5 所示。请注意,CTR 模型在 AUC 上的 0.1% 改进,可以在我们的在线推荐系统中带来数百万的真实点击和收入。与所有 baselines 相比,我们的 ETA 实现了最佳性能。

    • SIM(hard)UBR4CTR 相比,我们的 base ETA 分别实现了 0.34%0.43% 的改进。

    • SIM(hard)+timeinfoUBR4CTR+timinfo 相比,我们的 ETA+timeinfo 分别实现了 0.35%0.42% 的改进。

    • Taobao 数据集不同,在工业数据集上 SIM(hard)+timeinfo 成为最强的 baseline ,比 DIN(Long Sequence) 高出 0.27% 。这有两个原因。

      • 一方面,工业数据集中的用户序列长度足够大,对基于长期用户序列的模型友好。工业数据集的平均长度达到了 938 ,是 Taobao 数据集的 9 倍。

      • 另一方面,DNN(Long Sequence) 采用均值池化对整个序列进行无选择性地编码,与 UBR4CTRSIMETA 等基于检索的模型相比,可能会引入噪音。

      Taobao 数据集上的最强 baseline 也是 SIM(hard)+timeinfo 。所以这个结论是错误的,其解释也是不可信的。

    • 我们还可以发现 SIM(hard)UBR4CTR0.09% 的性能提升,这主要是由于对用户行为序列的处理方法不同造成的。

      • SIM(hard) 中,用户序列被拆分为两个独立的子序列,与 Figure 2 中的 ETA 类似:短期用户行为序列 Hsu 由最近的 kuser behavior组成,从 item 1item k ;长期用户行为序列 Hlu 由从 item k+1item n 中选择的其他 kbehavior而组成。

      • 但是,UBR4CTRitem 1item n 选择 2k 长度的行为序列。因此,最近的 kitemFigure 2 中的 e1ek)被 SIM(hard)100% 的概率选中,被 UBR4CTRfeature selection model 所决定的 p 概率选中。然而,timeinfo 在用户兴趣建模中起着重要作用,因为用户兴趣是动态的并且经常变化。因此 SIM(hard) 的表现优于UBR4CTR

  3. 在线 A/B Test :在线 A/B Test 的评估结果如 Table 6 所示。 Table 6 显示了与 DIN-based 的方法相比的性能改进,其中 DIN-based 的方法没有长期用户行为序列。从 Table 6 中我们发现:

    • DIN-based 的方法相比,我们的 ETA+timestampCTR 上实现了6.33% 的改进,并带来了 9.7% 的额外 GMV

    • 与最强的基线 SIM(hard)+timeinfo 相比,我们的 ETA+timeinfoCTR 上额外提高了 1.8% ,在 GMV 上提高了3.1%

    请注意,GMV1% 的改进是一个显著的改进,因为这意味着为推荐系统带来了数百万的收入。

52.4.2 推理时间比较

  1. 虽然使用长期用户行为序列可以提高 CTR prediction 的性能,但模型复杂度也会相应增加。我们测量了不同模型的推理时间,如 Table 5 所示。

    • Avg-Pooling DNN 的推理时间最短,为 8 ms 。它仅使用均值池化方法来编码近期的 behavior items

    • 将均值池化替换为 target attention 后,DIN 的推理时间增加了 3ms8ms11ms )。

    • 引入长期用户行为序列后,DIN (Long Sequence 的推理时间又增加了 3ms11ms14ms )。

    • SIM 和我们的 ETA 的推理时间相当,约为 19 ~ 21 ms

    • UBR4CTR 的推理时间最长,因为在检索阶段之前使用了额外的 feature selection model ,并且在线进行了相对耗时的 IDF and BM25 based 的程序来获取 top-k items

52.4.3 消融研究

  1. 消融研究结果如 Table 7 所示,以回答问题 RQ3 。我们使用编码方式来区分 ETA 模型的不同版本(v0v4 )。请注意,v0ETA 的基本版本。编码方式列在 Table 7 的第二列中,其中:

    • avg(·)ta(·) 分别表示通过均值池化和 target attentionuser behavior进行编码。

    • ta(1024 -s- 48) 表示对从 1024 长度的用户行为序列中选择的 top-48 user behaviors 进行 target attention

    • ta(1024 -s- 48) 中的符号 s 表示 SimHash 用于从1024user behavior中选择 top-48 ;类似地,ta(1024 -i- 48) 中的符号i 表示内积用于从1024user behavior中选择 top-48

    Table 7 中,可以得出以下观察结果:

    • (i) :直接在原始 1024 长度的用户行为序列上进行 multi-head target attentionv4 )可以获得最佳性能,但同时具有最长的推理时间。

      v4 相比,我们的 base ETAv0 ) 选择 top-k behaviors进行 attention ,牺牲了大约 0.1%AUC ,并将推理时间减少了 46%

    • (ii) :将 v3v0 进行比较,在检索阶段用内积替换 SimHash 可使 AUC 提高 0.07% 。然而,推理时间增加了 68% ,这是我们严格的在线 service level agreement: SLA 所不可接受的。

    • (iii) :当我们改变用户行为序列的长度(v2.xv0 )时,观察到 AUC 和推理时间之间的权衡。可以根据在线推理时间的要求决定合适的序列长度。

  2. Figure 3 中,我们还评估了SimHash 所生成的哈希指纹 h 在不同 bit-length 下的性能。如前文所述,指纹的 bit-length 可以通过 SimHash 中使用的哈希函数数量来控制。我们可以发现:

    • 通过增加 hbit-length 可以提高 AUC

    • 但是,当 hbit-length 大于 2embedding size 时,AUC 的改进变得微不足道。

五十三、SDIM [2022]

《Sampling Is All You Need on Modeling Long-Term User Behaviors for CTR Prediction》

  1. 丰富的user behavior数据已被证明对 CTR prediction 应用程序具有重要价值,尤其是在工业推荐、搜索或广告系统中。然而,由于对 online serving time 的严格要求,真实世界的系统要充分利用长期用户行为并不容易。大多数先前的工作采用 retrieval-based 的策略,即首先检索少量用户行为以供后续使用。然而,retrieval-based 的方法是次优的,会造成信息丢失,并且很难平衡检索算法的效果和效率(effectiveness and efficiency )。

    在本文中,我们提出了 Sampling-based Deep Interest Modeling: SDIM,一种简单而有效的 sampling-based 的端到端方法,用于建模长期用户行为。我们从多个哈希函数中采样以生成 target itemhash signatures、以及用户行为序列中每个behavior itemhash signatures,并通过直接收集 behavior items 来获取用户兴趣,这些 behavior itemstarget item 具有相同的hash signatures

    behavior item 就是用户的历史行为序列中的 feature item

    我们从理论上和实验上表明,所提出的方法在建模长期用户行为方面与标准的 attention-based 的模型性能相当,同时速度快得多。我们还介绍了 SDIM 在我们系统中的部署。具体来说,我们通过设计一个名为 Behavior Sequence Encoding: BSE 的独立模块,将最耗时的部分behavior(即,behavior sequence hashing )从 CTR 模型中分离出来。BSE 对于 CTR server 来说是无延迟的,使我们能够建模极长的用户行为序列。离线和在线实验证明了 SDIM 的有效性。SDIM 现在已经在线部署在美团 APP 的搜索系统中。

  2. CTR prediction 是工业应用系统中的一项基本任务。用户兴趣建模(user interest modeling )旨在从历史行为数据中学习用户的隐含兴趣,已被广泛引入现实世界系统,并有助于显著改善 ctr prediction

    人们提出了各种模型来建模用户兴趣。其中,DIN 通过考虑给定的 target item 与历史行为的相关性来自适应地计算用户兴趣。DIN 引入了一种新的注意力模块,称为 target attention ,其中 target item 充当query Q ,历史user behavior充当 key Kvalue V 。由于其优越的性能,DIN-based 的方法近年来已成为建模用户兴趣的主流解决方案。然而,online serving time 的严格要求限制了可以使用的用户行为序列的长度。因此,大多数工业系统截断了用户行为序列,只提供最近的 50 个行为用于用户兴趣建模,这导致了信息损失。

    随着互联网的快速发展,用户在电商平台上积累了越来越多的behavior数据。以淘宝为例,他们报告23% 的用户半年内在淘宝 APP 中的行为超过 1000 次。在美团 APP 中,有超过 60% 的用户一年内至少有 1000 次行为,有超过 10% 的用户一年内至少有 5000 次行为。对于工业系统来说,如何有效地利用更多的user behavior来更准确地估计用户兴趣变得越来越重要。

    最近,有人提出了一些方法来从长行为序列中建模用户的长期兴趣:

    • MIMN 通过设计一个独立的 User Interest Center: UIC 模块,将 user interest modeling 从整个模型中分离出来。虽然 UIC 可以节省大量的 online serving time ,但它使得 CTR 模型无法从 target item 中挖掘信息,而这已被证明是用户兴趣建模的关键。因此,MIMN 只能建模 shallow user interests

    • SIMUBR4CTR 采用两阶段框架来处理长期用户行为。他们从序列中检索 top-k 相似的 items ,然后将这些 items 馈入后续的注意力模块。如 《 End-to-End User Behavior Retrieval in Click-Through RatePrediction Model》 所指出的,这些方法的 retrieve objectivesCTR 模型的目标不一致,并且离线倒排索引(offline inverted index )中的 pre-trained embedding 不适合 online learning systems

    • 为了提高检索算法的质量,ETA《 End-to-End User Behavior Retrieval in Click-Through RatePrediction Model》 )提出了一种 LSH-based 的方法,以端到端的方式从user behavior中检索 top-k 相似的 items 。它们使用 locality-sensitive hash: LSHitems 转换成hash signatureshash signatures),然后根据它们到 target item 的汉明距离检索 top-k 相似的 itemsLSH 的使用大大降低了计算 items 之间相似度的代价,ETA 取得了比 SIMUBR4CTR 更好的结果。

    SIMUBR4CTRETA 都是 retrieval-based 的方法。retrieval-based 的方法具有以下缺点:

    • 从整个序列中检索 top-k 相似的 items 是次优的,并且会产生对用户长期兴趣的有偏的估计。在用户具有丰富behavior的情况下,检索到的 top-k items 可能都与 target item 相似,并且 estimated user interest representation 将是不准确的。

      其核心在与:对于行为丰富的用户,应该取较大的 k 从而捕获所有的informative 行为;对于行为很少的用户,应该采用较小的 k 从而过滤掉噪音。但是实际应用中,k 是全局统一的。

    • 此外,很难平衡检索算法的有效性和效率。以 SIM (hard) 为例,他们使用简单的检索算法,因此其性能比其他方法差。相比之下,UBR4CTR 在复杂的检索模块的帮助下实现了显著的改进,但其推理速度变得慢了 4 倍,这使得 UBR4CTR 无法在线部署,尤其是对于 long-term user behaviors modeling

    在本文中,我们提出了一个简单的 hash sampling-based 的方法来建模长期用户行为。

    • 首先,我们从多个哈希函数中采样,生成 target itemhash signatures、以及用户行为序列中每个 itemhash signatures

    • 然后,我们没有使用某种 metric 来检索 top-k 相似的 items ,而是直接从整个序列中收集与 target item 共享相同hash signaturesbehavior items 来形成用户兴趣。

    我们方法的内在思想是:用 LSH 碰撞概率来近似用户兴趣的 softmax distribution 。我们从理论上表明,这种简单的 sampling-based 的方法产生了与 softmax-based target attention 非常相似的注意力模式,并实现了一致的模型性能,同时时间效率更高。因此,我们的方法类似于直接在原始的长序列上计算注意力,而没有信息损失。我们将提出的方法命名为 Sampling-based Deep Interest Modeling: SDIM

    传统的 softmax-based target attention :首先计算 attention score,然后将历史行为序列根据 attention score 聚合起来。聚合的权重就是 attention score distribution

    这里的方法是:首先用 LSH 去碰撞,然后将历史行为序列根据是否碰撞从而聚合起来。,权重是 0/1 ,表示是否与 target item 的哈希值相同,即是否碰撞。因此这里的方法会考虑到与 target item 相似的所有 item,并且不需要 target attention 计算。

    我们还介绍了在线部署 SDIM 的实践。具体来说,我们将我们的框架分解成两个部分:Behavior Sequence Hashing(BSE) serverCTR server ,其中这两个部分是分开部署的。行为序列哈希(behavior sequence hashing )是整个算法中最耗时的部分,该部分的解耦大大减少了serving time 。更多细节将在后续章节介绍。

    我们在公共数据集和工业数据集上进行实验。实验结果表明:SDIM 获得了与标准的 attention-based 的方法一致的结果,并且在建模长期用户行为方面优于所有竞争 baselines ,并且具有相当大的加速。SDIM 已经在中国最大的生活服务电商平台美团的搜索系统中部署,并带来了 2.98%CTR 提升和 2.69%VBR 提升,这对我们的业务非常重要。

    综上所述,本文的主要贡献总结如下:

    • 我们提出了 SDIM ,这是一个 hash sampling-based 的框架,用于为 CTR prediction 建模长期用户行为。我们证明了这种简单的 sampling-based 的策略产生了与 target attention 非常相似的注意力模式。

    • 我们详细介绍了我们在线部署 SDIM 的实践。我们相信这项工作将有助于推进 community,特别是在建模长期用户行为方面。

    • 在公共数据集和行业数据集上进行了大量实验,结果证明了 SDIM 在效率和效果方面的优越性。SDIM 已经部署在美团的搜索系统中,为业务做出了重大贡献。

    本质上是通过 LSH 实现了 target attention

53.1 基础知识

53.1.1 Task Formulation

  1. CTR prediction 是工业界的推荐、搜索和广告系统中的核心任务。CTR 任务的目标是估计用户点击 item 的概率,定义如下:

    prob1=P(yi=1xi;θ)

    其中:θ 代表 CTR 模型中的可训练参数;xi 为输入特征;yi 表示 label

    给定输入特征 xi,我们通过最小化交叉熵损失来训练 CTR 模型:

    L=1Ni=1N[yilog(probi)+(1yi)log(1probi)]

53.1.2 Target Attention

  1. target attention 的概念最早由 DIN 提出,并广泛应用于CTR 任务中的用户兴趣建模。target attentiontarget item 作为 query ,将用户行为序列中的每个 item 作为 keyvalue,并使用 attention 算子从用户行为序列中 soft-search 相关的部分。然后通过对用户行为序列进行加权和来获得用户兴趣。

    具体而言,将 target item 指定为 QRB×d ,将用户序列 representations 指定为 SRB×L×d,其中:

    • B :对于每个 requestCTR 模型要评分的 target items 数量。

    • L :是用户行为序列的长度。

    • d :模型的 hidden size

    qi 为第 itarget itemrepresentationtarget attention 计算 qi 与行为序列 S 中每个 item 的点积相似度,然后以归一化相似度作为权重,得到用户兴趣的 representation

    TA(qi,S)=j=1L(exp(qisj/t)j=1Lexp(qisj/t)×sj)

    矩阵形式可以写成:

    TA(Q,S)=softmax(QSt)S

    其中:t 为缩放因子 ,用于避免内积值过大。

  2. 计算 TA(Q,S) 的复杂度为 O(BLd) 。在大型工业系统中,B 约为 103d 约为 102,对于在线系统,在长期用户行为建模中部署 target attention 是不可行的。

53.1.3 Locality-Sensitive Hash (LSH) and SimHash

  1. 局部敏感哈希(Locality-sensitive hash: LSH)是一种在高维空间中高效查找最近邻居的算法技术。LSH 满足局部保持性(locality-preserving property ):邻近的向量很可能获得相同的哈希值,而远处的向量则不会。得益于此特性,LSH-basedsignature已广泛应用于互联网搜索系统等许多应用中。随机投影方案 (SimHash)是 LSH 的一种有效实现。SimHash 的基本思想是:采样一个随机投影(由单位法向量 r 定义)作为哈希函数,将输入向量哈希到两个轴(+1-1 )。具体而言,给定一个输入 x 和一个哈希函数 r,相应的哈希值计算如下:

    h(x,r)=sign(rx)

    其中:rRd,其中的元素 riN(0,1)1idh(x,r)=±1 取决于 hashed output 位于哪一侧。

    对于两个向量 x1x2 ,只有当 x1x2具有相同的 hash code 的取值时,我们才说它们发生冲突:

    p(r)=Ih(x1,r)=h(x2,r)
  2. 虽然单个哈希值可以用于估计相似度,但是我们可以使用多个哈希值,从而降低估计误差。在实践中,通常采用 (m,τ) 参数化的 SimHash (即,多轮哈希)算法,其中 m 是哈希函数的数量、τ 是宽度参数。

    • 在第一步中,SimHash 随机采样 m 个哈希函数并为每个输入生成 m 个哈希码:

      h(x,R)=sign(Rx)

      其中:RRm×dm 个哈希函数;h(x,R)Rmm 个哈希码。

      这些哈希码被分为 m/τ 组,每组 τ 个哈希码。

    • 为了降低不相似的 items 具有相同哈希码的概率,该算法将每组 τ 个哈希码的结果合并以形成新的hash signatures。有关更多详细信息,请参阅 《Mining of Massive Datasets》

      对于第 g 组,Rgr1+(g1)τ,,rgτ 组成的投影矩阵。对于第 g 组,只有当 x1x2的所有 hash signatures相同时, x1 才会与x2发生冲突:

      p~(Rg)=p(r1+(g1)τ)&p(r2+(g1)τ)&&p(rgτ)=&k=1+(g1)τgτp(rk)

      其中:& 表示逻辑 “AND” 运算符,rk 是第 k 个哈希函数。

    • 最后,每个 hash signature 对应的分组可以被看作是一次 LSH ,从而用于期望的计算,从而降低 estimation 的方差。

      注意:读者对这一段文字进行了重新润色。原始论文讲的不太清楚。

    Figure 1 底部显示了 (4, 2) 参数化的 SimHash 算法的示例,其中我们使用 4 个哈希函数并将每 2 个哈希码聚合为hash signatures(黄色和绿色)。

    m=4,τ=2

53.2 方法

  1. 在本节中,我们介绍了我们的框架从而在系统中实现 SDIMFigure 1 中可以看到high-level 的概述。该框架由两个独立的 servers 组成:Behavior Sequence Encoding (BSE) serverCTR server,稍后将详细介绍。

53.2.1 User Behavior Modeling via Hash-Based Sampling

  1. Hash Sampling-Based Attention:第一步,我们采样多个哈希函数并生成 user behavior itemstarget items 的哈希码。与 ETA 类似,我们使用从正态分布中采样的固定的 random hash vectors 作为“哈希函数”。经过哈希处理后,ETA 计算 items 之间的汉明距离(Hamming distance )作为用户兴趣分布(user interest distribution )的近似值,从而用于选择 top-k 相似的items 。这里我们提出了一种更高效、更有效的方法来近似用户兴趣。 由于具有局部保留的属性(locality-preserving property ),相似的向量落入同一个哈希桶的概率很高,因此 user behavior itemstarget item 之间的相似性可以通过它们具有相同哈希码(signature)的频率或碰撞概率来近似。这导致我们假设哈希碰撞的概率可以成为用户兴趣的有效估计器。 基于这一观察,我们提出了一种使用 LSH 来获取用户兴趣的新方法。经过哈希处理后,我们通过将具有相同的 behavior items sj 相加来直接形成用户兴趣,其中这些 behavior items 都关联了同一个 target item q 。在单个哈希函数 r 中,所提出的估计用户兴趣的方法可以通过以下方式计算:

    l2(P(r)S)=l2(j=1Lpj(r)sj)

    其中:

    • SRL×d 是用户行为序列,sjRd 是序列中的第 jitem

    • pj(r){0,1} 指定 sj 是否有助于用户兴趣。具体来说,在哈希函数 r 下,如果 sj 与的 target item q 共享相同的hash signatures,则 pj(r)=1 ;否则 pj(r)=0

      pj(r)=Ih(q,r)=h(sj,r)

      P(r)R1×Ltarget item q 与每个 sj 的碰撞率组成。

    • l2() 表示 l2 正则化,用于对兴趣分布进行正则化。

      我们还尝试使用 j=1Lpj(r) 对分布进行归一化,得到的模型与 l2 正则化模型的性能相当。但是, l2 正则化的实现效率更高,因此我们使用 l2 正则化。

  2. Multi-Round Hashing:总是有一个小概率使得不相似的 behavior itemstarget item 共享相同哈希码,从而给模型带来噪音。为了降低这种可能性,我们使用前面描述的多轮哈希算法。 具体来说,我们使用 (m,τ) 参数化的 SimHash 算法。我们并行采样并执行 m 次哈希,然后分成 m/τ 组,每组 τ 个哈希码。对于每个分组,我们合并这 τ 个哈希码的结果以形成新的hash signatures。只有当 sjq 具有相同的 hash signature 时,我们才认为它们发生碰撞:

    p~j(Rg)=&k=1τpj(rg,k),pj(rg,k)=Ih(q,rg,k)=h(sj,rg,k)

    其中:p~j(Rg) 为第 g 组的碰撞概率,1gm/τgg,k 为第 g 个分组的第 k 个哈希函数。

    m/τhash signatures的输出被平均,从而作为对用户兴趣的低方差的估计。它可以表示为:

    Atten(q,S)=1m/τg=1m/τl2(P~(Rg)S)=1m/τg=1m/τl2(j=1Lp~j(Rg)sj)

53.2.2 Analysis of Attention Patterns

  1. Hash Sampling-Based Attention 的期望:在我们的方法中,随着 sjq 的相似度越来越高,它们的碰撞概率越来越大,系数 p~j 的期望也越来越高。可以证明 p~j 的期望是 sjq 在单位圆上的夹角(《Similarity estimation techniques from rounding algorithms》):

    E[p~j]=(1arccos(qsj)π)τ

    注意:在计算用户兴趣之前,我们对 qsj 进行归一化。

    因此,SDIM 产生的 user interest representation 的期望为:

    E[Atten(q,S)]=E[l2(j=1Lp~j(Rg)sj)]=j=1L(1arccos(qsj)π)τj=1L(1arccos(qsj)π)τsj

    注意:原始论文的公式有问题,漏掉了 j=1L 。此外,这里用的是 sum 归一化而不是 l2 正则化。

    随着分组数量 m/τ 的增加,p~j 收敛到 E[p~j]Atten(q,S) 收敛到 E[Atten(q,S)]。实证结果表明,当 m/τ16 时,estimation error 会非常小。在实践中,我们对在线模型使用 m=48τ=3 我们在 Figure2 中绘制了 SDIM 产生的注意力权重 (1arccos(qsj)π)3 。为了进行比较,我们还在同一图中绘制了 target attention 产生的注意力权重 exp(qsj/0.5)。从 Figure2 中我们可以看出,SDIM 的注意力权重与 target attention 中的 softmax 函数很好地吻合,因此,从理论上讲,我们的方法可以获得非常接近 target attention 的输出。我们将提出的方法命名为 SDIM ,即 Sampling-based Deep Interest Modeling

  2. τ 的性质及其与其他方法的关系:在本小节中,我们描述了 SDIM 中的宽度参数 τ 在控制模型对更相似的 items 提供更多注意力方面所起的作用。 wj 表示为 target item qitem sj 的注意力权重,即:

    wj=(1arccos(qsj)π)τj=1L(1arccos(qsj)π)τ

    随着 τ 的增加,注意力分布的熵 H(wj) 严格下降,并且 w 的分布在相似性较大的区域变得更尖锐,这鼓励模型更多地关注更多相似的items 让我们考虑两种极端情况:

    • τ+ (可以通过分配一个大值来近似)时,算法仅关注与 target item 完全相同的 items 。如果我们使用 category 属性进行哈希处理,则算法的behavior类似于 SIM(hard) 。因此,我们的算法可以看作是 SIM(hard) 的扩展,它也会考虑 category ID 不同但非常相似的 behavior items

    • τ=0m=1 时,该算法退化为均值池化,因为 target item 和用 user behavior items 将始终具有相同的hash signatures

    因此,SDIM 非常灵活,可以通过分配不同的 τ 值来建模不同的注意力模式。

53.2.3 Implementation and Complexity Analysis

  1. 在本小节中,我们将详细说明 SDIM 比标准的 attention-based 的方法快很多倍。

  2. 让我们回顾一下 target attention 中计算用户兴趣的公式,即,TA(Q,S)=softmax(QSt)S 。该算法首先通过将 target vector 与行为序列相乘来获得注意力权重,然后使用注意力权重对行为序列进行加权和。因此,在 target attention 中获取用户兴趣的 representation 需要两次矩阵乘法,该算法的时间复杂度为 O(BLd)

  3. SDIM 将用户兴趣的计算分解为两部分:behavior sequence hashingtarget vector hashing 。注意,用户行为序列是用户的固有特征,与 target item 无关,这意味着无论 target item 是什么,用户的 behavior sequence hashing 的结果都是固定的。因此,对于每个用户,我们只需要在每个 request 中计算一次用户行为序列的 hash transform 。因此,SDIM 将时间复杂度从 B 降低到 1 ,比标准的 target attention 快了相当多倍。

    经过哈希之后,与 target item 共享相同 hash signaturesequence items 被选中,并被相加从而形成用户兴趣。在 Tensorflow 中,此步骤可以通过 tf.batch_gather 算子实现,该算子是 Tensorflow 的原子算子(atomic operator ),时间成本可以忽略不计。

    SDIM 最耗时的部分是行为序列的多轮哈希(multi-round hashing),即将 d 维矩阵转换为 m 维哈希码。此操作的时间复杂度为 O(Lmd),可以使用近似随机投影(Approximating Random Projection )算法降低到 O(Lmlog(d))。由于 mBlog(d)d,所以 SDIM 比标准的 attention-based 方法快得多。在我们的场景中,SDIM 在训练 user behavior modeling 部分时实现了 1020 倍的速度提升。

53.2.4 Deployment of the Whole System

  1. 本节将介绍如何成功在线部署 SDIM 。如前所述,整个算法分为两部分:behavior sequence hashingtarget vector hashingbehavior sequence hashingtarget item 无关,这促使我们构建一个专门的 server 来维护 user-wise behavioral sequence hashes

  2. 我们将系统分为两部分:Behavior Sequence Encoding (BSE) serverCTR Server ,如 Figure 1所示。

    • BSE Server 负责维护 user-wise behavior sequence hashes。当收到user behaviorlist 时,BSE server 从多个哈希函数中采样,并为行为序列中的每个 item 生成 hash signatures。然后根据 item signatures 将它们分配到不同的 buckets 中,每个 buckets 对应一个 hash signature ,如 Figure 1 所示。hash buckets 被传递给 CTR Server ,从而建模 target item-aware 的用户兴趣。

    • CTR Server 负责预测 target items 的点击率。当收到 Btarget itemsbatch size = B )时,CTR Server 会将每个 target item 进行哈希得到 signatures ,并从相应的 buckets 中收集 item representations 。用户兴趣特征与其他特征拼接起来,然后被馈入到复杂的 CTR 模型中,以获得每个 target item 的预测概率。我们的 CTR 模型的整体结构如 Figure 3 所示。该模型以 target item 特征、上下文特征、短期用户兴趣特征、以及长期用户兴趣特征作为输入,并使用 multilayer perceptron 来预测 target items 的点概率。

      根据论文实验章节的描述,长期用户行为序列包含了短期用户行为序列,二者不是正交的。

    请注意,SDIM 不需要改变 CTR 模型的结构,它可以自然地插入现有的主流 CTR 架构中。所提出的框架在训练阶段是端到端的:user interest modelingCTR 模型的其余部分联合训练,我们只在 online serving 阶段单独部署它们。 BSE ServerCTR Server 解耦后,BSE 的计算对于 CTR Server 来说是无延迟的。在实际应用中,我们将 BSE Server 放在CTR Server 之前,并与 retrieval 模块并行计算。

    分开部署后,计算用户长期兴趣的时间成本只在于 target items 的哈希,其时间复杂度为 O(Bmlog(d)),并且与序列长度 L 无关,这意味着我们的框架理论上可以处理具有极长behavior的用户兴趣建模。从 CTR Server 的角度来看,这个时间复杂度就像增加了一个 common feature 一样。在 Table 1 中,我们比较了不同方法的时间复杂度。

  3. 我们的 serving 系统与 MIMN 有些相似。最大的区别在于我们的系统可以建模用户的 deep interests ,而 MIMN 只能建模 shallow interests

  4. 关于 Servers 传输成本的注释:对于每个 request ,我们都需要将 bucket representationsBSE Server 传输到 CTR Server 。请注意,我们使用固定数量的哈希函数,因此无论用户的behavior有多长,我们只需要将 bucket representations 的固定长度的向量传输到 CTR Server 。在我们的在线系统中,此向量的大小为 8KB ,传输成本约为 1ms

53.3 实验

  1. 为了验证 SDIM 的有效性,我们在公共数据集和真实工业数据集上进行了实验。对于公共数据集,我们遵循以前的工作选择 Taobao 数据集。对于工业数据集,我们使用从美团搜索系统收集的真实数据进行实验。

    • Taobao 数据集:淘宝数据集由 《Learning Tree-based Deep Model for Recommender Systems》 发布,在先前的工作(《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》《User Behavior Retrieval for Click-Through Rate Prediction》)中被广泛用于离线实验。此数据集中的每个实例由五个 field 的特征组成:user ID, item ID, category ID, behavior type, and timestamp。遵循 《User Behavior Retrieval for Click-Through Rate Prediction》,我们根据时间戳额外引入了 “is_weekend” 特征以丰富上下文特征。

      我们以与 MIMNETA 相同的方式对数据进行预处理。具体来说,我们使用首次的 (L1)behavior作为输入来预测第 Lbehavior。我们根据 timestep 将样本分为训练集(80%)、验证集(10%)和测试集(10% )。选择最近的 16behavior作为短期序列,选择最近的 256behavior作为长期序列。

    • 工业数据集:该数据集来自中国最大的生活服务电商平台美团 APP 的平台搜索系统。我们选取连续 14 天的样本进行训练,选取接下来两天的样本进行评估和测试,训练样本数量约为 10 Billion 。选取最近的 50behavior作为短期序列,选取最近的 1024behavior作为长期序列。如果user behavior数量未达到此长度,则使用默认值将序列填充到最大长度。除了user behavior特征外,我们还引入了约 20 个重要的 id 特征来丰富输入。

  2. 评估指标:对于离线实验,我们遵循以前的工作,采用广泛使用的 AUC 进行评估。我们还使用训练和推理速度 (Training & Inference Speed: T&I Speed) 作为补充指标来显示每个模型的效率。对于在线实验,我们使用点击率(Click-Through Rate: CTR ) 和访问购买率(Visited-Buy Rate: VBR)作为在线指标。

  3. baseline 方法:我们将 SDIM与以下建模长期用户行为的主流工业模型进行比较:

    • DINDIN 是工业系统中建模用户兴趣的最流行模型之一。然而,由于DIN 的时间复杂度高,它不适合用于建模长期用户行为。在这个 baseline 中,我们只使用短期用户行为特征,而不使用长期用户行为特征。

    • DIN (Long Seq.) :对于离线实验,为了测量长期用户行为序列的信息增益,我们为 DIN 配备了长行为序列。我们为 Taobao 数据集设置 L=256,为工业数据集设置 L=1024

    • DIN (Avg-Pooling Long Seq.) :该 baseline《End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model》《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》 引入,其中 DIN 用于建模短期用户兴趣,而长期用户兴趣则通过对长期behavior进行均值池化操作获得。我们将此 baseline 表示为 DIN(Avg-Pooling)

    • SIM《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》):SIM 首先通过 category ID 从整个序列中检索 top-k 相似的 items ,然后将 target attention 应用于 top-k items 从而获取用户兴趣。我们遵从以前的工作来比较 SIM(hard) ,因为性能几乎与他们在线部署 SIM(hard) 相同。

    • UBR4CTR《User Behavior Retrieval for Click-Through Rate Prediction》):UBR4CTR 是一种两阶段方法。

      • 在第一阶段,他们设计了一个 feature selection 模块来选择特征来形成 query ,并以倒排索引的方式存储user behavior

      • 在第二阶段,将检索到的behavior馈入到 target attention-based 的模块以获取用户兴趣。

    • ETA《End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model》): ETA 应用 LSHtarget item 和用户行为序列编码为 binary codes ,然后计算 item-wise hamming distance 以选择 top-k 个相似的 items 用于后续的 target attention

    • MIMN《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》) :与 SIM 是由同一个团队提出的。由于作者声称 SIM 击败了MIMN 并且他们在线部署了 SIM,因此我们仅与 SIM进行比较,并省略了 MIMNbaseline

    对于所有 baselineSDIM ,我们使用相同的特征(包括 timeinfo 特征)作为输入,并采用相同的模型结构,long-term user behavior modeling 除外。所有模型都使用相同长度的长期用户行为:TaobaoT=256 ,工业数据集的 T=1024

53.3.1 Taobao 数据集的结果

  1. Table 2 显示了不同模型在 Taobao 数据集上的总体结果。我们可以得出以下结论:

    • (1)SDIM 在建模长期用户行为方面的表现与 DIN(Long Seq.) 相当,但速度却是 DIN(Long Seq.)5 倍。如上所述,SDIM 可以模拟与 target attention 非常相似的注意力模式,因此 SDIM 可以匹敌甚至超越 DIN(Long Seq.) 的性能。

    • (2)SDIM 的表现优于所有用于建模长期用户行为的 baseline 模型。具体而言,SDIMSIM1.62%、比 UBR4CTR1.02% 、比 ETA1.01%

      我们还注意到,与 DIN 相比,DIN(Long Seq.)AUC 提高了 2.21% ,这表明建模长期用户行为对于 CTR prediction 的重要性。 SIMUBR4CTRETA的性能不如 DIN(Long Seq.),这是由于 retrieval of user behaviors 造成的信息丢失。这些 retrieval 操作可能有助于从序列中去除噪音,但当 top-k retrieval 没有足够的 informative behavior 时则是有害的。

    • (3)SDIMDIN(Long Seq.)SIMUBR4CTR 的效率高得多。效率的提高可以归因于将算法的时间复杂度降低到O(Lmlog(d))

      SDIM 也比 ETA 效率高得多。ETA 也使用 LSHtarget item 和行为序列进行哈希,哈希操作的时间复杂度与 SDIM 相同。哈希之后,ETA 计算汉明距离并选择 top-k items 从而用于 target attention ,时间复杂度为 O(BL+Bkd)。而 SDIM 仅引入了一个 gather 算子,然后是 m/τ 个分组的均值池化,因此比 ETA 效率高得多。

    对于 T&I Speed指标,对比的基线为 DIN(Long Seq.),它的速度为 1.0

53.3.2 工业数据集的结果

  1. Table 3 显示了不同模型在工业数据集上的总体结果。

    • Taobao 数据集的结果类似,在工业数据集上,SDIM 优于所有竞争基线,并且与 DIN(Long Seq.) 表现相当。我们的 SDIMSIMUBR4CTRETA 相比,分别实现了1.92%2.08%1.38% 的改进,同时比这些方法快得多。

    • 由于工业数据集中的用户序列长度足够大,这对 retrieve-based 的方法很友好,因此它们似乎应该与 DIN(Long Seq.) 表现相当。然而,Table 3 中的结果表明它们的性能与DIN(Long Seq.) 存在一些差距。我们认为这是因为用户的兴趣通常是多样化的,人们经常想购买新 categoriesitem ,尤其是在我们的 food search 案例中。当面对新 category 中的 target item 时,这些检索算法很难从用户的历史行为中准确地挑选出最有价值的 item

    • Taobao 数据集相比,工业数据集每次 request 包含的 target items 更多,因此 SDIM 在该数据集上可以获得更大的加速比。工业数据集的用户行为序列也更长(T=1024 ),因此 retrieve-based 的方法也可以获得更大的加速比。

    实验结果证明了 SDIM 的优越性。

53.3.3 超参数分析

  1. SDIM 中有两个重要的超参数:哈希函数的数量 mhash signatures 的宽度 τ

  2. m 的分析:哈希函数的数量 m 会影响所提出的 hashing-based attention 的估计误差。随着 sampled hash function 数量的增加,estimated user interest 将更接近公式 E[Atten(q,S)]

    为了评估 estimation error ,我们评估 m{24,36,48,60,72,90,120} 时的 SDIM 的性能。我们还实现了 SDIM 的变体,它直接使用公式中的期望碰撞概率 E[p~j] 计算注意力权重。该基线模拟了当 hash signatures 数量趋于无限时 SDIMbehavior。结果如 Figure 4 所示。

    可以看出,当 m>48 时,模型的表现几乎相同。为了提高效率,我们在模型中使用 m=48

    m 越大则复杂度越高,从而拖慢 inference 速度。但是这里没有不同 m 时的加速比数据,无法判断哪个 m 获得比较好的 trade-off

  3. τ 的分析。如前所述,τ 控制模型对更相似 items 更加关注。我们通过改变 τ{1,2,3,5,10} 来研究 SDIM 的不同注意力模式。结果如 Table 4 所示。

    Table 4 中我们可以看出:

    • 2τ5 时,SDIM 表现良好。为了平衡有效性和效率,我们在在线模型中使用 τ=3

      τ 仅仅影响效果而不影响效率(根据 Table 1 的算法复杂度分析结果)。

    • τ=1 时,模型表现不佳,因为它编码了太多噪音behavior

    • 相反,当 τ=10时,模型表现不佳,因为只有非常相似的 items 才有机会用于用户兴趣,这对行为较少的用户不友好。

53.3.4 短期用户兴趣建模

  1. 我们还进行了额外的实验来测试 SDIM 在建模短期user behavior方面的表现。但请注意,SDIM 主要是为了解决工业推荐系统的长期用户兴趣建模的问题而提出的,人们可以直接插入 full target attention 或更复杂的模块来建模短序列。我们进行这个实验只是为了展示模型在特殊情况下的表现。

    我们在 Taobao 数据集上进行了这个实验,结果如 Table 5 所示。结果表明,SDIM 在建模短序列方面仍然可以达到与标准的 target attention 模型相当的结果,同时效率更高。

    是否可以把所有的 target attention (长期的、短期的)都换成 SDIM ?进一步地,是否可以把用户行为序列分成不同的区间,在每个区间都应用 SDIM

53.3.5 Online A/B Test

  1. 为验证 SDIM 的有效性,我们还进行了严格的 online A/B testing 。对于 online A/B testingbaseline 模型是美团搜索系统中之前的在线 CTR 模型,该模型仅使用短期用户行为序列。测试模型采用与 base 模型相同的结构和特征,但在此基础上加入了 long-term user interests modeling 模块,该模块包含用户最近 10242000behavior。我们使用所提出的 SDIM 来建模长期用户兴趣,并将该测试模型表示为 SDIM (T = 1024)SDIM (T = 2000) 。测试持续 14 天,每个模型分别分配 10% 的美团搜索流量。 A/B testing 结果如 Table 6 所示。

    • SDIM (T=2000)base 模型相比,CTR 提升 2.98%p-value < 0.001 ),VBR 提升 2.69%p-value < 0.005 ),考虑到美团 APP 的流量巨大,这可以大大提高线上利润。

    • SDIM (T=2000) 的推理时间与 Base(w/o long seq.) 相比增加了 1ms 。推理时间的增加主要是由于 BSE ServerCTR Server 之间的传输时间。

    我们还尝试部署模型,该模型直接使用 target attention 来建模 T = 1024 的长期用户行为序列。然而,它的推理时间大大增加了约 50%25ms-30ms ),这对于我们的系统来说是不可接受的。因此我们不能让这个模型在线上进行 14 天的 A/B testingSDIM 的性能与这个模型相当,但节省了 95% 的在线推理时间。SDIM 目前已在线部署并服务于美团首页搜索系统的主要流量。

 

五十四、UBR [2023] (UBR4CTR V2)

《Learning to Retrieve User Behaviors for Click-through Rate Estimation》

  1. CTR estimation 在现代在线个性化服务中起着至关重要的作用。通过建模用户行为序列来捕获用户兴趣的变化,对构建准确的 CTR estimation 模型至关重要。然而,随着用户在在线平台上积累了大量的behavior数据,当前的 CTR 模型必须截断用户行为序列并利用最近的behavior,这导致一个问题,即诸如周期性(periodicity )或长期依赖性(long-term dependency )之类的序列模式(sequential patterns )不被包含在最近的behavior中,而是包含在遥远的历史中。然而,直接使用整个用户序列并对其进行建模并非易事,原因有二:

    • 首先,非常长的输入序列会使在线 inference time 和系统负载变得不可行。

    • 其次,非常长的序列包含很多噪音,因此 CTR 模型很难有效地捕获有用的模式。

    为了解决这个问题,我们从 input data 的角度来考虑它,而不是设计更精巧但更复杂的模型。由于整个用户行为序列包含很多噪音,因此没有必要输入整个序列。相反,我们可以只检索其中的一小部分作为 CTR 模型的输入。在本文中,我们提出了用户行为检索(User Behavior Retrieval: UBR )框架,旨在根据每个 CTR estimation request 来学习从而检索最 informativeuser behavior。只检索一小部分behavior可以缓解 utilizing very long sequences 的两个问题(即推理效率和噪声输入)。UBR 的显著特性在于它支持任意且可学习的检索函数,而不是使用固定的且预定义的函数,这与当前 retrieval-based 的方法不同。

    在三个大型真实数据集上的离线评估证明了 UBR 框架的优越性和有效性。我们进一步在 Huawei App Store部署了 UBR,在线 A/B test 中实现了 6.6%eCPM 增益,现在服务于 Huawei App Store 广告场景的主要流量。

  2. CTR estimation 在当今的在线个性化平台(例如电商、在线广告、推荐系统)中起着关键作用,其目标是预测用户在特定上下文中点击特定 item 的概率。近年来,基于用户行为序列的 CTR estimation 模型引起了工业界和学术界越来越多的关注。这些基于user behaviorCTR 模型旨在捕获包含在user behavior中的丰富的时间模式(temporal patterns ),并学习用户兴趣的变化,从而获得准确的 CTR estimations 。这些序列模式包括概念漂移(concept drifting )、长期行为依赖性(long-term behavior dependency)、周期性模式(periodic patterns )等等。

    Deep Interest Network: DINDeep Interest Evolution Network: DIEN 是在 CTR prediction 中,通过建模用户行为序列从而捕获用户兴趣的代表性模型。 DIN 结合了注意力机制来学习不同 user behaviors 的重要性,而 DIEN 利用 GRU 来捕获user behaviordynamics 。其他 user behavior-basedCTR estimation 模型(《Behavior sequence transformer for e-commerce recommendation in alibaba》《Deep session interest network for click-through rate prediction》)具有相似的动机和结构。

    至于 CTR estimation 的类似文献,在序列推荐(sequential recommendation )领域,有很多关于如何对用户行为序列进行建模的研究工作。有 RNN-based 的模型,如 GRU4RecGRU4Rec+ ;有 CNN-based 的模型,如 Caser ;有 Transformer-based 的模型,如 SASRecTiSASRec ;还有 memory network-based 的模型。

    随着在线个性化平台十多年的发展,平台上记录的user behavior数量迅速增长。在淘宝上,仅在六个月内,就有 23% 的用户积累了超过 1,000behavior《Lifelong sequential modeling with personalized memorization for user response prediction》)。尽管上述基于user behaviorCTR 模型取得了巨大成功,但它们无法处理非常长的用户序列。如 Figure 1 上半部分所示,仅使用最近的行为进行 CTR estimation (通常为 50100)。但是,如果仅使用最近的行为,序列中可能不包含长期依赖性或周期性等序列模式(sequential patterns )。一种直接的解决方案是将整个用户序列馈入到 CTR 模型中,但这不可行。它会给系统开销带来沉重的负担并牺牲推理效率。更糟糕的是,在非常长的行为序列中,这种做法会带来很多噪音。

    为了解决上述问题,一种解决方案是设计具有更多参数和更大容量的复杂模型,以支持更长的用户行为序列作为输入,如 Figure 1 上半部分所示。HPMNMIMN 是两种用于处理长序列建模的 memory network 架构。然而,这些模型非常复杂,需要大量的工程工作才能在现实世界的在线系统中实现和部署。尽管 HPMNMIMN 可以处理包含大约 1,000behavior的序列,但全量的用户序列通常要长得多。

    与上述解决方案不同,我们尝试从数据角度解决问题,而不是设计更精巧但更复杂的模型。由于非常长的序列包含很多噪音,因此没有必要输入整个序列。相反,只有一小部分behaviorprediction 相关。因此,我们只需要检索相关的behavior。检索到的behavior取决于每个 CTR estimation request 。我们将每个 request 称为 prediction target 。如 Figure 1 所示,prediction target 由三部分组成,即 target user features (职业、地理位置等)、target item featurescategory 、品牌等)、以及相应的上下文特征(场景等)。然后,这些特征将被视为 query ,并被用于从整个用户序列中检索 behaviors 。检索系统的目标是学习检索最相关的 behavior data ,从而辅助特定的 requestprediction (即 prediction target )。这样的检索过程利用索引结构,以整个用户历史行为作为检索池(retrieval pool ),效率很高。为此,通过检索user behavior,长的用户序列可以有效地纳入 CTR 模型,而不会引入太多噪音。

    在本文中,我们提出了用于 CTR estimationUser Behavior Retrieval: UBR 框架,从而对非常长的用户行为序列进行建模。由于现实世界在线个性化平台中的检索池通常很大,我们将检索过程分为两个子过程:matchingranking ,类似于信息检索系统。

    • 对于matching 过程,通过访问存储 behaviors 的索引可以快速检索一组候选behavior。此过程本质上是获取具有与 prediction target 所匹配特征的 behaviors

    • 获得 candidate behaviors 后,ranking 函数根据 candidate behaviorsprediction target 的相关性对其进行排序,并返回 top-kbehavior

    然后,被检索到的 behaviors 可以被任意 CTR 模型使用。

    本文的重点是整合可学习的参数化的检索函数,并提出相应的训练方法。在现有的 retrieval-based behavior models 中,检索函数总是采用某种预定义形式,例如特征匹配(《Retrieval and interaction machine for tabular data prediction》)、内积 (《Search-based user interest modeling with lifelong sequential behavior data for click-through rate prediction》)、余弦相似度(《Learn over past, evolve for future: Search-based time-aware recommendation with sequential behavior data》)或汉明距离(《End-to-end user behavior retrieval in click-through Rate Prediction model》)。检索函数是固定的,因此它们不够灵活;并且由于其 pre-defined form 所引入的 inductive bias ,可能导致次优性能。相反,在 UBR 框架中,我们使用 prediction 的性能作为信号来训练检索函数。behavior retrieval 过程本质上是获取相对于 prediction target (即 CTR request )的 top-ranked behaviors 。使用参数化的结构(例如 DNN )作为 ranking metric 可以大大提高检索函数的容量和表达能力。为实现该目标,我们提出了三种 UBR 变体:

    • UBR-M 利用 REINFORCE 来优化 retrieval functionmatching 过程。

    • UBR-R 使用 learning-to-rank: LTR 技术来优化 retrieval function 中的 ranking 过程。

    • UBR-MR 是上述变体的混合版本,其中matchingranking 过程都得到了优化。

    通过比较这些变体,我们得到了一些有趣的观察结果和有意义的见解,指导我们在实践中选择最佳变体。详细信息可参见实验章节。

    本文的贡献可以总结如下:

    • 对于长行为序列的建模,我们从数据角度提供了一种新的解决方案,即从整个用户序列中检索user behavior。这是一个实用的解决方案,它使当前的 CTR 系统在受到严格的效率约束的情况下能够使用整个用户序列。

    • 我们系统地数学化了 learning to retrieve user behaviors 的问题,并提出了一个有效的模型和相应的训练算法。UBR 是第一个支持可学习的任意检索函数(而不是预定义的检索函数)的工作。

    • 我们提出了更强大的变体:UBR-RUBR-MR 。它们采用了由 LTR 技术优化的可学习的 ranking 函数。我们进一步证明 LTR optimization 函数可以引导 optimization 方向,从而获得更准确的 CTR estimation 模型。它为我们的优化算法提供了理论保证。

    • UBR 有效且易于部署。离线实验表明,它达到了 SOTA 的性能。此外,UBR 已成功部署在 Huawei App Store 的广告场景中。在线 A/B test 期间,它实现了 6.6% 的平均 effective cost per mille: eCPM (有效的每千次展示费用)的提升率。它现在服务于 Huawei App Store 的主要广告流量。

  3. 本文是其会议版本 《User behavior retrieval for click-through rate prediction》 (即,UBR4CTR)的实质性扩展。期刊版本(本文)和会议文章(即 UBR4CTR)之间的主要区别在于:

    • 在本文中,我们提出 UBR-RUBR-MR 作为 UBR 框架的更好实现,而不是会议文章中提出的框架(表示为 UBR-M )。新版本加入了可学习的 ranking 函数,使检索模块更加强大。

    • 我们提出了一个 LTR optimization objective 来训练参数化的 ranking 函数,而不是会议文章中使用的 REINFORCE 算法。我们进一步对 LTR objective function 进行了广泛的理论分析。

    • 我们提供了与一些 retrieval-based 序列建模算法的比较实验的结果,这些算法比我们的会议文章更晚被提出。

    • UBR 已在实际应用中部署,而我们在会议版本中仅对公共数据集进行了实验。在工业数据集上进行的新实验验证了 UBR 可以与各种 CTR 模型结合使用。我们进一步提供了在线实验细节。这些事实表明,UBR 在实际应用中部署是高度可行的。

  4. 未来工作:对于未来的工作,我们的目标是将 UBR 扩展为一个更通用的框架,不仅可以从单个用户那里检索,还可以从其他相似的用户那里检索。当前的 UBR 框架仅从 target user 自身的 behaviors 中检索。来自其他相似用户或 items 的协同过滤信息可能会进一步提高 UBR 的性能。在这种情况下优化其效率是另一个重要方向。

54.1 基础知识

  1. 在本节中,我们将问题公式化并引入符号。对于 CTR estimation 任务,有 M 个用户构成的用户集 U={u1,,uM}Nitem 构成的 itemV={v1,,vN}user-item interactions 表示为 Y={yu,vuU,vV}

    yu,v={1,u has clicked v0,else

    此外,每个 user-item interaction 都与相应的上下文一起发生。我们分别使用 tsc 分别表示 timestamp 和其他的上下文特征。因此,每个数据点被公式化为 {u,v,c,ts,yu,v},表示在某个时刻 ts ,用户 u 是否在上下文 c 中点击 item v

  2. uvcmulti-field features 组成,其中 u=[f1u,,fKuu]v=[f1v,,fKvv]c=[f1c,,fKcc],其中:

    • fpu,fpv,fpc 分别表示用户、item 、以及上下文的第 p 个特征。

    • Ku,Kv,Kc 分别表示用户、item 、以及上下文的 feature fields 的数量。

  3. 为了建模用户不断变化的兴趣,我们将整个user behavior历史组织为 Hu={b1u,b2u,,bTu} ,其中 biu 表示用户的第 ibehavior,按 timestamp 升序排序。用户 ubehavior biuu 点击过的 item viu 、以及对应的上下文 ciu 组成,即 biu=[viu,ciu]

    注意,在 UBR4CTR 中,biu=[u,vi,ci],包含了用户特征。

    CTR estimation 的目标是根据 target user u 在上下文 c 中的历史行为,预测 u 点击 target item v 的概率。它可以表示为:

    y^u,v=FΘ(u,v,cHu)

    其中:FΘ 是带有参数 Θ 的所学到的函数。 在实践中,广泛使用的框架是:利用 Hu 最近的 k 个连续behavior作为 prediction 函数 FΘ 的输入。因为整个用户行为序列 Hu 可能很长而且是 noisy 的。它表示为:

    y^u,v=FΘ(u,v,cR(Hu))

    其中:R() 是一个固定的retrieval 函数,返回 Hu 的最近的 kbehavior

    无论 vc 如何,retrieval 函数 R() 返回完全相同的 set of user behaviors 。相比之下,对于我们的 UBR 框架,CTR estimation 任务的公式为

    y^u,v=FΘ(u,v,cRΦ(Huv,c))

    其中:RΦ(Huv,c) 是一个可学习的 retrieval 函数,可以在给定 target item v 和上下文 c 的情况下从 Hu 中检索 informativeuser behavior(注意, target user u 通过 Hu 来给定了)。因此,UBR 能够根据不同的 target items 或上下文从而动态选择最合适的user behavior,而不是像以前的工作那样使用静态和固定的 selection 策略。

  4. 我们在 Table 1 中总结了符号和相应的描述。

54.2 Behavior Retrieval 系统的架构

  1. 在本节中,我们介绍了 UBR 框架的基本架构。本节介绍的检索过程是 UBRbasic 实现,是不可学习的。但它构成了系统的骨干。一些模块可以用参数化的组件替换,从而自动优化 UBR 。可学习的组件的详细信息将在下一个章节中描述。

54.2.1 UBR 的总体框架

  1. Figure 2 所示,UBRretrieval 模块和 prediction 模块组成。

    • 顾名思义,retrieval 模块负责根据 prediction targetuser history archive 中检索 behaviorsprediction targetCTR prediction request 中的 user, item, and context features 组成。prediction target 被用作 query 从而从 user history archive 中执行搜索。

    • retrieval engine 检索出一部分 behaviors ,这些被检索到的 behaviors 被馈入到 prediction 模块。prediction 模块由两部分组成。

      • 第一部分是 aggregation 网络,它将学习 retrieved behaviors 的一个 unified representation 。该 aggregated representation 可以与其他特征组合起来并输入到任意 CTR 模型中,

      • 第二部分是这个CTR 模型。由于 CTR 模型可以是任意结构,因此 UBR 具有很高的灵活性,可以与现有的 CTR estimation 系统一起部署。

  2. 由于检索 user behaviors 类似于检索 recommender system literatureitems ,我们使用 matching and ranking 来划分整个检索过程。

    • matching 子模块通过访问索引结构从而快速获取 candidate behavior 的一个集合。

    • 然后,接下来的 ranking 子模块将计算每个behavior的分数,从而返回 top-k behaviors

54.2.2 Matching 子模块

  1. matching 子模块的目的是:通过快速获取 candidates 的一个小集合,从而来降低计算复杂度。为了实现此目的,我们选择将其实现为 index accessing 过程。

  2. 倒排索引(Inverted Index):作为典型的搜索引擎系统,我们将每个 user behavior 视为一个文档,将每个特征视为一个 termuser behavior 以倒排索引的方式存储。如 Figure 3 所示,我们以一条 behavior 记录 b1u 为例,展示倒排索引的构建过程。b1u 有五个特征:user id, category id, brand id, purchase day, and item price 。在特征工程过程中,原始特征全部重新映射到 unique idnumerical 特征被离散化,然后重新映射。user id“ID-1” )用作第一个索引,因为我们需要获取用户u 自己的 behaviors,而其他 remapped features 则以倒排索引的方式作为第二个索引。behavior b1u 被视为一个文档,并附加到相应的 posting lists 中。我们对每条behavior record遵循相同的协议并构建倒排索引。

    即,两层索引结构:最外层是 user-id,这一层索引将保存每个用户的所有行为。第二层是不同的 field,给定用户的不同 behavior 将根据特征取值的不同放入不同的索引。

  3. queryprediction target (u,v,c) 被用作 queryretrievalquery q 表示为:

    q=f1v OR  OR fKvvv,f1c OR  OR fKccc=f1 OR f2 OR  OR fn

    其中:n=Kv+Kc

    注意,这里不包含用户特征 f1u,,fKuu 。但是,UBR4CTR 中包含了用户特征 f2u,,fKuu,但是不包含 user-id 特征 f1u

    matching 子模块本质上是一个特征匹配的布尔搜索过程。用户 uHu 中所有包含特征 fiqbehaviors都将被检索出来。

54.2.3 Ranking 子模块

  1. matching 子模块获取 candidate behaviors后,我们执行 ranking 程序,从而返回 top-k 结果作为 final retrieved behaviors 。我们使用 BM25 来计算每个behavior的得分,因为它是搜索引擎系统中广泛使用的 ranking 函数。

    每个behavior biu 都被视为一个文档,因此给定query q 的情况下 biuranking score 定义为:

    s(biu,q)=fjqIDF(fj)×TF(fj,biu)×(k1+1)TF(fj,biu)+k1×(1b+b×|biu|avgdl)

    其中:

    • TF(fj,biu) 是特征 fjbiu 中的词频(term frequency )。根据 biu 中是否有 fjmatch ,其取值为 10

    • behavior biu 的长度定义为该 behavior中的特征数量,因此所有behavior都具有相同的长度 nn=Kv+Kc 。因此 |biu|avgdl=1,其中 avgdl 代表平均的文档长度。

      可以进一步化简为: s(biu,q)=fjqIDF(fj)×TF(fj,biu)×(k1+1)TF(fj,biu)+k1 。似乎 b 参数没什么用?

      考虑到 TF(fj,biu) 取值为 01 ,因此:

      TF(fj,biu)×(k1+1)TF(fj,biu)+k1={0if TF(fj,biu)=01else

      因此 k1 也没什么用?

    • k1b 是自由参数。

    • IDF 定义为:

      IDF(fj)=logNN(fj)+0.5N(fj)+0.5

      其中:N 是所有用户的所有 behaviors 的总数,N(fj) 是包含特征 fj 的文档的数量。

      IDF 项赋予常见特征比罕见特征更少的重要性。与常见特征相比,罕见特征意味着对用户偏好的更强信号,这是有道理的。

    top-k behaviors 构成 retrieval set ,即 RΦ(Huq)=RΦ(Huv,c)={b1u,,bku}。这里 Φ=,因为它是一个固定的检索函数。 retrieval set 被下游 prediction 模块使用,如 Figure 2 所示。

54.2.4 Prediction 模块

  1. 在本节中,我们介绍 UBRprediction 模块。在 prediction 模块中,所检索到的 user behaviors被聚合起来,相应的 representation 与其他特征一起馈入到 CTR 模型中,如 Figure 2 所示。UBR 框架具有高度灵活性,因为它可以与任意 CTR prediction 模型一起使用,因此可以方便地部署到实际应用中。

  2. Retrieved Behaviors 的聚合:为了聚合 retrieved behaviors 并获得全面的 representation ,我们使用注意力机制来聚合behavior representations

    ru=i=1kαi×biu,biuRΦ(Huv,c)

    其中:

    • ruaggregated behavior representation

    • biu=[f1v||||fKvv||f1c||||fKcc]Rd×(Kv+Kc) 为第 iretrieved behaviorembeddingd 为特征的 embedding size|| 为向量拼接。

      注意:在 UBR4CTR 中,biu=[u||vi||ci] ,包含了用户特征。

    • αi 为相应的 attention 权重:

      αi=exp(tanh(qWbiu))j=1kexp(tanh(qWbju))

      其中:

      • WRd×dattention layer 的权重矩阵。

      • qRd(Kv+Kc)query qdense embedding ,它是 feature embeddings 的拼接。

        注意:在 UBR4CTR 中,qRd(Ku+Kv+Kc) ,包含了用户特征。

    aggregated retrieved behaviorscomprehensive representation ruprediction target 的其他特征一起输入到 CTR 模型中。

  3. CTR Estimation ModelUBR 可以配备任意的 CTR estimation 模型。在这里我们使用一个简单的 DNN 结构作为 CTR 模型,在实验章节,我们还基于其他工业级的 CTR 模型测试了性能。final prediction 的计算方式为:

    y^u,v=FΘ(u,v,cRΦ(Huv,c))=MLPΘ(ru,u,v,c)

    其中:

    • u,v,c 分别是 user embeddingitem embeddingcontext embedding

    • rubehavioral representationΘMLP 的参数。

    由于我们的目标是准确地估计 CTR ,因此 prediction loss 的自然选择是广泛使用的交叉熵损失。带 L2 范数的 prediction loss 定义为:

    LΘ=Lce+Lr=(u,v,c)Dtr[yu,v×log(FΘ(u,v,cBu))+(1yu,v)×log(1FΘ(u,v,cBu))]+12λ||Θ||22

    其中:

    • Θ 包含 prediction 模块的所有参数,包括 CTR estimation 模型中的参数、以及 aggregation 函数中的参数。

    • Dtr 是训练集。

    • Bu=RΦ(Huv,c)retrieved behaviors。在优化 prediction 模块时,retrieval 模块是固定的。

    prediction 模块通过使用 SGD 来最小化 LΘ 从而被优化。

54.3 可学习的 Retrieval System

  1. 在本节中,我们介绍如何使 retrieval system 成为参数化的和可学习的。我们提出了三种可学习的 UBR变体:UBR-MUBR-RUBR-MR

    • UBR-MUBR-R ,顾名思义,是将 matching/ranking 过程分别转换为一个 parametric and learnable function

    • UBR-MR ,是同时优化 matchingranking 子模块的混合版本。

    可学习的 UBR 变体与 prediction 模块一起训练。在训练 retrieval 模块时,prediction模块是固定的,反之亦然。

  2. 我们将首先为可学习的 retrieval system 公式化 optimization 问题,然后给出 UBR 变体及其相应 optimization 的实现细节。

54.3.1 Retrieval 模块的优化目标

  1. 首先,我们为 retrieved behavior set 定义一个效用(utility )。它表示一个 behavior set 有多 “有用”。

  2. Utility 的定义:behavior set Bu 的效用是一个非正的标量(non-positive scalar ),可以反映 prediction 模块使用 Bu 作为输入时 CTR estimation 的准确性。在实现上,我们使用 negative log-likelihood 的倒数作为效用函数,即:

    U(Bu)=1L(yu,v,FΘ(u,v,cBu))

    其中:L(yu,v,FΘ(u,v,cBu)) 为负的对数似然。

    效用越高, CTR 模型使用集合 Bu 时的预测性能越好。

  3. retrieval 模块的 general objective 公式化为:

    maxΦJΦ=maxΦqDtrEBuπΦ(Buq)U(Bu)

    其中:πΦ(Buq) 是生成 retrieved behaviors 的底层概率分布。

    JΦq=EBuπΦ(Buq)U(Bu),因此 JΦ=qJΦq 目标函数 JΦoptimization 旨在找到最好的 retrieval 函数,从而能够最大化 CTR 模型的期望准确率。在以下小节中,我们将介绍 UBR 的不同变体及其相应的 optimizations

54.3.2 Matching 子模块的优化:UBR-M

  1. 可学习的 UBR 的第一个变体是 UBR-M ,它提出了一个可学习的 matching 函数。

  2. UBR-M 的结构:为了将 matching 过程变成一个可学习的子模块,我们选择将 query generation 参数化为一个可学习的 feature selection 过程。它将从 query q 中选择特征,所选中的特征用于 match the behaviors ,而不是 q 的所有特征。 Figure 4 所示,我们使用 self-attention network 来建模特征之间的交互和关系。具体来说,我们定义:

    Q=K=V=[f1fn]Rn×d

    其中:fiRdq 中第 i 个特征的 embedding

    自注意力机制定义为:

    SA(Q,K,V)=softmax(QKd)V

    multi-head self-attention 定义为:

    E=Multihead(Q,K,V)=Concat(head1,,headh)WOheadi=SA(QWiQ,KWiK,VWiV)

    其中:hhead 数量;WORhd×d,WiQRd×d,WiKRd×d,WiVRd×d 为投影矩阵。

    然后,multi-head self-attention 的输出 E 被馈入到具有 ReLU(x)=max(0,x) 激活函数的 multi-layer perceptron

    E^=MLP(E)Rn×1

    相应特征被选择的概率通过取 sigmoid 函数获得:

    P=[p1pKq]=σ(E^)Rn×1

    其中:σ(x)=11+exp(x)

    然后我们根据这些概率对特征进行采样,从而得到所选的特征子集。

    原来有 n 个特征,那么采样后有多少个特征?作者没说。

    总而言之,UBR-M 使用 self-attentive feature selection function 来参数化 matching 子模块。至于 rankingUBR-M 仍然使用 BM25 ranking function

  3. UBR-M Optimization :由于上述 feature selection 函数通过使用概率来采样,从而涉及不确定性并且不可微,我们可以直接通过 REINFORCE《Simple statistical gradient-following algorithms for connectionist reinforcement learning》)算法优化 maxΦJΦ

    我们给出了 JΦq 的梯度。retrieved behaviors 的概率 πΦ(Buq) 可以视为一种策略,梯度可以用似然比(likelihood ratio )来估计,如下所示:

    Φ(Jq)=ΦEBuπΦ(Buq)U(Bu)=BiuBqΦπΦ(Biuq)U(Biu)=BiuBqπΦ(Biuq)Φlog(πΦ(Biuq))U(Biu)=EBuπΦ(Buq)Φlog(πΦ(Buq))U(Bu)1Ll=1LΦlog(πΦ(Bluq))U(Blu)

    其中:L 为采样的次数;Bq 包含所有可能的 retrieved sets

    1Ll=1LΦlog(πΦ(Bluq))U(Blu)Φ(Jq) 的无偏估计。由于 UBR-M 的不确定性实际上来自 feature selection model ,我们可以得出:

    πΦ(Buq)=j=1np(fj)sj×(1p(fj))(1sj)

    其中:

    • fj{f1,,fn}p(fj)P=σ(E^)j 个元素,表示采样概率。

    • fj 被选中时 sj=1 ,否则 sj=0

    因此,我们得到:

    Φ(Jq)1Ll=1Lj=1nΦ[sjl×logp(fjl)+(1sjl)×log(1p(fjl))]×U(Blu)

    其中:fjl 为第 l 次采样中的第 j 个特征。

    通过使用 REINFORCE 算法,可以在 prediction 模块固定的情况下优化 UBR-M

  4. UBR-M 是我们在之前的文章 《User behavior retrieval for click-through rate prediction》 中提出的。虽然 UBR-M 提供了参数化的 retrieval 函数的实现,但它仍然是粗粒度的,因为特征对应的 posting list (例如 Figure 3 中的 “T-shirt” list )的所有 behaviors 可能会被完全删除,并且不会被 prediction 模块使用。此外,UBR-Mranking 模型是固定的 BM25 函数,这可能不是最佳选择。我们希望模型能够自动学习合适的 ranking 函数。

    matching 子模块本质上是为 ranking 子模块缩小候选空间。实验结果表明,优化 ranking 要比优化 matching 取得更好的效果。而优化 matching 的效果一般般。

    mathcing 子模块也可以认为是一种 ranking:将未被匹配的 behaviors 设置 ranking score = 0

54.3.3 Ranking 子模块的优化:UBR-R

  1. UBR 的第二种变体是 UBR-R ,它提出了一个可学习的 ranking 函数。

  2. UBR-R 的结构:固定的 ranking 函数不灵活,无法捕获每个 behaviorquery 之间的复杂关系。因此,我们需要一个可学习的ranking 函数。对于 UBR-R ,我们将 ranking 函数从确定性的 BM25 更改为参数化的函数,同时保留前面章节中描述的固定的 matching 过程。参数化的 ranking 函数定义为:

    s(biu,q)=DeepModelΦ(q,biu)

    其中:

    • s(biu,q) 是给定 q 的条件下,behavior biuranking score

    • DeepModelΦ 可以实现为具有参数 Φ 的任意结构,这里我们选择将其实现为 MLP 。,

  3. UBR-R Optimization:由于 getting the top-k behaviors 的操作不可微,所以我们无法直接优化 ranking 函数的参数 Φ 。为了解决这个问题,我们将 maxΦJΦ 中定义的期望效用的 optimization 转换为 LTR 问题,并将其用作 UBR-R 的优化函数。因为 LTR 是训练 ranking 函数最广泛的范式。

    作为 LTR 问题,我们要排名的 "items" 本质上是一个包含 kbehaviors 的集合。总共有 CNqk 个集合,其中 Nq 是来自 matching 子模块的 behaviors 总数,这意味着我们有 {B1u,,BCNqku}behavior 集合。

    如果我们将每个 behavior set Biu 作为 final retrieved behaviors 并将其输入到 prediction 模块,我们将得到效用 U(Biu)=1L(yu,v,FΘ(u,v,cBiu))。如 Figure 5 所示,CTR 模型给出的效用可以看作是 "relevance labels"ranking 函数 SΦ(Biuq) 旨在根据使用 behavior sets 时的性能从而对 behavior sets 进行排名。

  4. 在接下来的内容中,我们将分析 maxΦJΦ 的目标函数与LTR 目标函数之间的理论关系。我们证明对 LTR loss 进行优化可以优化方程 maxΦJΦ

    • 将原始问题转换为 LTR 任务:我们将 probabilistic choice model 定义为:选择 Biu 的概率 πΦ(Biuq) 与其 ranking score 成正比:

      πΦ(Biuq)=exp(SΦ(Biuq))j=1CNkexp(SΦ(Bjuq))

      其中: SΦ 是具有参数 Φ 的非负的评分函数。

    • LTR objective function 的定义:给定 query q ,观察到 ranking list B1uB2uBCNku 的似然为(不失一般性,我们假设 U(B1u)U(B2u)U(BCNku)) :

      Pr(q;Φ)=BiuBqBju:BiuBjuPr(BiuBju;Φ)=BiuBqBju:BiuBjuσ(SΦ(Biuq)SΦ(Bjuq))

      其中:

      • BiuBju (即,Biu 排名在 Bju 之前)的概率通过 sigmoid 函数 σ(x)=11+exp(x) 来计算,sigmoid 函数的输入为 SΦ(Biuq)SΦ(Bjuq)

      • q{Biu}i=1CNqkdesired and latent ranking

      我们记 TΦq=log(Pr(q;Φ)),则 TΦq 是一个 LTR 任务的 general optimization goal

    • 定理:LTR objective function TΦqZΦq 的一个下界,使得:

      TΦq<ZΦq

      其中:ZΦq=CqBiuBqSΦ(Biuq)

      并且:

      maxΦJΦqmaxΦZΦq

      定理的证明参考论文的附录。

      由于定理的成立,原始的目标函数可以转换为最大化 LTR objective TΦq 。因此我们可以使用普通的 LTR 技术来优化它。我们进一步给出 LTR loss 的实现细节。

    • 实现细节:为了有效地 inference ,我们将 ranking 函数表述为:

      SΦ(Biuq)=j=1ks(bjuq),bjuBiu

      其中:s(bjuq) 为参数化的 scoring 函数。

      为了进行推理,我们可以只使用 top-k ranking behaviors (使用 s() 函数)来形成 retrieved set BruS(Bruq) 是最大值),而不是对所有 BiuBq 计算 scores

      我们使用lambda loss《The lambdaloss framework for ranking metric optimization》)作为LTR loss 来优化UBR-R

      JΦrank=qDtri,j:BiuBju|ΔUi,j|×logσ(ΔSi,j)

      其中:ΔUi,j=U(Biu)U(Bju)ΔSi,j=SΦ(Biuq)SΦ(Bjuq)

      由于我们关心的是 top-1 behavior set ,并且为了快速训练,我们将损失函数简化为:

      JΦrank=qDtrj:B1uBju|ΔU1,j|×logσ(ΔS1,j)

      其中:ΔS1,j=SΦ(B1uq)SΦ(Bjuq)B1utop-k behaviors 组成(使用 s() 评分函数),Bju 是随机的 behavior set 且它的 ranking score 低于 B1u

      虽然简化了,但是 j:B1uBju 仍然会非常耗时。读者猜测这里进行了采样,否则就是 CNqk,复杂度太高。

      实现方式:

      • 对于每个样本,计算它的 query q

      • 然后计算每个 behavior bjuHu 计算它的 score s(bjuq)

      • 然后选择 top-k scoreskbehaviors,得到 B1u ,以及对应的 SΦ(B1uq)U(B1u) 。注意,为了得到 U(B1u) ,需要进行一次 inference

      • 然后采样 G 组,每组随机采样 kbehaviors ,得到 Bju,g1jgG ,以及对应的 SΦ(Bjuq)U(Bju) 。注意,这里需要进行 Ginference

      • 最后,计算 j:B1uBju|ΔU1,j|×logσ(ΔS1,j)

54.3.4 同时优化两个子模块:UBR-MR

  1. 在以上章节中,我们分别讨论了如何优化 matching 子模块和 ranking 子模块。将它们放在一起并尝试同时优化两个子模块是合理的。两个子模块的目标是统一的:prediction 模块更好的预测准确率。因此,可以如 Algorithm 1 所示,同时优化 matchingranking 函数。

    • 我们首先使用前面章节中描述的 fixed behavior retrieval systemprediction 模块进行预训练。由于 prediction 模块在 matchingranking 子模块的训练过程中提供监督信号,因此首先对其进行热身并使其具有基本的判别能力非常重要。

    • 之后,轮流训练 retrieval 模块(第 4-8 行)和 prediction 模块(第 9行),直至收敛。

      是每个子模块训练一个 epoch 再轮流、还是每个子模块训练一个 batch 再轮流?作者未讲明这一点。UBR4CTR 是每个子模块训练一个 epoch,然后再训练另一个子模块一个 epoch

    Algorithm 1 所示, matchingranking 函数朝着同一目标一起优化。

54.4 模型分析

  1. 本节分析了时间复杂度,并将我们的框架与现有的 retrieval-basedCTR 模型进行了比较。

54.4.1 时间复杂度分析

  1. 我们关注 retrieval 过程的时间复杂度,因为它是 UBR 中最耗时的部分。

    • 对于 UBR ,由于 matching 过程只是简单地访问索引,因此其时间是一个常数 nC,其中 nfeature fields 的数量,C 是访问一条 inverted index entry 的时间。C 受存储系统的影响,在这里可以看作是一个常数。

    • 对于查找 top-k behaviorsranking 过程,时间复杂度为 O(K) ,其中 K 是从 matching 子模块中获取的 candidate behavior set 的大小。因为评分过程的时间复杂度与列表长度成线性关系。

    因此,UBR 的总复杂度为 nC+O(K) 。但 UBR 带来的主要耗时是 nC 部分,因为它涉及磁盘访问操作;而另一部分 O(K) 可以由 GPUCPU 在内存中计算。然而,大多数基于 behavior modelingCTR 模型可能具有 C 部分,因为它们需要获取最近的 user behaviors 。此外,可以使用快速存储、更快的数据访问系统(如 Redis 等)对 C 部分进行优化。

    这只是 inference 的时间复杂度。而训练的时间复杂度相当高。

54.4.2 不同的 Retrieval-based 的方法的比较

  1. 作为用于 CTR estimationbehavior modeling 的新研究方向,关于 retrieval-basedCTR 模型的研究很少。

    • 最相似的模型是 SIMSIM 有两个变体,SIM-HardSIM-Soft

      • SIM-Hard 是一个固定的搜索函数,它使用 category id 等单一特征从用户行为序列中进行搜索,这不够灵活,并且可能导致 retrieved behaviors 不是最优的。

      • SIM-Soft 使用局部敏感哈希 (local-sensitive hashing : LSH )进行 MIPS 从而找到相对于 target item embedding 最邻近的 item embeddingitem embedding 使用辅助损失进行训练。

        SIM-Soft 的第一个缺点是它依赖于辅助任务,如果 user behaviors 太多,则需要随机采样。

        第二个缺点是LSH 使用的索引应该经常更新(但是实际上没有更新),因为 item embedding 在训练时会发生变化。

        最后,ranking 函数仅限于内积形式,缺乏建模能力。

    • ETA 使用 SimHash 生成 item embeddings 的二进制指纹,并计算 target item 指纹与 behaviors 指纹之间的汉明距离

    • STARec 利用 item embeddings 之间的余弦相似度作为 ranking 函数。

    因此,所有现有的 retrieval-based 的模型都遵循预定义的函数来检索 behaviors ,因此缺乏灵活性和学习能力。

    基于本文中描述的 matchingranking ,我们在 Table 2 中总结了现有模型。SIM-Hard 本质上使用预定义的特征来匹配 user behaviors ,而 SIM-Soft 直接使用 MIPSbehaviors 进行排序,而无需matching 过程。 ETASTARec 也在 Table 2 中进行了总结。

  2. 总体而言,UBR 的检索机制与其他模型的比较如 Figure 6 所示。

    • 对于 UBRmatching 子模块在很大程度上减少了 user behavior set 的大小。由于这个 reducing 过程本质上是访问 selected features 的倒排索引,因此可以非常快速地进行,效率很高。设计这样的 matching 过程最重要的原因是避免对整个用户历史序列 Hu 进行全面的计算,因为它可能非常长。

    • 相反,其他 one-stage retrieval models 选择对整个序列进行计算。为了快速地进行计算,它们实现尽可能简单的检索函数,例如汉明距离(ETA) 或余弦相似度 (STARec )。因此,这些模型的检索函数都是非参数化的,并且基于某种预定义形式。尽管非参数化的检索函数的输入可以是 learnable embeddings,但函数的预定义形式限制了建模能力。因此,具有任意参数的可学习的检索函数是我们文章的主要关注点。

      此外,我们将检索函数实现为一个两阶段过程,以平衡有效性和效率。更多实验证据可在实验章节中找到。

  3. 至于 UBR 的不同变体:

    • UBR-M 是由我们的会议文章(《User behavior retrieval for click-through rate prediction》)提出的,它使用 selected features 来匹配相应的 user behaviorsfeature selectionREINFORCE 算法优化。但它仍然使用固定的 ranking 函数。

    • UBR-R 是一种新模型,它使用所有特征来匹配 behaviors ,从而产生比UBR-M 更大的 candidate behavior set 。我们提出了一个参数化的 ranking 函数,它可以是任意结构,我们使用 LTR 对其进行优化。由于LTR 过程有效地训练了 ranking 函数,UBR-R 可以使用所有特征来匹配 candidate set 并准确获得 top-k behaviors

    • UBR-MR 是上述变体的混合版本,同时优化了 matching 子模块和 ranking 子模块。虽然 UBR-MR 同时优化了两个子模块并可以获得更好的性能,但它并不总是最好的选择。

      • 第一个原因是它的复杂性。在训练中,两个子模块都进行了优化,并且消耗的时间比 UBR-MUBR-R 大得多。

      • 第二个原因是,如果数据集只有非常有限的特征(例如,item features 只有 item id 以及 category id ),那么在 matching 中选择特征并不总是一个好主意。在这种情况下,使用所有特征来匹配 behaviors 是更好的选择。

      实验章节中介绍了更多相应的结果,以及选择更好变体的见解。

54.5 实验

  1. 本节将介绍大量实验的细节。我们将我们的模型与几个强大的 baselines 进行了比较,我们的模型在离线和在线评估中都取得了 SOTA 的性能。实现代码已发布(https://github.com/qinjr/UBR4CTR)。

  2. 数据集:我们使用三个真实的、大型的 users online behaviors 数据集。数据集的统计数据可以在 Table 3 中找到。

    • Tmall 数据集:由阿里巴巴集团提供,其中包含 20155 月至201511 月天猫电商平台上的user behavior历史记录。

    • Taobao 数据集:包含来自淘宝中检索到的user behavior数据。它包含 20171125 日至 123日的user behaviors,包括点击、购买、添加到购物车、以及喜欢商品等几种behavior类型。

    • Alipay 数据集:由支付宝收集。用户的在线购物behaviors是从 201571日到20151130日。

  3. 数据集预处理:对于 UBR ,数据集被处理成逗号分隔特征的格式。包含 user, item and context features 的一行被视为一个 behavior 。对于 baselinesuser behaviors 仅按时间戳排序。由于这三个数据集仅包含点击样本(即正样本),我们按照 《Deep interest evolution network for click-through rate prediction》《Deep interest network for click-through rate prediction》 中的处理协议进行 1:1 负采样。

  4. Basic Retrieval Engine:我们使用逗号分隔的 tokenizer 将数据集插入一个 retrieval engine 。我们使用ElasticSearch 作为 backbone retrieval engine client ,从而对公共数据集进行离线实验。TmallTaobao、以及 Alipay 数据集的 posting list 平均长度分别为 6.97.38.9

  5. 训练集和测试集的拆分:我们使用 leave-one-out 策略(按时间顺序排序)来拆分数据集。

    • 训练集包含第 1(T2)user behaviors ,其中第 1(T3)behaviors 用于预测第 (T2)behavior

    • 类似地,验证集使用第 1(T2)behaviors 来预测第 (T1)behavior

    • 测试集使用第 1(T1)behaviors 来预测第 Tbehavior

    T 表示用户行为序列的长度。

  6. 评估指标:AUCLogloss (简写为 LL )。

  7. baselines:我们将 UBR 与一些强基线进行比较,这些 baseline 来自 user behavior-basedCTR 模型、以及序列推荐模型。

    • DeepFM 是一种混合模型,以双塔方式结合了 FM 和深度神经网络。

    • PNN 是一种单塔模型,在深度网络中结合了基于内积的特征交互。

    • DCN 使用多层交叉网络来建模特征交互。

    • GRU4Rec 基于 GRU ,这是第一篇使用 recurrent cells 来建模 sequential user behaviors 从而用于 session-based recommendation 的工作。

    • Caser 是一种 CNNs-based 的模型,它将用户序列视为图像,因此使用水平的和垂直的卷积层来捕获 user behaviors 的时间模式。

    • SASRec 使用 Transformer 。它将 user behaviors 视为 tokens 的一个序列,并使用自注意力机制和 position embedding 来捕获 behaviors 之间的依赖关系和关联。

    • HPMN 是一种分层周期性记忆网络(hierarchical periodic memory network ),旨在处理非常长的用户历史序列。此外, user memory state 可以增量地更新。

    • MIMN 基于神经图灵机(Neural Turing Machine ),可对建模用户兴趣漂移的 multiple channels 。该模型是作为 ser interest center 的一部分来实现的,可以建模非常长的用户行为序列。

    • DIN 是第一个在在线广告的 CTR prediction 中使用注意力机制的模型。

    • DIEN 使用带有注意力机制的两层 RNN 来捕捉不断演变的用户兴趣。它使用计算出的 attention values 来控制第二个 recurrent layer ,称为 AUGRU

    • R-Att 使用 L 范数来正则化注意力的稀疏性。

    • Reformer 是针对 Transformer 结构提出的,可以有效地处理长序列。它使用 LSH 来降低自注意力的计算复杂度。

    • SIMretrieve-based 的模型,其动机与 UBR 相似。SIM有两种变体:SIM-HardSIM-Soft,分别利用确定性的 hard search 、以及 embedding-based MIPS

    • ETA 利用 SimHash 算法生成 target item 的二进制指纹、以及 historical items 的二进制指纹。它使用汉明距离来获取 top-k nearest behaviors 从而作为 retrieved behaviors

    • STARec 直接根据 target itemembeddingbehaviors embeddings 来计算余弦相似度。然后它检索与 target item 最相似的 behaviors

54.5.1 实验结果

  1. 在本节中,我们对 UBR 进行了详细的实验,包括整体性能比较、消融研究和超参数研究。此外,还介绍了 UBR 的训练过程的比较、以及推理时间比较。

a. 整体性能
  1. 我们对基线进行了两组实验。

    • 第一组:由于传统的 user behavior modeling 利用最近的连续行为,我们将最近的 kbehaviors 馈入基线。k 值设置为用户行为序列平均长度的 20%

    • 第二组:整个用户序列被馈入到基线模型中。

    为了公平比较,UBR 将从整个用户序列中检索 kbehaviors 。基线使用不同的网络结构来学习 user behaviorsunified representation ,而 UBR 聚合 retrieved behaviors 。不同模型计算出的 representation of user behaviors 和其它特征一起被馈入到 DNN 。我们对不同的模型使用相同的 DNN 结构,唯一的区别是模型如何利用用户行为数据。 结果如 Table 4 所示。从表中我们发现以下事实:

    • (i)UBRUBR-R/UBR-MR)取得了最佳性能。在三个数据集上,它的 AUC 比最佳基线模型分别高出 5.1%2.1%0.9% 。在三个数据集上,Logloss 分别改善了 11.2%0.2%3.8% 。结果证明了 UBR 的有效性。

    • (ii):通过比较 retrieved-based 的模型和传统模型(recent k behaviors),观察到显著的改进,这表明直接检索 user behaviors 的重要性。

      使用 recent k behaviors 的传统模型表现不佳。这表明最近的连续行为序列可能没有包含足够的时间模式。因此,模型无法有效地捕获 patterns 。虽然基线模型使用了复杂的网络结构,但由于输入数据的原因,它们无法获得良好的性能。

    • (iii) :对于使用全长序列的传统基线,我们可以发现大多数基线模型的性能都有所提高,表明较长的序列携带着更丰富的信息和模式。

      然而,UBR 仍然优于传统基线。这表明较长的序列可能包含更多的噪音和不相关信息,因此有必要从整个序列中只获取最相关的信息。

    • (iv)UBR-RUBR-MR 优于现有的 retrieval-based 的模型和 UBR-M 。这验证了我们新提出的参数化的 ranking 函数和相应的 LTR training 的优越性。

  2. 为了增加测试难度并进一步验证 UBR 的有效性,我们通过按用户而不是时间来拆分 Tmall 数据集,并进行了额外的实验。我们从 non-retrieval models 中选择了 DINDIEN ,因为它们在 Tmall 数据集上表现良好,并列出了所有 retrieval-based 的基线。我们根据用户来拆分,训练集、验证集、测试集分别包含 80% 的用户及其对应的用户行为序列。结果如 Table 5 所示。

b. 消融研究
  1. Retrieval 模块的重要性:为了验证 retrieval 模块的必要性,我们使用最近 k behaviors 而不是 retrieval 模块,然后使用不同的聚合函数。结果如 Table 6 所示。我们测试了两种不同的 behavior 聚合函数:sum pooling: SPattention: ATT 从表中我们发现:

    • 配备 UBR 模块后,两种聚合函数的预测性能都得到了很大程度的提高。结果证明了 retrieval 模块的重要性。

    • 此外,我们可以发现,即使采用像 sum pooling 一样简单的聚合函数,SP w\ UBR-R 也可以实现与 ATT 相比具有竞争力的性能。这一事实证明了 retrieved behavior data 的有效性。

    • 此外,UBR-R 可以带来比 UBR-M 更多的性能提升,这验证了我们提出的 ranking 函数和 LTR training 的有效性。

  2. 不同 UBR 变体之间的比较:为了弄清 retrieval 模块的不同子过程的影响,我们在 UBR-Fix (固定的 retrieval system)、UBR-MUBR-R (使用两种不同的 ranking lossesBPR loss《BPR: Bayesian Personalized Ranking from Implicit Feedback》)、lambdaloss )以及 UBR-MR 之间进行了另一次消融实验。 结果如 Table 7 所示。我们有以下观察和分析:

    • (i)UBR-Fix 在大多数情况下表现不如 UBR 的三个可学习的变体,这表明有必要使 retrieval system 可学习。

    • (ii):在这三个数据集中,UBR-R (Lambda) 优于 UBR-R (BPR) 。这表明在 JΦrank 中加入 ΔUi,j 有利于提高 ranker 的性能。

    • (iii)UBR-MRTmallAlipay 数据集上优于 UBR-RUBR-M ,但在 Taobao 数据集上表现较差。此外,在 Taobao 数据集上,UBR-Fix 优于 UBR-M

      • UBR-MUBR-MR 的共同点在于它们都使用 selected features 作为 query 来进行 matching 过程。但是, Taobao 数据集只有两个 item featuresitem id, category id)。如果 selector 为某些样本删除一个特征(例如 category id ),则许多有用的 behaviors 将被删除,并且没有机会进行排名。相反,TmallAlipay 数据集有四个 item featuresitem id, category id, merchant id, and brand id ),这为 feature selector 提供了更大的操作空间。因此,matching 过程可以得到更充分的训练,并产生更好的性能。

      • 至于 UBR-Fix/UBR-R ,它们从更大 candidate set (从所有可能得特征中获取)中对 behaviors 进行排名,因此它们在 Taobao 数据集上取得了更好的性能。

    • (iv):我们进一步介绍了每个 UBR 变体的训练时间。

      • UBR-Fix 无疑是最快的,因为它使用了不可训练的 retrieval 模块。

      • UBR-MR 的训练时间大约是 UBR-R2-3 倍,因为两个子模块都经过了优化。因此,UBR-MR 的收敛速度要慢得多。

    在大多数情况下,考虑到 UBR-R 在训练效率和测试性能之间的良好平衡,它已经足够好了。特别是当数据集的特征很少时, learning to match 不是一个好主意(例如 Taobao 数据集)。总而言之,UBR-R 是一个足够好的做法;而 UBR-MR 是一个更难的版本,可以实现更好的性能,但它需要更多的成本训练并增加整个系统的复杂性。

c. 超参数研究
  1. 本节我们研究了 retrieval size k 的影响。Figure 7 展示了 UBR-MUBR-RUBR-MR 在不同 retrieval size k 下的性能。从图中可以看出,AUClogloss 的波动在绝对值上并不是很剧烈。然而,每个数据集都存在一个最优规模。这表明较小的 k 可能不包含足够的 behaviors 和信息;而太多的 retrieved behaviors 并不总是对性能有益,因为它们会包含更多的噪音。

d. 训练过程
  1. 本节我们展示了 UBR 框架的训练过程。我们以 UBR-R 为例。prediction 模块的性能曲线如 Figure 8 所示。在曲线中,我们绘制了不同 test pointstest AUC 值。图中,“P” 对应于 prediction 模块的训练过程(蓝色阴影区域),而 “R” 代表 retrieval 模块的训练(粉色阴影区域)。

    • 我们在训练数据集每间隔迭代 20% 后测试一次 CTR estimation 的性能。因此,对于 prediction module training 的一个 epoch ,我们可以有五个 test points

    • 当训练好 retrieval 模块时,我们每个 training epoch 测试一次 prediction 模块。

    从图中可以看出:

    • 在第一个粉色区域( retrieval 模块正在训练)中, prediction 模块的测试性能显著提高。在粉色区域中,prediction 模块是固定的,因为两个模块是轮流训练的。

    • 在第一个粉色区域之后,prediction 模块接近收敛。接下来的训练逐渐提高性能,直到最终收敛。

    test AUC 曲线验证了 UBR 的训练策略,retrieval 模块实际上学习了有意义的模式,因为它可以在训练期间检索更多有用的 behaviorstest AUC 正在提高表明了这一点)。

e. 推理时间和内存开销
  1. 为了解决效率问题,我们比较了UBR 和其他 user behavior-basedCTR 模型的推理时间。Figure 9 显示了模型的平均推理时间。该时间是通过将测试数据集上的总时间除以 batches 数量来计算的。仅包括包含前向计算和 behavior retrieval 的时间。我们在具有 Intel(R) Core(TM) i7-6900K CPU 处理器、一块 NVIDIA GeForce GTX 1080Ti GPU 处理器和 128 GB 内存的机器上实现了两个版本的 index storage 。一种索引基于Elastic Search ,并持久保存在磁盘上;而另一个版本则将索引结构加载并存储在内存中。

    • UBR-MUBR-RUBR-MR 具有相似的推理时间,因此我们使用 UBR 作为统一的名称。因为主要开销来自 retrieval 过程。 如图所示,UBR (in disk) 的推理时间最长。但是,在这三个数据集上,每个样本的推理时间不超过 1ms ,这表明合并 retrieval 模块不会严重损害效率。

    • 由于公共数据集的索引结构可以存储在内存中,我们实现了内存存储版本的 UBR 并测试了它的推理时间。我们发现更快的存储将显著提高 retrieval 模块的效率,并验证了 UBR 的主要开销来自访问磁盘。 倒排索引所消耗的内存存储如 Table 8 所示。

    总体而言,UBR 会带来一些效率问题和内存开销,但并非无法忍受。我们接下来的在线实验进一步验证了这一点。

f. UBR 与其他 Retrieval-based 的模型的详细比较
  1. 在本节中,我们从有效性和复杂度方面比较了 UBR-MRone-stage retrieval models 。我们在 Table 9 中列出了test AUC 、训练时间、以及推理时间。T-Inf 是模型完成一个 batch 测试样本的计算的 wall time 从表中我们可以看出:

    • UBR 的性能最好,但其训练时间明显超过基线,这表明没有免费的午餐。

    • UBR 的推理复杂度为 nC+O(K)Kmatching 过程给出的 candidate behaviors 的数量);而其他模型的复杂度为 O(T) ,其中 T 是整个用户序列长度。TK 大得多,但 UBRmatching 操作需要额外的开销 nC 来访问倒排索引。在实验中,我们观察到这些模型的推理时间没有显著差异。

    综上所述,结果表明,与其他 one-stage retrieval models 相比,UBR 具有更好的效果,以及具有竞争性的推理效率。

g. 非常长的用户行为序列
  1. 我们在 Tmall 数据集中选取了 behaviors 超过 1,000 个的用户,从而对非常长的序列进行了广泛的实验。选定的用户数量为 2,900 。我们为每个用户使用一个 positive item 和九个随机采样的 negative items ,形成一个名为 Tmall-Long 的数据集。这个数据集用于推理过程。本次实验在具有 12 GB GPU 内存的 NVIDIA 1080 Ti 卡上进行。我们在这个数据集上测试了 UBR 与其他 attention-based models 的性能和开销。 结果如 Table 10 所示。从表中可以看出:

    • UBR-MR 明显优于 attention-based 的模型。这表明,对于非常长的序列,UBR 表现出比注意力机制更好的建模能力。因为在 1,000 behaviors 中,可能会有很多噪音,而 retrieval 模块可以直接关注最相关的行为。

    • 就开销而言,DIN 是最快的模型,但 UBR-MR 在速度上仍然优于 DIEN 。这种推理效率是可以接受的。

    • 至于 GPU 内存消耗,UBR-MR 是最好的,因为只有 matching 子模块给出的 candidate behaviors 才会放入 GPU 内存中,我们将 candidate behaviors size 设置为 100 。这意味着不会有超过 100 behaviors 被馈入到 ranking 子模块。

      SASRec 占用了太多内存,超过了 GPU 的内存大小。

    这个实验展示了从很长的序列中 retrieving behaviors (而不是直接将整个用户序列馈入到 attention model )的优势。如果序列长度增长到 10,000 的级别(如 《Search-based user interest modeling with lifelong sequential behavior data for click-through rate prediction》 所示),由于计算和 GPU 内存的负担很重,attention 无法直接使用。但是 retrieval 模块可以处理它,因为我们总是可以获取一小部分 behaviors ,并仅将这一小部分 behaviors 提供给 prediction 模型。

54.5.2 真实世界的部署

  1. UBR 已在真实世界部署中进行了测试,并取得了可喜的成果。在本节中,我们展示了在 Huawei App Store 付费广告场景中获得的离线和在线评估结果。app store 每天有数亿活跃用户,每天会产生数百亿个用户日志事件,这些事件包括浏览、点击和下载 apps 等隐式反馈。

a. 工业数据上的离线评估
  1. 设置:离线评估是在工业数据集上进行的。工业数据集由 Huawei App Store 上主页广告场景的八天日志组成。前七天的日志用于训练,第八天的日志用于测试。对于工业数据集,positive ratio 约为 0.3%UBR 从用户过去一年的 behaviors 中检索数据,这意味着每个用户的 retrieval pool 都包含该用户去年的所有 behaviors

    我们通过将 retrieved behaviors (聚合后)作为新特征添加到 base model 来测试 UBR 性能。此 UBR 特征与其他常规特征拼接在一起,并馈入到 CTR 模型。base 模型是 DCNDeepFMPNN ,因为它们是广泛使用的工业级 CTR estimation 模型。

  2. 结果:结果如 Table 11 所示。

    • 对于三个不同的 base modelsUBR-M 带来了 0.95%0.93%1.17%AUC 改进。

    • base model 相比,UBR-RAUC 指标提高了 1.10%1.09%1.38% 。结果验证了 UBR 可以与其他模型一起使用,并实现显著的性能提升。

    • 从表中,我们还观察到 UBR-R 可以比 UBR-M 带来更多的性能提升,这表明 ranking functionUBR 系统的重要组成部分。

    • 至于 UBR 的开销,每个 batch 的推理时间增加了 31% ,但仍少于 100 毫秒。由于倒排索引结构在内存中被存储,内存消耗增加了 56% 。这个成本对于工业级应用来说是可以接受的。

b. 在线 A/B Test
  1. 设置:我们在 Huawei App Store 的付费广告场景中进行 A/B test 。部署的场景位于 Huawei App Store 的主页上,它是 App Store 的主要广告服务。商业的 baseline 表示为 MUBR-enhanced model 表示为 MUBR。它们之间的唯一区别是:MUBR 配备了 UBR (具体而言是 UBR-R )从过去一年检索到的 user behaviors 。在 A/B Test 实验持续 24 天,分为两个阶段:

    • 第一阶段随机选取总用户数的 20% ,其中一半作为实验组,另一半作为对照组。

    • 第二阶段随机选取 50% 的用户进行 A/B Test

    两个阶段都持续 12 天。每个阶段,我们进行 5 天的 A/A test ,然后进行 7 天的 A/B test 。在 A/A test 期间,所有用户都由base model M 提供服务。在 A/B test 期间,对照组用户使用base model M 提供的 apps ,而实验组用户使用 MUBR 提供的 apps 。我们使用 Redis 存储 user behaviors 的倒排索引结构。 我们使用一台配备 48 core Intel Xeon CPU E5-2670 (2.30 GHz)400 GB RAM 、以及2张 NVIDIA TESLA V100 GPU 卡的机器来部署 UBR 。在压力测试中, MUBR 的推理时间与 M 相比增加不到 30%

  2. 指标:我们检查了 online evaluation 中广泛采用的两个指标:

    • 有效的每千次展示费用(effective Cost per Mille: eCPM):

      eCPM=total incomenum of impressions×1000
    • 点击率(Click-Through Rate: CTR):

      CTR=num of downloadsnum of impressions

    其中:num of downloadsnum of impressions 分别是下载次数和展示次数。

  3. 结果:eCPMCTR 的改进分别如 Figure 10Figure 11 所示。可以看到,系统非常稳定:

    • A/A test 期间,eCPMCTR1.5% 以内波动。

    • 在第 6 天到第 12 天和第 18 天到第 24 天,A/B test 期间,当 MUBR 投入使用时,可以观察到显著的改善。

      • 20% 流量 A/B test 中,eCPMCTR 的平均提升分别为 4.5%6.6%

      • 对于 50%流量的 A/B testeCPMCTR 平均分别提高了 6.6%11.1%

    这些结果清楚地证明了UBR 的优越性,目前它已全面部署在 Huawei App Store 的付费广告场景中,并服务于所有流量。