不断发展的互联网将我们带入具有个性化在线服务的数字世界。从在线系统收集的大量用户行为数据为我们提供了更好地了解用户偏好的绝佳机会。从技术上讲,从丰富的行为数据中捕获用户兴趣至关重要,因为它有助于典型的现实世界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
,使其在有限的存储空间下更有效地建模了用户行为序列,并大大提升了模型性能。
从理论上讲,UIC
和 MIMN
的共同设计方案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
。
论文对公共数据集和从阿里巴巴广告系统收集的工业数据集进行了仔细的实验。作者还详细分享了在部署所提出的解决方案的实际问题方面的经验。
相关工作:
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
。一些工作利用记忆网络进行用户兴趣建模。然而,这些方法忽略了长期兴趣建模和实际部署问题。
在现实世界的推荐系统或者广告系统中,点击率预估模块是至关重要的组件。通常点击率预估模块接收一组候选对象(如item
或者广告),并通过执行实时的模型推断来返回相应的预估点击率。这一过程需要在严格的延迟时间内完成,实践中典型的延迟时间为 10ms
。
下图简要介绍了在线展示广告系统online display advertising system
中用于 CTR
任务的实时预估(RealTime Prediction: RTP
) 系统。为了便于读者理解,我们假设对 RTP
的请求输入仅包含用户和广告信息,忽略了上下文或其它信息。
在工业应用中,如电商行业的推荐系统,用户行为特征在特征集合中的贡献最大。例如,在我们的推荐系统中,接近 90%
的特征是用户行为特征,剩余 10%
的特征是用户人口统计特征 user demography featur
和广告特征。这些用户行为数据包含丰富的信息,对于用户兴趣建模很有用。
下图显示了我们系统中不同天数收集的用户行为序列的平均长度,以及使用不同长度的用户行为特征训练的basic model
(Embedding & MLP
)的离线性能。无需任何其它努力,当使用长度为 1000
的用户行为序列时,basic model
要比使用长度为 100
的用户行为序列,在 AUC
上提升 0.6%
。值得一提的是,仅 0.3%
的 AUC
提升对我们的业务而言就足够了。
这种AUC
的提升表明:利用较长的用户行为序列数据具有很大的价值。
然而,利用长的用户行为序列数据带来了巨大的挑战。
实际上,数以亿计用户的行为特征非常庞大。为了在推荐系统中保持低延迟和高吞吐量,通常将行为特征存储在额外的分布式内存存储系统(distributed in-memory storage system
)中,例如我们系统中的 TAIR
(阿里巴巴实现的一个分布式 key-value
存储系统)。这些特征将被提取到预测服务器 prediction server
,并在流量请求到来时参与实时推断的计算。
根据我们的实践经验,在我们的系统中实现 DIEN
会花费很多工程工作。为了使得延迟和吞吐量都满足 RTP
系统的性能需求,用户行为序列的长度最高为 150
,无法达到长度为 1000
的情况。
直接包含更多的用户行为数据非常困难,因为面临几个挑战。其中两个最关键的挑战包括:
存储约束:我们系统中有超过 6
亿用户,每个用户的行为序列的最大长度为 150
。这将花费大约 1TB
的存储空间,该存储空间不仅存储 product_id
,也会存储其它相关的特征id
(如shop_id
、brand_id
等)。
当用户行为序列的长度最大为 1000
时,将会消耗 6TB
的存储空间,并且该数量还会随着用户行为序列的长度而线性增加。如前所述,我们的系统中使用高性能存储来保持低延迟和高吞吐量,而维持如此大的存储太昂贵了。庞大的存储量也导致用户行为特征的相应计算和更新的成本很高。
因此,较长的用户行为序列意味着无法接受的存储消耗。
延迟约束:众所周知,使用序列的深度网络sequential deep network
进行实时推断非常困难,尤其是在我们的请求量很大的情况下。DIEN
部署了多种技术,可以将我们系统中 DIEN serving
的延迟降低到 14ms
,而每个 worker
的 Query Per Second: QPS
的容量 capacity
为 500
。
然而,当用户行为序列的长度最大为 1000
时,DIEN
的延迟在 500 QPS
时会高达 200ms
。我们的展示广告系统很难容忍 500 QPS
下的 30ms
延迟限制。因此,在当前的系统架构下,无法获得长的用户行为序列的好处。
为解决上述针对长的用户行为序列建模的挑战,我们提出了共同设计(co-design
)机器学习算法和在线serving
系统的解决方案。由于用户行为建模是 CTR
预估系统最具挑战性的部分,因此我们设计了一个 User Interest Center: UIC
模块来处理它。
下图的 B
部分说明了带有 UIC server
的、新设计的 RTP
系统。系统 A
和 B
之间的差异是用户兴趣 representation
的计算。在 B
中,UIC server
为每个用户维护最新的兴趣representation
。UIC
的关键是其更新机制:用户状态的更新仅取决于实时用户行为触发事件,而不是取决于请求。 也就是说,UIC
对于实时 CTR
预测是无延迟 latency free
的。在我们的系统中,UIC
可以在 500QPS
下将长度 1000
的用户行为序列的 DIEN
模型的延迟从 200ms
降低到 19ms
。
下图为CTR
任务的 RTP
系统示意图。通常 RTP
由三个关键组件构成:特征管理模块feature management module
、模型管理模块model management module
、预估服务器prediction server
。系统 A
和 B
的主要区别在于用户兴趣representation
的计算。
在 A
中,用户兴趣representation
针对每个请求在 prediction server
内执行。
在 B
中,用户兴趣 representation
针对实时的用户行为事件在 UIC server
中独立执行。也就是说,用户兴趣 representation
的计算和流量请求解耦并且是 latency free
的。
这里我们详细介绍用于长的用户行为序列建模的机器学习方法。
从长序列数据中学习是困难的。众所周知,简单的 RNN
(RNN,GRU,LSTM
)难以建模长的序列。
注意力机制通过将序列数据中的必要信息necessary information
压缩到固定长度的张量中来提升模型的表达能力。例如,在 DIN
中,注意力机制通过 soft-search
隐状态序列(或者 source
行为序列)中与目标 item
相关的部分来工作。
为了进行实时推断,注意力机制需要存储所有原始行为序列,这给在线系统的存储带来很大压力。
此外,注意力的计算成本随着行为序列的长度线性增长,这对于长的用户行为序列建模是不可接受的。
实际上,RNN
中的隐状态hidden state
并非旨在存储 source
序列历史的全部信息,而是更多地关注预测目标( predicting target
)。因此,最后一个隐状态可能会遗忘长期的信息 long-term information
。此外,存储所有隐状态是多余的。
最近,人们提出了神经图灵机 Neural Turing Machine: NTM
从 source
序列中捕获信息,并将其存储在固定大小的外部记忆中(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
记忆来捕获高阶信息。
UIC
存储 MIMN
的外部记忆张量( external memory tensor
),并利用用户的每个新行为来更新该张量。这样,UIC
从用户的行为序列中逐步捕获用户的兴趣。
尽管 UIC
存储固定长度的记忆张量而不是原始行为序列,但是考虑到存储压力时,必须限制存储张量的大小。本文中,我们提出了记忆利用正则化(memory utilization regularization
),以通过 memory utilization
来提升 UIC
中的记忆张量的表达能力。
另一方面,随着用户兴趣的变化以及随着时间的演变,我们提出使用记忆归纳单元( memory induction unit
)来帮助捕获高阶信息。
NTM
:标准的 NTM
通过记忆网络从序列数据中捕获并存储信息。在 time step
memory
)的参数记作 memory slot
NTM
的两个基本操作是记忆读取 memory read
和记忆写入memory write
,它们通过一个控制器controller
来和记忆交互。
先
read
后write
还是先write
后read
?作者没有明确表达。读者猜测是先write
再read
,这样始终能够读取最新的状态。
memory read
有两个作用:
选择
top-k
重要的slots
,从而更新MIU
。输出
memory summarization
作为模型的特征。
记忆读取memory read
:给定第 embedding
向量 read key
address memory
)。它首先遍历所有的记忆槽,生成一个权重向量
其中:
然后计算加权的memory summarization
作为输出
memory write
:类似于memory read
操作,我们生成用于 memory write
寻址的权重向量 key
:add vector
erase vector
memory
的更新:
其中:
erase matrix
,
相当于每个 slot
提供一个加权的erase vector
,第 个 slot
权重为。
add matrix
。
相当于每个 slot
提供一个加权的add vector
,第 个 slot
权重为。
dot product
)。
Memory Utilization Regularization
:实际上,basic NTM
会遭受 memory utilization unbalanced
的问题,尤其是在用户兴趣建模的场景下。即,热门的 item
倾向于在用户行为序列中频繁出现,并且主导着 memory
的更新,从而使得 memory
的使用变得低效。
NLP
领域先前的一些工作已经提出使用 LRU
策略来平衡每个 memory
的利用(utilization
)。由于 LRU
在处理过程的每个短序列中都非常注意平衡 memory
的利用,因此 LRU
几乎从来不会在相邻的时间步对相同的slot
写入信息。
但是,在我们的场景中,用户可能会与隶属于相同兴趣的几种行为进行交互,这会写入同一个 slot
。LRU
将会使得内容寻址混乱 disorganize
,并且不适合我们的任务。
本文中,我们提出了一种称作memory
利用正则化(memory utilization regularization
)的新策略,该策略被证明对用户兴趣建模是有效的。
memory utilization regularization
背后的思想是:将不同 memory slot
之间的 write weight
方差进行正则化,从而使得 memory
利用达到平衡。
令 slot
的更新后的权重,其中 re-balanced
的 write weight
:
其中:
write weight
,而 write weight
。
slot
之间的权重转移矩阵,它取决于:
memory slot
的累积利用(accumulated utilization
) 。
参数矩阵
其中: slot
数量。注意:上式中没有下标 slot
的累计 write weight
的方差最小化。
memory slot
上 write weight
的方差。
通过使用 memory slot
的利用都被提升从而得到平衡。因此,utilization regularization
可以帮助 memory tensor
存储来自于 source
行为数据的更多信息。
Memory Induction Unit
:NTM
中的 memory
旨在尽可能多地存储源数据中的原始信息。美中不足的是,它可能会错过捕获某些高级信息的机会,例如各部分兴趣的动态演变过程。为了进一步提升用户兴趣抽取的能力,MIMN
设计了一个 Memory Induction Unit: MIU
。
MIU
还包含了一个内部的 memory
NTM
相同的槽数 memory slot
视为一个用户兴趣通道user interest channel
。在时刻 MIU
:
选择
其中 NTM
的 memory read
中的权重向量。
选择
top k
是为了挑选重要的通道,从而过滤掉噪音信号。怎么选择?论文没有给出指导,也没有给出消融实验。
对于第
其中 NTM
的第 memory slot
, embedding
向量。
注意:一般情况下
,因此这里只有被选中的通道才会更新 。
上式表明:MIU
既从原始行为输入中捕获信息,又从 NTM
模块存储的信息中捕获信息。这是一个归纳过程 inductive process
,如下图所示。
多通道 memory
的 GRU
参数是共享的,因此不会增加参数量。
和目标广告 embedding
进行 attention-pooling
从而得到固定长度的embedding
向量,并用于后续的向量拼接和MLP
。
Online Serving
:与 DIEN,DIN
应用注意力机制从而获得 candidate-centric
兴趣的 representation
不同,MIMN
学会了显式地捕获和存储用户的多样化兴趣,并将其存储在每个用户的 external memory
中。这种 memory-based
架构无需在候选对象(如,我们系统中的目标广告)和用户行为序列之间进行交互式计算,并且可以增量执行,这使得它可扩展地用于长的用户行为序列建模。
用于在线 serving
的 MIMN
的实现非常简单。我们将整个模型拆分并实现到两个 server
中:
左侧的子网是在 UIC server
中实现的,如下图所示。它使用 NTM
和 MIU
进行计算量最大的用户兴趣建模。
右侧的子网可以在 RTP server
中实现。
NTM
和 MIU
模块均享受增量计算的优势:最新的 memory state
代表用户的兴趣,并更新到 TAIR
以进行实时 CTR
预估。当收到最新的用户行为事件时,UIC
将再次计算用户兴趣 representation
,并更新到 TAIR
。这样,不需要存储用户行为数据。
在我们的系统中,长用户行为序列的存储量可以从 6T
减少到 2.7T
。
UIC server
和 MIMN
的 co-design
使得我们能够处理长的用户行为序列数据,序列长度可以扩展到数千。
UIC
用于用户兴趣representation
的更新和整个模型的计算无关,从而使它对于实时CTR
预估是无延迟latency free
的。
MIMN
提出以增量的方式对用户兴趣进行建模,而无需像传统解决方案一样存储整个用户行为序列。此外,MIMN
使用改进的 memory architecture
,可以实现出色的模型性能。
但是,它并不适合所有情况。我们建议将该解决方案应用于具有以下条件的应用程序:丰富的用户行为数据,以及实时用户行为事件的流量规模不能明显超过实时 CTR
预测请求的流量规模。
实验分为两个部分:
详细介绍了算法验证,包括数据集、实验配置、比较模型、以及相应的分析。
讨论并分享在阿里巴巴展示广告系统中部署所提出的解决方案的实践经验。
数据集:
Amazon Dataset
:由Amazon
提供的商品评论、商品元信息组成。我们使用Amazon
数据集的 Books
子集。
对于该数据集,我们将评论视为一种交互行为,并根据时间对一个用户的所有评论进行排序。假设用户
为了聚焦长的用户行为序列预测,我们过滤了行为序列长度小于 20
的样本,并截断了行为序列长度为 100
(即超过100
截断为 100
)。
Taobao Dataset
:收集自淘宝推荐系统的用户行为。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约一百万用户的用户行为序列。我们采用每个用户的点击行为,并根据时间对其进行排序,从而尝试构建行为序列。
假设用户 200
。
Industrial Dataset
:收集自阿里巴巴在线展示广告系统。样本来自曝光日志,其中标签为这个曝光是 ”点击“ 或者”未点击“。训练集由过去49
天的样本组成,测试集由下一天的样本组成。这是工业建模的经典配置。
在这个数据集中,每天每个样本的用户行为特征包含之前60
天的历史行为序列,行为序列长度被截断为 1000
。
下表给出了这些数据集的统计信息。
实验配置:
对于所有模型,我们使用 Adam
优化器。我们采用指数衰减,学习率从 0.001
开始、衰减速率为 0.9
。
FCN: fully connected network
的层数设置为:200 x 80 x 2
。
embedding
维度设为 16
,和 memory slot
的维度相同。
MIU
中 GRU
的隐层维度设为 32
。
NTM
和 MIU
中的 memory slot
数量是一个在消融研究部分仔细检查过的参数。
我们将 AUC
视为衡量模型性能的指标。
baseline
方法:我们将 MIMN
和 state-of-the-art
的 CTR
预估模型进行比较。
Embedding & MLP
:是CTR
预估的 basic
深度学习模型。它需要 sum
池化操作才能整合行为 embedding
序列。
DIN
:是用户行为建模的早期工作,提出针对目标 item
条件下对用户行为进行软搜索soft-search
。
GRU4Rec
:基于 RNN
的方法,并且是使用循环单元recurrent cell
来建模用户行为序列的首次研究。
ARNN
:是 GRU4Rec
的一种变体,它使用注意力机制对所有隐状态进行加权和,从而得到更好的用户行为序列 representation
。
RUM
:使用external memory
来存储用户的额行为特征。它还利用 soft-writing
和 attention reading
机制来和memory
进行交互。我们使用 feature-level RUM
来存储序列信息。
DIEN
:将 GRU
和 candidate-centric attention
技巧融合,从而捕获用户兴趣的演变趋势,并实现了 state-of-the-art
性能。
为了进行公平地比较,我们省略了辅助损失的技巧,以便更好地在 DIEN
中进行 embedding
学习。否则应该针对上述所有模型都使用辅助损失技巧。
下表给出了所有模型的实验结果,每个实验重复 3
次并报告均值和标准差。可以看到:
所有其它模型都击败了 Embedding & MLP
,这验证了针对用户行为建模的网络体系架构设计的有效性。
MIMN
以很大的 AUC
优势击败了所有模型。我们认为,这是由于memory-based
架构的巨大容量capacity
适用于建模用户行为。
如前所述,长的用户行为序列数据背后的用户兴趣是多样的,且随着时间而动态演化。MIMN
使用多通道 memory
在两个方面学会了捕获用户兴趣:
basic NTM
中的 memory
使用平衡的利用 balanced utilization
来记忆兴趣。
MIU
中的 memory
通过归纳兴趣的序列关系进一步捕获高阶信息,其中兴趣是基于 NTM
的 memory
。
memory
的 slot
数量:我们在具有不同数量的memory slot
的 MIMN
上进行了实验。为简化起见,我们使用最基本的 NTM
体系结构来评估 MIMN
,省略了 memory utilization regularization
和 memory 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
来缓解该问题。
Memory Utilization Regularization
:由于每个用户的兴趣强度不一致,并且memory
进行了随机初始化,因此在basic NTM
模型中,存储的利用可能不平衡。这个问题将损害 memory
的学习,使其不足以利用有限的memory
存储。
我们使用 memory utilization regularization
技巧来帮助解决该问题。下图显式了memory utilization
,它验证了所提出的正则化器的有效性。
这种平衡的效果还带来了模型性能的改善,如下表所示。
Memory Induction Unit
:通过归纳从 basic NTM
的 memory
,带 memory induction unit
的 MIMN
能够捕获高阶信息并带来更多提升,如上表所示。它增强了用户兴趣抽取的能力,并有助于从长的用户行为序列数据中建模用户兴趣。
工业数据集结果:
我们进一步对阿里巴巴在线展示广告系统收集的数据集进行实验。我们将 MIMN
和 DIEN
模型进行了比较,下表给出了结果。MIMN
以 0.01
的 AUC
提升超越了 DIEN
,这对于我们的业务而言意义重大。
除了离线模型的性能,在系统方面 MIMN
和 DIEN
模型之间还存在很大差异。下图给出了当 MIMN
和 DIEN
作为 serving
模型时实际 CTR
预估系统的性能。
MIMN
和 UIC server
的 co-design
在很大程度上击败了 DIEN
,前者具有随着不同行为序列长度保持恒定的延迟和吞吐量的特性。因此,MIMN
可以在我们的系统中利用长度可达数千个的、长的用户行为序列数据,并享受模型性能的提升。相反,DIEN serving
的系统会同时遭受延迟和系统吞吐量的困扰。
由于系统的压力,作为我们最新产品模型的 DIEN
中使用的用户行为序列长度仅为 50
。这再次验证了我们提出的解决方案的优越性。
我们已经在阿里巴巴的展示广告系统中部署了提出的解决方案。我们在 2019-03-30 ~ 2019-05-10
进行了严格的在线 A/B
测试实验,从而验证提出的 MIMN
模型。
和 DIEN
(我们的最新产品模型)相比,MIMN
的 CTR
和 RPM
(Revenue Per Mille
每千次收入)均提高了 7.5%
。我们将此归因于提出的 co-design
解决方案从长的用户行为序列中挖掘的额外信息。
这里我们讨论在我们的在线系统中,部署 UIC
和 MIMN
的实践经验。
UIC Server
和 RTP Server
的同步synchronization
:如前所述,MIMN
是通过 UIC server
和 RTP server
一起来实现的。因此,UIC server
和 RTP server
之间存在不同步out-sync
的问题。
在周期性模型部署的实际系统中,两个 server
的异步参数更新可能导致不正确的模型推断,这具有很大的风险。下表给出了模拟不同步场景实验的结果。注意,在该实验中,out-sync
时间的间隔在一天之内,这是工业系统中的常见设置。实际上,在我们的真实系统中,模型部署被设计为每小时执行一次,这进一步降低了风险。
可以看到 MIMN
针对 out-sync
具有很好的鲁棒性。我们认为这是由于 MIMN
学到的用户兴趣的稳定表示stable representation
,从而使得 MIMN
具有良好的泛化性能。
超大规模big-scale
数据的影响:如今很多电商网站都采用大促来吸引用户进行在线消费,例如阿里巴巴的”双十一“活动。在这种极端情况下,样本的分布以及用户行为和日常情况大相径庭。我们比较了系统中 11.11
大促日收集的训练数据、以及不包含 11.11
大促日的训练数据,这两种情况下 MIMN
的性能。
结果如下表所示。我们发现:最好移除 big-scale
数据。
Warm Up Strategy
:尽管 UIC
旨在进行增量更新,但是从一开始就需要相当长时间才能进入稳定积累stable accumulation
。 实际上我们采用预热策略warm up strategy
来使用预先计算的用户兴趣表示来初始化 UIC
。即,我们为每个用户收集最近 120
天的历史行为(用户行为序列的平均长度为 1000
),并以离线模式使用训练好的 MIMN
来推断,然后将累积的 memory
推送到 UIC
中以便进行进一步的增量更新。
该策略可以尽快地部署MIMN
,并取得合理的模型性能。
Rollback Strategy
:如果出现意外问题,如大规模在线作弊对训练样本的污染,UIC server
的增量更新机制可能会遭受重大损失。 一个麻烦的挑战是寻找异常case
发生的时间点。
为了抵御这种风险,我们设计了一种回滚策略 rollback strategy
,该策略将每天00:00
学到的用户兴趣representation
副本存储起来,并保存最近 7
天的副本。
点击率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: SIM
。 SIM
采用了 DIN
的思想,并且仅捕获与特定候选 item
相关的用户兴趣。
在 SIM
中,用户兴趣是通过两个级联 cascaded
的搜索单元search unit
来提取的:
通用搜索单元 General Search Unit: GSU
:充当原始的、任意长的行为序列数据的通用搜索,并具有来自候选 item
的 query
信息,最终得到和候选item
相关的用户行为序列子集Sub user Behavior Sequence: SBS
。
为了满足latency
和计算资源的严格限制,在 GSU
中使用了通用、但是有效的方法。根据我们的经验,可以将 SBS
的长度缩短为数百个,并且可以过滤原始的、长的用户行为序列数据中的大部分噪声信息。
精准搜索单元Exact Search Unit: ESU
:对候选 item
和 SBS
之间的精确关系进行建模。在这里,我们可以轻松应用 DIN
或 DIEN
提出的类似方法。
论文主要贡献:
提出了一种新的范式 SIM
,用于长的用户行为序列数据进行建模。级联的两阶段搜索机制的设计使得 SIM
具有更好的能力,可以在可扩展性scalability
和准确性accuracy
方面为长期的life-long
用户行为序列数据建模。
介绍了在大规模工业系统中实现 SIM
的实践经验。自 2019
年以来,SIM
已经部署在阿里巴巴展示广告系统display advertising system
中,带来了 7.1%
的CTR
提升和 4.4%
的 RPM
提升。现在 SIM
正在服务于主要流量。
将长的用户行为序列数据建模的最大长度提高到 54000
,比已发布的 SOTA
行业解决方案 MIMN
大 54
倍。
相关工作:
用户兴趣模型User Interest Model
:基于深度学习的方法在CTR
预估任务中取得了巨大的成功。
在早期,大多数前期作品使用深度神经网络来捕获来自不同 field
的特征之间的交互,以便工程师可以摆脱枯燥的特征工程的工作。最近,我们称之为用户兴趣模型User Interest Model
的一系列工作聚焦于从用户历史行为中学习潜在用户兴趣的 representation
,这些工作使用不同的神经网络架构(如 CNN, RNN, Transformer, Capsule
等等)。
DIN
强调用户的兴趣是多样化的,并引入了一种attention
机制来捕获用户对不同 target item
的 diverse
兴趣。
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-session
和 in-session
中的兴趣进行建模。
长期用户兴趣Long-term User Interest
:MIMN
的论文中显示了在用户兴趣模型中考虑长期历史行为序列可以显著提高 CTR
模型的性能。尽管更长的用户行为序列为用户兴趣建模带来了更多有用的信息,但是它极大地增加了在线 serving sysem
的延迟和存储负担,同时也为 point-wise
的 CTR
预估带来了大量的噪声。
一系列工作聚焦于解决长期用户兴趣建模中的挑战。长期用户兴趣建模通常基于非常长的、甚至是 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
的限制。
但是,MIMN
在 memory network
中放弃了 target item
的信息,而 target item
已经被证明对于用户兴趣建模很重要。
通过建模用户行为数据来预估 CTR
,这已经被证明是有效的。典型地,attention-based CTR
模型(如 DIN, DIEN
)设计复杂的模型结构,并且包含attention
机制,以通过从用户行为序列中搜索有效知识来捕获用户的多样化兴趣。其中搜索的 input
来自于不同的候选 item
。
但是在现实世界的系统中,这些模型只能处理长度小于 150
的短期short-term
行为序列数据。另一方面,长期long-term
用户行为数据很有价值,并且对长期兴趣进行建模可以为用户带来更多样化的推荐结果。
我们似乎陷入了一个两难的境地:在现实世界的系统中,我们无法通过有效而复杂的方法来处理有价值valuable
的 life-long
用户行为数据。为应对这一挑战,我们提出了一种新的建模范式,称之为基于搜索的兴趣模型Search-based Interest Model: SIM
。SIM
遵循两阶段搜索策略,可以有效地处理长的用户行为序列。
我们首先介绍 SIM
的总体工作流程,然后详细介绍我们提出的两种搜索单元 search unit
。
SIM
遵循一个级联的 two-stage search
策略,其中包含两个单元:通用搜索单元General Search Unit: GSU
、精确搜索单元Exact Search Unit: ESU
。SIM
的整体工作流如下图所示。
第一阶段:我们利用 GSU
从原始的长期行为序列中寻找 top-K
相关(relevant
)的子行为序列,其复杂度为线性时间复杂度。这里 K
通常要比原始序列的长度要短得多。
如果有时间和计算资源的限制,则可以执行一种有效的搜索方法来搜索相关relevant
的子行为序列。在后续内容中,我们提供了 GSU
的两种简单实现:软搜索soft-search
和硬搜索 hard-search
。
GSU
采取一种通用general
但有效effective
的策略来减少原始的行为序列的长度,从而满足对时间和计算资源的严格限制。同时,长期用户行为序列中可能会破坏用户兴趣建模的大量噪声可以在第一阶段通过搜索策略进行过滤。
第二阶段:ESU
将经过过滤的用户行为子序列作为输入,并进一步捕获精确的用户兴趣。
由于长期用户行为序列的长度已经减少到数百,因此可以应用复杂体系结构的精巧(sophisticated
) 的模型,如 DIN, DIEN
等等。
然后遵循传统的 Embedding&MLP
范式,将精确的长期用户兴趣的输出、以及Other Feature
作为输入。
注意:尽管我们分别介绍了这两个阶段,但是实际上它们是一起训练的。
长期用户行为序列是否包含短期用户行为序列?论文未说明这一点。看结构图的描述,似乎不包含。
给定一个候选 item
(即将被 CTR
模型打分的target item
),只有一部分用户行为有价值。这部分用户行为与最终用户决策密切相关。挑选出这些相关relevant
的用户行为有助于用户兴趣建模。
然而,使用整个用户行为序列直接对用户兴趣进行建模将带来巨大的资源占用和响应延迟(latency
),这在实际应用中通常是无法接受的。为此,我们提出了一个通用搜索单元(general search unit: GSU
),从而减少用户兴趣建模中用户行为的输入数量。这里,我们介绍两种通用的搜索单元:硬搜索hard-search
和软搜索 soft-search
。
给定用户行为的列表 item
),item
的相关性得分 relevant score
top-K
的相关relevant
行为作为行为子序列 sub behaviour sequence
。
K
的大小对模型性能的影响如何?论文并未进行消融实验。
硬搜索和软搜索的区别在于相关的分
其中:
target item
的类目。
embedding
向量,target item
的 embedding
向量。item embedding
的维度,
对于软搜索,GSU
和 ESU
共享相同的 embedding
参数。
硬搜索 hard-search
:硬搜索模型是非参数(non-parametric
) 的。只有和候选item
相同类目category
的行为被挑选出来,然后得到一个子行为序列并发送给 ESU
。
硬搜索非常简单,稍后在实验中我们证明它非常适合在线 serving
。
对于
hard-search
,如何选择top-k
?因为它的score
要么为0
、要么为1
。这使得相同category
的行为,其score
全部为1
。
软搜索soft-search
:在软搜索模型中,首先将 one-hot
向量,然后嵌入到低维向量
为了进一步加速成千上万个用户行为的 top-K
搜索,基于embedding
矩阵 sublinear time
的最大内积搜索 maximum inner product search
方法 ALSH
用于搜索和target item
最相关的 top-K
行为。其中 distinct
行为的 embedding
向量组成。
借助训练好的 embedding
和最大内积搜索Maximum Inner Product Search: MIPS
方法,成千上万个用户行为可以减少到数百个。
需要注意的是:长期long-term
数据和短期short-term
数据的分布是不同的。因此,在软搜索模型中直接使用从短期用户兴趣建模中学到的参数可能会误导长期用户兴趣建模。所以在本文中,软搜索模型的参数是在基于长期行为数据的辅助 CTR
预估任务下训练的,如上图左侧的软搜索训练soft search training
所示。
用户整体行为序列的representation
行为 representation
target Ad
向量 Multi-Layer Perception: MLP
的输入,从而建模辅助任务。
注意,如果用户行为序列增长到一定程度,则不可能将整个用户行为序列馈入辅助任务的模型。这种情况下,可以从长的用户行为序列中随机采样子序列,子序列仍然遵循原始行为序列相同的分布。
作者提到 “对于软搜索,
GSU
和ESU
共享相同的embedding
参数“,这意味着embedding layer
的训练不仅依赖于main task
,还依赖于这里的辅助任务。
在第一个搜索阶段,我们从长期用户行为中选择和 target item
最相关的 top-K
子用户行为序列 Exact Search Unit: ESU
。ESU
是一个以 attention-based
的模型。
考虑到这些选出来的用户行为横跨了很长时间,因此每个用户行为的贡献是不同的,所以涉及到每个行为的时间属性temporal property
。具体而言,target item
和选出来的 K
个用户行为的时间间隔 temporal distance
信息。
embedding
矩阵 embedding
矩阵 representation
,记作
time info
用向量拼接还是直接逐元素相加?可以做个消融实验分析。
我们利用 multi-head attention
来捕获用户的多样化兴趣:
其中:
attention score
,head
的attention
。
head
的权重矩阵。
最终的用户长期diverse
兴趣表示为:head
数量。然后 MLP
中用于点击率预估。
最终模型同时使用了长期用户行为和短期用户行为,其中:
长期用户行为使用 ESU
来抽取长期用户兴趣representation
短期用户行为使用 DIEN
来抽取短期用户兴趣representation
长期用户兴趣representation
representation
Other feature representation
一起拼接作为后续 MLP
的输入。
长期用户兴趣由长期用户行为来捕获,这里使用
GSU + ESU
的原因是序列太长,DIEN
无法处理。短期用户兴趣由短期用户行为来捕获,这里使用
DIEN
是因为序列较短因此可以更精细地建模。对于较短的序列,没必要使用GSU
来硬过滤。
最后,我们在交叉熵损失函数下同时训练 GSU
和 ESU
:
其中:
如果 GSU
为软搜索模型,则
如果 GSU
使用硬搜索模型,那么
ESU
单元的损失,这也是SIM
模型主任务的目标损失。
GSU
单元的损失。
如果 GSU
为硬搜索,则由于硬搜索没有参数,因此不考虑其损失。
如果 GSU
为软搜索,则它是 SIM
模型辅助任务的目标损失。辅助任务也是一个 CTR
预估任务,只是它采用了更简单的架构(没有 multi-head
、没有 DIEN
)、更少的特征(没有短期用户行为、没有 Other feature
)。
这个辅助损失函数本质上是强制
GSU
部分学到的embedding
是任务相关的。
SIM
、DeepMCP
、DMR
等模型都是类似的思想,要求模型的子结构也能够捕获到CTR
相关的信息,从而使得约束了模型的解空间。
这里我们介绍在阿里巴巴的展示广告系统display advertising system
中实现 SIM
的实际经验。
life-long
用户行为数据在线serving
的挑战:工业级的推荐系统或广告系统需要在一秒钟内处理的大量的流量请求,这需要 CTR
模型实时响应。通常, serving latency
应该小于 30
毫秒。下图简要说明了我们在线展示广告系统中用于 CTR
任务的实时预测Real Time Prediction: RTP
系统。该系统由两个关键组件组成:计算节点(Computation Node
)、预估server
。
考虑到 lifelong
的用户行为,在实时工业系统中建立长期的用户兴趣model serving
就变得更加困难。存储和延迟的限制可能是长期用户兴趣模型的瓶颈。实时请求的数据量(数据量 = 请求条数 x 单条请求的数据量)会随着用户行为序列长度的增加而线性增加。此外,我们的系统在流量高峰时每秒可为超过 100
万用户提供服务。因此,将长期模型部署到在线系统是一个巨大的挑战。
在线 serving
系统:前面我们提出了两种类型的 GSU
:软搜索模型和硬搜索模型。
对于软搜索模型和硬搜索模型,我们对从阿里巴巴在线展示广告系统收集的工业数据进行了广泛的离线实验。我们观察到软搜索模型生成的 top-K
行为数据与硬搜索模型的结果极为相似。换句话讲,软搜索的大部分 top-K
行为通常属于 target item
相同类目category
的。这是我们场景中数据的一个特色。在电商网站中,属于同一类目的 item
在大多数情况下是相似的。考虑到这一点,尽管在离线实验中软搜索模型的性能要比硬搜索模型稍好,但是在平衡性能提升和资源消耗之后,我们选择硬搜索模型将 SIM
部署到我们的广告系统中。
对于硬搜索模型,包含所有长的用户行为序列数据的索引是关键组件。我们观察到,行为可以通过其所属类目自然访问到。为此,我们为每个用户建立一个两级的结构化索引 two-level structured index
,并将其命名为用户行为树(user behavior tree: UBT
),如下图所示。
简而言之,UBT
遵循 Key-Key-Value
数据集结构:第一个 key
是 user-id
,第二个 key
是category id
,最后一个value
是属于每个类目的特定的行为item
。UBT
被实现为分布式系统,最大容量可达 22TB
,并且足够灵活以提供高吞吐量的query
。
然后,我们将 target item
的 category
作为我们的硬搜索query
。
在GSU
之后,用户行为的长度可以从一万多个减少到数百个。因此,可以缓解在线系统中 lifelong
行为的存储压力。
下图显示了 SIM
的新 CTR
预估系统。新系统加入了一个硬搜索模块,以从长的用户行为序列数据中寻找 target item
相关的有效行为effective behaviors
。
注意:GSU
的UBT
的索引可以离线构建。这样,在线系统中的 GSU
的响应时间可以非常短,与 GSU
的索引构建相比可以忽略。此外,其它用户特征可以并行计算。
如何解决
category
不平衡问题?例如,某些类目的商品特别多,另一些类目的商品很少。
这里我们详细介绍了我们的实验,包括数据集、实验配置、模型比较、以及一些相应的分析。由于 SIM
已经部署在我们的在线广告系统中,因此我们还会进行仔细的在线 A/B test
,并比较几个著名的工业级的模型。
数据集:我们在两个公共数据集、以及阿里巴巴在线展示广告系统收集的工业数据集进行了模型比较。
Amazon Dataset
:由 Amazon
的商品评论和元数据meta-data
组成。我们使用 Amazon
数据集的 Books
子集,该子集包含 75053
个用户、358367
个 item
、1583
个类目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 Dataset
,item
为广告。
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
。
实验配置:我们采用与相关工作(即 MIMN
)相同的实验配置,以便可以公平地比较实验结果。
对所有模型,我们使用 Adam
优化器。
我们使用指数衰减,学习率从 0.001
开始。
全连接网络FCN
的layer
设置为 200 x 80 x 2
。
embedding
维数设置为 4
。
我们使用 AUC
作为模型性能的评估指标。
下表显式了所有模型在公共数据集上的比较结果。a
表示SIM
采用软搜索且没有时间间隔的 embedding
。b
没有在 Amazon Dataset
上实验,因为该数据集没有时间戳数据。
和 DIN
相比,具有长期用户行为特征的其它模型的性能要好得多。这表明长期用户行为对CTR
预估任务很有帮助。
和 MIMN
相比,SIM
取得了显著提升,因为 MIMN
将所有未过滤的用户历史行为编码到固定长度的 memory
中,这使得难以捕获多样化的长期用户兴趣。
SIM
使用两阶段搜索策略从庞大的历史行为序列中搜索相关的行为,并针对不同target item
来建模多样化的长期用户兴趣。
实验结果表明:SIM
优于所有其它长期兴趣模型。这充分证明了我们提出的两阶段搜索策略对于长期用户兴趣建模很有用。而且,包含time embeding
可以实现进一步的提升。
在这个
Taobao
数据集中,MIMN
的指标与原始MIMN
中的指标对不上,可能的原因是:这里的Taobao
数据集与之前的Taobao
数据集不同。
消融研究--两阶段搜索的有效性:如前所述,我们的 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-trained
的 embedding
向量,离线计算 target item
和长期用户行为之间的内积相似度得分。然后根据相似度得分选择 top 50
个相关行为来进行软搜索。
最后三个实验是我们提出的两阶段搜索架构的搜索模型。
实验结果如下表所示,可以看到:
与简单的均值池化 embedding
相比,所有具有过滤策略的方法都极大地提高了模型性能。这表明在原始的长期行为序列中确实存在大量的噪声,而这些噪声可能会破坏长期用户兴趣的学习。
和仅进行一阶段搜索的模型相比,我们提出的具有两阶段搜索策略的搜索模型通过在第二阶段引入 attention-based
的搜索而取得了进一步的提升。这表明:精确地建模用户对 target item
的多样化的长期兴趣,有助于 CTR
预估任务。并且在第一阶段搜索之后,过滤后的行为序列通常比原始序列短得多,attention
操作不会给在线 RTP
系统带来太多负担。
包含time embedding
的模型得到了进一步的提升,这表明不同时期 peroid
的用户行为的贡献是不同的。
我们进一步对阿里巴巴在线展示广告系统收集的工业数据集进行实验,下表给出了实验结果。a
表示该模型目前已经部署在我们的在线serving
系统,并且服务于主要的流量。
SIM
相比 MIMN
在 AUC
上提升了 0.008
,这对于我们的业务而言意义重大。
和第一阶段使用硬搜索相比,第一阶段使用软搜索的性能更好。
在第一阶段,硬搜索和软搜索这两种搜索策略之间只有微小的差距。
在第一阶段应用软搜索会花费更多的计算资源和存储资源。因为软搜索需要在 online serving
中使用最近邻搜索,而硬搜索只需要从离线构建的两级索引表中检索。因此,硬搜索更加有效且系统友好。
对两种不同的搜索策略,我们对来自工业数据集的超过 100
万个样本和 10
万个具有长期历史行为的用户进行了统计。结果表明:硬搜索策略保留的用户行为可以覆盖软搜索策略的 75%
。
最后,我们在第一阶段选择更简单的硬搜索策略,这是在效率efficiency
和性能 performance
之间的 trade-off
。
在线 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
首页的“猜你喜欢” 栏目。
Rethinking Search Model
:我们在用户长期兴趣建模方面做出了巨大努力,所提出的 SIM
在离线和在线评估方面都取得了良好的性能。但是 ,由于进行了精确的长期兴趣建模,SIM
的性能会更好吗?SIM
是否会倾向于推荐和人们长期兴趣相关的 item
?
为回答这两个问题,我们制定了另一个指标,即点击样本的 Days till Last Same Category Behavior
cateogry
的item
上的最近行为距离当前点击事件的时间间隔。
例如,用户 item
item
item
)。如果将点击事件记作 Days till Last Same Category Behavior
为 5
,即
对于给定的模型,可以使用 long-term interest
或短期兴趣short-term interest
上的选择偏好(selection preference
) 。
经过在线 A/B test
之后,我们根据提出的 SIM
和 DIEN
(这是短期的CTR
预估模型的最新版本)的点击样本。点击样本越多则说明模型效果越好(模型找的越准)。
根据 >14
天)、短期的(<14
天)。方框显示了不同 SIM
模型点击样本的提升比例(相对于 DIEN
模型)。曲线表示不同
可以看到:在短期部分( SIM
和 DIEN
在过去14
天中都具有短期的用户行为特征。在长期部分,SIM
提升比例更大。
此外在工业数据集上,我们统计了 target item
相同类目的历史行为的概率。结果如下表所示(在线 a/b test
对应的点击样本,在离线上统计到的)。
结果表明:SIM
的提升确实是更好的长期兴趣建模的结果。并且和 DIEN
相比,SIM
倾向于推荐与人们长期行为有关的item
。
读者注:这里假设
A/B test
时流量相等,因此点击量的差异等价于CTR
的差异。
部署的实践经验:这里我们介绍了在线 serving
系统中实现 SIM
的实践经验。
阿里巴巴的高流量是众所周知的,它在流量高峰时每秒为超过100
万用户提供服务。此外,对于每个用户,RTP
系统需要计算数百个候选item
的预估CTR
。我们对整个离线用户行为数据建立一个两阶段索引,该索引每天都会更新:第一阶段是user id
;在第二阶段,一个用户的 life-long
行为数据由该用户所交互的类目来索引。
虽然候选item
的数量为数百,但是这些item
的类目数量通常少于 20
。同时,来自 GSU
的每个类目的子行为序列的长度被截断为不超过 200
(原始的行为序列长度通常小于 150
)。这样,来自用户的每个请求的流量是有限的并且可以接受的。
此外,我们通过 deep kernel fusion
优化了 ESU
中 multi-head attention
的计算。
下图显示了我们的实时 CTR
预估系统相对于 DIEN,MIMN,SIM
流量的效率。值得注意的是:
MIMN
可以处理的最大用户行为长度是 1000
,而这里显示的性能是基于截断的行为数据( MIMN
和 DIEN
中,用户行为的长度被截断为 1000
)。
而 SIM
中的用户行为的长度不会被截断,并且可以扩展到 54000
,使得最大长度可以扩展到 54
倍。针对一万个行为的 SIM serving
,相比于截断用户行为的 MIMN serving
,latency
仅增加了 5ms
。
DIEN
的最大流量为 200
,因此图中只有一个点。
《User Behavior Retrieval for Click-Through Rate Prediction》
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
中是非常可行的。在三个真实世界大型数据集上的实验证明了我们提出的框架和模型的优越性和有效性。
CTR prediction
在当今的在线个性化平台(例如电商、在线广告、推荐系统)中起着关键作用,其目标是预测用户在特定情境下点击特定 item
的概率。在线个性化平台经过十多年的发展,平台上记录的user behavior
数量迅速增长。23%
的用户在六个月内在淘宝上有超过 1000
次behavior
(《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》
)。由于user behavior
中存在丰富的时间模式(temporal patterns
),因此建立一个有效且高效的模型,利用user behavior
序列来获得准确的 CTR prediction
成为业界和学术界的一个重要问题。
在深度学习时代,有许多 DNN-based
的 CTR prediction
模型,例如 Wide&Deep
、FNN
、DeepCross
、DeepFM
、PNN
和 xDeepFM
,其中大多数已部署在商业的个性化平台上。这些模型强调挖掘特征交互(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 behavior
的 temporal dynamics
在预测用户未来兴趣方面起着关键作用。这些序列模式(sequential patterns
)包括概念漂移(concept drifting
)、长期behavior
依赖性(long-term behavior dependency
)、周期性模式(periodic patterns
)等。因此,在 CTR prediction
和序列推荐任务中,人们提出了一些模型来捕获用户的序列模式。
对于 CTR prediction
,有 attention-based
的模型,如 DIN
和 DIEN
;有 memory network-based
的模型,如HPMN
。
对于序列推荐,人们提出了更多的 user behavior modeling
方法,这是一项与 CTR prediction
非常相似的任务。有 RNN-based
的模型、CNN-based
的模型、Transformer-based
的模型、以及 memory network-based
的模型。
然而,上述大多数序列模型在实际应用中都有一个共同的问题。当平台记录了大量的user behavior
时,常见的工业解决方案是截断整个行为序列,只使用最近的 behavior
作为 prediction model
的输入,如 Figure 1
上半部分所示。online serving time
的严格要求,加上系统负载和计算能力的瓶颈,限制了可使用的用户序列的长度。因此,在大多数情况下,使用的近期行为不超过 50
个(《Deep interest evolution network for click-through rate prediction》
)。
使用最近 behavior
的传统框架可能会带来负面问题。很明显,有效的序列模式可能不仅仅包含在最近的行为序列中。它可以追溯到更远的历史,如周期性和长期依赖性。然而,如果我们尝试使用更长的序列,可能会引入大量不相关的behavior
和噪音。更不用说更长的历史带来的时间复杂性和空间复杂性了。
在本文中,为了解决上述实际问题,我们尝试从数据的角度解决问题,而不是设计更复杂更精密的模型。具体来说,我们的目标是设计一个框架来检索对每个 CTR prediction target
最有用的有限数量的历史行为。如 Figure 1
所示,prediction target
由三部分组成,即:target user
、target item
和相应的上下文。prediction target
的特征包括用户的位置、性别、职业,以及item
的 category
、品牌、商家,以及时间和场景等上下文特征。然后我们使用模型选择这些特征的一个子集,该子集构建一个 query
来检索相关的历史行为。用户的所有behavior
都作为information items
来存储在搜索引擎中,我们使用所生成的 query
从历史记录中进行搜索。被检索到的behavior
用于 CTR prediction
。
对于同一用户的每个不同 target item
,我们将检索不同的 behaviors
来用于 prediction
,因为所生成的 queries
不同。对同一用户的不同 items
上的预测而言,与使用完全相同的最近 behavior
的传统框架相比,这是一个重大变化。
最终的解决方案框架称为 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
从而用于同一用户在不同上下文中对不同 items
的 CTR prediction
。所有先前的序列模型仅使用用户最近的behavior
。我们提出了一种 search engine based
的方法和一种有效的训练算法来学习检索适当的behavior
数据。
我们在三个现实世界的大型电商数据集上进行了大量的实验,并将我们的框架与传统框架中几个强大的 baselines
进行了比较。结果验证了 UBR4CTR
框架的有效性。
UBR4CTR
是SIM(hard)
的扩展。在SIM(hard)
中,我们使用catgory of target item
作为query
从而执行检索。而在UBR4CTR
中,我们根据不同的input
来自动选择合适的query
来执行检索。但是,更复杂的query
引入了更复杂的检索系统(一个搜索引擎客户端),增加了工程量。
在本节中,我们将问题公式化并引入符号。在 CTR prediction
任务中,有 items
user-item interactions
记作
此外,每个 user-item interaction
都有一个时间戳和一个上下文,时间戳和上下文是 interaction
发生时刻的。因此数据被公式化为四元组,即 item
为了建模用户不断变化的兴趣,我们将用户历史行为组织为 behavior
记录,按时间戳升序排序。点击率本质上是用户、item
、以及上下文之间的匹配概率,因此每条behavior
item
,
在特征层面,每个用户 multiple categorical
特征。如果有 numerical
特征,则将其离散化为 categorical
特征。
类似地,item
、以及上下文的特征数量。
这里的特征数量就是
field
数量。例如,就是 user
的第 个 field
。
CTR prediction
的目标是:根据 target user
target item
其中:
我们在 Table 1
中总结了符号和相应的描述。
本节将详细描述我们提出的 UBR4CTR
(User Behavior Retrieval for CTR prediction
)框架。我们首先给出整体框架的总体概述,然后详细描述 user behavior retrieval
模块和 prediction
模块。此外,以下各节将给出训练方法和一些时间复杂度分析。
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 user
和 target item
之间的点击率时,所有这三部分信息结合在一起形成 prediction target
。prediction target
本质上是由 target user
、 target item
和上下文的一系列特征组成。因此, prediction target
随后被馈入到 feature selection model
中,该模型将选择适当的特征来形成一个 query
。feature selection model
的详细设计见后续章节。然后,我们使用该 query
通过搜索 search engine client
在 user history archive
中进行搜索。
search engine client
检索出一定数量的user behaviors
,然后这些被检索到的 behaviors
被 prediction
模块使用。在 prediction
模块中,我们使用 attention-based
的深度模型来区分每个behavior
对点击概率的影响,并做出最终预测,这将在后续章节中讨论。
feature selection model
和 prediction model
轮流进行训练。feature selection model
的目标是选择最有用的特征子集。该子集的特征将组合起来生成一个 query
,该 query
用于检索与 final prediction
最相关的user behavior
。
在本节中,我们介绍用 user behavior retrieval module
,该模块由 feature selection model
和 behavior searching
过程组成。
Feature Selection Model
:如 Figure 3
所示,我们将 target user
target item
feature selection model
的输入。不失一般性,我们将 user id
特征。 user id
是一个特殊的特征,我们必须选择它,因为我们想要检索用户 behavior
。所有其他特征都拼接成一个整体。为简单起见,我们将所有特征