kuaishou在《TWIN: TWo-stage Interest Network for Lifelong User Behavior Modeling in CTR Prediction at Kuaishou》中提出了TWIN的长序列建模方法。
摘要
终身用户行为建模(Life-long user behavior modeling),即从数月甚至数年的丰富历史行为中提取用户的隐藏兴趣,在现代CTR预测系统中起着核心作用。传统算法大多遵循两个级联阶段:一个简单的通用搜索单元(GSU),用于快速和粗略地搜索数万个长期行为,以及一个精确搜索单元(ESU),用于对GSU的少数最终选手进行有效的目标关注(TA)。尽管高效,现有算法大多存在一个关键限制:GSU和ESU之间的目标-行为相关度度量不一致。因此,它们的GSU通常会错过高度相关的行为,但会检索被ESU认为不相关的行为。在这种情况下,ESU中的TA,无论如何分配注意力,都会偏离真实的用户兴趣,从而降低整体CTR预测精度。为解决这种不一致性,我们提出了TWo-stage Interest Network(TWIN),其中我们的Consistency-Preserved GSU(CP-GSU)采用与ESU中TA相同的目标-行为相关度量,使两个阶段成为孪生。具体而言,为了打破TA的计算瓶颈并将其从ESU扩展到GSU,即从行为长度102扩展到长度104-105,我们通过行为特征分割构建了一种新的注意机制。
- 对于行为的视频固有特征,我们通过高效的预计算和缓存策略计算它们的线性投影。
- 对于用户-物品交叉特征,我们将每个特征压缩为注意力分数计算中的一维偏置项,以节省计算成本。
两个阶段之间的一致性,加上CP-GSU中有效的TA-based相关度量,为CTR预测的显著性能提升做出了贡献。在快手的460亿规模的真实生产数据集上进行的离线实验和在线A / B测试表明,TWIN优于所有比较的SOTA算法。通过优化在线基础设施,我们将计算瓶颈降低了99.3%,这有助于TWIN在快手上的成功部署,每天为数亿活跃用户提供主要流量服务。
1.介绍
作为中国最受欢迎的短视频分享应用之一,快手强烈依赖于其强大的推荐系统(RS)。每天,RS帮助数亿活跃用户过滤掉数百万个不感兴趣的视频,找到他们感兴趣的内容,留下数十亿的点击日志。这些巨大的数据不仅为RS的训练提供了数据支持,而且推动了技术革命,不断提升了这个平台的用户体验和业务效果。
在现代RS中,一个基本任务是点击率(CTR)预测,旨在预测用户点击一个item/视频的概率[2,10,32]。准确的CTR预测可以指导RS为每个用户提供其喜欢的内容,并将每个视频传递给其感兴趣的受众。为了实现这一目标,CTR模型应该高度个性化,并充分利用稀缺的用户信息。因此,终身用户行为建模,即从丰富的长期历史行为中提取用户的隐藏兴趣,通常作为CTR模型的关键组成部分[7,16,34-36]。
工业终身行为建模算法大多遵循两个级联阶段[19]:(1)通用搜索单元(GSU),对数万个长期行为进行快速粗略搜索,并输出最相关的少数目标行为;(2)精确搜索单元(ESU),对来自GSU的最终候选进行有效的目标关注(TA:Target Attention)。这种两阶段设计的原因有两个原因:
- 一方面,为了准确捕捉用户的兴趣,TA是强调目标相关行为和抑制目标不相关行为的合适选择
- 另一方面,TA的高昂计算成本限制了其适用的序列长度最多只有几百个。为此,一个简单快速的GSU作为预过滤器对于截断在短短几个月内就可以轻松达到$10^4-10^5$的工业规模行为序列至关重要。
近年来,出现了许多关于两阶段终身行为建模的新兴研究,它们的主要区别在于GSU策略,即如何粗略选择目标相关行为。例如:
- SIM Hard [19]:仅从与target item相同的类别中选择行为
- SIM Soft [19]:通过内积计算预训练item embedding的目标-行为相关度分数,并选择相关度最高的行为
- ETA:使用局部敏感哈希(LSH)和汉明距离来近似计算相关度分数[3]
- SDIM:通过多轮哈希碰撞从具有相同哈希签名的行为中采样目标行为,等等。
尽管已经广泛研究,现有的两阶段终身行为建模算法仍然存在一个关键限制:GSU和ESU之间的不一致性(如图11所示)。具体而言,GSU使用的目标-行为相关度量既粗略又与ESU中的TA不一致。因此,GSU可能会错过相关的行为,但会检索被ESU认为不相关的行为,浪费ESU宝贵的计算资源。在这种情况下,ESU中的TA,无论如何分配注意力,都会偏离真实的用户兴趣,从而降低整体CTR预测精度。
为了解决这种不一致性,我们提出了TWIN:TWo-stage Interest Network,用于终身用户行为建模,其中Consistency-Preserved GSU(CP-GSU)采用与ESU中TA相同的目标-行为相关度量,使两个阶段成为孪生。为了将昂贵的TA扩展到CP-GSU中,TWIN通过有效的行为特征分割、简化的TA架构和高度优化的在线基础设施打破了TA的关键计算瓶颈,即所有行为的线性投影。具体而言,对于行为的视频固有特征(例如视频ID、作者、持续时间、主题),这些特征在用户/行为序列之间共享,我们通过高效的预计算和缓存策略加速它们的投影。对于行为的用户-视频交叉特征(例如用户的点击时间戳、播放时间、评分),其中缓存不适用,我们通过将它们的投影压缩为偏置项来简化TA架构。通过优化在线基础设施,我们成功将TA的适用序列长度从ESU中的$10^2$扩展到CP-GSU中的$10^4 ~ 10^5$。两个阶段之间的一致性,加上CP-GSU中有效的基于TA的相关度量,为CTR预测的显著性能提升做出了贡献。
主要贡献:
- 在我们提出的TWIN中,CP-GSU精确而一致地检索不仅与目标相关,而且ESU认为重要的行为,最大化行为建模的检索效果。据我们所知,我们是第一个成功解决两阶段终身行为建模问题不一致性的团队。
- 我们通过在快手的460亿规模的工业数据集上进行大量离线实验和在线A/B测试来验证TWIN的有效性。我们通过消融研究验证了我们的有效性,并展示了TWIN带来的显著在线收益。
- 我们构建了高效的工业基础设施,将TWIN应用于实际在线RS。我们提出了有效的预计算和缓存策略,将TWIN的计算瓶颈,即CP-GSU中行为的线性投影,降低了99.3%,并满足了在线服务系统的低延迟要求。TWIN现已部署在快手的RS上,每天为3.46亿活跃用户的主要流量提供服务。
2.相关工作
我们的工作与两个活跃的研究领域密切相关:CTR预测和长期用户行为建模。
2.1 点击率预测
CTR预测旨在预测用户的个性化兴趣,对于现代RS至关重要。早期的CTR模型是浅层的,主要关注于利用特征交互,例如因子分解机(FM)[22]和场感知因子分解机(FFM)[12]。随着深度学习的成功,深度CTR模型得到广泛研究并成为主流选择。例如,陈等人[2]和张等人[33]首次将深度模型应用于CTR任务。Wide&Deep [5]结合了宽线性模型和深度模型,充分利用特征交互的记忆和深度架构的泛化优势。DeepFM [10]和DCN [26,27]改进了Wide&Deep的宽部分,以增加特征交互能力。xDeepFM [15]和AFM [29]进一步利用类卷积层和注意机制来改进深度部分并提高模型性能。
随着CTR模型变得越来越个性化,用户行为建模,即从历史行为的总结中捕捉用户的隐藏兴趣,成为一个关键模块。由于计算资源的限制,早期的算法大多采用目标无关的方式,因此可以在离线情况下高效地预计算[8,23,31]。为了更好地提取用户对特定item的兴趣,采用了各种TA机制。DIN [36]通过历史行为上的TA表示用户兴趣,强调目标相关行为。DIEN [35]进一步使用ARGRU(经典GRU的基于注意力的变体)引入行为之间的时间关系。DSIN [9]将行为分为多个会话,并在每个会话内进行自注意力计算,以强调会话内关系。MIND [14]和DMIN [30]通过多个向量表示用户兴趣。BST [4]、SASRec [13]和BERT4Rec [24]也使用变压器来提高模型的性能和并行性。
2.2 Long-Term User Behavior Modeling
随着TA和兴趣建模在现代工业RS中的有效性得到确认,研究人员开始对越来越长的行为进行建模。Liu和Zamanian [16]将长期和短期兴趣结合在CTR预测中。MIMN [18]将用户行为存储为用户兴趣中心(UIC)的记忆矩阵,并在新的用户行为到来时更新记忆。然而,MIMN难以扩展到长度超过$10^3$的序列,并为不同的候选项生成相同的记忆矩阵,携带无用的噪声并损害TA。
最近,SIM [19]和UBR4CTR [20,21]引入了两阶段级联框架来解决这些挑战,并在CTR预测中实现了SOTA性能。传统的两阶段算法通常由以下两部分组成:
- 1)一个简单快速的GSU,从数千个用户行为中检索与目标项最“相关”的item
- 2)一个注意力ESU,对GSU的最终候选item执行TA
UBR4CTR在其第一阶段中使用BM25作为相关度量。而在原始的SIM中,有两个具有不同GSU设计的实例。SIM Hard的GSU从与目标项相同的类别中选择相关项,而SIM Soft的GSU使用预训练item embedding的内积作为相关度量。尽管两阶段设计迈出了重要一步,但原始的GSU仍面临着高计算负担,并且与ESU具有不同的检索度量,导致两个阶段之间的不一致性。
最近,ETA [3]使用局部敏感哈希(LSH)对由ESU训练的item embedding进行编码,并通过汉明距离(HD)从长期行为中检索相关项。SDIM [1]通过多轮哈希碰撞从具有相同哈希签名的行为项中采样target item,并通过线性聚合这些采样的行为项来获取用户兴趣。ETA和SDIM采用End2End训练是积极的。换句话说,它们的两个阶段共享相同的embedding。然而,在检索策略方面仍存在不一致性,具体而言是网络结构和参数。
在本文中,我们提出将TA结构扩展到GSU,并将embedding和attention参数从ESU同步到GSU,保持端到端训练。结果,在网络结构和模型参数方面实现了一致性,相比于ETA和SDIM,获得了显著的性能提升。我们在表1中详细说明了我们的模型与其他模型的差异。请注意,我们的工作与旨在加速变压器(例如LISA [28])的索引算法不同。它们通过将行为映射到码本并查找距离来近似相关度量计算。而我们的工作以及许多其他两阶段算法使用精确的距离计算,但使用GSU作为预过滤器来减少行为数量。
3 TWIN在快手CTR预测中的应用
首先,在第3.1节中,我们回顾了CTR预测问题的一般基础知识。然后,在第3.2节中,我们描述了快手CTR预测系统的模型架构。接着,在第3.3节中,我们进一步深入探讨了我们提出的保持一致性的终身用户行为建模模块——两阶段兴趣网络(TWIN)。最后,在第3.4节中,我们介绍了必要的加速策略,以确保TWIN成功部署在快手的主流量上。
所使用的符号总结在表2中。
3.1 基础知识
CTR预测的目的是:在给定特定上下文的情况下预测用户点击一个item的概率。准确的CTR预测不仅通过提供首选内容提升用户体验,而且通过吸引感兴趣的受众,有益于内容生产者和平台的业务效益。因此,CTR预测已成为各种工业RS的核心组成部分,特别是像快手这样的短视频推荐平台。
CTR预测通常被公式化为一个二元分类问题,目标是学习一个预测函数 $𝑓: R_d \rightarrow R$,给定:
- $D=\lbrace (x_1,𝑦_1), \cdots,(x_{\mid D\mid}, 𝑦_{\mid D \mid})\rbrace$: 一个训练数据集。
- $x_i \in R_d$:是第i个训练样本的特征向量(即用户、item和上下文特征的串联)
- $𝑦_i \in \lbrace 0,1 \rbrace$:是表示用户是否点击(1)该项或未点击(0)的label
预测的CTR计算公式如下:
\[𝑦^i =\sigma(𝑓(x_𝑖))\]…(1)
其中:
- $𝜎(\cdot)$是将𝑓的预测缩放到(0,1)的sigmoid函数
模型的训练通过最小化负对数似然来完成:
\(l(D)=-\frac{1}{|D|} \sum_{𝑖=1}^{|D|} 𝑦_i log(\hat{𝑦}_i)+(1−𝑦_i)log(1−\hat{𝑦}_i)\) … (2)
为简洁起见,当不会引起混淆时,在以下各节中省略训练样本索引𝑖。
3.2 CTR预测的架构
我们现在介绍快手CTR预测系统的架构,详细信息如图2所示。
3.2.1 embedding layer
在底部,我们的模型从一个feature embedding layer开始,它会将训练样本的原始特征转换为embedding向量。
不失一般性,我们假设所有特征在必要的预处理后都是类别型。对于具有词汇表大小为$𝑣_𝐴$的特征𝐴,我们首先将分类信息编码为一个one-hot/multi-hot编码$xA,hot \in {0,1}^{𝑣_𝐴}$。例如:
\[WeekDay=Mon => x_{WeekDay,hot} = [1, 0, 0, 0, 0, 0, 0]^T, \\ Topic={Funny, Pet} => x_{Topic, hot} = [\cdots, 0, 1, 0, \cdots, 0, 1, 0...]^T\]请注意,在大多数工业系统中,词汇表大小(特别是用户/作者/视频ID的大小)可以轻松扩展到数亿。因此,一种常见的策略是将极高维度的one-hot编码转换为低维度的嵌入向量,
\(x_{A,emb} = 𝐸_𝐴 x_{A,hot}\) …(3)
其中:
- $𝐸_𝐴 \in R^{𝑑𝐴 \times 𝑣_𝐴}$是特征𝐴的embedding字典
- $𝑑_𝐴$是embedding维度
在我们的系统中:
- 对于具有大词汇表的id特征,我们将embedding维度设置为64,
- 对于其他特征,如视频主题、视频播放时间戳,我们将embedding维度设置为8。
在所有上层中,我们将embedding向量作为输入,因此为简洁起见省略了“emb”下标。
3.2.2 深度网络
我们的CTR预测的总体架构如图2所示。
图2 快手CTR预测系统中的TWIN。与传统的两阶段行为建模算法不同,TWIN在CP-GSU和ESU中采用相同的目标-行为相关度度量,包括相同的网络架构(如左图所示)和相同的参数值(如中下部分所示)。这是具有挑战性的,因为MHTA的计算成本很高,因此只适用于ESU(具有100个行为),而不适用于CP-GSU(具有104个行为)。 我们通过提出以下方法来解决这个挑战:1)高效的特征拆分和投影策略,以不同的方式处理项的固有特征和用户-项交叉特征(如右下图所示);2)简化的目标注意力架构,通过将交叉特征压缩为偏置项来加速目标注意力的效率(如左图所示)。
上层模块由堆叠的神经网络和ReLU组成,作为一个混合器,学习三个中间模块的输出之间的交互作用:
- TWIN,提出的保持一致性的终身用户行为建模模块,通过两个级联的行为建模子模块提取用户兴趣:
- 1)保持一致性的一般搜索单元(CP-GSU):从成千上万的长期历史行为中进行粗略搜索,找到100个最相关的行为;
- 2)精确搜索单元(ESU):对CP-GSU的100个最终选手采用attention机制,捕捉精确的用户兴趣。与通常由“轻量级”GSU和“重量级”ESU组成的传统算法不同,我们提出的CP-GSU采用与ESU相同的相关性评估指标,使得这两个级联阶段成为TWIN。因此,CP-GSU始终检索ESU认为重要的item,最大化了行为建模的效果。
- 短期行为建模(Short-term behavior modeling):从最近的50个行为中提取用户兴趣。该模块关注用户对最近几天的短期兴趣,是TWIN的强有力补充。
- 其他任务建模。除了行为建模,我们还将各种其他任务建模的输出连接起来,包括用户的性别、年龄、职业、位置,视频的持续时间、主题、受欢迎程度、质量,以及播放日期、时间戳、页面位置等上下文特征。
3.3 TWIN: 两阶段兴趣网络
我们将提出的算法命名为TWIN,以突出CP-GSU遵循与ESU相同的相关性评估指标。请注意,这种一致性并不是微不足道的,因为:
- 有效的行为建模算法通常基于多头目标注意力(MHTA)[25],通过强调目标相关行为来精确捕捉用户兴趣。不幸的是,由于计算复杂度高,MHTA适用的行为序列长度大多限制在几百个之内。
- 为了全面捕捉用户的长期兴趣,CP-GSU应该涵盖最近几个月的用户行为,这可能很容易达到数万个。考虑到在线系统的严格低延迟要求,这个序列长度远远超出了传统MHTA的能力范围。
本节的目的是回答这个关键问题:如何提高MHTA的效率,以便将其从ESU扩展到CP-GSU,或者说从数百个序列长度扩展到至少数万个序列长度?
3.3.1 行为特征分割和线性投影
遵循MHTA [25]的标准符号,我们将长度为𝐿的行为序列$[𝑠_1,𝑠_2,\cdots,𝑠_𝐿]$的特征定义为矩阵𝐾,其中每一行表示一个行为的特征。在实践中,MHTA中注意力得分计算中𝐾的线性投影是阻碍其在极长的用户行为序列上应用的关键计算瓶颈。因此,我们提出以下措施以降低其复杂度。
我们首先将行为特征矩阵𝐾分成两部分:
\(𝐾 ≜ [𝐾_ℎ 𝐾_𝑐] \in R^{𝐿 × (𝐻+𝐶)}\) …(4)
我们将:
- $𝐾_ℎ \in R^{𝐿×𝐻}$:定义为行为items的固有特征(例如视频id、作者、主题、持续时间),它们独立于特定的用户/行为序列
- $𝐾_𝑐 \in R^{𝐿×𝐶}$:定义为user-item交叉特征(例如用户点击时间戳、用户播放时间、点击页面位置、用户-视频交互)。这种分割允许高效计算以下线性投影$𝐾_ℎ 𝑊^ℎ$ $和$𝐾_𝑐 𝑊^𝑐$ 。
对于固有特征$𝐾_ℎ$,虽然维度𝐻很大(每个id特征为64),但线性投影实际上并不昂贵。特定项的固有特征在用户/行为序列之间是共享的。通过必要的缓存策略,𝐾ℎ𝑊 ℎ 可以通过查找和聚集过程高效地“计算”。在线部署的详细信息将在第3.4节介绍。 对于用户-项交叉特征𝐾𝑐,缓存策略不适用,因为:1)交叉特征描述了用户和视频之间的交互细节,因此不在用户行为序列之间共享;2)每个用户最多只观看一次视频。也就是说,在投影交叉特征时没有重复计算。因此,我们通过简化线性投影权重来降低计算成本。
对于用户-项交叉特征$𝐾_𝑐$,缓存策略不适用,因为:
- 1)交叉特征描述了用户和视频之间的交互细节,因此不在用户行为序列之间共享;
- 2)每个用户最多只观看一次视频。也就是说,在投影交叉特征时没有重复计算。
因此,我们通过简化线性投影权重来降低计算成本。
给定𝐽个交叉特征,每个特征的嵌入维度为8(因为没有具有巨大词汇表大小的id特征)。我们将线性投影简化如下:
\(𝐾_𝑐 𝑊^𝑐 ≜ [𝐾_{𝑐,1} w_1^c, \cdots, 𝐾_{𝑐,𝐽} w_𝐽^c]\) … (5)
其中:
- $𝐾_{𝑐,𝑗} \in R^{𝐿×8}$: 是𝐾𝑐的第𝑗个交叉特征的按列切片
- $w_𝑗^c \in R^8$:是其线性投影权重
使用这个简化的投影,我们将每个交叉特征压缩到一个维度,即$𝐾_𝑐 𝑊^𝑐 \in R^{𝐿×𝐽} $ 。请注意,这个简化的投影等价于将$𝑊 _𝑐$ 限制为一个对角块矩阵。
3.3.2 复杂度分析
在传统的MHTA中,线性投影的时间复杂度,即从维度$𝐿×(𝐻+𝐶)$到$𝐿×{d_out}$输出维度的复杂度为𝑂(𝐿×(𝐻+𝐶)×输出维度)。
而在我们的TWIN中的MHTA中,item的固有特征$𝐾_ℎ 𝑊^ℎ$已经预先计算并以𝑂(𝐿)的效率聚合,与维度𝐻无关。而user-item交叉特征$𝐾_𝑐𝑊^𝑐$则被降低为$𝑂(𝐿×𝐶)$的低维计算。 由于𝐶 ≪ 𝐻,且𝐶 ≪ 输出维度,正是这种理论上的加速,使得MHTA在CPGSU和ESU中都能一致地实现。
3.3.3 TWIN中的目标注意力
基于行为的线性投影𝐾ℎ𝑊 ℎ和𝐾𝑐𝑊 𝑐,我们现在定义了目标-行为相关度度量,该度量在CP-GSU和ESU中均匀使用。不失一般性,我们假设用户和目标项之间没有交互,并将目标项的固有特征表示为$q \in R_𝐻$。通过适当的线性投影$𝑊_𝑞$,计算目标项与历史行为之间的相关度分数: $𝜶 ∈ R 𝐿: 𝜶 = (𝐾ℎ𝑊 ℎ ) (q ⊤𝑊 𝑞 ) ⊤ √ 𝑑𝑘
(𝐾𝑐𝑊 𝑐 )𝜷$, (6)
其中$𝑑_𝑘$是查询和键的投影维度。这个相关度分数是通过查询(即目标的固有特征)和键(即行为的固有特征)之间的内积计算的。此外,由于交叉特征被压缩为1维,因此作为偏置项。我们使用𝜷 ∈ R 𝐽作为交叉特征的相对重要性的可学习参数。 在CP-GSU中,这个相关度分数𝜶用于将𝐿 = 104的长期历史行为截断为100个最相关的行为。而在ESU中,我们对最终的100个候选项执行加权平均池化: Attention(q ⊤𝑊 𝑞 , 𝐾ℎ𝑊 ℎ , 𝐾𝑐𝑊 𝑐 , 𝐾𝑊 𝑣 ) = Softmax(𝜶) ⊤𝐾𝑊 𝑣 , (7) 其中𝑊 𝑣是一个投影矩阵。我们稍微滥用了符号,将𝐿 = 100。这个投影𝐾𝑊 𝑣仅在100个行为上执行,因此可以在线高效地进行。我们不需要像计算104个行为的𝜶时那样分割𝐾。 为了共同关注来自不同表示子空间的信息,我们在MHTA中采用了4个头。因此,TWIN的最终输出定义为 TWIN = Concat(head1, …, head4)𝑊 𝑜 , head𝑎 = Attention(q ⊤𝑊 𝑞 𝑎 , 𝐾ℎ𝑊 ℎ 𝑎 , 𝐾𝑐𝑊 𝑐 𝑎 , 𝐾𝑊 𝑣 𝑎 ), 𝑎 ∈ {1, …, 4}, (8) 𝑊 𝑜是一个投影,学习头之间的相对重要性。
略