返回介绍

数学基础

统计学习

深度学习

工具

Scala

十七、MIMN [2019]

发布于 2023-07-17 23:38:25 字数 28885 浏览 0 评论 0 收藏 0

  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 系统的协同设计 co-design 来完成 CTR 预估任务。该解决方案已经部署在世界领先的广告系统中,使我们能够处理长的用户行为序列建模。
  • 论文设计了一个新颖的 UIC 模块,它将沉重 heavy 的用户兴趣计算与整个 CTR 预估过程分离。UIC 对流量请求没有延迟,并允许任意复杂的模型计算,其中模型计算以离线模式工作。

    • 论文提出了一个新颖的 MIMN 模型,它改进了原有的 NTM 架构,具有记忆利用正则化memory utilization regularization 和记忆归纳单元 memory induction unit 两种设计,使其更适合用于兴趣的学习。MIMN 很容易用 UIC server 实现,其中 UIC server 增量地更新用户的兴趣representation
    • 论文对公共数据集和从阿里巴巴广告系统收集的工业数据集进行了仔细的实验。作者还详细分享了在部署所提出的解决方案的实际问题方面的经验。
  1. 相关工作:

    • 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 。一些工作利用记忆网络进行用户兴趣建模。然而,这些方法忽略了长期兴趣建模和实际部署问题。

17.1 模型

17.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 的。

