文章链接:https://arxiv.org/pdf/2505.04421
机构:字节
发布时间:2025.05
参考文献:
Copyright (c) Wang-Luning. All Rights Reserved.
一般的序列建模架构只能处理长度为几百的序列,而当前的长序列处理策略通常包括以下几种:
双阶段处理:由粗到精,先从原始序列中找到top-k个和当前候选物品最接近的物品,然后再在这个筛选后的短序列上进行端到端序列建模,例如SIM就是这种思路。
预训练的用户embedding:将用户的长历史压缩成一个固定的用户画像向量,再给下游模型使用
记忆增强模型:通过复杂的记忆网络来存储历史
上述方法虽然提高了计算效率,但由于上游和下游之间的不连续性,不可避免地损失了全序列的信息。
LONGER(Long-sequence Optimized traNsformer for GPU-Efficient Recommenders)致力于实现端到端的长序列建模。其首先通过token merge策略来压缩序列长度,将原始长序列中相邻的tokens进行分组,然后使用一个Inner Transformer将每组的token压缩为一个token,从而实现序列的初步压缩,然后,使用由少数关键信息构成的global tokens(如用户画像、最近部分行为序列等)作为query,来对序列做attention。
设用户
首先,将目标互选物品、UID embeddings、高维交叉特征、最近的若干行为等信息聚合为一些Global Tokens,这些Global Tokens用于利用全局信息来提取整个序列中的关键信息(相比于SIM只使用目标物品作为query来说,丰富了query的信息)。另外,这些global tokens也可以缓解attention sink问题,从而有利于长序列下做attention的稳定性。
然后,对于原始长序列中的tokens(用户交互物品)进行分组,然后在组内进行token merge,其将相邻的多个tokens压缩为一个token。例如,将每4个token合并为1个,序列长度就能缩短为原先的1/4。merge的过程并非简单拼接信息,而是通过一个Inner Transformer来在每个组内进行信息交互后生成该组的统一token。
最后,以Global Tokens作为query,以merge后的历史序列作为key/value来进行全局的attention。
在实践中,由于一个用户的历史序列会拿来为多个候选物品来打分,因此设计了KV缓存机制,将用户序列产生的Key/Value计算结果缓存起来,避免每次打分时重复计算
总的来看:
相比于SIM中:1)通过目标物品来硬选取一些最相关的历史交互并丢弃其他的,从而减小序列长度,2)使用目标物品作为query来和筛选后的历史序列做attention交互;
Longer中优化为:1)使用token merge分组合并token来减小序列长度,避免硬筛选造成显式的信息丢失,2)使用由最近交互序列+用户画像+目标物品等多种关键信息构成的Global Tokens作为query来和压缩后的序列做attention交互,使得query中的信息更丰富,尤其是其中包含的最近交互序列信息能够非常好地描绘用户当前的兴趣取向。