文章链接:https://arxiv.org/pdf/2511.06077
机构:字节(抖音)
发布时间:2025.11
Copyright (c) Wang-Luning. All Rights Reserved.
工业中普遍采用两阶段的策略来处理长用户历史序列:先筛选出一些和目标物品类似的历史交互物品,然后再在这个筛选后的短序列上进行建模。这样虽然高效,但难以实现端到端优化,可能丢失重要信息。
实验证明在推荐系统中通常序列越长效果越好,可以看成推荐领域的scaling law,因此如果想真正实现推荐大模型的scaling的话,长序列是不可或缺的部分
为了在低训练开销和推理开销下实现10000量级的用户历史序列建模,本文主要提出了3点优化:
提出SCTA(Stacked Target-to-History Cross Attention)模块来进行从目标物品到历史序列的target attention,使用交叉注意力替代历史序列内部的自注意力,从而将注意力复杂度从二次降低到线性。
提出RLB(Request Level Batching)策略来使得同一个用户的多个目标物品(甚至多次request)共享一套用户表征,使得用户表征只需要计算一次
采用长度外推训练策略,训练时平均长度2k,推理时外推到10k,从而避免长序列训练带来的开销
设长度为
STCA:
在排序任务中,目标物品到各个历史行为的直接交互是最重要的,而历史行为序列中的各项之间的交互相对来说没那么重要。因此,为了避免注意力的二次复杂度,舍弃了显式的历史序列内部交互,只使用一个单query的从目标到历史的交叉注意力。
具体而言,设总共有
进一步,通过该层的权重
在接下来的每层
其中
可见,在每一层中的query只有1个向量,这就使得注意力计算复杂度是
最终,最后一层输出的更新后的Q向量即为最终的信息交叉结果向量
将这个交叉结果向量
Request Level Batching(RLB):
在排序任务中通常需要给多个目标物品打分,如果一次次单独推理的话会导致长历史序列不断重复地从CPU传输到GPU,还要重复encode,造成了系统上的效率低下。
因此,可以按照用户来聚合一批样本,并复用用户侧的表征。也即,将同一个用户的历史序列
短序列训练,长序列推理:
在Beta分布中采样训练长度,并截取数据集中最近的该长度的序列用于训练。