不断发展的互联网将我们带入具有个性化在线服务的数字世界。从在线系统收集的大量用户行为数据为我们提供了更好地了解用户偏好的绝佳机会。从技术上讲,从丰富的行为数据中捕获用户兴趣至关重要,因为它有助于典型的现实世界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
。所有其他特征都拼接成一个整体。为简单起见,我们将所有特征
注意:这里的
对应于一个 field
。每个field
的取值都是离散值。
为了更好地建模特征之间的关系和交互模式,我们使用 self-attention
机制。具体来说,我们定义:
其中:dense embedding representation
;embedding size
。
这里的
feature embedding
是否与Prediction Module
共享?根据Prediction Module
章节的描述,读者认为是共享的。
self-attention
定义为:
multi-head self-attention
定义为:
其中:head
数量;
然后,multi-head self-attention
的输出 multi-layer perceptron
:
相应特征被选择的概率通过取 sigmoid
函数获得:
其中:
然后我们根据这些概率对特征进行采样,从而得到选择好的特征子集。请注意,user id
特征始终在子集中,因为我们必须从 target user
自己的behavior
中检索。
实际上被采样到的是
field
;但是在下一步检索时,将这个field
在这个样本上的取值作为条件。
Behavior Searching
:我们使用典型的搜索引擎方法来存储和检索user behavior
。我们将每个user behavior
视为一个文档,将每个特征视为一个 term
。倒排索引用于跟踪所有behavior
,如 Figure 4
所示。每个 feature value
都与一个 posting list
相关联,该列表由具有此特定 feature value
的所有behavior
组成。例如:
"user_id_1"
包含 user id = 1
的用户的所有behavior
的 posting list
。
"Nike"
具有由 brand id = "Nike"
的所有behavior
组成的 posting list
。
query
的逻辑本质上表述为:
其中:user_id
;所选中的 query feature set
为
怎么选择?论文没有说明,实验部分也没有消融分析。
我们将 posting list
与 posting lists
的并集进行相交,交集的结果就是 candidate behavior set
。然后我们使用 BM25
对候选集中的每个 behavior document
进行评分,并检索出 top S
个 behavior document
。
query
behavior document
其中:
1
或 0
。
behavior document
的长度 behavior
中的特征数量,因此所有 behavior document
的长度相同。因此平均长度是每个文档的长度,并且
可以进一步化简为:
。似乎 参数没什么用? 考虑到
取值为 0
或1
,因此:因此
也没什么用?
IDF
定义为:
其中: behavior documents
的总数,behavior documents
总数。
IDF
项赋予常见特征比罕见特征更少的重要性。与常见特征相比,罕见特征对用户偏好的暗示更强,这是有道理的。
通过使用 BM25
对 candidate behaviors
进行排序,我们获得了 top S
的 behavior documents
作为所检索到的behavior
,记作
实际应用时会采用双层索引,最外层为
user_id
,最内层为各个特征的取值,从而降低存储需求。
对于 prediction module
,我们使用 attention-based
的深度神经网络来建模不同user behavior
对 final prediction
的重要性。
如 Figure 5
所示,我们通过加权池化得到 user representation
其中:
user behavior
embedding
向量,
behavior document
的数量。
user behavior
prediction target
向量。Att()
是一个具有 ReLU
激活函数的多层深度网络。
这个
prediction target
向量的内容和 几乎相同,区别在两个地方:
包含了 user ID
特征,而 不包含。
是向量拼接而成,维度为 ;而 为向量堆叠而成,维度为 。
final prediction
计算如下:
其中: sigmoid
函数,其他层采用ReLU
作为激活函数。
由于目标是准确估计点击率,我们使用对数似然作为目标函数,其定义为:
其中:
LL(.)
是在给定所检索到的user behavior
target user-item pair
query
。我们使用抽样来选择特征,然后被选中的特征形成 query string
。query string
形成后,搜索结果(即,检索到的behavior
)是确定性的。因此,我们可以认为这些behavior
是从概率分布
优化 Prediction Module
:为了优化 attention-based
预测网络
其中:
注意,这里是负的对数似然,所以是
min
。
当我们优化 prediction network
时,检索模块保持不变,因此如果函数
优化检索模块:对于检索模块,只需要优化 feature selection model
。随着采样过程的发展,我们不能直接使用 SGD
来优化它。相反,我们使用 REINFORCE
算法来处理离散优化(discrete optimization
)。
具体而言,在保持 prediction network
feature selection model
:
我们将 query
我们将检索模块 likelihood ratio
来估计其梯度:
这是对 query
数量。
由于整个检索模块的不确定性实际上来自 feature selection model
,我们可以得出:
其中:
其中:其中 query
的第
为了使用reward
训练一个更好的模型,我们在这里用相对信息增益 (Relative Information Gain: RIG
)替换 LL(·)
作为奖励函数。 RIG
定义为 RIG = 1 − NE
,其中 NE
是归一化熵:
其中 CTR
。
可以参考
UBR
模型,它是UBR4CTR
的升级版。
训练过程的伪代码:在本小节中,我们给出了训练过程的详细伪代码。
首先,我们使用 feature selection model
对预测网络进行预热。
feature selection model
如何初始化?如果是随即初始化是否会带来不利影响?作者没有提及。读者猜测是不影响的,因为后续的迭代训练会对feature selection model
进行优化。为什么要预热?因为
prediction model
是feature selection model
的奖励函数,它必须要有一定的准确性才能指导feature selection model
的学习。
预训练后,我们轮流优化两个模型,每个模型被训练一个 epoch
之后,再训练另一个模型一个 epoch
,轮流往复。
Algorithm 1
显示了训练过程。
本节分析了该方法的时间复杂度和可行性。我们使用 user behavior
的总数,使用 unique features
(相当于 term
)的总数。然后,user history archive
中 posting lists
的平均长度为
回想一下之前内容所描述的搜索操作,我们首先检索 postings
,这需要
然后交互操作需要 selected features
数量的上限。
接下来的 scoring
操作不会增加复杂度,因为它与
feature selection model
中的 self-attention
的复杂度为
attention-based prediction network
需要 attention
操作都可以并行执行。
两个常数可以忽略,因此 UBR4CTR
的总时间复杂度为
在本节中,我们详细介绍了我们的实验设置和相应的结果。我们将我们的模型与几个强大的 baselines
进行了比较,并实现了 SOTA
的性能。此外,我们已经发布了代码用于复现(https://github.com/qinjr/UBR4CTR
)。
我们从三个研究问题(research question: RQ
)开始,并用它们来引导以下讨论。
RQ1
:与其他 baselines
相比,UBR4CTR
是否实现了最佳性能?
RQ2
:Algorithm 1
的收敛性能如何?训练过程是否有效且稳定?
RQ3
:UBR4CTR
中的检索模块有什么影响,retrieval size
如何影响性能?
数据集:我们使用三个真实的、大型的 users online behaviors
数据集,它们来自阿里巴巴集团三个不同平台。数据集的统计数据可以在 Table 2
中找到。
Tmall
数据集:由阿里巴巴集团提供,其中包含 2015
年5
月至2015
年11
月天猫电商平台上的user behavior
历史记录。
Taobao
数据集:包含来自中国最大的电商平台之一淘宝中检索到的user behavior
数据。它包含 2017
年 11
月25
日至 12
月3
日的user behavior
,包括点击、购买、添加到购物车、以及喜欢商品等几种behavior
类型。
Alipay
数据集:由在线支付应用程序支付宝收集。用户的在线购物behavior
是从 2015
年7
月1
日到2015
年 11
月 30
日。
数据集预处理:
对于 UBR4CTR
,数据集被处理成逗号分隔特征的格式。包含 user, item and context features
的一行被视为一个 behavior document
。
对于 baselines
,user behavior
仅按时间戳排序。由于数据集不包含特定的上下文特征,我们使用 behavior timestamp
手动设计一些特征,以便能够捕获周期性。我们设计了一些特征,例如 season id
(春季、夏季等)、是否是周末、以及是哪个半月(上半月还是下半月)。
搜索引擎:数据集预处理后,使用逗号分隔的 tokenizer
将它们插入搜索引擎。我们使用基于 Apache Lucene
的 Elastic Search
作为搜索引擎客户端。
Train & Test Splitting
:我们使用 time step
来拆分数据集。
训练集包含第 user behavior
,其中第 behavior
用于预测第 behavior
。
类似地,验证集使用第 behavior
来预测第 behavior
;测试集使用第 behavior
来预测第 behavior
。
超参数:
UBR4CTR
的 feature selection model
的学习率从 attention based prediction network
的学习率从
baseline
模型的学习率和正则化项的搜索空间与 UBR4CTR
的 prediction network
相同。
所有模型的 batch size
均从
每个模型的超参数都经过调优并报告最佳性能。
评估指标:CTR
、Logloss
。
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
是我们提出的框架和模型。
我们对 UBR4CTR
和基线模型进行了两组比较。
在第一组实验中,所有模型都使用相同数量的user behavior
,对三个数据集分别为 20
、20
、12
。唯一的区别是: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
近使用最近的20
个behaviors
,而没有用所有的behaviors
。这是不公平的比较。
在第二组实验中,我们对 baselines
模型使用不同的设置,对 UBR4CTR
的设置与第一组实验完全相同。我们将整个序列馈入到所有的 baseline
模型,其中这三个数据集的序列长度分别为 100
、100
、60
。它们是这些数据集中user behavior
的最大长度。对于 UBR4CTR
,检索到的behavior
大小保持不变,分别为 20
、20
和12
。
结果如 Table 4
所示。在 Table 4
中,UBR4CTR
的性能与 Table 3
中相同,因为我们没有更改任何设置。从表中,我们可以发现以下事实:
(i)
:UBR4CTR
使用的behavior
比其他 baselines
少 80%
,但仍然具有最佳性能。这表明较长的序列可能包含更多噪音和不相关信息,因此有必要从整个序列中仅获取最有用的数据。
(ii)
:与 Table 3
相比,大多数 baselines
都取得了比其自身更好的性能,尤其是 DIN
和 DIEN
。这表明来自更远历史的behavior
确实包含更丰富的信息和模式。并且这些模式更容易通过 attention
机制被捕获。
(iii)
:虽然由于性能更好的 baselines
导致 AUC
的改进要小得多,但 Logloss
仍然有显著改善。原因是 retrieval module
的优化目标为 RIG
(相当于对数损失)。
retrieval module
的优化目标会影响最终模型的指标。
为了说明我们框架的收敛性,我们绘制了 UBR4CTR
的 learning curves
。在 Figure 6
中,
上面的三个子图分别是在三个数据集上训练时 attentive prediction network
的 AUC
曲线。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
的性能将有所突破。
在本节中,我们对我们的框架进行了一些广泛的和消融的研究。
采样的特征数量
、采样的 query
数量,作者都没有进行消融分析。
Figure 7
说明了不同 retrieval sizes
对预测性能的影响。从图中可以看出,AUC
和 Logloss
的波动在绝对值方面并不是很严重。然而,每个数据集都存在一个最佳大小。这表明:
太少的 retrieved behaviors
可能未包含足够的behavior
和信息。
而太多的 retrieved behaviors
也不总是提高性能,因为它会引入太多噪音。
为了说明我们框架的检索模块的重要性,我们绘制了 sum pooling model
和 attention network
,分别在具备和不具备 user behaviors retrieval
的情况下的性能比较。 sum pooling model
只是对user behavior
做了一个非常简单的 sum
池化操作。结果如 Figure 8
所示。从图中我们发现:
没有检索的 sum
池化模型(SP
)表现很差。一旦配备了检索模块,它的性能就会显著提高(UBR_SP
)。
同样的现象也适用于注意力网络,当配备了 behavior retrieval module
时,其性能会大大提高(ATT vs. UBR4CTR
)。
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
的时间复杂度,为RNN
的 sequential CTR models
,它们的时间复杂度为 GRU rolling
)的成本。UBR4CTR
的时间复杂度并非完全不可行,因为
从系统负载的角度来看,UBR4CTR
更好,因为它不需要在内存中维护所有 behavior
。为维护所有 behavior
,这是传统方法的常见做法。
此外,我们在实验中比较了我们的 UBR4CTR
和其他 sequential CTR baselines
之间的实际 inference time
。模型的平均 inference time
如 Figure 9
所示。时间是通过将测试数据集上的总时间(仅包含前向计算和behavior
搜索的时间)除以 prediction targets
的数量来计算的。
从图中可以看出,UBR4CTR
在三个数据集上的推理时间绝对值小于 1ms
,这对于 online serving
来说已经足够高效了。UBR4CTR
的inference time
是所有 sequential CTR models
中最长的,但差距并不大。具体而言,与已在阿里巴巴在线广告平台中部署的 DIEN
相比,UBR4CTR
的平均inference time
大约增加了 15%
到 30%
,可以通过进一步的 infrastructure implementation
来进行优化。
《End-to-End User Behavior Retrieval in Click-Through Rate Prediction Model》
CTR prediction
是推荐系统的核心任务之一。它预测每个 user-item pair
的个性化的点击概率。最近,研究人员发现,通过考虑用户行为序列,尤其是长期用户行为序列,可以大大提高 CTR
模型的性能。某电商网站的报告显示,23%
的用户在过去 5
个月内点击次数超过 1000
次。尽管有大量工作专注于建模用户行为序列,但是由于现实世界系统中严格的 inference time
的限制,很少有工作能够处理长期用户行为序列。人们提出了两阶段方法来突破极限以获得更好的性能:
在第一阶段,设计一个辅助任务来从长期用户行为序列中检索 top-k
相似的 items
。
在第二阶段,在 target item
和第一阶段选择的 k
个items
之间进行经典的注意力机制。
然而,检索阶段和主体的 CTR
任务之间存在 information gap
。这种目标分歧会大大降低长期用户序列的性能增益。在本文中,受 Reformer
的启发,我们提出了一种局部敏感哈希(locality-sensitive hashing: LSH
)方法,称为 End-to-end Target Attention: ETA
,它可以大大降低训练和推理成本,并使得采用长期用户行为序列进行端到端的训练成为可能。离线和在线实验都证实了我们模型的有效性。我们将 ETA
部署到一个大型的真实世界电商系统中,与两阶段的长用户序列的 CTR
模型相比,商品交易总额(Gross Merchandise Value: GMV
)额外提高了 3.1%
。
推荐系统被广泛用于解决信息过载问题。在推荐系统中使用的所有深度学习模型中,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
item
充当 key
value
DIN
使用最近的 50
个behavior
用于 target attention
,这忽略了长用户行为序列中的丰富信息,显然是次优的。
最近,人们提出 SIM
和 UBR4CTR
等 SOTA
方法。这些方法从较长的用户行为序列中捕获用户的动态兴趣。这些方法分两阶段进行:
在第一阶段,设计一个辅助任务从长期用户行为序列中检索 top-k
相似的 items
,以便提前准备好 top-k
相似的 items
。
在第二阶段,target item
和第一阶段选定的 k
个 items
之间进行 target attention
。
然而,用于检索阶段的信息与 main CTR model
不一致或已过时。例如:
UBR4CTR
和 SIM
使用 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-k
的item
从而用于 target attention
。我们的方法将 retrieval
复杂度从 CTR
模型要评分的 target items
数量,item 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
限制的约束下更好地建模用户行为序列的实际经验。
我们的方法还可以扩展到其他场景,扩展到需要处理极长序列的其他模型,例如长序列的时间序列预测模型。
其核心思想就是:用近似的
similarity
(embedding
经过LSH
之后的汉明距离)来代替精确的similarity
(embedding
向量的内积)。
在本节中,我们首先给出 CTR prediction
任务的公式。然后我们介绍如何通过 SimHash
机制生成 embedding
向量的指纹。
CTR prediction
任务广泛应用于在线广告、推荐系统和信息检索。它旨在解决以下问题:给定一个 impression
item
被展示给一个用户,使用特征向量 user click
(标记为
CTR
任务通常被建模为二分类问题。对于每个 impression
item
是否被点击从而标记一个二元标签 CTR
模型以最小化交叉熵损失:
其中:impression
的总数;label
;
SimHash
算法最早由 《Similarity estimation techniques from rounding algorithms》
提出,其中一个著名应用是 《Detecting near-duplicates for web crawling》
,它通过 SimHash based
的指纹检测重复的网页。SimHash
函数将 item
的 embedding vector
作为输入,并生成其二进制指纹。Algorithm 1
显示了 SimHash
的一种可能的实现的伪代码。
不用那么啰嗦,可以直接用矩阵乘法来实现:
SimHash
满足局部敏感特性(locality-sensitive properties
):如果输入向量彼此相似,则 SimHash
的输出也相似,如 Figure 1
所示。
Figure 1
中的每个 random rotation
都可以看作一个“哈希函数”。旋转是通过将 input embedding vector
与随机投影列向量 Algorithm 1
的第2
行所示。随机旋转后,球面上的点被投影到 signed axes
上( Algorithm 1
中的第 3-7
行)。在Figure 1
中,我们使用 4
个哈希函数和两个 projection axes
,将每个向量映射到一个具有 4
个元素的 signature vector
。signature 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
中的 embedding vectors
。
“
4
个哈希函数和两个projection axes
”?图中看起来只有一个轴啊,水平轴下方为1
、上方为0
。
在本节中,我们首先介绍我们的 End-to-End Target Attention: ETA
模型的详细架构。然后介绍 ETA
模型的不同子模块。最后,我们介绍部署 ETA
的实际经验。
如 Figure 2
所示,我们的模型以 user/item-side features
作为输入,输出某个 user-item pair
的点击概率。
长期用户行为序列 user profile
target item
注意:长期用户行为序列
不包含短期用户行为序列 ,它们是正交的。 在
SIM
模型中,长期用户行为序列是否包含短期用户行为序列?这个不清楚,SIM
的原始论文未说明。在
MIMN
和UBR4CTR
模型中,只有长期用户行为序列,没有短期用户行为序列。
有了这些特征,我们使用长期兴趣提取单元(Long-term Interest Extraction Unit
)、多头目标注意力(Multi-head Target Attention
)和 Embedding Layer
分别将 hidden vectors
。然后将 hidden vectors
拼接在一起并馈入到 Multi-layer Perception: MLP
部分。
在 MLP
的最后一层,使用 sigmoid
函数将 hiddenvector
映射为标量 user-item pair
的点击概率。此概率可作为下游任务的 ranking score
。
本文中这些符号的含义:
对于不同类型的特征,我们采用不同的 embedding
技术。原始输入特征主要分为两类:categorical
特征和 numerical
特征。
在我们的模型中,我们对 categorical
特征使用 one-hot encoding
。
对于 numerical
特征,我们首先将特征划分到不同的 numerical buckets
中。然后我们应用 one-hot encoding
来识别不同的桶,这与 《Interpretable Click-Through Rate Prediction through Hierarchical Attention》
的方式类似。
请注意,由于有数十亿个 item ids
,one-hot encoding vectors
可能非常稀疏。因此,我们将所有 one-hot embedding vectors
映射到低维 hidden vectors
以减少参数数量。我们使用 item
embedding vector
。然后将所有user behavior items
的 embedding vectors
打包成矩阵 embedding size
:
多头注意力机制由 《Attention Is All You Need》
首次提出,并广泛应用于 CTR prediction
任务。在 CTR prediction
任务中,target item
作为 query
item
作为 key
value
multi-head target attention
),缩写为 TA
。
multi-head target attention
的计算如下:
其中:
target item
的 embedding
矩阵;embedding
矩阵。item
的 embedding size
。注意,为了清晰起见,我们只选择了一个样本(即,一个 target item
),而不是一个 batch
的样本。
head
数量。
矩阵 query
、key
、value
。
query, key, value
。query
中每一行的维度,也是 key
中每一行的维度;value
中每一行的维度。
softmax
函数用于将内积值转化为
multi-head target attention
的主要部分是 dot-product attention
。dot-product attention
由两步组:
首先,根据 target item
和每个behavior item
的相似度。
其次,以归一化的相似度作为注意力权重,并计算所有 behavior items
的 weighted sum embedding
。
这部分是我们 ETA
模型的主要贡献。它将用户行为序列的长度从数十扩展到数千甚至更长,从而捕获长期用户兴趣。如前所述,multi-head target attention
的复杂度为 target items
的数量(也就是 batch size
),representation
维度。在大型在线系统中, 1000
,128
。因此,直接对数千个长期的user behavior
进行 multi-head target attention
是不可行的。
根据 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
,并对这些 k
个behavior
进行 multi-head target attention
。
然而,一个好的检索算法应该满足两个约束:
1)
:检索部分的目标应该与整个 CTR
模型保持一致。只有这样,检索到的 top-k items
才能对 CTR
模型做出最大贡献。
2)
:检索时间应满足严格的 inference time
限制,以确保该算法可以应用于实际系统,从而每秒处理数百万个 request
。
我们在 Table 2
中比较了不同的检索算法。
SIM
和 UBR4CTR
构建离线倒排索引(offline inverted index
),以便在训练和推理期间进行快速搜索。然而,它们用于构建索引的输入是 item
的属性信息(例如 category
)或 item
的 pre-trained embedding
,这与 CTR
模型中使用的 embedding
不同。这种差距违反了上述约束 1)
,并可能导致性能下降。
如果直接使用 CTR
模型中的 embedding
并通过内积搜索 k-nearest neighbor
,则需要 2)
,并且无法在线部署。
我们的 ETA
使用 SimHash
将两个向量的内积转换为汉明距离计算,如 Figure 2
所示。这使得它可以部署在现实世界的推荐系统中。此外,SimHash
的局部敏感特性可以确保 fingerprint
始终可以与 CTR
模型中的 original embedding
保持同步。实验章节的评估部分表明这种兼容性可以大大提高性能。
如何选择正确的哈希函数、以及检索部分和 ETA
其余部分之间的联合学习将在后续章节中说明。
经过 SimHash
函数和 hamming distance layer
后,我们从 top-k
相似的 behavior items
,然后执行前面提到的 multi-head target attention
以生成 hidden vector
。该向量作为长期用户兴趣的 representation
,并与其他向量一起输入到 MLP layers
中。long-term user interest extraction unit
的公式如下:
其中:
LTI
和 TA
分别是 long-term user interest extraction unit
和 multi-head target attention
的缩写。
embedding
矩阵。target item
相似度函数:如 Figure 2
所示,我们使用 SimHash
函数和汉明距离来计算两个 embedding
向量的相似度,而不是内积。SimHash
函数将上述 embedding layer
的输出作为输入。对于每个输入的 embedding
向量,SimHash
函数生成其 compressed number
作为指纹(fingerprint
)。 SimHash
满足局部敏感特性:如果 input features
彼此相似,则 hashing output
也相似。因此,embedding
向量之间的相似性可以用 hashed fingerprints
之间的相似性来代替。embedding
向量可以编码为 m-bit number
。然后可以通过汉明距离来测量两个指纹之间的相似性。
Top-K Retrieval
:与基于内积的模型相比,top-k retrieval layer
可以通过汉明距离更有效地找到与 target item
的 top-k
相似的 user behavior items
。两个整数的汉明距离定义为对应 bits
不同的不同 bits positions
的数量。
为了得到两个 m-bit numbers
的汉明距离,我们首先进行 XOR
运算,然后计算取值为 1
中的bits
数量。如果我们将乘法定义为原子操作,则两个 m-digit numbers
的汉明距离的复杂度为 top-k retrieval
的总复杂度为 target items
的数量。
值得注意的是,每次执行 SimHash
函数时,hashed fingerprints
都可以与模型一起存储在 embedding table
中。在推理期间,只需要 embedding lookup
,其复杂性可以忽略不计。
在本节中,我们展示了如何训练具有检索部分的 ETA
。然后我们介绍如何选择 SimHash
算法中使用的“哈希函数”。然后我们介绍工程优化技巧。
Joint learning of retrieval part
:在训练阶段,检索部分不需要更新梯度。检索的目标是为接下来的 multi-head target attention
部分选择 query
的最近邻的 keys
。在选择了 query
的 top-k
最近邻的 keys
之后,对这些 top-k items
的 original embedding vectors
进行正常的注意力机制和反向传播。检索的唯一事情是在训练开始时初始化一个固定的随机矩阵 Algorithm 1
)。只要 input embedding vector
SimHash
的签名就会相应更新。局部敏感特性确保在每次迭代中,使用 CTR
模型的 latest embedding
无缝地选择 query
的 top-k nearest keys
。因此,检索和 CTR
模型之间的 gap of goal
比其他检索方法(例如 Table 2
中所示的基于离线倒排索引的方法)小得多。
从 CTR
模型的角度来看,检索部分是透明的,但可以确保模型使用最邻近的 items
进行 multi head attention
。实验章节表明,这种无需任何 pre-training
或 offline inverted index building
的端到端训练可以大大提高 CTR prediction
任务的性能。
“哈希函数”的选择:SimHash
是一种著名的局部敏感哈希 (locality-sensitive hashing: LSH
)算法。SimHash
的实现如 Algorithm 1
所示,其中我们使用固定的 random hash vector
作为“哈希函数”。任何将字符串映射为随机整数的传统散列函数都可以使用。但是,在我们的算法中,出于对矩阵计算的可扩展性和效率的考虑,我们选择了 random hash vector
和 Algorithm 1
的实现,这与Reformer
相同。
局部敏感哈希是通过随机旋转和投影实现的。随机旋转是指 embedding vector
与一个固定的 random hashing vector
singed axes
上从而获得 binary signature
,0
附近随机生成。
工程优化技巧:当在线部署模型时,SimHash
的计算可以进一步减少一步。针对 embedding
向量 Algorithm 1
计算出的长度为 signature vector
signature vector
,因为 1
要么为 0
。因此,这样可以大大减少内存开销,加快汉明距离的计算速度。两个整数的计算时间可以在
在本节中,我们进行实验来回答以下研究问题:
RQ1
:我们的 ETA
模型是否优于 baseline
模型?
RQ2
:与 baseline
模型相比,我们的 ETA
模型的推理时间是多少?推理时间和性能一样重要,因为它决定了模型是否可以在线部署以供服务。
RQ3
:我们的 ETA
模型的哪一部分对性能和推理时间贡献最大?
数据集:为了对我们的 ETA
模型和 baseline
模型进行全面比较,我们使用了公共数据集和工业数据集。还进行了在线 A/B test
。对于公共数据集,我们选择了 Taobao
数据集,baseline
模型 SIM
和 UBR4CTR
也采用了该数据集。我们也准备了一个工业数据集作为公共数据集的补充。Table 3
简要介绍了数据集。
Taobao
数据集:该数据集由 《Joint optimization of tree-based index and deep model for recommender systems》
首次发布,被广泛用作 CTR prediction
任务和序列推荐任务的公共基准。它由 Taobao Mobile App
的user behavior
日志组成。user behavior
包括点击、收藏、添加到购物车、以及购买。该数据集包含 100M
个实例。平均而言,每个用户大约有 101
次交互,每个item
受到超过 24
次交互。最近的 16
个behavior
作为短期用户行为序列,最近的 256
个behavior
作为长期用户行为序列。
工业数据集:该数据集是从我们自己的在线推荐系统收集的,它是我国顶级的移动 app
之一。我们的工业数据集有三个优势:
(i)
:我们的数据集包含 impression interaction
,这表示 item
展示给用户但未被用户点击。 impression interaction
自然是 CTR
模型的负样本。因此,不需要棘手的负采样。
(ii)
:我们的工业数据集中的用户行为序列更长。有超过 142B
个实例,平均长度达到 938
,比公开的 Taobao
数据集长 9
倍。
(iii)
:我们的工业数据集具有由多位软件工程师设计的更多特征,更接近现实世界的推荐系统模型。最近的48
个behavior
作为短期用户行为序列,最近的 1024
个behavior
作为长期用户行为序列。在消融研究中,我们还尝试了长度为 {256, 512, 2048}
的长期用户行为序列。
baseline
:我们将我们的模型与以下主流的 CTR prediction baselines
。选择每个 baseline
来回答上述一个或多个相关的研究问题。
Avg-Pooling DNN
:利用用户行为序列的最简单方法是均值池化,它将不同长度的用户行为序列编码为 fixed-size hidden vector
。该 baseline
可以看作是DIN
的变体,用均值池化代替 target attention
,类似于 YouTube
。与 DIN
相比,该 baseline
主要用于显示 target attention
的必要性。
DIN
:DIN
通过注意力机制来建模具有不同 target items
的个性化用户兴趣,该注意力机制称为 target attention
。但是,DIN
仅利用短期用户行为序列。
DIN (Long Sequence)
:是配备长期用户行为序列 DIN
。 DIN
相比,此 baseline
用于衡量长期用户行为序列本身的信息增益。
SIM(hard)
:SIM
是 CTR prediction
模型,它提出了一个 search unit
,以两阶段的方式从长期用户行为序列中提取用户兴趣。SIM(hard)
是 SIM
的一种实现,它在第一阶段按 category id
搜索 top-k behavior items
。
UBR4CTR
:UBR4CTR
也是一种两阶段方法,它在 CTR prediction
任务中利用长期用户行为序列。在 UBR4CTR
中,通过一个 feature selection model
准备好 query
,从而检索最相似的 behavior items
。它还准备了一个倒排索引以供在线使用。由于 UBR4CTR
和 SIM
几乎同时发布,因此它们无法相互比较。在我们的论文中,我们首次比较了 UBR4CTR
和 SIM
。
SIM(hard)/UBR4CTR + timeinfo
:是在对用户行为序列进行编码时带有 time embedding
的 SIM(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
作为我们的强基线。
MIMN
与 DIN
是由同一个团队提出的。MIMN
提出了一个 multi-track offline user interest center
来提取长期用户兴趣。在发布时,它通过利用长期用户行为序列实现了 SOTA
的性能。然而,MIMN
被同一支队伍的 SIM
所击败。由于 MIMN
对我们的研究问题贡献不大,由于篇幅限制,我们省略了这个基线。
评估指标:
离线实验:AUC
作为主要指标,推理时间作为补充指标。
推理时间定义为:对某个模型请求的 a batch of items
进行评分时的往返时间。我们通过在线部署被测试的模型来服务用户请求从而测量推理时间,这些用户请求是从产品环境中复制而来。为了比较公平性,机器和用户请求数量控制相同。
在线 A/B test
:CLICK
和 CTR
。
CLICK
:被点击 items
的总数。
CTR
:衡量平台中用户的点击意愿。它的定义为 CLICK/PV
,其中 PV
定义为被展示的 items
的总数。
数据预处理:
Taobao
数据集仅包含 positive
交互,例如评论、点击、收藏、添加到购物车、以及购买。我们使用与MIMN
相同的数据预处理方法。
首先,对于每个用户,我们选择最后一个behavior
作为正样本。
然后,对于该用户,我们随机采样一个与正样本相同 category
的新 item
作为负样本。
其余的 behavior items
用作特征。
根据正样本的时间戳 80%
)、验证集(10%
)和测试集(10%
)。
我们的工业数据集自然有正样本和负样本,因为我们记录了每个用户的所有 impressions
。如果用户点击了该 item
,则 impression
被标记为正样本;否则,它被标记为负样本。
我们使用过去两周的日志作为训练集,following day
的日志作为测试集,这与 SIM
类似。
实验设置:对于不同数据集上的每个模型,我们使用验证集来调优超参数以获得最佳性能。学习率从 L2
正则化项从 Adam
优化器。Taobao
数据集和我们的工业数据集的 batch size
分别为 256
、1024
。
Taobao
数据集:Taobao
据集上的评估结果如 Table 4
所示。从表中我们发现:
与所有 baselines
相比,我们的 ETA
具有一致的性能改进。
ETA
比 SIM(hard)
好 0.46%
,比 DIN(Long Se-sequence)
好 0.6%
。
添加 time embedding
后,ETA+timeinfo
的性能比 SIM(hard)+timeinfo
高 0.38%
,比 DIN(Long Sequence)
高 0.85%
。在 UBR4CTR
上也可以观察到类似的结果(即,添加 time embedding
的效果更好)。
观察到 DIN(Long Sequence)
与 DIN
相比,AUC
提高了0.35%
,这表明对长期用户行为序列进行建模对于 CTR prediction
是有效的。
我们还发现 UBR4CTR
的性能比 DIN(Long Sequence)
差。这是因为 UBR4CTR
的 feature selection model
仅选择特征(例如category
、星期几)与 target item
相同的behavior
。UBR4CTR
中的这种过滤有助于从序列中去除噪音,但也会导致用户序列变短,当没有足够的 items
进行 top-k retrieval
时,这是有害的。
我们发现DIN
比 Avg-Pooling DNN
的性能高出 1.84%
,这表明使用 target attention
来编码用户行为序列可以大大提高性能。
工业数据集:我们自己的工业数据集上的评估结果如 Table 5
所示。请注意,CTR
模型在 AUC
上的 0.1%
改进,可以在我们的在线推荐系统中带来数百万的真实点击和收入。与所有 baselines
相比,我们的 ETA
实现了最佳性能。
与 SIM(hard)
和 UBR4CTR
相比,我们的 base ETA
分别实现了 0.34%
和 0.43%
的改进。
与 SIM(hard)+timeinfo
和 UBR4CTR+timinfo
相比,我们的 ETA+timeinfo
分别实现了 0.35%
和 0.42%
的改进。
与Taobao
数据集不同,在工业数据集上 SIM(hard)+timeinfo
成为最强的 baseline
,比 DIN(Long Sequence)
高出 0.27%
。这有两个原因。
一方面,工业数据集中的用户序列长度足够大,对基于长期用户序列的模型友好。工业数据集的平均长度达到了 938
,是 Taobao
数据集的 9
倍。
另一方面,DNN(Long Sequence)
采用均值池化对整个序列进行无选择性地编码,与 UBR4CTR
、SIM
、ETA
等基于检索的模型相比,可能会引入噪音。
Taobao
数据集上的最强baseline
也是SIM(hard)+timeinfo
。所以这个结论是错误的,其解释也是不可信的。
我们还可以发现 SIM(hard)
比 UBR4CTR
有 0.09%
的性能提升,这主要是由于对用户行为序列的处理方法不同造成的。
在 SIM(hard)
中,用户序列被拆分为两个独立的子序列,与 Figure 2
中的 ETA
类似:短期用户行为序列 k
个user behavior
组成,从 item 1
到 item k
;长期用户行为序列 item k+1
到 item n
中选择的其他 k
个behavior
而组成。
但是,UBR4CTR
从 item 1
到 item n
选择 item
(Figure 2
中的 SIM(hard)
以 100%
的概率选中,被 UBR4CTR
以 feature selection model
所决定的 timeinfo
在用户兴趣建模中起着重要作用,因为用户兴趣是动态的并且经常变化。因此 SIM(hard)
的表现优于UBR4CTR
。
在线 A/B Test
:在线 A/B Test
的评估结果如 Table 6
所示。 Table 6
显示了与 DIN-based
的方法相比的性能改进,其中 DIN-based
的方法没有长期用户行为序列。从 Table 6
中我们发现:
与 DIN-based
的方法相比,我们的 ETA+timestamp
在 CTR
上实现了6.33%
的改进,并带来了 9.7%
的额外 GMV
。
与最强的基线 SIM(hard)+timeinfo
相比,我们的 ETA+timeinfo
在 CTR
上额外提高了 1.8%
,在 GMV 上提高了3.1%
。
请注意,GMV
上 1%
的改进是一个显著的改进,因为这意味着为推荐系统带来了数百万的收入。
虽然使用长期用户行为序列可以提高 CTR prediction
的性能,但模型复杂度也会相应增加。我们测量了不同模型的推理时间,如 Table 5
所示。
Avg-Pooling DNN
的推理时间最短,为 8 ms
。它仅使用均值池化方法来编码近期的 behavior items
。
将均值池化替换为 target attention
后,DIN
的推理时间增加了 3ms
( 8ms
到 11ms
)。
引入长期用户行为序列后,DIN (Long Sequence
的推理时间又增加了 3ms
(11ms
到14ms
)。
SIM
和我们的 ETA
的推理时间相当,约为 19 ~ 21 ms
。
UBR4CTR
的推理时间最长,因为在检索阶段之前使用了额外的 feature selection model
,并且在线进行了相对耗时的 IDF and BM25 based
的程序来获取 top-k items
。
消融研究结果如 Table 7
所示,以回答问题 RQ3
。我们使用编码方式来区分 ETA
模型的不同版本(v0
到v4
)。请注意,v0
是 ETA
的基本版本。编码方式列在 Table 7
的第二列中,其中:
avg(·)
和 ta(·)
分别表示通过均值池化和 target attention
对user behavior
进行编码。
ta(1024 -s- 48)
表示对从 1024
长度的用户行为序列中选择的 top-48 user behaviors
进行 target attention
。
ta(1024 -s- 48)
中的符号 s
表示 SimHash
用于从1024
个user behavior
中选择 top-48
;类似地,ta(1024 -i- 48)
中的符号i
表示内积用于从1024
个user behavior
中选择 top-48
。
从 Table 7
中,可以得出以下观察结果:
(i)
:直接在原始 1024
长度的用户行为序列上进行 multi-head target attention
(v4
)可以获得最佳性能,但同时具有最长的推理时间。
与v4
相比,我们的 base ETA
(v0
) 选择 top-k behaviors
进行 attention
,牺牲了大约 0.1%
的 AUC
,并将推理时间减少了 46%
。
(ii)
:将 v3
与 v0
进行比较,在检索阶段用内积替换 SimHash
可使 AUC
提高 0.07%
。然而,推理时间增加了 68%
,这是我们严格的在线 service level agreement: SLA
所不可接受的。
(iii)
:当我们改变用户行为序列的长度(v2.x
与 v0
)时,观察到 AUC
和推理时间之间的权衡。可以根据在线推理时间的要求决定合适的序列长度。
在 Figure 3
中,我们还评估了SimHash
所生成的哈希指纹 bit-length
下的性能。如前文所述,指纹的 bit-length
可以通过 SimHash
中使用的哈希函数数量来控制。我们可以发现:
通过增加 bit-length
可以提高 AUC
。
但是,当 bit-length
大于 2
倍 embedding size
时,AUC
的改进变得微不足道。
《Sampling Is All You Need on Modeling Long-Term User Behaviors for CTR Prediction》
丰富的user behavior
数据已被证明对 CTR prediction
应用程序具有重要价值,尤其是在工业推荐、搜索或广告系统中。然而,由于对 online serving time
的严格要求,真实世界的系统要充分利用长期用户行为并不容易。大多数先前的工作采用 retrieval-based
的策略,即首先检索少量用户行为以供后续使用。然而,retrieval-based
的方法是次优的,会造成信息丢失,并且很难平衡检索算法的效果和效率(effectiveness and efficiency
)。
在本文中,我们提出了 Sampling-based Deep Interest Modeling: SDIM
,一种简单而有效的 sampling-based
的端到端方法,用于建模长期用户行为。我们从多个哈希函数中采样以生成 target item
的hash signatures
、以及用户行为序列中每个behavior item
的hash signatures
,并通过直接收集 behavior items
来获取用户兴趣,这些 behavior items
与 target 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
的搜索系统中。
CTR prediction
是工业应用系统中的一项基本任务。用户兴趣建模(user interest modeling
)旨在从历史行为数据中学习用户的隐含兴趣,已被广泛引入现实世界系统,并有助于显著改善 ctr prediction
。
人们提出了各种模型来建模用户兴趣。其中,DIN
通过考虑给定的 target item
与历史行为的相关性来自适应地计算用户兴趣。DIN
引入了一种新的注意力模块,称为 target attention
,其中 target item
充当query
user behavior
充当 key
value
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
。
SIM
和 UBR4CTR
采用两阶段框架来处理长期用户行为。他们从序列中检索 top-k
相似的 items
,然后将这些 items
馈入后续的注意力模块。如 《 End-to-End User Behavior Retrieval in Click-Through RatePrediction Model》
所指出的,这些方法的 retrieve objectives
与 CTR
模型的目标不一致,并且离线倒排索引(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: LSH
将 items
转换成hash signatures
(hash signatures
),然后根据它们到 target item
的汉明距离检索 top-k
相似的 items
。LSH
的使用大大降低了计算 items
之间相似度的代价,ETA
取得了比 SIM
和 UBR4CTR
更好的结果。
SIM
、UBR4CTR
和 ETA
都是 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 item
的hash signatures
、以及用户行为序列中每个 item
的hash signatures
。
然后,我们没有使用某种 metric
来检索 top-k
相似的 items
,而是直接从整个序列中收集与 target item
共享相同hash signatures
的 behavior 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) server
、CTR 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
。
CTR prediction
是工业界的推荐、搜索和广告系统中的核心任务。CTR
任务的目标是估计用户点击 item
的概率,定义如下:
其中:CTR
模型中的可训练参数;label
。
给定输入特征 CTR
模型:
target attention
的概念最早由 DIN
提出,并广泛应用于CTR
任务中的用户兴趣建模。target attention
将 target item
作为 query
,将用户行为序列中的每个 item
作为 key
和 value
,并使用 attention
算子从用户行为序列中 soft-search
相关的部分。然后通过对用户行为序列进行加权和来获得用户兴趣。
具体而言,将 target item
指定为 representations
指定为
request
, CTR
模型要评分的 target items
数量。
hidden size
。
令 target item
的 representation
。target attention
计算 item
的点积相似度,然后以归一化相似度作为权重,得到用户兴趣的 representation
:
矩阵形式可以写成:
其中:
计算 target attention
是不可行的。
局部敏感哈希(Locality-sensitive hash: LSH
)是一种在高维空间中高效查找最近邻居的算法技术。LSH
满足局部保持性(locality-preserving property
):邻近的向量很可能获得相同的哈希值,而远处的向量则不会。得益于此特性,LSH-based
的signature
已广泛应用于互联网搜索系统等许多应用中。随机投影方案 (SimHash
)是 LSH
的一种有效实现。SimHash
的基本思想是:采样一个随机投影(由单位法向量 +1
或 -1
)。具体而言,给定一个输入
其中:hashed output
位于哪一侧。
对于两个向量 hash code
的取值时,我们才说它们发生冲突:
虽然单个哈希值可以用于估计相似度,但是我们可以使用多个哈希值,从而降低估计误差。在实践中,通常采用 SimHash
(即,多轮哈希)算法,其中
在第一步中,SimHash
随机采样
其中:
这些哈希码被分为
为了降低不相似的 items
具有相同哈希码的概率,该算法将每组 hash signatures
。有关更多详细信息,请参阅 《Mining of Massive Datasets》
。
对于第 hash signatures
相同时,
其中:“AND”
运算符,
最后,每个 hash signature
对应的分组可以被看作是一次 LSH
,从而用于期望的计算,从而降低 estimation
的方差。
注意:读者对这一段文字进行了重新润色。原始论文讲的不太清楚。
Figure 1
底部显示了 (4, 2)
参数化的 SimHash
算法的示例,其中我们使用 4
个哈希函数并将每 2
个哈希码聚合为hash signatures
(黄色和绿色)。
。
在本节中,我们介绍了我们的框架从而在系统中实现 SDIM
。Figure 1
中可以看到high-level
的概述。该框架由两个独立的 servers
组成:Behavior Sequence Encoding (BSE) server
和 CTR server
,稍后将详细介绍。
Hash Sampling-Based Attention
:第一步,我们采样多个哈希函数并生成 user behavior items
和 target items
的哈希码。与 ETA
类似,我们使用从正态分布中采样的固定的 random hash vectors
作为“哈希函数”。经过哈希处理后,ETA
计算 items
之间的汉明距离(Hamming distance
)作为用户兴趣分布(user interest distribution
)的近似值,从而用于选择 top-k
相似的items
。这里我们提出了一种更高效、更有效的方法来近似用户兴趣。
由于具有局部保留的属性(locality-preserving property
),相似的向量落入同一个哈希桶的概率很高,因此 user behavior items
和 target item
之间的相似性可以通过它们具有相同哈希码(signature
)的频率或碰撞概率来近似。这导致我们假设哈希碰撞的概率可以成为用户兴趣的有效估计器。
基于这一观察,我们提出了一种使用 LSH
来获取用户兴趣的新方法。经过哈希处理后,我们通过将具有相同的 behavior items
behavior items
都关联了同一个 target item
其中:
item
。
target item
hash signatures
,则
target item
l2
正则化,用于对兴趣分布进行正则化。
我们还尝试使用 l2
正则化模型的性能相当。但是, l2
正则化的实现效率更高,因此我们使用 l2
正则化。
Multi-Round Hashing
:总是有一个小概率使得不相似的 behavior items
与 target item
共享相同哈希码,从而给模型带来噪音。为了降低这种可能性,我们使用前面描述的多轮哈希算法。
具体来说,我们使用 SimHash
算法。我们并行采样并执行 hash signatures
。只有当 hash signature
时,我们才认为它们发生碰撞:
其中:
hash signatures
的输出被平均,从而作为对用户兴趣的低方差的估计。它可以表示为:
Hash Sampling-Based Attention
的期望:在我们的方法中,随着 《Similarity estimation techniques from rounding algorithms》
):
注意:在计算用户兴趣之前,我们对
因此,SDIM
产生的 user interest representation
的期望为:
注意:原始论文的公式有问题,漏掉了
。此外,这里用的是 sum
归一化而不是l2
正则化。
随着分组数量 estimation error
会非常小。在实践中,我们对在线模型使用 Figure2
中绘制了 SDIM
产生的注意力权重 target attention
产生的注意力权重 Figure2
中我们可以看出,SDIM
的注意力权重与 target attention
中的 softmax
函数很好地吻合,因此,从理论上讲,我们的方法可以获得非常接近 target attention
的输出。我们将提出的方法命名为 SDIM
,即 Sampling-based Deep Interest Modeling
。
SDIM
中的宽度参数 items
提供更多注意力方面所起的作用。
记 target item
item
随着 items
。
让我们考虑两种极端情况:
当 target item
完全相同的 items
。如果我们使用 category
属性进行哈希处理,则算法的behavior
类似于 SIM(hard)
。因此,我们的算法可以看作是 SIM(hard)
的扩展,它也会考虑 category ID
不同但非常相似的 behavior items
。
当 target item
和用 user behavior items
将始终具有相同的hash signatures
。
因此,SDIM
非常灵活,可以通过分配不同的
在本小节中,我们将详细说明 SDIM
比标准的 attention-based
的方法快很多倍。
让我们回顾一下 target attention
中计算用户兴趣的公式,即,target vector
与行为序列相乘来获得注意力权重,然后使用注意力权重对行为序列进行加权和。因此,在 target attention
中获取用户兴趣的 representation
需要两次矩阵乘法,该算法的时间复杂度为
SDIM
将用户兴趣的计算分解为两部分:behavior sequence hashing
、target vector hashing
。注意,用户行为序列是用户的固有特征,与 target item
无关,这意味着无论 target item
是什么,用户的 behavior sequence hashing
的结果都是固定的。因此,对于每个用户,我们只需要在每个 request
中计算一次用户行为序列的 hash transform
。因此,SDIM
将时间复杂度从 1
,比标准的 target attention
快了相当多倍。
经过哈希之后,与 target item
共享相同 hash signature
的sequence items
被选中,并被相加从而形成用户兴趣。在 Tensorflow
中,此步骤可以通过 tf.batch_gather
算子实现,该算子是 Tensorflow
的原子算子(atomic operator
),时间成本可以忽略不计。
SDIM
最耗时的部分是行为序列的多轮哈希(multi-round hashing
),即将 Approximating Random Projection
)算法降低到 SDIM
比标准的 attention-based
方法快得多。在我们的场景中,SDIM
在训练 user behavior modeling
部分时实现了 10
到 20
倍的速度提升。
本节将介绍如何成功在线部署 SDIM
。如前所述,整个算法分为两部分:behavior sequence hashing
、target vector hashing
。behavior sequence hashing
与 target item
无关,这促使我们构建一个专门的 server
来维护 user-wise behavioral sequence hashes
。
我们将系统分为两部分:Behavior Sequence Encoding (BSE) server
和 CTR Server
,如 Figure 1
所示。
BSE Server
负责维护 user-wise behavior sequence hashes
。当收到user behavior
的 list
时,BSE server
从多个哈希函数中采样,并为行为序列中的每个 item
生成 hash signatures
。然后根据 item signatures
将它们分配到不同的 buckets
中,每个 buckets
对应一个 hash signature
,如 Figure 1
所示。hash buckets
被传递给 CTR Server
,从而建模 target item-aware
的用户兴趣。
CTR Server
负责预测 target items
的点击率。当收到 target items
(batch 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 modeling
与 CTR
模型的其余部分联合训练,我们只在 online serving
阶段单独部署它们。
将 BSE Server
和 CTR Server
解耦后,BSE
的计算对于 CTR Server
来说是无延迟的。在实际应用中,我们将 BSE Server
放在CTR Server
之前,并与 retrieval
模块并行计算。
分开部署后,计算用户长期兴趣的时间成本只在于 target items
的哈希,其时间复杂度为 behavior
的用户兴趣建模。从 CTR Server
的角度来看,这个时间复杂度就像增加了一个 common feature
一样。在 Table 1
中,我们比较了不同方法的时间复杂度。
我们的 serving
系统与 MIMN
有些相似。最大的区别在于我们的系统可以建模用户的 deep interests
,而 MIMN
只能建模 shallow interests
。
关于 Servers
传输成本的注释:对于每个 request
,我们都需要将 bucket representations
从 BSE Server
传输到 CTR Server
。请注意,我们使用固定数量的哈希函数,因此无论用户的behavior
有多长,我们只需要将 bucket representations
的固定长度的向量传输到 CTR Server
。在我们的在线系统中,此向量的大小为 8KB
,传输成本约为 1ms
。
为了验证 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”
特征以丰富上下文特征。
我们以与 MIMN
和 ETA
相同的方式对数据进行预处理。具体来说,我们使用首次的 behavior
作为输入来预测第 behavior
。我们根据 timestep
将样本分为训练集(80%
)、验证集(10%
)和测试集(10%
)。选择最近的 16
个behavior
作为短期序列,选择最近的 256
个behavior
作为长期序列。
工业数据集:该数据集来自中国最大的生活服务电商平台美团 APP
的平台搜索系统。我们选取连续 14
天的样本进行训练,选取接下来两天的样本进行评估和测试,训练样本数量约为 10 Billion
。选取最近的 50
个behavior
作为短期序列,选取最近的 1024
个behavior
作为长期序列。如果user behavior
数量未达到此长度,则使用默认值将序列填充到最大长度。除了user behavior
特征外,我们还引入了约 20
个重要的 id
特征来丰富输入。
评估指标:对于离线实验,我们遵循以前的工作,采用广泛使用的 AUC
进行评估。我们还使用训练和推理速度 (Training & Inference Speed: T&I Speed
) 作为补充指标来显示每个模型的效率。对于在线实验,我们使用点击率(Click-Through Rate: CTR
) 和访问购买率(Visited-Buy Rate: VBR
)作为在线指标。
baseline
方法:我们将 SDIM
与以下建模长期用户行为的主流工业模型进行比较:
DIN
:DIN
是工业系统中建模用户兴趣的最流行模型之一。然而,由于DIN
的时间复杂度高,它不适合用于建模长期用户行为。在这个 baseline
中,我们只使用短期用户行为特征,而不使用长期用户行为特征。
DIN (Long Seq.)
:对于离线实验,为了测量长期用户行为序列的信息增益,我们为 DIN
配备了长行为序列。我们为 Taobao
数据集设置
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
应用 LSH
将 target 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
进行比较,并省略了 MIMN
的 baseline
。
对于所有 baseline
和 SDIM
,我们使用相同的特征(包括 timeinfo
特征)作为输入,并采用相同的模型结构,long-term user behavior modeling
除外。所有模型都使用相同长度的长期用户行为:Taobao
的
Table 2
显示了不同模型在 Taobao
数据集上的总体结果。我们可以得出以下结论:
(1)
:SDIM
在建模长期用户行为方面的表现与 DIN(Long Seq.)
相当,但速度却是 DIN(Long Seq.)
的 5
倍。如上所述,SDIM
可以模拟与 target attention
非常相似的注意力模式,因此 SDIM
可以匹敌甚至超越 DIN(Long Seq.)
的性能。
(2)
:SDIM
的表现优于所有用于建模长期用户行为的 baseline
模型。具体而言,SDIM
比 SIM
高 1.62%
、比 UBR4CTR
高 1.02%
、比 ETA
高 1.01%
。
我们还注意到,与 DIN
相比,DIN(Long Seq.)
的 AUC
提高了 2.21%
,这表明建模长期用户行为对于 CTR prediction
的重要性。 SIM
、UBR4CTR
和 ETA
的性能不如 DIN(Long Seq.)
,这是由于 retrieval of user behaviors
造成的信息丢失。这些 retrieval
操作可能有助于从序列中去除噪音,但当 top-k retrieval
没有足够的 informative behavior
时则是有害的。
(3)
:SDIM
比 DIN(Long Seq.)
、SIM
和 UBR4CTR
的效率高得多。效率的提高可以归因于将算法的时间复杂度降低到
SDIM
也比 ETA
效率高得多。ETA
也使用 LSH
对 target item
和行为序列进行哈希,哈希操作的时间复杂度与 SDIM
相同。哈希之后,ETA
计算汉明距离并选择 top-k items
从而用于 target attention
,时间复杂度为 SDIM
仅引入了一个 gather
算子,然后是 ETA
效率高得多。
对于
T&I Speed
指标,对比的基线为DIN(Long Seq.)
,它的速度为1.0
。
Table 3
显示了不同模型在工业数据集上的总体结果。
与 Taobao
数据集的结果类似,在工业数据集上,SDIM
优于所有竞争基线,并且与 DIN(Long Seq.)
表现相当。我们的 SDIM
与 SIM
、UBR4CTR
和 ETA
相比,分别实现了1.92%
、2.08%
、1.38%
的改进,同时比这些方法快得多。
由于工业数据集中的用户序列长度足够大,这对 retrieve-based
的方法很友好,因此它们似乎应该与 DIN(Long Seq.)
表现相当。然而,Table 3
中的结果表明它们的性能与DIN(Long Seq.)
存在一些差距。我们认为这是因为用户的兴趣通常是多样化的,人们经常想购买新 categories
的 item
,尤其是在我们的 food search
案例中。当面对新 category
中的 target item
时,这些检索算法很难从用户的历史行为中准确地挑选出最有价值的 item
。
与 Taobao
数据集相比,工业数据集每次 request
包含的 target items
更多,因此 SDIM
在该数据集上可以获得更大的加速比。工业数据集的用户行为序列也更长(retrieve-based
的方法也可以获得更大的加速比。
实验结果证明了 SDIM
的优越性。
SDIM
中有两个重要的超参数:哈希函数的数量 hash signatures
的宽度
对 hashing-based attention
的估计误差。随着 sampled hash function
数量的增加,estimated user interest
将更接近公式
为了评估 estimation error
,我们评估 SDIM
的性能。我们还实现了 SDIM
的变体,它直接使用公式中的期望碰撞概率 hash signatures
数量趋于无限时 SDIM
的behavior
。结果如 Figure 4
所示。
可以看出,当
越大则复杂度越高,从而拖慢 inference
速度。但是这里没有不同时的加速比数据,无法判断哪个 获得比较好的 trade-off
。
对 items
更加关注。我们通过改变 SDIM
的不同注意力模式。结果如 Table 4
所示。
从Table 4
中我们可以看出:
当 SDIM
表现良好。为了平衡有效性和效率,我们在在线模型中使用
仅仅影响效果而不影响效率(根据 Table 1
的算法复杂度分析结果)。
当 behavior
。
相反,当 items
才有机会用于用户兴趣,这对行为较少的用户不友好。
我们还进行了额外的实验来测试 SDIM
在建模短期user behavior
方面的表现。但请注意,SDIM
主要是为了解决工业推荐系统的长期用户兴趣建模的问题而提出的,人们可以直接插入 full target attention
或更复杂的模块来建模短序列。我们进行这个实验只是为了展示模型在特殊情况下的表现。
我们在 Taobao
数据集上进行了这个实验,结果如 Table 5
所示。结果表明,SDIM
在建模短序列方面仍然可以达到与标准的 target attention
模型相当的结果,同时效率更高。
是否可以把所有的
target attention
(长期的、短期的)都换成SDIM
?进一步地,是否可以把用户行为序列分成不同的区间,在每个区间都应用SDIM
?
为验证 SDIM
的有效性,我们还进行了严格的 online A/B testing
。对于 online A/B testing
, baseline
模型是美团搜索系统中之前的在线 CTR
模型,该模型仅使用短期用户行为序列。测试模型采用与 base
模型相同的结构和特征,但在此基础上加入了 long-term user interests modeling
模块,该模块包含用户最近 1024
或 2000
次behavior
。我们使用所提出的 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 Server
和 CTR Server
之间的传输时间。
我们还尝试部署模型,该模型直接使用 target attention
来建模 T = 1024
的长期用户行为序列。然而,它的推理时间大大增加了约 50%
(25ms-30ms
),这对于我们的系统来说是不可接受的。因此我们不能让这个模型在线上进行 14
天的 A/B testing
。SDIM
的性能与这个模型相当,但节省了 95%
的在线推理时间。SDIM
目前已在线部署并服务于美团首页搜索系统的主要流量。
《Learning to Retrieve User Behaviors for Click-through Rate Estimation》
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
来学习从而检索最 informative
的user behavior
。只检索一小部分behavior
可以缓解 utilizing very long sequences
的两个问题(即推理效率和噪声输入)。UBR
的显著特性在于它支持任意且可学习的检索函数,而不是使用固定的且预定义的函数,这与当前 retrieval-based
的方法不同。
在三个大型真实数据集上的离线评估证明了 UBR
框架的优越性和有效性。我们进一步在 Huawei App Store
部署了 UBR
,在线 A/B test
中实现了 6.6%
的 eCPM
增益,现在服务于 Huawei App Store
广告场景的主要流量。
CTR estimation
在当今的在线个性化平台(例如电商、在线广告、推荐系统)中起着关键作用,其目标是预测用户在特定上下文中点击特定 item
的概率。近年来,基于用户行为序列的 CTR estimation
模型引起了工业界和学术界越来越多的关注。这些基于user behavior
的 CTR
模型旨在捕获包含在user behavior
中的丰富的时间模式(temporal patterns
),并学习用户兴趣的变化,从而获得准确的 CTR estimations
。这些序列模式包括概念漂移(concept drifting
)、长期行为依赖性(long-term behavior dependency
)、周期性模式(periodic patterns
)等等。
Deep Interest Network: DIN
和 Deep Interest Evolution Network: DIEN
是在 CTR prediction
中,通过建模用户行为序列从而捕获用户兴趣的代表性模型。 DIN
结合了注意力机制来学习不同 user behaviors
的重要性,而 DIEN
利用 GRU
来捕获user behavior
的 dynamics
。其他 user behavior-based
的 CTR 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
的模型,如 GRU4Rec
、GRU4Rec+
;有 CNN-based
的模型,如 Caser
;有 Transformer-based
的模型,如 SASRec
、TiSASRec
;还有 memory network-based
的模型。
随着在线个性化平台十多年的发展,平台上记录的user behavior
数量迅速增长。在淘宝上,仅在六个月内,就有 23%
的用户积累了超过 1,000
次behavior
(《Lifelong sequential modeling with personalized memorization for user response prediction》
)。尽管上述基于user behavior
的 CTR
模型取得了巨大成功,但它们无法处理非常长的用户序列。如 Figure 1
上半部分所示,仅使用最近的行为进行 CTR estimation
(通常为 50
或 100
)。但是,如果仅使用最近的行为,序列中可能不包含长期依赖性或周期性等序列模式(sequential patterns
)。一种直接的解决方案是将整个用户序列馈入到 CTR
模型中,但这不可行。它会给系统开销带来沉重的负担并牺牲推理效率。更糟糕的是,在非常长的行为序列中,这种做法会带来很多噪音。
为了解决上述问题,一种解决方案是设计具有更多参数和更大容量的复杂模型,以支持更长的用户行为序列作为输入,如 Figure 1
上半部分所示。HPMN
和 MIMN
是两种用于处理长序列建模的 memory network
架构。然而,这些模型非常复杂,需要大量的工程工作才能在现实世界的在线系统中实现和部署。尽管 HPMN
或 MIMN
可以处理包含大约 1,000
个behavior
的序列,但全量的用户序列通常要长得多。
与上述解决方案不同,我们尝试从数据角度解决问题,而不是设计更精巧但更复杂的模型。由于非常长的序列包含很多噪音,因此没有必要输入整个序列。相反,只有一小部分behavior
与 prediction
相关。因此,我们只需要检索相关的behavior
。检索到的behavior
取决于每个 CTR estimation request
。我们将每个 request
称为 prediction target
。如 Figure 1
所示,prediction target
由三部分组成,即 target user features
(职业、地理位置等)、target item features
(category
、品牌等)、以及相应的上下文特征(场景等)。然后,这些特征将被视为 query
,并被用于从整个用户序列中检索 behaviors
。检索系统的目标是学习检索最相关的 behavior data
,从而辅助特定的 request
的 prediction
(即 prediction target
)。这样的检索过程利用索引结构,以整个用户历史行为作为检索池(retrieval pool
),效率很高。为此,通过检索user behavior
,长的用户序列可以有效地纳入 CTR
模型,而不会引入太多噪音。
在本文中,我们提出了用于 CTR estimation
的 User Behavior Retrieval: UBR
框架,从而对非常长的用户行为序列进行建模。由于现实世界在线个性化平台中的检索池通常很大,我们将检索过程分为两个子过程:matching
和 ranking
,类似于信息检索系统。
对于matching
过程,通过访问存储 behaviors
的索引可以快速检索一组候选behavior
。此过程本质上是获取具有与 prediction target
所匹配特征的 behaviors
。
获得 candidate behaviors
后,ranking
函数根据 candidate behaviors
与 prediction target
的相关性对其进行排序,并返回 top-k
个behavior
。
然后,被检索到的 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 function
的 matching
过程。
UBR-R
使用 learning-to-rank: LTR
技术来优化 retrieval function
中的 ranking
过程。
UBR-MR
是上述变体的混合版本,其中matching
和 ranking
过程都得到了优化。
通过比较这些变体,我们得到了一些有趣的观察结果和有意义的见解,指导我们在实践中选择最佳变体。详细信息可参见实验章节。
本文的贡献可以总结如下:
对于长行为序列的建模,我们从数据角度提供了一种新的解决方案,即从整个用户序列中检索user behavior
。这是一个实用的解决方案,它使当前的 CTR
系统在受到严格的效率约束的情况下能够使用整个用户序列。
我们系统地数学化了 learning to retrieve user behaviors
的问题,并提出了一个有效的模型和相应的训练算法。UBR
是第一个支持可学习的任意检索函数(而不是预定义的检索函数)的工作。
我们提出了更强大的变体:UBR-R
和 UBR-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
的主要广告流量。
本文是其会议版本 《User behavior retrieval for click-through rate prediction》
(即,UBR4CTR
)的实质性扩展。期刊版本(本文)和会议文章(即 UBR4CTR
)之间的主要区别在于:
在本文中,我们提出 UBR-R
和 UBR-MR
作为 UBR
框架的更好实现,而不是会议文章中提出的框架(表示为 UBR-M
)。新版本加入了可学习的 ranking
函数,使检索模块更加强大。
我们提出了一个 LTR optimization objective
来训练参数化的 ranking
函数,而不是会议文章中使用的 REINFORCE
算法。我们进一步对 LTR objective function
进行了广泛的理论分析。
我们提供了与一些 retrieval-based
序列建模算法的比较实验的结果,这些算法比我们的会议文章更晚被提出。
UBR
已在实际应用中部署,而我们在会议版本中仅对公共数据集进行了实验。在工业数据集上进行的新实验验证了 UBR
可以与各种 CTR
模型结合使用。我们进一步提供了在线实验细节。这些事实表明,UBR
在实际应用中部署是高度可行的。
未来工作:对于未来的工作,我们的目标是将 UBR
扩展为一个更通用的框架,不仅可以从单个用户那里检索,还可以从其他相似的用户那里检索。当前的 UBR
框架仅从 target user
自身的 behaviors
中检索。来自其他相似用户或 items
的协同过滤信息可能会进一步提高 UBR
的性能。在这种情况下优化其效率是另一个重要方向。
在本节中,我们将问题公式化并引入符号。对于 CTR estimation
任务,有 item
构成的 item
集 user-item interactions
表示为
此外,每个 user-item interaction
都与相应的上下文一起发生。我们分别使用 timestamp
和其他的上下文特征。因此,每个数据点被公式化为 item
multi-field features
组成,其中
item
、以及上下文的第
item
、以及上下文的 feature fields
的数量。
为了建模用户不断变化的兴趣,我们将整个user behavior
历史组织为 behavior
,按 timestamp
升序排序。用户 behavior
item
注意,在
UBR4CTR
中,,包含了用户特征。
CTR estimation
的目标是根据 target user
target item
其中:behavior
作为 prediction
函数 noisy
的。它表示为:
其中:retrieval
函数,返回 behavior
。
无论 retrieval
函数 set of user behaviors
。相比之下,对于我们的 UBR
框架,CTR estimation
任务的公式为
其中:retrieval
函数,可以在给定 target item
informative
的user behavior
(注意, target user
UBR
能够根据不同的 target items
或上下文从而动态选择最合适的user behavior
,而不是像以前的工作那样使用静态和固定的 selection
策略。
我们在 Table 1
中总结了符号和相应的描述。
在本节中,我们介绍了 UBR
框架的基本架构。本节介绍的检索过程是 UBR
的 basic
实现,是不可学习的。但它构成了系统的骨干。一些模块可以用参数化的组件替换,从而自动优化 UBR
。可学习的组件的详细信息将在下一个章节中描述。
如 Figure 2
所示,UBR
由 retrieval
模块和 prediction
模块组成。
顾名思义,retrieval
模块负责根据 prediction target
从 user history archive
中检索 behaviors
。 prediction target
由 CTR 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
系统一起部署。
由于检索 user behaviors
类似于检索 recommender system literature
的 items
,我们使用 matching and ranking
来划分整个检索过程。
matching
子模块通过访问索引结构从而快速获取 candidate behavior
的一个集合。
然后,接下来的 ranking
子模块将计算每个behavior
的分数,从而返回 top-k behaviors
。
matching
子模块的目的是:通过快速获取 candidates
的一个小集合,从而来降低计算复杂度。为了实现此目的,我们选择将其实现为 index accessing
过程。
倒排索引(Inverted Index
):作为典型的搜索引擎系统,我们将每个 user behavior
视为一个文档,将每个特征视为一个 term
。 user behavior
以倒排索引的方式存储。如 Figure 3
所示,我们以一条 behavior
记录 user id, category id, brand id, purchase day, and item price
。在特征工程过程中,原始特征全部重新映射到 unique id
。numerical
特征被离散化,然后重新映射。user id
(“ID-1”
)用作第一个索引,因为我们需要获取用户behaviors
,而其他 remapped features
则以倒排索引的方式作为第二个索引。behavior
posting lists
中。我们对每条behavior record
遵循相同的协议并构建倒排索引。
即,两层索引结构:最外层是
user-id
,这一层索引将保存每个用户的所有行为。第二层是不同的field
,给定用户的不同behavior
将根据特征取值的不同放入不同的索引。
query
:prediction target
query
。retrieval
的 query
其中:
注意,这里不包含用户特征
。但是, UBR4CTR
中包含了用户特征,但是不包含 user-id
特征。
matching
子模块本质上是一个特征匹配的布尔搜索过程。用户 behaviors
都将被检索出来。
从 matching
子模块获取 candidate behaviors
后,我们执行 ranking
程序,从而返回 top-k
结果作为 final retrieved behaviors
。我们使用 BM25
来计算每个behavior
的得分,因为它是搜索引擎系统中广泛使用的 ranking
函数。
每个behavior
query
ranking score
定义为:
其中:
term frequency
)。根据 match
,其取值为 1
或 0
。
behavior
behavior
中的特征数量,因此所有behavior
都具有相同的长度 avgdl
代表平均的文档长度。
可以进一步化简为:
。似乎 参数没什么用? 考虑到
取值为 0
或1
,因此:因此
也没什么用?
IDF
定义为:
其中:behaviors
的总数,
IDF
项赋予常见特征比罕见特征更少的重要性。与常见特征相比,罕见特征意味着对用户偏好的更强信号,这是有道理的。
top-k behaviors
构成 retrieval set
,即 retrieval set
被下游 prediction
模块使用,如 Figure 2
所示。
在本节中,我们介绍 UBR
的 prediction
模块。在 prediction
模块中,所检索到的 user behaviors
被聚合起来,相应的 representation
与其他特征一起馈入到 CTR
模型中,如 Figure 2
所示。UBR
框架具有高度灵活性,因为它可以与任意 CTR prediction
模型一起使用,因此可以方便地部署到实际应用中。
Retrieved Behaviors
的聚合:为了聚合 retrieved behaviors
并获得全面的 representation
,我们使用注意力机制来聚合behavior representations
:
其中:
aggregated behavior representation
。
retrieved behavior
的 embedding
, embedding size
,
注意:在
UBR4CTR
中,,包含了用户特征。
attention
权重:
其中:
attention layer
的权重矩阵。
query
dense embedding
,它是 feature embeddings
的拼接。
注意:在
UBR4CTR
中,,包含了用户特征。
aggregated retrieved behaviors
的 comprehensive representation
prediction target
的其他特征一起输入到 CTR
模型中。
CTR Estimation Model
:UBR
可以配备任意的 CTR estimation
模型。在这里我们使用一个简单的 DNN
结构作为 CTR
模型,在实验章节,我们还基于其他工业级的 CTR
模型测试了性能。final prediction
的计算方式为:
其中:
user embedding
、item embedding
、context embedding
。
behavioral representation
,MLP
的参数。
由于我们的目标是准确地估计 CTR
,因此 prediction loss
的自然选择是广泛使用的交叉熵损失。带 L2
范数的 prediction loss
定义为:
其中:
prediction
模块的所有参数,包括 CTR estimation
模型中的参数、以及 aggregation
函数中的参数。
retrieved behaviors
。在优化 prediction
模块时,retrieval
模块是固定的。
prediction
模块通过使用 SGD
来最小化
在本节中,我们介绍如何使 retrieval system
成为参数化的和可学习的。我们提出了三种可学习的 UBR
变体:UBR-M
、UBR-R
和 UBR-MR
。
UBR-M
和UBR-R
,顾名思义,是将 matching/ranking
过程分别转换为一个 parametric and learnable function
。
UBR-MR
,是同时优化 matching
和 ranking
子模块的混合版本。
可学习的 UBR
变体与 prediction
模块一起训练。在训练 retrieval
模块时,prediction
模块是固定的,反之亦然。
我们将首先为可学习的 retrieval system
公式化 optimization
问题,然后给出 UBR
变体及其相应 optimization
的实现细节。
首先,我们为 retrieved behavior set
定义一个效用(utility
)。它表示一个 behavior set
有多 “有用”。
Utility
的定义:behavior set
non-positive scalar
),可以反映 prediction
模块使用 CTR estimation
的准确性。在实现上,我们使用 negative log-likelihood
的倒数作为效用函数,即:
其中:
效用越高, CTR
模型使用集合
retrieval
模块的 general objective
公式化为:
其中:retrieved behaviors
的底层概率分布。
令 optimization
旨在找到最好的 retrieval
函数,从而能够最大化 CTR
模型的期望准确率。在以下小节中,我们将介绍 UBR
的不同变体及其相应的 optimizations
。
可学习的 UBR
的第一个变体是 UBR-M
,它提出了一个可学习的 matching
函数。
UBR-M
的结构:为了将 matching
过程变成一个可学习的子模块,我们选择将 query generation
参数化为一个可学习的 feature selection
过程。它将从 query
match the behaviors
,而不是 Figure 4
所示,我们使用 self-attention network
来建模特征之间的交互和关系。具体来说,我们定义:
其中:embedding
。
自注意力机制定义为:
而 multi-head self-attention
定义为:
其中:head
数量;
然后,multi-head self-attention
的输出 multi-layer perceptron
:
相应特征被选择的概率通过取 sigmoid
函数获得:
其中:
然后我们根据这些概率对特征进行采样,从而得到所选的特征子集。
原来有
个特征,那么采样后有多少个特征?作者没说。
总而言之,UBR-M
使用 self-attentive feature selection function
来参数化 matching
子模块。至于 ranking
,UBR-M
仍然使用 BM25 ranking function
。
UBR-M Optimization
:由于上述 feature selection
函数通过使用概率来采样,从而涉及不确定性并且不可微,我们可以直接通过 REINFORCE
(《Simple statistical gradient-following algorithms for connectionist reinforcement learning》
)算法优化
我们给出了 retrieved behaviors
的概率 likelihood ratio
)来估计,如下所示:
其中:retrieved sets
。
UBR-M
的不确定性实际上来自 feature selection model
,我们可以得出:
其中:
当
因此,我们得到:
其中:
通过使用 REINFORCE
算法,可以在 prediction
模块固定的情况下优化 UBR-M
。
UBR-M
是我们在之前的文章 《User behavior retrieval for click-through rate prediction》
中提出的。虽然 UBR-M
提供了参数化的 retrieval
函数的实现,但它仍然是粗粒度的,因为特征对应的 posting list
(例如 Figure 3
中的 “T-shirt” list
)的所有 behaviors
可能会被完全删除,并且不会被 prediction
模块使用。此外,UBR-M
的 ranking
模型是固定的 BM25
函数,这可能不是最佳选择。我们希望模型能够自动学习合适的 ranking
函数。
matching
子模块本质上是为ranking
子模块缩小候选空间。实验结果表明,优化ranking
要比优化matching
取得更好的效果。而优化matching
的效果一般般。
mathcing
子模块也可以认为是一种ranking
:将未被匹配的behaviors
设置ranking score = 0
。
UBR
的第二种变体是 UBR-R
,它提出了一个可学习的 ranking
函数。
UBR-R
的结构:固定的 ranking
函数不灵活,无法捕获每个 behavior
与 query
之间的复杂关系。因此,我们需要一个可学习的ranking
函数。对于 UBR-R
,我们将 ranking
函数从确定性的 BM25
更改为参数化的函数,同时保留前面章节中描述的固定的 matching
过程。参数化的 ranking
函数定义为:
其中:
behavior
ranking score
。
MLP
。,
UBR-R Optimization
:由于 getting the top-k behaviors
的操作不可微,所以我们无法直接优化 ranking
函数的参数 optimization
转换为 LTR
问题,并将其用作 UBR-R
的优化函数。因为 LTR
是训练 ranking
函数最广泛的范式。
作为 LTR
问题,我们要排名的 "items"
本质上是一个包含 behaviors
的集合。总共有 matching
子模块的 behaviors
总数,这意味着我们有 behavior
集合。
如果我们将每个 behavior set
final retrieved behaviors
并将其输入到 prediction
模块,我们将得到效用 Figure 5
所示,CTR
模型给出的效用可以看作是 "relevance labels"
。ranking
函数 behavior sets
时的性能从而对 behavior sets
进行排名。
在接下来的内容中,我们将分析 LTR
目标函数之间的理论关系。我们证明对 LTR loss
进行优化可以优化方程
将原始问题转换为 LTR
任务:我们将 probabilistic choice model
定义为:选择 ranking score
成正比:
其中:
LTR objective function
的定义:给定 query
ranking list
其中:
sigmoid
函数 sigmoid
函数的输入为
desired and latent ranking
。
我们记 LTR
任务的 general optimization goal
。
定理:LTR objective function
其中:
并且:
定理的证明参考论文的附录。
由于定理的成立,原始的目标函数可以转换为最大化 LTR objective
LTR
技术来优化它。我们进一步给出 LTR loss
的实现细节。
实现细节:为了有效地 inference
,我们将 ranking
函数表述为:
其中:scoring
函数。
为了进行推理,我们可以只使用 top-k ranking behaviors
(使用 retrieved set
scores
。
我们使用lambda loss
(《The lambdaloss framework for ranking metric optimization》
)作为LTR loss
来优化UBR-R
:
其中:
由于我们关心的是 top-1 behavior set
,并且为了快速训练,我们将损失函数简化为:
其中:top-k behaviors
组成(使用 behavior set
且它的 ranking score
低于
虽然简化了,但是
仍然会非常耗时。读者猜测这里进行了采样,否则就是 ,复杂度太高。 实现方式:
对于每个样本,计算它的
query
。 然后计算每个
behavior
计算它的 score
。 然后选择
top-k scores
的个 behaviors
,得到,以及对应的 、 。注意,为了得到 ,需要进行一次 inference
。然后采样
组,每组随机采样 个 behaviors
,得到,以及对应的 、 。注意,这里需要进行 次 inference
。最后,计算
。
在以上章节中,我们分别讨论了如何优化 matching
子模块和 ranking
子模块。将它们放在一起并尝试同时优化两个子模块是合理的。两个子模块的目标是统一的:prediction
模块更好的预测准确率。因此,可以如 Algorithm 1
所示,同时优化 matching
和ranking
函数。
我们首先使用前面章节中描述的 fixed behavior retrieval system
对 prediction
模块进行预训练。由于 prediction
模块在 matching
和 ranking
子模块的训练过程中提供监督信号,因此首先对其进行热身并使其具有基本的判别能力非常重要。
之后,轮流训练 retrieval
模块(第 4-8
行)和 prediction
模块(第 9
行),直至收敛。
是每个子模块训练一个
epoch
再轮流、还是每个子模块训练一个batch
再轮流?作者未讲明这一点。UBR4CTR
是每个子模块训练一个epoch
,然后再训练另一个子模块一个epoch
。
如Algorithm 1
所示, matching
和 ranking
函数朝着同一目标一起优化。
本节分析了时间复杂度,并将我们的框架与现有的 retrieval-based
的 CTR
模型进行了比较。
我们关注 retrieval
过程的时间复杂度,因为它是 UBR
中最耗时的部分。
对于 UBR
,由于 matching
过程只是简单地访问索引,因此其时间是一个常数 feature fields
的数量,inverted index entry
的时间。
对于查找 top-k behaviors
的 ranking
过程,时间复杂度为 matching
子模块中获取的 candidate behavior set
的大小。因为评分过程的时间复杂度与列表长度成线性关系。
因此,UBR
的总复杂度为 UBR
带来的主要耗时是 GPU
或 CPU
在内存中计算。然而,大多数基于 behavior modeling
的 CTR
模型可能具有 user behaviors
。此外,可以使用快速存储、更快的数据访问系统(如 Redis
等)对
这只是
inference
的时间复杂度。而训练的时间复杂度相当高。
作为用于 CTR estimation
的 behavior modeling
的新研究方向,关于 retrieval-based
的 CTR
模型的研究很少。
最相似的模型是 SIM
。SIM
有两个变体,SIM-Hard
和 SIM-Soft
。
SIM-Hard
是一个固定的搜索函数,它使用 category id
等单一特征从用户行为序列中进行搜索,这不够灵活,并且可能导致 retrieved behaviors
不是最优的。
SIM-Soft
使用局部敏感哈希 (local-sensitive hashing : LSH
)进行 MIPS
从而找到相对于 target item embedding
最邻近的 item embedding
。item embedding
使用辅助损失进行训练。
SIM-Soft
的第一个缺点是它依赖于辅助任务,如果 user behaviors
太多,则需要随机采样。
第二个缺点是LSH
使用的索引应该经常更新(但是实际上没有更新),因为 item embedding
在训练时会发生变化。
最后,ranking
函数仅限于内积形式,缺乏建模能力。
ETA
使用 SimHash
生成 item embeddings
的二进制指纹,并计算 target item
指纹与 behaviors
指纹之间的汉明距离
STARec
利用 item embeddings
之间的余弦相似度作为 ranking
函数。
因此,所有现有的 retrieval-based
的模型都遵循预定义的函数来检索 behaviors
,因此缺乏灵活性和学习能力。
基于本文中描述的 matching
和 ranking
,我们在 Table 2
中总结了现有模型。SIM-Hard
本质上使用预定义的特征来匹配 user behaviors
,而 SIM-Soft
直接使用 MIPS
对 behaviors
进行排序,而无需matching
过程。 ETA
和 STARec
也在 Table 2
中进行了总结。
总体而言,UBR
的检索机制与其他模型的比较如 Figure 6
所示。
对于 UBR
,matching
子模块在很大程度上减少了 user behavior set
的大小。由于这个 reducing
过程本质上是访问 selected features
的倒排索引,因此可以非常快速地进行,效率很高。设计这样的 matching
过程最重要的原因是避免对整个用户历史序列
相反,其他 one-stage retrieval models
选择对整个序列进行计算。为了快速地进行计算,它们实现尽可能简单的检索函数,例如汉明距离(ETA
) 或余弦相似度 (STARec
)。因此,这些模型的检索函数都是非参数化的,并且基于某种预定义形式。尽管非参数化的检索函数的输入可以是 learnable embeddings
,但函数的预定义形式限制了建模能力。因此,具有任意参数的可学习的检索函数是我们文章的主要关注点。
此外,我们将检索函数实现为一个两阶段过程,以平衡有效性和效率。更多实验证据可在实验章节中找到。
至于 UBR
的不同变体:
UBR-M
是由我们的会议文章(《User behavior retrieval for click-through rate prediction》
)提出的,它使用 selected features
来匹配相应的 user behaviors
。feature selection
由 REINFORCE
算法优化。但它仍然使用固定的 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-M
或 UBR-R
大得多。
第二个原因是,如果数据集只有非常有限的特征(例如,item features
只有 item id
以及 category id
),那么在 matching
中选择特征并不总是一个好主意。在这种情况下,使用所有特征来匹配 behaviors
是更好的选择。
实验章节中介绍了更多相应的结果,以及选择更好变体的见解。
本节将介绍大量实验的细节。我们将我们的模型与几个强大的 baselines
进行了比较,我们的模型在离线和在线评估中都取得了 SOTA
的性能。实现代码已发布(https://github.com/qinjr/UBR4CTR
)。
数据集:我们使用三个真实的、大型的 users online behaviors
数据集。数据集的统计数据可以在 Table 3
中找到。
Tmall
数据集:由阿里巴巴集团提供,其中包含 2015
年5
月至2015
年11
月天猫电商平台上的user behavior
历史记录。
Taobao
数据集:包含来自淘宝中检索到的user behavior
数据。它包含 2017
年 11
月25
日至 12
月3
日的user behaviors
,包括点击、购买、添加到购物车、以及喜欢商品等几种behavior
类型。
Alipay
数据集:由支付宝收集。用户的在线购物behaviors
是从 2015
年7
月1
日到2015
年 11
月 30
日。
数据集预处理:对于 UBR
,数据集被处理成逗号分隔特征的格式。包含 user, item and context features
的一行被视为一个 behavior
。对于 baselines
,user behaviors
仅按时间戳排序。由于这三个数据集仅包含点击样本(即正样本),我们按照 《Deep interest evolution network for click-through rate prediction》
、《Deep interest network for click-through rate prediction》
中的处理协议进行 1:1
负采样。
Basic Retrieval Engine
:我们使用逗号分隔的 tokenizer
将数据集插入一个 retrieval engine
。我们使用ElasticSearch
作为 backbone retrieval engine client
,从而对公共数据集进行离线实验。Tmall
、Taobao
、以及 Alipay
数据集的 posting list
平均长度分别为 6.9
、7.3
和 8.9
。
训练集和测试集的拆分:我们使用 leave-one-out
策略(按时间顺序排序)来拆分数据集。
训练集包含第 user behaviors
,其中第 behaviors
用于预测第 behavior
。
类似地,验证集使用第 behaviors
来预测第 behavior
。
测试集使用第 behaviors
来预测第 behavior
。
评估指标:AUC
、Logloss
(简写为 LL
)。
baselines
:我们将 UBR
与一些强基线进行比较,这些 baseline
来自 user behavior-based
的 CTR
模型、以及序列推荐模型。
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
使用
Reformer
是针对 Transformer
结构提出的,可以有效地处理长序列。它使用 LSH
来降低自注意力的计算复杂度。
SIM
是 retrieve-based
的模型,其动机与 UBR
相似。SIM
有两种变体:SIM-Hard
和 SIM-Soft
,分别利用确定性的 hard search
、以及 embedding-based MIPS
。
ETA
利用 SimHash
算法生成 target item
的二进制指纹、以及 historical items
的二进制指纹。它使用汉明距离来获取 top-k nearest behaviors
从而作为 retrieved behaviors
。
STARec
直接根据 target item
的 embedding
和 behaviors embeddings
来计算余弦相似度。然后它检索与 target item
最相似的 behaviors
。
在本节中,我们对 UBR
进行了详细的实验,包括整体性能比较、消融研究和超参数研究。此外,还介绍了 UBR
的训练过程的比较、以及推理时间比较。
我们对基线进行了两组实验。
第一组:由于传统的 user behavior modeling
利用最近的连续行为,我们将最近的 behaviors
馈入基线。20%
。
第二组:整个用户序列被馈入到基线模型中。
为了公平比较,UBR
将从整个用户序列中检索 behaviors
。基线使用不同的网络结构来学习 user behaviors
的 unified representation
,而 UBR
聚合 retrieved behaviors
。不同模型计算出的 representation of user behaviors
和其它特征一起被馈入到 DNN
。我们对不同的模型使用相同的 DNN
结构,唯一的区别是模型如何利用用户行为数据。
结果如 Table 4
所示。从表中我们发现以下事实:
(i)
:UBR
(UBR-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-R
和 UBR-MR
优于现有的 retrieval-based
的模型和 UBR-M
。这验证了我们新提出的参数化的 ranking
函数和相应的 LTR training
的优越性。
为了增加测试难度并进一步验证 UBR
的有效性,我们通过按用户而不是时间来拆分 Tmall
数据集,并进行了额外的实验。我们从 non-retrieval models
中选择了 DIN
和 DIEN
,因为它们在 Tmall
数据集上表现良好,并列出了所有 retrieval-based
的基线。我们根据用户来拆分,训练集、验证集、测试集分别包含 80%
的用户及其对应的用户行为序列。结果如 Table 5
所示。
Retrieval
模块的重要性:为了验证 retrieval
模块的必要性,我们使用最近 k behaviors
而不是 retrieval
模块,然后使用不同的聚合函数。结果如 Table 6
所示。我们测试了两种不同的 behavior
聚合函数:sum pooling: SP
和 attention: ATT
。
从表中我们发现:
配备 UBR
模块后,两种聚合函数的预测性能都得到了很大程度的提高。结果证明了 retrieval
模块的重要性。
此外,我们可以发现,即使采用像 sum pooling
一样简单的聚合函数,SP w\ UBR-R
也可以实现与 ATT
相比具有竞争力的性能。这一事实证明了 retrieved behavior data
的有效性。
此外,UBR-R
可以带来比 UBR-M
更多的性能提升,这验证了我们提出的 ranking
函数和 LTR training
的有效性。
不同 UBR
变体之间的比较:为了弄清 retrieval
模块的不同子过程的影响,我们在 UBR-Fix
(固定的 retrieval system
)、UBR-M
、UBR-R
(使用两种不同的 ranking losses
:BPR 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)
。这表明在 ranker
的性能。
(iii)
:UBR-MR
在 Tmall
和 Alipay
数据集上优于 UBR-R
和 UBR-M
,但在 Taobao
数据集上表现较差。此外,在 Taobao
数据集上,UBR-Fix
优于 UBR-M
。
UBR-M
和 UBR-MR
的共同点在于它们都使用 selected features
作为 query
来进行 matching
过程。但是, Taobao
数据集只有两个 item features
(item id, category id
)。如果 selector
为某些样本删除一个特征(例如 category id
),则许多有用的 behaviors
将被删除,并且没有机会进行排名。相反,Tmall
和 Alipay
数据集有四个 item features
(item 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-R
的 2-3
倍,因为两个子模块都经过了优化。因此,UBR-MR
的收敛速度要慢得多。
在大多数情况下,考虑到 UBR-R
在训练效率和测试性能之间的良好平衡,它已经足够好了。特别是当数据集的特征很少时, learning to match
不是一个好主意(例如 Taobao
数据集)。总而言之,UBR-R
是一个足够好的做法;而 UBR-MR
是一个更难的版本,可以实现更好的性能,但它需要更多的成本训练并增加整个系统的复杂性。
本节我们研究了 retrieval size k
的影响。Figure 7
展示了 UBR-M
、UBR-R
和 UBR-MR
在不同 retrieval size k
下的性能。从图中可以看出,AUC
和 logloss
的波动在绝对值上并不是很剧烈。然而,每个数据集都存在一个最优规模。这表明较小的 behaviors
和信息;而太多的 retrieved behaviors
并不总是对性能有益,因为它们会包含更多的噪音。
本节我们展示了 UBR
框架的训练过程。我们以 UBR-R
为例。prediction
模块的性能曲线如 Figure 8
所示。在曲线中,我们绘制了不同 test points
的 test 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
模块实际上学习了有意义的模式,因为它可以在训练期间检索更多有用的 behaviors
(test AUC
正在提高表明了这一点)。
为了解决效率问题,我们比较了UBR
和其他 user behavior-based
的CTR
模型的推理时间。Figure 9
显示了模型的平均推理时间。该时间是通过将测试数据集上的总时间除以 batches
数量来计算的。仅包括包含前向计算和 behavior retrieval
的时间。我们在具有 Intel(R) Core(TM) i7-6900K CPU
处理器、一块 NVIDIA GeForce GTX 1080Ti GPU
处理器和 128 GB
内存的机器上实现了两个版本的 index storage
。一种索引基于Elastic Search
,并持久保存在磁盘上;而另一个版本则将索引结构加载并存储在内存中。
UBR-M
、UBR-R
和 UBR-MR
具有相似的推理时间,因此我们使用 UBR
作为统一的名称。因为主要开销来自 retrieval
过程。 如图所示,UBR (in disk)
的推理时间最长。但是,在这三个数据集上,每个样本的推理时间不超过 1ms
,这表明合并 retrieval
模块不会严重损害效率。
由于公共数据集的索引结构可以存储在内存中,我们实现了内存存储版本的 UBR
并测试了它的推理时间。我们发现更快的存储将显著提高 retrieval
模块的效率,并验证了 UBR
的主要开销来自访问磁盘。 倒排索引所消耗的内存存储如 Table 8
所示。
总体而言,UBR
会带来一些效率问题和内存开销,但并非无法忍受。我们接下来的在线实验进一步验证了这一点。
在本节中,我们从有效性和复杂度方面比较了 UBR-MR
和 one-stage retrieval models
。我们在 Table 9
中列出了test AUC
、训练时间、以及推理时间。T-Inf
是模型完成一个 batch
测试样本的计算的 wall time
。
从表中我们可以看出:
UBR
的性能最好,但其训练时间明显超过基线,这表明没有免费的午餐。
UBR
的推理复杂度为 matching
过程给出的 candidate behaviors
的数量);而其他模型的复杂度为 UBR
的 matching
操作需要额外的开销
综上所述,结果表明,与其他 one-stage retrieval models
相比,UBR
具有更好的效果,以及具有竞争性的推理效率。
我们在 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
模型。
UBR
已在真实世界部署中进行了测试,并取得了可喜的成果。在本节中,我们展示了在 Huawei App Store
付费广告场景中获得的离线和在线评估结果。app store
每天有数亿活跃用户,每天会产生数百亿个用户日志事件,这些事件包括浏览、点击和下载 apps
等隐式反馈。
设置:离线评估是在工业数据集上进行的。工业数据集由 Huawei App Store
上主页广告场景的八天日志组成。前七天的日志用于训练,第八天的日志用于测试。对于工业数据集,positive ratio
约为 0.3%
。UBR
从用户过去一年的 behaviors
中检索数据,这意味着每个用户的 retrieval pool
都包含该用户去年的所有 behaviors
。
我们通过将 retrieved behaviors
(聚合后)作为新特征添加到 base model
来测试 UBR
性能。此 UBR
特征与其他常规特征拼接在一起,并馈入到 CTR
模型。base
模型是 DCN
、DeepFM
和 PNN
,因为它们是广泛使用的工业级 CTR estimation
模型。
结果:结果如 Table 11
所示。
对于三个不同的 base models
,UBR-M
带来了 0.95%
、0.93%
和 1.17%
的 AUC
改进。
与 base model
相比,UBR-R
将 AUC
指标提高了 1.10%
、1.09%
和 1.38%
。结果验证了 UBR
可以与其他模型一起使用,并实现显著的性能提升。
从表中,我们还观察到 UBR-R
可以比 UBR-M
带来更多的性能提升,这表明 ranking function
是 UBR
系统的重要组成部分。
至于 UBR
的开销,每个 batch
的推理时间增加了 31%
,但仍少于 100
毫秒。由于倒排索引结构在内存中被存储,内存消耗增加了 56%
。这个成本对于工业级应用来说是可以接受的。
设置:我们在 Huawei App Store
的付费广告场景中进行 A/B test
。部署的场景位于 Huawei App Store
的主页上,它是 App Store
的主要广告服务。商业的 baseline
表示为 UBR-enhanced model
表示为 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
A/B test
期间,对照组用户使用base model
apps
,而实验组用户使用 apps
。我们使用 Redis
存储 user behaviors
的倒排索引结构。
我们使用一台配备 48 core Intel Xeon CPU E5-2670 (2.30 GHz)
、400 GB RAM
、以及2张 NVIDIA TESLA V100 GPU
卡的机器来部署 UBR
。在压力测试中, 30%
。
指标:我们检查了 online evaluation
中广泛采用的两个指标:
有效的每千次展示费用(effective Cost per Mille: eCPM
):
点击率(Click-Through Rate: CTR
):
其中:num of downloads
和 num of impressions
分别是下载次数和展示次数。
结果:eCPM
和 CTR
的改进分别如 Figure 10
和 Figure 11
所示。可以看到,系统非常稳定:
在 A/A test
期间,eCPM
和 CTR
在 1.5%
以内波动。
在第 6
天到第 12
天和第 18
天到第 24
天,A/B test
期间,当
在 20%
流量 A/B test
中,eCPM
和 CTR
的平均提升分别为 4.5%
和 6.6%
。
对于 50%
流量的 A/B test
,eCPM
和 CTR
平均分别提高了 6.6%
和 11.1%
。
这些结果清楚地证明了UBR
的优越性,目前它已全面部署在 Huawei App Store
的付费广告场景中,并服务于所有流量。