17.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 ,以通过提高记忆利用utilization来提升 UIC 中的记忆张量的表达能力。

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

  2. NTM:标准的 NTM 通过记忆网络从序列数据中捕获并存储信息。在 time step $ t $ ,记忆memory 的参数记作 $ \mathbf M_t\in \mathbb R^{M\times d} $ ,其中包含 $ M $ 个记忆槽 memory slot $ \left\{\mathbf {\vec m}_t(i)\right\}_{i=1,\cdots,M} $ ,其中 $ \mathbf{\vec m}_t\in \mathbb R^d $ 。

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

    • 记忆读取memory read:给定第 $ t $ 个行为的 embedding 向量 $ \mathbf{\vec e}_t\in\mathbb R^{d_e} $ 作为输入,控制器会生成一个 read key $ \mathbf{\vec k}_t\in \mathbb R^d $ 来寻址记忆 address memory 。它首先遍历所有的记忆槽,生成一个权重向量 $ \mathbf{\vec w}_t^r\in \mathbb R^M $ :

      $ w_t^r(i) = \frac{\exp\left(K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(i)\right)\right)}{\sum_{j=1}^M \exp\left(K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(j)\right)\right)},\quad i=1,2,\cdots M $

      其中:

      $ K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(i)\right)=\frac{\mathbf{\vec k}_t^\top \mathbf {\vec m}_t(i)}{\left\|\mathbf{\vec k}_t\right\|\times \left\|\mathbf {\vec m}_t(i)\right\|} $

      然后计算加权的memory summarization 作为输出 $ \mathbf{\vec r}_t\in \mathbb R^d $ :

      $ \mathbf{\vec r}_t = \sum_{i=1}^M w_t^r(i)\mathbf {\vec m}_t(i) $
    • memory write:类似于memory read 操作,我们生成用于 memory write 寻址的权重向量 $ \mathbf{\vec w}_t^w\in \mathbb R^M $ 。控制器还生成了额外的两个keyadd vector $ \mathbf{\vec a}_t\in \mathbb R^d $ 、erase vector $ \mathbf{\vec z}_t\in \mathbb R^d $ ,从而控制 memory 的更新:

      $ \mathbf M_t = (1-\mathbf Z_t)\odot \mathbf M_{t-1} + \mathbf A_t $

      其中:

      • $ \mathbf Z_t = \mathbf{\vec w}_t^w\otimes \mathbf{\vec z}_t\in \mathbb R^{M\times d} $ 为 erase matrix, $ \otimes $ 为向量的外积。

        $ \mathbf Z_t $ 相当于每个 slot 提供一个加权的 erase vector $ \mathbf{\vec z}_t $ ,第 $ i $ 个 slot 权重为 $ w_t^w(i) $ 。

      • $ \mathbf A_t=\mathbf {\vec w}_t^w\otimes \mathbf{\vec a}_t\in \mathbb R^{M\times d} $ 为 add matrix

        $ \mathbf A_t $ 相当于每个 slot 提供一个加权的 add vector $ \mathbf{\vec a}_t $ ,第 $ i $ 个 slot 权重为 $ w_t^w(i) $ 。

      • $ \odot $ 为逐元素乘积。(注:原文说的是 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 利用达到平衡。

    令 $ \mathbf{\vec g}_t = \sum_{c=1}^t \mathbf{\vec w}_c^{\tilde w} $ 为截止到 $ t $ 时刻的累积的、各 slot 的更新后的权重,其中 $ \mathbf{\vec w}_c^{\tilde w} $ 为时刻 $ c $ 的、re-balancedwrite weight

    $ \mathbf P_t = \text{softmax}\left(\mathbf W_g\mathbf{\vec g}_t\right)\in \mathbb R^{M\times M}\\ \mathbf{\vec w}_t^{\tilde w} = \mathbf P_t\mathbf {\vec w}_t^{w}\in \mathbb R^M $

    其中:

    • $ \mathbf {\vec w}_t^{w} $ 为原始的 write weight,而 $ \mathbf{\vec w}_t^{\tilde w} $ 为新的 write weight

    • $ \mathbf P_t $ 为slot 之间的权重转移矩阵,它取决于:

      • $ \mathbf{\vec g}_t $ ,它代表了截止到 $ t $ 步每个 memory slot 的累积利用accumulated utilization

      • 参数矩阵 $ \mathbf W_g $ ,它通过正则化损失来学习:

        $ \mathbf{\vec g} = \mathbf{\vec g}_T=\sum_{t=1}^T\mathbf{\vec w}^{\tilde w}_t\\\mathcal L_{reg} = \lambda\sum_{i=1}^M\left(g(i)-\frac 1M\sum_{j=1}^Mg(j)\right)^2 $

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

        $ \mathcal L_{reg} $ 有助于降低不同 memory slotwrite weight 的方差。

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

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

    MIU 还包含了一个内部的 memory $ \mathbf S\in \mathbb R^{M\times d} $ ,它具有和 NTM 相同的槽数 $ M $ 。这里我们将每个 memory slot 视为一个用户兴趣通道user interest channel 。在时刻 $ t $ ,MIU

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

      $ \left\{i:w_t^r(i)\in \text{top}_k \left(\mathbf{\vec w}_t^r\right)\right\}_{i=1,\cdots,k} $

      其中 $ \mathbf{\vec w}_t^r $ 为前面提到的 NTMmemory read 中的权重向量。

      选择 top k 是为了挑选重要的通道,从而过滤掉噪音信号。

    • 对于第 $ i $ 个选中的通道,更新 $ \mathbf{\vec s}_t(i) $ :

      $ \mathbf{\vec s}_t(i)= \text{GRU}(\mathbf{\vec s}_{t-1}(i),\mathbf{\vec m}_t(i), \mathbf{\vec e}_t) $

      其中 $ \mathbf{\vec m}_t(i) $ 为NTM 的第 $ i $ 个 memory slot, $ \mathbf{\vec e}_t $ 为行为 embedding 向量。

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

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

    $ \left\{\mathbf{\vec s}_T(i)\right\}_{i=1}^M $ 和目标广告 embedding $ \mathbf{\vec e}_a $ 进行 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 预测请求的流量规模。

17.2 实验

  1. 实验分为两个部分:

    • 详细介绍了算法验证,包括数据集、实验配置、比较模型、以及相应的分析。
    • 讨论并分享在阿里巴巴展示广告系统中部署所提出的解决方案的实践经验。

17.2.1 实验结论

  1. 数据集:

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

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

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

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

      假设用户 $ u $ 有 $ T $ 个行为,我们使用之前的 $ T-1 $ 个商品作为特征来预测用户是否会点击第 $ 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 有更多的机会学习和达到稳定stablerepresentation

    • 对于行为序列较短的数据集,例如 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 解决方案从长的用户行为序列中挖掘的额外信息。

17.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 天的副本。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文