1. 问题与动机
这篇论文解决的是流式推荐里一个容易被静态离线实验掩盖的问题:预训练行为知识、下游任务的判别几何和线上数据分布变化同时存在,而且三者的更新节奏并不一致。常见做法要么把序列行为预训练一次后冻结,要么把预训练模型和点击/转化任务放在同一套参数里继续训练。前一种做法会随着用户兴趣、商品供给和流量结构漂移而变旧;后一种做法虽然能刷新参数,却会让预训练目标和任务目标互相覆盖。论文用生产流中的梯度余弦相似度说明两类目标从负相关到近似正交,因而共享参数并不是天然合理的折中。
作者进一步指出,行为序列中的相邻商品不等于存在稳定依赖。用户可能在一次会话里跳转、比较、误触或被曝光策略引导,直接把下一个 item 当成唯一正例会把瞬时噪声写进预训练表示。KGD(Knowledge–Geometry Decoupling)因此把问题拆成两个明确的所有权:可刷新 encoder 负责“行为知识”,task learner 负责“任务几何”。目标不是让一个更大的 backbone 同时承担所有工作,而是让知识可以按天更新,同时不摧毁已经适配点击、转化或检索任务的表示空间。
论文的验证路径也比较完整。公开实验覆盖 8 个 Amazon 类 benchmark;工业离线数据包含约 130 亿样本、十亿级 item、千万级 user,基础 28 天流量再延长 62 天形成 90 天稳定性研究;最终在 Shopee Homepage Search 的线上 A/B 中部署。这个链路使它特别适合推荐/搜索团队评估:核心贡献不只是某个 loss,而是持续学习时哪些参数可以刷新、哪些参数应该隔离,以及这套隔离是否带来可观的业务收益。
2. 方法详解
第一部分是 BMTP(Behavioral Multi-Token Prediction)。作者没有把原始序列中的每个后续 item 都拿来预测,而是沿两个轴筛选监督:协同轴使用 item 图/共现关系判断未来 item 是否与当前 item 有稳定协同关系;语义轴使用 item 内容或语义表示判断未来 item 是否足够相近。只有通过相应阈值的 future item 才保留为正例,并且每个轴只监督最近的一个 qualifying item。这样做的直觉是:最近的相关转移已经携带最强依赖信号,继续把所有远期正例塞进 softmax 会让生产训练成本随正例数扩大,也会重新把偶然会话路径当成知识。工业实现中协同阈值为 0.5,语义阈值与具体数据一起校准。
BMTP 预训练出一个可刷新 encoder。它的参数拥有经过去噪的行为几何,并不是下游任务的最终排序空间。训练流每天到来时,encoder 可以用最新行为重新估计协同/语义转移;由于 task gradient 不会回传到 encoder,这个刷新不会直接覆盖 task learner 已经学到的判别方向。论文的关键思想是把刷新视为知识更新,而不是对整个推荐模型做无差别的 continual fine-tuning。
第二部分是 ACR(Anchored Calibration Residual)。对于第 k 个下游任务,任务侧表征写成 e_tilde = s_k × stop_gradient(e_pre) + Delta e_k。其中 s_k = 1 + ReLU(s_tilde_k) 保证沿预训练方向至少保留一个非负的缩放,Delta e_k 由低秩因子产生,并通过正交约束让它落在 e_pre 的正交补空间。这样任务可以增加点击或转化所需的判别维度,却不能通过旋转/反向更新把预训练知识抵消掉。低秩结构还把任务特定的写入成本限制在相对小的参数量内;不同 task 可以拥有不同 residual,而不是强迫 CTR、CVR、检索共享同一个校准方向。
第三部分是只读 cross-attention。仅在 item embedding 上叠加 residual 还不够,因为用户意图位于预训练序列 encoder 的中间 hidden states 中。KGD 为 task learner 配置独立的 transformer,以 task-side reader token 产生 query,并从 encoder 的 hidden states 产生 key/value;key 和 value 都 stop-gradient。形式上 Q = W_Q rho,K = W_K stop_gradient(H_tilde),V = W_V stop_gradient(H_tilde)。这是一条单向接口:task learner 能选择并重新投影上下文表示,task loss 只更新 task transformer 与 ACR,不能改动行为 encoder。因而它同时得到“读到预训练上下文”和“拥有自己的判别几何”两种能力。
训练/部署上,KGD 叠加在两类 backbone 上:公开实验使用 ManCAR 以保持可复现,工业 ranking 使用生产 OneRank。论文报告工业训练每天约 2 小时、在 A100 上进行,并采用交替训练:encoder 侧按流刷新,task 侧在固定接口上更新。线上 A/B 前离线交替训练约 1.5 个月,正式实验按 user-ID hash 分桶,control 和 treatment 各占 10%,每桶超过 1,000 万用户,另设 A/A 桶检查实验系统。
3. 核心技术贡献
- 把“刷新知识”和“写入任务几何”变成两个所有权。 这比泛化地说“多任务学习”更具体:encoder 只拥有可迁移行为结构,task learner 只拥有排序所需的判别结构,二者通过读接口耦合,而不是共享同一组会被不同梯度争夺的参数。
- BMTP 针对流式序列的监督噪声。 协同过滤器保护高活跃用户中可靠的共现关系,语义过滤器为稀疏尾部用户补充语义相似性。论文的工业消融显示,移除协同过滤时 head user(活跃度前 30%)click AUC 损失约 0.5%,移除语义过滤时 tail user(后 30%)损失约 1%,说明两个过滤器不是重复特征。
- ACR 用正交低秩残差保护预训练方向。 它不是简单加 adapter,也不是把预训练向量冻结后直接拿给任务头,而是明确规定任务写入发生在预训练几何的补空间。只读 cross-attention 则把这一原则从 item-level 扩展到 contextual hidden-state level。
- 用长窗口验证持续刷新。 90 天曲线比单个时间切片更能识别“短期有效、长期过时”的 transfer 方法。论文在 8 个公开 benchmark 上报告相对强基线约 4%–12% 的提升,并在 Shopee 搜索上给出可观业务实验。
4. 实验结果分析
公开数据与工业数据的结果应分开理解。公开 benchmark 主要验证方法是否能学习可迁移结构;工业流则验证结构漂移、稀疏转化和持续刷新。公开 benchmark 的 8 个数据集包括 Software、Video Games、Office、CDs、Arts、Phones、Toys、Beauty,规模从 14 万到约 590 万 interactions 不等。工业 28 天训练集约 13B 样本,click 正例率约 7.5%,order 正例率约 0.41%;随后追加 62 天得到约 42B 样本的 90-day study。
关键消融表如下,N@50 为 NDCG@50,R@50 为 Recall@50;工业列为 click AUC、click GAUC、order AUC、order GAUC:
| 设置 | Office N@50 | Office R@50 | Software N@50 | Software R@50 | Industrial click AUC | order AUC |
|---|---|---|---|---|---|---|
| w/o semantic BMTP | 0.0337 | 0.0886 | 0.1374 | 0.3748 | 0.7859 | 0.9002 |
| w/o collaborative BMTP | 0.0338 | 0.0908 | 0.1363 | 0.3731 | 0.7854 | 0.8986 |
| w/o ACR | 0.0350 | 0.0932 | 0.1369 | 0.3753 | 0.7829 | 0.8950 |
| ACR + shared params + freeze | 0.0279 | 0.0771 | 0.1259 | 0.3568 | 0.7833 | 0.8972 |
| ACR + shared params + fine-tune | 0.0331 | 0.0884 | 0.1344 | 0.3659 | 0.7847 | 0.9000 |
| 参数量对齐但共享 backbone | 0.0267 | 0.0608 | 0.1224 | 0.3240 | 0.7839 | 0.8962 |
| KGD full | 0.0352 | 0.0938 | 0.1381 | 0.3775 | 0.7867 | 0.9015 |
这些数字给出三个清晰结论。第一,ACR 不是装饰:去掉后工业 click AUC 从 0.7867 降到 0.7829,order AUC 从 0.9015 降到 0.8950;只保留 ACR 但共享参数仍明显不如完整解耦。第二,增加同等数量参数并不能解释收益,“参数量对齐但共享 backbone”在 Office 的 N@50 只有 0.0267,低于 KGD 的 0.0352,说明收益来自 ownership,而不是简单扩大容量。第三,BMTP 两个过滤器互补:语义过滤器对 tail 用户更重要,协同过滤器对 head 用户更有帮助;工业 click AUC 也分别下降到 0.7859 与 0.7854。
工业 schedule 的对照进一步说明刷新必须建立在隔离上。相同的持续更新安排下,KGD 达到 click AUC 0.7867;移除 ACR 和只读 encoder 接口后,结果坍缩到 0.7785,甚至低于 Scratch 的 0.7806。共享参数的 TA&FT 从一次预训练后冻结的 0.7852 在每日刷新后降到 0.7837,TA&FE 也只有 0.7841;buffer replay 为 0.7732,IncCTR 为 0.7810,LoRA 为 0.7818。这些结果把“刷新会不会有用”改写成“谁拥有刷新后的参数”:刷新共享参数会反复覆盖几何,历史 replay 又会记住不再复现的 stale pattern。
在线实验放在 Shopee Homepage Search 的 ranking stage。两周 A/B 结果是 GMV per user +1.75%、advertising revenue per user +1.53%;论文还把 CTR、CVR 与人工评估的 per-query irrelevant-item rate 作为护栏指标。这个结果很重要,因为它证明了提升不仅是离线 AUC 的数值差异,而且穿过了真实搜索流量、广告收益和相关性安全检查。与此同时,线上实验是 10%/10% 的大流量分桶,不能简单理解为小样本探索。
对结果的限制也要看清。工业数据经过下采样和负采样,13B 不是完整生产流量的原始统计,作者也承认它不能完全反映线上分布;因此 90-day 曲线更适合比较方法的相对衰减/稳定性,而不适合直接估算绝对转化率。公开数据与 Shopee 的 item、用户和时间结构差异很大,4%–12% 的公开提升不能机械外推到社区搜索。线上 GMV uplift 还可能受到同时期供给、曝光和实验策略影响,部署团队应复核分层结果。
5. 局限与未来方向
论文最大的边界是工业数据和实验细节无法完全公开。用户词表是千万级、item 词表接近十亿级,但精确规模受业务要求不能披露;训练数据经过强下采样/负采样,外部读者无法复现真实流量。公开 benchmark 虽有 8 个,但它们缺少真实用户-ID 漂移、可靠时间戳或可用语义特征中的一部分,不能单独证明 streaming refresh 在所有场景成立。
方法上,BMTP 依赖协同图、语义表示和阈值,阈值如何随类目、语言、冷启动 item 与流行度校准没有一个普适答案。ACR 的正交约束保护了预训练方向,但也可能限制真正需要重写语义空间的任务;低秩 residual 的 rank、正则强度与每个任务的容量如何分配,需要在不同延迟预算下验证。多任务之间也可能共享读出的上下文资源,论文主要验证 ownership 原则,未充分讨论任务数大幅增加后的参数和服务成本。
未来可做三类工作:一是把 encoder 刷新频率从每天扩展到小时级或事件触发,并衡量新鲜度和训练成本;二是让 BMTP 对新商品、长尾用户、跨域迁移和多模态内容使用更稳健的正例筛选;三是探索把 task learner 蒸馏到更小的在线模型,同时保留只读接口带来的稳定性。对生产系统,还应加入漂移告警、回滚版本、分群 A/B、隐私审计和新旧 item 的公平曝光检查。
6. 工业实践意义
对社区搜索和推荐团队,最值得复用的是架构边界,而非直接复制 Shopee 的 backbone。可以先将“用户行为知识 encoder”与“搜索相关性/CTR/CVR task learner”拆开:encoder 用较长窗口吸收 query、帖子、作者和互动之间的稳定转移;task learner 读取 encoder 的隐藏状态,单独写入相关性排序所需的几何。这样当社区热点、流行词和内容供给快速变化时,刷新语义/行为侧不会把已经校准的排序目标一起抹掉。
BMTP 的思想也适合 UGC。一次会话中的相邻帖子、评论或搜索 query 不能全部当作依赖;可以用作者/主题共现作为协同轴,用文本或多模态语义相似作为语义轴,分别筛掉跳转噪声。对 tail user,语义过滤比协同过滤更关键,这与论文中 tail click AUC 下降约 1% 的消融一致。对负反馈稀疏的转化任务,还应将“曝光但未点击”“点击但未深读”“深读但未关注”按任务拆开,避免一个 shared head 逼迫不同目标竞争。
落地时建议分三阶段。第一阶段只做离线复现:固定已有召回/排序 backbone,对比 shared fine-tune、freeze、LoRA、buffer replay 与 decoupled reader,按用户活跃度、内容新鲜度、query 长度和冷启动 item 分桶。第二阶段上线小流量:同时监控 nDCG/GAUC、CTR、CVR、GMV/用户、无关结果率、P95/P99、每日训练时长和 embedding 漂移;至少保留 A/A 桶与可回滚 encoder/task 版本。第三阶段再优化容量:分别扩大 encoder 和 task learner,避免用一个更大的共享模型掩盖“知识容量”和“任务几何容量”哪个真正有效。
最终判断是:KGD 的产业价值在于提供了一种可操作的持续学习合同。什么时候可以刷新、刷新哪个参数、哪些梯度必须被截断、怎样保证任务仍能写入新几何,都被写成了明确接口。对于有日级训练、短生命周期内容和多个排序目标的系统,这一合同比单次榜单提升更有长期价值;但上线前必须用自己的流量验证阈值、训练成本和漂移节奏,不能把论文的 +1.75% GMV/用户直接当作可复制的业务承诺。