《TWIN V2: Scaling Ultra-Long User Behavior Sequence Modeling for Enhanced CTR Prediction at Kuaishou》
在大型推荐系统中,建模长期用户兴趣对于 CTR prediction
任务的重要性正逐渐引起研究人员和从业者的关注。现有的研究工作,如 SIM
和 TWIN
,出于效率考虑,通常采用两阶段方法来建模长期用户行为序列:
第一阶段使用 search-based
的机制,即 General Search Unit: GSU
,从长序列中快速检索与 target item
相关的 a subset of sequences
。
而第二阶段使用 Exact Search Unit: ESU
对检索到的结果计算 interest scores
。
鉴于用户行为序列跨越整个生命周期,可能达到 TWIN-V2
,这是 TWIN
的增强版,其中采用分而治之的方法来压缩 life-cycle behaviors
并发现更准确更多样化的用户兴趣。
具体来说,离线阶段,我们通过 hierarchical clustering
方法将 life-cycle behaviors
中具有相似特性的 items
归为一个 cluster
。通过 clusters
的规模,我们可以将远远超过 GSU retrieval
的 online inference
。Cluster-aware target attention
可以提取用户的全面的、多方面的长期兴趣,从而使最终的推荐结果更加精准和多样化。
在数十亿规模的工业级数据集上的大量离线实验、以及线上 A/B test
,证明了 TWIN-V2
的有效性。在高效的部署框架下,TWIN-V2
已成功部署到快手主流量中,从而服务于数亿日活用户。
CTR prediction
对于互联网应用至关重要。例如,快手(中国最大的短视频分享平台之一)已将 CTR prediction
作为其 ranking system
的核心组件。最近,人们投入了大量精力来对 CTR prediction
中的用户长期历史行为进行建模。由于生命周期中的 behaviors
的长度很长,modeling life-cycle user behaviors
是一项具有挑战性的任务。尽管现有研究不断努力延长 historical behavior modeling
的长度,但尚未开发出可以对用户整个生命周期进行建模的方法,从而覆盖 application
中高达 1 million behaviors
。
现代工业系统采用了两阶段方法,以便在可控的推理时间内尽可能多地利用用户历史记录。具体来说:
在第一阶段,通用搜索单元 (General Search Unit: GSU
) 模块用于过滤长期历史行为,选择与 target item
相关的 items
。
在第二阶段,精确搜索单元 (Exact Search Unit: ESU
) 模块对 filtered items
进行进一步处理,通过 target attention
提取用户的长期兴趣。
GSU
的粗粒度的 pre-filtering
使系统能够在 online inference
过程中以更快的速度建模更长的历史行为。许多方法尝试了不同的 GSU
结构来提高 pre-filtering
的准确率,例如 ETA
、SDIM
和 TWIN
。
尽管现有的第一阶段的 GSU
很有效,但它们通常存在长度限制,无法对整个生命周期的 user behaviors
进行建模。例如:
SIM
、ETA
和 SDIM
可以过滤最大长度为
TWIN
将最大长度扩展到
在部署过程中,TWIN
使用最近的 10,000 behaviors
作为 GSU
的输入。不幸的是,这 10,000 behaviors
仅涵盖了用户在快手 App
中最近三到四个月的历史记录,无法涵盖 user behavior
的整个生命周期。如 Figure 1
所示,我们分析了快手 App
中过去三年的 user behavior
。medium and high user groups
在三年内可以观看 App
使用时长的大部分(60% + 35% = 95%
)。因此,modeling the full life-cycle behaviors
可能会增强用户体验并提高平台的商业收益。
为了解决这个问题,我们提出了 TWIN-V2
,这是 TWIN
的增强版,使其能够对 user behavior
的全生命周期进行建模。 TWIN-V2
采用分而治之的方法,将完整的生命周期历史(full life-cycle history
)分解为不同的 clusters
,并使用这些 clusters
来建模用户的长期兴趣。具体来说,我们将模型分为两个部分:离线和在线。
在离线部分,我们使用层次聚类(hierarchical clustering
)将 life-cycle behaviors
中的相似 items
聚合到 clusters
中,并从每个 cluster
中提取特征以形成一个虚拟的 item
。
在在线部分,我们利用 cluster-aware target attention
从而基于 clustered behaviors
来提取长期兴趣。在这里,attention scores
根据相应的 cluster size
被重新加权。
大量实验表明,TWIN-V2
在各种类型用户上提升了性能,从而带来更准确和多样化的推荐结果。
本文主要贡献总结如下:
我们提出 TWIN-V2
从极长的 user behavior
中捕获用户兴趣,成功地延长了 user modeling across the life cycle
的最大长度。
hierarchical clustering
和 cluster-aware target attention
提升了 long sequence modeling
的效率,建模了更准确、更多样化的用户兴趣。
大量离线实验和在线实验验证了 TWIN-V2
在超长用户行为序列的扩展方面的有效性。
我们分享了 TWIN-V2
的部署实践,包括离线处理和在线服务。TWIN-V2
已经服务于快手每日约 4
亿活跃用户的主要流量。
TWIN V2 vs TWIN V1
的在线指标提升,要比TWIN V1 vs SIM
低得多。这意味着TWIN V2
上线之后,系统的商业增益没有那么大。
本文旨在将 long-term history modeling
扩展到生命周期级别,同时保持效率。Table 1
总结了 TWIN-V2
与之前工作的比较。
TWIN V2
比TWIN
多了一步:先对用户行为序列进行聚类,并对每个cluster
构造一个virtual item
来代表这个cluster
。然后将这些virtual items
馈入TWIN
中。但是,
TWIN V2
的效果依赖于一个训练好的recommendation model
。我们需要从这个recommendation model
中获取item embedding
从而进行聚类、以及virtual item
的构造。然而,论文没有提到这个recommendation model
是如何创建和训练的,在实验部分也没有说这个recommendation model
的性能对于TWIN V2
效果的影响。从 “TWIN-V2 的部署” 这一章节来看,我们只需要提供一个初始的
recommendation model
,然后在训练过程中可以用上一轮的TWIN-V2
模型作为这个recommendation model
从而优化下一轮的TWIN-V2
。从这个角度来看,recommendation model
似乎不是特别重要?此外,读者猜测初始的
recommendation model
来自于训练好的TWIN-V1
模型。
本节详细阐述了所提出的模型,详细介绍了从整体工作流到 deployment framework
的整个过程。符号总结如下。
CTR prediction
的核心任务是预测用户点击某一个 item
的概率。令 feature representation
,令 label
。CTR prediction
的过程可以写成:
其中:
sigmoid
函数。
CTR
模型
predicted probability
。
模型
其中:
Figure 2
展示了 TWIN-V2
的整体框架,包括离线和在线部分。本文重点介绍 life-cycle behavior modeling
。因此我们强调这一部分并省略其他部分。
由于整个生命周期的 behavior
对于 online inferring
来说太长,我们首先在离线阶段对 behaviors
进行压缩。User behavior
通常包括许多相似的视频,因为用户经常浏览他们喜欢的主题。因此,我们使用 hierarchical clustering
将用户历史中具有相似兴趣的 items
聚合到 clusters
中。Online inferring
使用这些 clusters
及其 representation vectors
来捕获用户的长期兴趣。
在 online inferring
过程中,我们采用两阶段方法进行life-cycle modeling
:
首先,我们使用 GSU
从 clustered behaviors
中检索与 target item
相关的 top 100 clusters
。
然后,我们使用 ESU
从这些 clusters
中提取长期兴趣。
在 GSU
和 ESU
中,我们实现了 cluster-aware target attention
,并调整不同 clusters
的权重。
考虑到用户在生命周期中的历史行为具有超长序列,我们首先采用分而治之的方法压缩这些 behaviors
,然后从 compressed behaviors
中提取用户的长期兴趣。
对于用户 items
的一个序列 life-cycle behaviors
的数量,item
。用户可能在 similar items
。例如,一个喜欢 NBA
比赛的用户在其历史中可能拥有数百个与篮球相关的视频。因此,一个自然的想法是将 similar items
聚合成 clusters
,用一个 cluster
来表示许多 similar items
,从而减小
正式地,我们旨在使用压缩函数 behavior sequence
其中:clustered behaviors
clustered items
的第
具体而言,我们采用分层聚类(hierarchical clustering
)方法来实现 Algorithm 1
所示。
在第一步中,我们简单地将 historical behaviors
分成几组。我们首先根据用户 playing time ratio
将 historical items
分为 historical item
,这个 playing time ratio
记作
在第二步中,我们递归地对每组的 life-cycle historical behaviors
进行聚类,直到每个 cluster
中的 items
数量不超过 k-means
方法对 behaviors
embeddings
recommendation model
中获得。maximum cluster size
的超参数。
这意味着我们需要一个
pre-trained
模型从而获得。这个 pre-trained
模型的质量会影响TWIN-V2
的效果。
接下来,我们将详细说明 Algorithm 1
背后的原理:
Item Grouping
:在短视频场景中,视频的完播率(playing completion ratio
)可以看作是用户对视频感兴趣程度的指标。我们首先按完播率对 behaviors
进行分组,以确保 final clustering results
具有相对一致的 playing time ratio
。如果不这样做,将导致每个 cluster
内的分布不平衡,因为k-means
仅考虑 item embeddings
。函数 playing time ratio
的范围分成五个相等的部分。5
。
在电商场景下,我们可以按照
action type
对behaviors
进行分组,如click, add_cart, purchase
。
Recursively Adaptive Clustering
:我们选择 hierarchical clustering
而不是 single-step clustering
,因为用户历史是个性化的,因此设置通用的 clustering iterations
数量是不切实际的。
我们还动态设置 number of clusters
(items
数量的 0.3
次方),允许 clustering
适应不同规模的 behaviors
。
当 item size
低于 clustering
过程停止,其中 20
。
单次迭代逻辑:
首先从
中取一个 group
。注意, 被第一步 Item Grouping
所初始化,刚开始包含个 group
。如果
group
的 item
数量低于,则 group
直接作为一个 cluster
。当前迭代结束,进入下一轮迭代。如果
group
的 item
数量大于等于,则对 group
进行 Kmeans
聚类,cluster
数量为group
中 item
数量的0.3
次方。聚类后的每个cluster
都追加到中,从而便于将来迭代。 这种做法使得每个
cluster
的item size
都小于。
在我们的实践中,平均 cluster size
约为 cluster
的数量),大大缩短了 life-cycle behaviors
的长度。用于聚类的 item embeddings
recommendation model
中获得的,这意味着 clustering
是由协同过滤信号所指导的。
因此,我们通过将 similar items
聚合到 clusters
中,将原本很长的用户行为序列
获得 clusters
items of each cluster
中抽取特征。为了最大限度地减少计算和存储开销,我们使用一个 virtual item
来表示 features of each cluster
。
我们将 item features
分为两类(numerical and categorical
),并使用不同的方法抽取它们。
Numerical features
通常使用标量来表示,例如视频时长和用户播放视频的时间。
Categorical features
通常使用 one-hot (or multi-hot)
向量来表示,例如 video ID
和 author ID
。
正式地,给定一个任意 item
为简单起见,我们使用 categorical features
,numerical features
。对于 cluster
我们计算其包含的所有 items
的所有 numerical features
的平均值作为 numerical feature representation
:
对于 categorical features
,由于它们的平均值没有意义,我们采用距离 cluster
item
来表示 cluster
其中:item
embeddings
。这些 embeddings
可以从
注意:这是将距离质心最近的
item
的categorical feature
作为这个cluster
的categorical feature
。
因此,整个 cluster
aggregated, virtual item feature
embedding layers
之后,每个 cluster
的特征都被嵌入到一个向量中,例如,对于 embedding
向量为 GSU
和 ESU
模块根据这些 embedded vectors
估计每个 cluster
与 target item
之间的相关性。
就是一个 “虚拟” 的 item
(即,virtual item
),作为这个cluster
的代表。
遵从 TWIN
,我们同时在 ESU
和 GSU
中采用了相同的有效的注意力机制,将 clusters
representations
作为输入。
给定 clustered behaviors
embedding layer
得到由 representation vectors
组成的矩阵 cluster
的特征 embedding
向量。
对于
numerical feature
,需要先做 bucktize
,然后再做embedding
。
然后我们使用 target attention
机制来衡量 target item
与 historical behaviors
的相关性。我们首先应用 TWIN
中的 “Behavior Feature Splits and Linear Projection”
技术来提升 target attention
的效率,详细信息见论文附录 A.2
。该方法将 item embeddings
拆分为固有的部分和交叉的部分。target item
的固有特征的向量。clustered behaviors
的固有 embedding
和交叉 embedding
,其中 target item
与 clustered behaviors
之间的 relevance scores
其中:
由于 clusters
中的 item counts
千差万别,clusters
与 target item
之间的关系。假设两个 clusters
具有相同的相关性(与 target item
的相关性),则具有更多 items
的 cluster
应该更重要,因为 items
越多意味着用户偏好越强。因此,我们根据 cluster size
调整 relevance scores
:
其中:clusters
的大小,每个元素 cluster
cluster size
。
在 GSU
阶段,我们使用 clustered behaviors
(总长度为 relevance scores
最高的 top 100 clusters
。然后,将这 100 clusters
被输入到 ESU
,在那里根据 relevance scores
对它们进行聚合,从而得到用户长期兴趣的 representation
:
其中
为了简单起见,这个等式中的符号被稍微滥用:在 ESU
阶段设置
其中每个 cluster
的 relevance score
cluster size
我们使用具有 4
个头的多头注意力来获得最终的长期兴趣:
其中
备注:利用从 GSU
中的 hierarchical clustering
中得出的 behaviors
,使模型能够容纳更长的历史行为,从而在我们的系统中实现 life-cycle level modeling
。与 TWIN
相比,GSU
的 life-cycle behaviors
的 input
涵盖了更广泛的历史兴趣,从而提供了更全面、更准确的用户兴趣建模。
此外,虽然现有的方法使用 top 100 retrieved behaviors
作为 ESU
的输入,但 TWIN-V2
使用 100 clusters
。这些 clusters
涵盖了超过 100 behaviors
,使ESU
能够对更广泛的 behaviors
进行建模。
所有这些优势带来了更加准确和多样化的推荐结果,这在实验章节中得到了验证。
我们将部署 TWIN-V2
的实践分为两个部分:在线和离线,如 Figure 3
所示。
在 Figure 3
中,我们以单个用户为例进行说明。当系统收到用户的 request
时:
它首先从离线处理好的 user life-cycle behaviors
中提取 behavioral features
。
然后,使用 GSU
和ESU
,将 behavioral features
建模长期兴趣的 input
从而用于 CTR
模型以进行预测。
我们使用一个 nearline trainer
来进行 real-time model training
,该 trainer
使用实时用户交互数据(数据在 8
分钟的时间窗口内)增量地更新模型参数。
对于 life-cycle behaviors
,我们应用 hierarchical clustering
和feature extraction
来处理它们。这是通过周期性的 offline processing
和 updates
进行的。
Offline Processing
:离线处理旨在压缩用户的整个 life-cycle behaviors
。考虑到快手的用户数量是十亿级的,我们会定期压缩他们的 life-cycle behaviors
。hierarchical clustering runner
每 2
周执行一次全面更新。
我们将 hierarchical clustering
中的 maximum cluster size
20
,导致平均 cluster size
约为 10
。通过 cluster representation extraction
,每个 cluster
被聚合为一个虚拟 item
。在我们的实践中,historical behavior
被压缩为原始长度的 10%
,从而将存储成本降低了 90%
。
我们为 embedding server
采用了 TWIN
中提出的 inherent feature projector
,每 15
分钟从最新的 CTR
模型刷新一次 projector
的参数。
Online Serving
:用户向系统发送 request
后,离线系统将数据特征发送到 GSU
,GSU
计算 behavior-target relevance scores
ESU
选择并聚合 top 100 clustered behaviors
作为长期兴趣从而用于 CTR
模型的预测。为了确保 online inference
的效率,我们保留了 TWIN
的 precomputing and caching
策略(即,预计算并缓存 TWIN-V2
是 TWIN
的增量部署:TWIN
对最近几个月的 behaviors
进行建模,而 TWIN-V2
对整个生命周期的 behaviors
进行建模,使得它们相互补充。
在本节中,我们通过进行大量的离线实验和在线实验来验证 TWIN-V2
的有效性。
数据集:由于 TWIN-V2
是为极长的 user behaviors
而设计的,因此需要使用具有丰富用户历史的数据集。据我们所知,目前还没有平均历史长度超过 App
中提取了连续五天的用户交互数据作为训练集和测试集。样本由点击日志构成,并以 click
为标签。为了捕获用户的 life-cycle
历史,我们进一步追溯了每个用户的过去所有行为,每个用户的最大历史长度为 100,000
。Table 2
展示了该工业数据集的基本统计数据。每天的前 23
个小时用作训练集,而最后一个小时用作测试集。
这种测试集会不会有偏?因为最后一个小时的交互数据的分布可能与前
23
个小时不同。
baseline
:遵循常见做法(《Sampling Is All You Need on Modeling Long-Term User Behaviors for CTR Prediction》
、《TWIN: TWo-Stage Interest Network for Lifelong User Behavior Modeling in CTR Prediction at Kuaishou》
),鉴于我们的重点是建模极长的用户历史记录,我们将 TWIN-V2
与以下 SOTA baselines
进行比较:
(1) Avg-Pooling
:一种利用均值池化的简单方法。
(2) DIN
:它为推荐算法引入了 target attention
。
(3) SIM Hard
:Hard-search
是指 GSU
根据 category
过滤长期历史。
(4) SIM Soft
:Soft search
涉及通过计算 target item
和历史记录中的 items
之间的向量点积来选择 top-k items
。
(5) ETA
:它采用局部敏感哈希(Locality Sensitive Hashing: LSH
)来促进端到端的训练。
(6) SDIM
:GSU
通过收集与 target item
共享相同哈希签名(hashing signature
)的 behaviors
来聚合长期历史。
(7) SIM Cluster
:由于SIM Hard
依赖于 annotated categories
,我们通过 video embeddings
的聚类对其进行了改进。GSU
检索与 target item
位于相同 cluster
中的历史行为。在这里,我们将所有 items
聚类为 1,000 groups
。
(8) SIM Cluster+
:这是 SIM Cluster
的高级变体,其 cluster
数量增加到 10,000
个。
(9) TWIN
:它为 GSU
和 ESU
阶段提出了一种有效的 target attention
。
为了确保公平比较,除了 long-term interest modeling
外,我们在模型的所有方面都保持一致。
评估指标和评估设置:
我们使用一天中连续 23
个小时的样本作为训练数据,并使用接下来一个小时的样本进行测试。我们连续 5
天评估所有算法并报告 5
天的平均性能。
相当于将算法重复
5
次并报告平均性能。
至于评估指标,我们采用了广泛使用的 AUC
和 Group AUC: GAUC
。我们计算了连续 5
天这两个指标的均值和标准差。
GAUC
对所有用户的AUC
进行加权平均,权重设置为该用户的样本数。GAUC
消除了用户之间的bias
,以更精细和公平的粒度评估模型性能。
实现细节:
对于所有模型,我们都使用 industrial context
中相同的 item and user features
,包括 video ID, author ID and user ID
等大量属性。
TWIN-V2
将单个用户历史长度限制为最多 100,000 items
,从而对 life-cycle user behavior
进行聚类。如前文所述,TWIN-V2
经验性地将历史行为压缩为原始大小的约 10%
,从而导致 GSU
中的 maximum input length
约为 10,000
。
对于其他两阶段模型,输入 GSU
的历史行为最大长度限制为 10,000 behaviors
。
对于 DIN
和 Avg-Pooling
,recent history
的最大长度为 100
,因为它们不是为 long-term behaviors
而设计的。
Avg-Pooling
事实上可以支持任意长度的用户行为序列。为什么这里截断为100
?
所有两阶段模型都利用 GSU
来检索 top 100 historical items
并将它们输入 ESU
从而用于 interest modeling
。
batch size
设置为 8192
。Adam
的学习率为 5e-6
。
从 Table 3
的结果中,我们得出以下观察结果:
TWIN-V2
的表现远超其他基线。现有文献(《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》
、《DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-Scale Learning to Rank Systems》
)表明,AUC
提高 0.001
对 CTR prediction
具有重要意义,足以产生 online benefits
。TWIN-V2
比表现第二好的 TWIN
模型有所改进,AUC
提高了 0.0013
,GAUC
提高了 0.0024
。这些改进验证了 TWIN-V2
的有效性。
TWIN-V2
在 GAUC
上的相对改进高于 AUC
上的相对改进。GAUC
提供了更细粒度的模型指标。GAUC
的较大改进表明 TWIN-V2
在各种类型的用户中都实现了提升,而不仅仅是在整体样本上表现更好,而且它在特定子集上也表现出色。由于 TWIN-V2
包含更长的行为序列,我们相信它在高度活跃的用户群体中取得了更大的进步,这一假设在附录 A.3
中得到了验证(如 Figure 5
所示)。
我们进行了一项消融研究,以调查核心模块在 TWIN-V2
中的作用以及我们设计背后的原理。
不同 Hierarchical Clustering
方法的比较:我们的 hierarchical clustering
方法有两个主要特点:
1)
:它利用动态 clustering number
sizes of behaviors
。
2)
:k-means clustering
是非均匀的,最终导致不同大小的 clusters
。
我们首先验证自适应的 cluster number
“Binary”
。此外,为了测试均匀 cluster sizes
的效果,我们创建了一个在 balanced k-means clustering
结果的变体,记作 “Balanced&Binary”
。在这个变体中,每次 k-means iteration
之后,对于 larger cluster
中的一部分 item
,如果它们比另一部分 item
更靠近另一个 cluster
的质心,则这些 items
会被移动到另一个 cluster
中,以确保最终两个 cluster
的大小相等。
Table 4
报告了对 TWIN-V2
和这两个变体的统计分析。
在这三种方法中,我们的方法实现了最高的 cluster accuracy
。这表明我们的方法创建的 clusters
中,items
具有更紧密匹配的 representation vectors
,从而导致每个 cluster
内的 items
具有更高的相似度。
cluster accuracy
:每个item
和它所属的cluster
的质心进行cos
相似度计算,然后取平均。
我们的方法还实现了最短的运行时间,证实了自适应
此外,我们还报告了这些方法在测试集上的性能,如 Figure 4 (left)
。
这些结果验证了自适应方法(adaptive method
)可以在每个 cluster
内分配更相似的 items
,并与其他方法相比加快了 hierarchical clustering
的过程。
Cluster-aware Target Attention
的有效性:在提出的 cluster-aware target attention
中,与 TWIN
相比,主要区别在于使用 clustered behavior
作为输入,并根据 cluster size
重新加权 attention scores
。我们分别从 GSU
和 ESU
中删除了 cluster size reweighting
部分,以评估其对性能的影响。具体来说,我们分别将 GSU
和 ESU
的 Figure 4 (right)
显示了实验结果。省略 reweighting
会导致性能下降,这验证了通过 cluster size
来调整 attention scores
的有效性。
我们进行了在线 A/B test
,以验证 TWIN-V2
在我们工业级系统中的性能。Table 5
显示了 TWIN-V2
在快手三个代表性场景(Featured-Video Tab, Discovery Tab, and Slide Tab
)中在观看时长(Watch Time
)和推荐结果多样性方面的相对改进。
观看时长衡量用户花费的总时间。
多样性是指模型推荐结果的多样性,比如视频类型的丰富性。
多样性指标公式s是什么?这里没给出来。
从结果来看,TWIN-V2
可以更好地建模用户兴趣,从而提升观看时长。此外,通过建模更长的历史行为,TWIN-V2
可以发现更多样化的用户兴趣,从而带来更加多样化的推荐结果。