[CIKM'20] SIM: Search-based User Interest Modeling with Lifelong Sequential Behavior Data 论文精读

长序列用户兴趣建模有两条路线:

  • 记忆网络 (MIMN): 把所有历史行为增量地压进一个固定大小的 memory matrix,长度可达 1000,但与 target 解耦,丢失了 target-aware 的精准性,序列再长就被噪声淹没.
  • 目标感知检索 (DIN/DIEN): 针对当前候选 item 做 attention 检索,精准但计算/存储开销与序列长度线性相关,只能吃几百长度的短序列.

本文 SIM 用 两级级联检索 把两条路线的优点合在一起: 先用廉价的 GSU 从上万条行为里粗筛出几百条相关行为,再用昂贵的 ESU 做精准的 target-aware attention。长度上限从 MIMN 的 1000 推到 54000 (54x).

#摘要

丰富的用户行为数据对 CTR 预估极有价值,尤其在推荐和广告等工业场景。阿里此前的 SOTA 是基于记忆网络的 MIMN,它通过 “学习算法 + 服务系统” 协同设计,第一次把可建模的行为序列长度扩展到 1000。但当序列再长 10 倍以上时,MIMN 无法在给定候选 item 时精准刻画用户兴趣 —— 把所有历史行为编码进固定大小的 memory matrix 会引入大量噪声.

淘宝重度用户 5 个月能点 1000+ 个商品,全生命周期可达上万甚至10610^6

在 MIMN 之前,DIN/DIEN 这条线的在线上限大约只有 100~150。

本文提出一种新的建模范式 Search-based Interest Model (SIM),用两个级联的检索单元来抽取用户兴趣:

  • General Search Unit (GSU): 以候选 item 作为 query,从原始的、任意长的用户行为序列中做一次通用检索,得到一个与候选 item 相关的用户行为子序列 (SBS, Sub user Behavior Sequence).
  • Exact Search Unit (ESU): 对 SBS 与候选 item 之间的精确关系进行建模.

这种级联检索范式让 SIM 在可扩展性精准度上都能更好地建模终身行为序列。自 2019 年起,SIM 部署于阿里展示广告系统,带来 CTR +7.1%、RPM +4.4% 的提升,目前承载主要流量,可建模的最大行为序列长度达到 54000,把 SOTA 推到 54x.

#1. 引言

用户兴趣建模的核心难点在于: 行为序列越长越有价值,但工业系统的延迟和存储扛不住.

  • 淘宝有 23% 的用户在过去 5 个月内点击过 1000+ 个商品,长期行为信息价值巨大.
  • 但大多数方法只能建模数百长度的序列,受限于在线系统的计算与存储.

两条已有路线各有硬伤:

  1. 记忆网络 (MIMN)。把多样兴趣增量地嵌入一个固定大小的 memory matrix,每来一个新行为就更新一次。好处是用户建模与 CTR 预估解耦,在线延迟和存储只取决于 memory 大小。坏处是: 序列长到 10000+ 时,把所有行为压进固定大小的 memory 会引入海量噪声; 而且 memory 抛弃了 target item 信息,而 target-aware 已被证明对兴趣建模很重要.
  2. 目标感知 attention (DIN/DIEN)。DIN 指出用户兴趣是多样的,面对不同候选 item 应当 “检索” 出有效信息来刻画特定兴趣,从而避免把所有兴趣塞进固定大小参数。但 DIN 的检索公式在长序列上计算与存储开销不可接受.

那么,能否套用类似的检索思路,设计一种更高效的方式从长行为序列中抽取知识?

这就是 SIM 的出发点: 用一个廉价的检索先把序列砍短,再用昂贵的 attention 做精准建模.

主要贡献:

  • 提出 SIM 范式,用级联两级检索机制,在可扩展性与精准度上同时改善终身行为序列建模.
  • 给出工业落地经验,2019 年起部署于阿里展示广告,CTR +7.1%、RPM +4.4%,承载主流量.
  • 把长行为序列建模的最大长度推到 54000,比 MIMN 大 54x.

#2. 相关工作

  • 用户兴趣模型: DIN 用 attention 捕捉用户对不同 target item 的多样兴趣; DIEN 用带辅助 loss 的 GRU 兴趣抽取层刻画兴趣的时间漂移; MIND 用胶囊网络 + 动态路由把用户表示成多个向量; 还有用 Transformer 建模 session 内/间兴趣的工作.
  • 长期兴趣建模: 长期序列能显著提升 CTR,但极大增加在线延迟/存储,且对 point-wise 预估引入大量噪声。MIMN 用固定大小 memory + UIC 模块增量记录行为,解决了存储与延迟,但丢弃了 target item 信息.

#3. 基于搜索的兴趣模型 (SIM)

CTR 模型的一个关键方向是研究如何更好地对用户行为数据建模。 DIN 和 DIEN 利用 attention 机制,从用户行为序列中搜索针对不同候选 item 的有效知识,来捕获用户多样化兴趣。但在实际系统中,这些模型只能处理短期行为序列数据,其长度通常小于 150。另一方面,长期用户行为数据具有价值,建模用户的长期兴趣可能为用户提供更多样化的推荐结果。这似乎我们处于两难境地:我们无法用有效但复杂的实际系统方法处理有价值的一生用户行为数据。

本文提出了一种新的建模范式,命名为基于搜索的兴趣模型(SIM)。 SIM 遵循两阶段搜索策略,能够高效处理长用户行为序列

SIM 架构

图 1. 基于搜索的兴趣模型。SIM 遵循两级检索策略,由两个单元组成: (i) GSU 从上万条行为里检索出最相关的 K 条; (ii) ESU 用 multi-head attention 捕捉多样兴趣,之后接传统的 Embedding & MLP。本文给出 hard-search 与 soft-search 两种 GSU 实现。soft-search 时 GSU 与 ESU 共享 embedding 参数,同时训练,Top-K 基于最新参数生成.

#3.1 整体流程

SIM 是一个级联的两阶段检索:

  • 第一阶段 (GSU): 以亚线性时间复杂度从原始长序列中检索出 Top-K 最相关的子序列,其中 K 远小于原始长度。目标是在严格的时延/算力约束下,把上万长度砍到几百,同时滤掉大部分噪声。
  • 第二阶段 (ESU): 以筛出的子序列为输入,用复杂的 attention 模型 (DIN/DIEN 风格) 精准刻画兴趣 —— 此时长度已降到几百,算得起。

注意: 两个阶段是联合训练的.

#3.2 General Search Unit (GSU)

直接使用整个用户行为序列来建模用户兴趣将带来巨大的资源消耗和响应延迟,这在实际应用中通常是不可接受的。考虑到,当给一个候选项打分的时候,只有部分用户行为是有价值的。这部分用户行为与最终用户决策密切相关。筛选出这些相关的用户行为有助于用户兴趣建模。

为此,文本提出先用 GSU 来减少用户兴趣建模中的用户行为输入数量。这里我们介绍了两种 GSU:hard-searchsoft-search

给定行为列表B=[b1;b2;;bT]\mathbf{B} = [\mathbf{b}_1; \mathbf{b}_2; \cdots; \mathbf{b}_T],其中,bi\mathbf{b}_i 是第ii 个行为,TT 是行为总数。 GSU 为每个行为bi\mathbf{b}_i 计算一个相关分rir_i,然后取 Top-K 分数的行为作为子序列B\mathbf{B}^*hard-searchsoft-search 的区别只在rir_i 的公式:

ri={Sign(Ci=Ca),hard-search(Wbei)(Waea),soft-searchr_i = \begin{cases} \text{Sign}(C_i = C_a), & \text{hard-search} \\[4pt] (W_b \mathbf{e}_i)^{\top} (W_a \mathbf{e}_a), & \text{soft-search} \end{cases}

Hard-search (硬检索): 无可学习参数。只选与候选项同类目的行为聚合成子序列送入 ESU。CaC_aCiC_i 分别是候选项和第ii 个行为所属的类目。硬检索虽然简单粗暴,但非常适合在线服务。

Soft-search (软检索): 把行为 one-hot 后嵌入为低维向量E=[e1;;eT]\mathbf{E} = [\mathbf{e}_1; \cdots; \mathbf{e}_T]ea\mathbf{e}_aei\mathbf{e}_i 为候选项与第ii 个行为的 emb,WbW_bWaW_a 为权重。为了能够在上万长度上加速 Top-K 计算,基于 emb 用亚线性时间的最大内积检索 MIPS (ALSH) 找 Top-K。通过训练良好的嵌入和最大内积搜索 (MIPS) 方法,数万用户行为可以被减少到数百。

应该注意的是,长期数据和短期数据的分布是不同的。直接复用短期兴趣模型学到的参数做 soft-search 可能误导长期兴趣建模。因此 soft-search 的参数在一个独立的、基于长期行为的辅助 CTR 任务下训练 (图 1 左侧 “Soft Search Training”)。行为表示由rir_iei\mathbf{e}_i 加权得到:

Ur=i=1Triei.\mathbf{U}_r = \sum_{i=1}^{T} r_i \mathbf{e}_i .

Ur\mathbf{U}_r 与候选项 embea\mathbf{e}_a 拼接后送入 MLP。若行为太长无法整条喂入,可从长序列中随机采样子序列 (仍服从原分布).

#3.3 Exact Search Unit (ESU)

第一阶段筛出 Top-K 子序列B\mathbf{B}^* 后,ESU 用一个基于注意力机制的模型精准建模兴趣。

由于这些行为可能跨越很长时间,贡献各异,ESU 引入序列时间属性: 候选项与 K 个行为之间的时间间隔D=[Δ1;;ΔK]\mathbf{D} = [\Delta_1; \cdots; \Delta_K]。把B\mathbf{B}^*D\mathbf{D} 分别编码为E=[e1;;eK]\mathbf{E}^* = [\mathbf{e}^*_1; \cdots; \mathbf{e}^*_K]Et=[et1;;etK]\mathbf{E}_t = [\mathbf{e}_{t_1}; \cdots; \mathbf{e}_{t_K}],拼接成最终的行为表示zj=concat(ejetj)\mathbf{z}_j = \text{concat}(\mathbf{e}^*_j,\mathbf{e}_{t_j})。用 multi-head attention 捕捉多样兴趣:

attni=Softmax(Wbi zbWai ea)\text{attn}_i = \text{Softmax}(W_{bi}~\mathbf{z}_b \odot W_{ai}~\mathbf{e}_a)

headi=attni zb,head_i = \text{attn}_i~\mathbf{z}_b,

其中attni\text{attn}_i 是第ii 个 attention 分数,headihead_i 是第ii 个头,WbiW_{bi}WaiW_{ai} 为模型权重。最终长期多样兴趣表示为Ult=concat(head1;;headq)U_{lt} = \text{concat}(head_1; \cdots; head_q),送入 MLP 做 CTR 预估.

#3.4 联合训练

GSU 与 ESU 在交叉熵下同时训练:

Loss=αLossGSU+βLossESU\text{Loss} = \alpha \text{Loss}_{GSU} + \beta \text{Loss}_{ESU}

  • 若 GSU 用 soft-search,则α=β=1\alpha = \beta = 1;
  • 若 GSU 用 hard-search (无参数),则α=0\alpha = 0.

#4. 在线服务的工程实现

x2

图 2. 在我们的工业展示广告系统中,用于点击率(CTR)任务的实时预测(RTP, Real Time Prediction)系统。该系统由两个关键组件组成:计算节点和预测服务器。对于具有长序列用户行为数据的 RTP 在线系统,这将带来巨大的存储和延迟压力。

#4.1 终身行为数据的服务挑战

工业广告/推荐系统每秒处理海量请求,CTR 模型通常需在 30ms 内响应,峰值服务 100 万+ QPS。终身行为带来的存储与延迟会随序列长度线性增长,是长期兴趣模型上线的最大瓶颈.

#4.2 用 hard-search + 用户行为树落地

x3

图 3. 基于所提出的 SIM 模型的 CTR 预测系统。新系统加入了一个 hard-search 模块,用于从长序列行为数据中寻找与目标项目相关的有效行为。用户行为树的索引在离线方式下早期构建,为在线服务节省了大部分延迟成本。

为什么选 hard-search 而非 soft-search? 作者在工业数据上发现:

  • soft-search 的 Top-K 结果与 hard-search 高度相似 —— 大部分 soft 选出的行为本来就属于 target 类目 (电商场景同类目商品大多相似)。统计 100 万样本/10 万用户,hard-search 保留的行为能覆盖 soft-search 的 75%.
  • 离线上 soft 比 hard 只略好 (见表 4),但 soft 在线需要跑 MIPS 近邻检索,算力/存储开销大; hard 只需查一张离线建好的两级索引表.

权衡性能与资源后,线上选了更简单、更系统友好的 hard-search.

用户行为树 (User Behavior Tree,UBT): hard-search 的核心是一个包含全部长序列行为的索引。行为天然可按类目组织,于是为每个用户建一棵两级索引树,采用 KKV 结构:

1
user_id → category_id → [该类目下的具体行为 item ...]

UBT 实现为分布式系统,规模达 22TB,支持高吞吐查询。在线时以 target item 的类目作为 hard-search query,把上万行为降到几百。由于 UBT 离线预构建,GSU 的在线响应时间几乎可忽略,其他用户特征还能并行计算.

#5. 实验

#5.1 数据集

数据集UsersItemsCategoriesInstances最大序列长度
Amazon (Books)75,053358,3671,583150,016100
Taobao7,956,43134,196,6125,5977,956,431500
Industrial (阿里广告)0.29 billion0.6 billion100,00012.2 billion54000

工业数据集中,长期行为取前 180 天、短期取前 14 天; 超过 30% 的样本序列长度 >10000,最大达 54000 (54x of MIMN).

#5.2 基线

  • DIN
  • Avg-Pooling Long DIN
  • MIMN
  • SIM (hard)
  • SIM (soft)
  • SIM (hard/soft) with Timeinfo

#5.3 公开数据集结果

表 2. 公开数据集上的 AUC:

ModelTaobaoAmazon
DIN0.92140.7276
Avg-Pooling Long DIN0.92810.7280
MIMN0.92780.7396
SIM (soft)0.94160.7510
SIM (soft) with Timeinfo0.9501
  • 吃长期行为的模型全面优于只用短期的 DIN,说明长期行为有用.
  • SIM 显著优于 MIMN: MIMN 把未过滤的全部历史压进固定 memory,难以刻画多样的长期兴趣; SIM 的两级检索能针对不同 target 检索相关行为.
  • 加入时间 embedding 还能进一步提升.

#5.4 消融: 两级检索的有效性

表 3. 两阶段搜索架构在长期用户兴趣建模中的有效性评估:

操作TaobaoAmazon
Avg-Pooling without Search0.92810.7280
Only First Stage (hard)0.93300.7365
Only First Stage (soft)0.93570.7342
SIM (hard)0.93320.7413
SIM (soft)0.94160.7510
SIM (soft) with Timeinfo0.9501
  • 任何带过滤的策略都远好于直接 avg-pooling —— 证明原始长序列里确实有大量噪声会损害兴趣学习.
  • 两级检索 (加第二阶段 attention) 比只有一级检索更好 —— 精准建模 target-aware 多样兴趣有用,且过滤后序列已变短,attention 不会压垮在线 RTP.
  • 添加 time embedding 能进一步提升效果,说明用户行为贡献会随时间变化。

#5.5 工业数据集与在线 A/B 测试

表 4. 工业数据集上的 AUC:

ModelAUC
DIEN0.6452
MIMN0.6541
SIM (hard)0.6604
SIM (soft)0.6625
SIM (hard) with Timeinfo (已上线)0.6624

soft 比 hard 仅略好,但需在线算 MIPS,综合效率/性能选 hard。 SIM 相比 MIMN 有 k8 AUC 的提升,对业务而言已很显著。

#重新思考搜索模型: SIM 真的在建模长期兴趣吗?

SIM 是否在长期兴趣建模上也表现良好?

作者定义指标dcategoryd_{category}: 一次点击样本距离用户上一次同类目行为的天数,用于评估模型在长期或短期兴趣上的选择偏好。把点击按dcategoryd_{category} 聚合后对比 SIM 与 DIEN 的分布 (图 4) 发现: SIM 显著提升了dcategoryd_{category} 较大 (即对应更久远的长期兴趣) 那部分点击的占比。这证明 SIM 的收益确实来自更精准的长期兴趣建模,倾向于推荐与用户长期兴趣相关的 item.

x4

图 4. DIEN 和 SIM 的点击样本分布。点击被分为两部分:长期(>14 天)和短期(≤ 14 天),根据提出的指标(dcategoryd_{category})进行聚合。短期(2 天)和长期(20 天)的聚合尺度不同。分箱图显示了 SIM 相对于不同dcategoryd_{category} 的点击比例提升。

表 5. 在线 A/B:淘宝 App 首页“猜你喜欢”栏目 (2020-01-07 ~ 02-07,对比 MIMN)

指标CTRRPM
提升率+7.1%+4.4%

表 6. 工业数据集推荐中dcategoryd_{category} 的统计数据

模型平均dcategoryd_{category}平均dcategoryd_{category}p(dcategory>1)p​(d_{category}>−1)
DIEN11.20.91
SIM13.30.94

#上线踩坑经验

系统性能: MIMN/DIEN 把序列截断到 1000,而 SIM 可吃到上万。即便如此,SIM 的服务延迟仍稳定在低位 (约 13~19ms),而 DIEN 在长序列下最大吞吐只有 200 QPS —— 得益于 UBT 离线索引把 GSU 的在线开销几乎抹平.

我们的实时 CTR 预测系统在 DIEN、MIMN 和 SIM 上的性能延迟与整体表现如图 5 所示。值得注意的是,MIMN 能够处理的最大用户行为长度为 1000,而展示的性能是基于截断的用户行为数据。而 SIM 中的用户行为长度并未被截断,可以扩展到 54000,将最大长度提升至 54 倍。与 MIMN 处理截断用户行为相比,SIM 处理超过一万条行为时,延迟仅增加了 5 毫秒。

x5

图 5. 实时 CTR 预测系统的性能随不同吞吐量的变化。在 MIMN 和 DIEN 中,用户行为的长度被截断为 1000,而在 SIM 中,用户行为的长度可以扩展到一万。DIEN 的最大吞吐量为 200,因此图中只有一个点。

#6. 总结

SIM 用一个朴素但工程友好的思路解决了终身行为序列建模:

  • 级联检索范式: 廉价的 GSU 粗筛 (上万 → 几百) + 昂贵的 ESU 精排,把 DIN/DIEN 的 target-aware 精准性扩展到终身序列.
  • hard-search + UBT: 用 “user_id → category → items” 的两级离线索引把在线检索延迟降到近乎为零,是它能在 30ms / 百万 QPS 约束下上线的关键.
  • 时间间隔 embedding: 给跨越长时间的行为补上时序信息,带来额外提升.

SIM 把可建模长度从 1000 推到 54000,线上 CTR +7.1%、RPM +4.4%,至今承载主流量。它也奠定了后续 “检索式长序列建模” 的范式 —— 如 ETA、SDIM 等端到端方案,以及 TWIN 进一步指出并解决了 SIM 中 GSU 与 ESU 检索度量不一致的问题.

#参考资料

  • Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction (arXiv:2006.05639)
  • DIN: Deep Interest Network (KDD’18)
  • DIEN: Deep Interest Evolution Network (AAAI’19)
  • MIMN: Practice on Long Sequential User Behavior Modeling (KDD’19)