文章链接:https://arxiv.org/pdf/2602.13631v1
机构:快手
发布时间:2026.02
Copyright (c) Wang-Luning. All Rights Reserved.
GR虽然具有强大的序列推理能力,但过高的推理成本导致实际应用时的序列长度受到大幅抑制,难以捕捉用户的终身兴趣。另外,attention机制对于近期行为的偏好同样抑制了对于从长期历史中进行学习的效果。
在过往的GR工作中,尽管已有尝试了超长的终身历史序列建模,但它们在如下方面仍存在问题:
序列长度限制:由于计算资源的限制,GR系统通常限制序列长度在10000以内。然而在实践中最近的10000条记录大概只能包含几个月的信息,难以真正捕捉终身的行为模式。
增加序列长度带来的收益不足:实验表明GR中增加历史序列长度带来的收益是sub-linear的,使得长序列的ROI不高
attention机制对于近期的偏向:实验表明GR中的attention机制非常倾向于大量关注近期的历史序列,从而抑制了利用长期信息的能力。
GEMs(Generative recommendation with Multi-stream decoder)将超长的用户历史序列分割成3个段:近期段(Recent)、中期段(Mid-term)、早期段(Lifecycle),然后为每种时间流采用不同的推理方案:近期段采用单阶段的实时提取器,通过自注意力快速捕捉用户短期兴趣;中期段采用一个轻量级的indexer做稀疏交叉注意力,快速选出高价值tokens用以关注,来平衡实时推理的效率和用户兴趣建模的精度;早期段采用两阶段的离线-在线推理框架,其中离线阶段将用户的早期长历史序列通过可学习query+注意力得到压缩的表征并缓存起来,在线阶段时再取出这些表征用于推理。最终这些表征会通过一种无参数的方式来聚合(直接加和),从而避免额外的在线开销和训练不稳定。
宏观来看,GEMs将序列按照时序切分成3段:对于较短的近期段(描绘当前兴趣)使用丰富的特征+全注意力处理;对于较长的中段使用indexer选取最重要的tokens+稀疏注意力来降低在线推理成本,本质上和target attention选取和当前表征最相关的信息的思路是类似的;对于很长的早期段则先离线使用可学习query来得到压缩表征,并缓存起来(因为早期段很长时间内都是固定的,不会随着用户新行为的加入而频繁变化),在线时直接取缓存表征做attention从而引入长期信息。
设用户
首先将完整的用户历史序列
近期段:
提取近期段中每个视频
然后,使用含有位置编码的多层自注意力层来处理近期视频隐含表征组成的序列,从而提取用户的当前兴趣。
中期段:
中期段的序列通常较长(上千的tokens),使用一个轻量级的基于indexer的交叉注意力模型,在线推理时indexer负责选出top-k个高价值的tokens,并进一步通过稀疏注意力有选择地关注这些重要的tokens,从而减轻计算负担。
indexer被训练用于拟合全注意力的attention分布,但相比之下其注意力head数量少得多,适于在线时高效计算。设
相比之下,indexer的head数量少很多,且其拥有一套自己的参数。得到每个head的attention分数后,使用一个基于当前输入表征的
这个近似注意力分数拟合的是全注意力分数做softmax后的结果,因此indexer部分的loss就是各层的全注意力分数和近似注意力分数的KL散度:
早期段:
为了能够处理长达10万次交互的历史序列,采用了一种两阶段的处理策略:在离线阶段使用可学习query+注意力来将原始长序列压缩,将压缩的表征存储到低延迟的KV存储系统中,在线阶段则从中取出序列的压缩表征,然后用一个轻量级的自注意力模块处理即可使用。
具体而言,使用一种准线性注意力(Quasi-linear Attention, QLA)来压缩早期交互历史序列:
其中
在训练阶段还有一个decoder用于重建压缩后的表征,然后使用类似AutoEncoder的方式来通过重建误差做训练,用于让模型学会如何压缩并保留有用的信息。
综合推理流程如下图所示。本文采取的是端到端SID生成范式,模型由多个multi-stream decoder组成,每个decoder block里含有3个并行的子模块,分别对应了上述对于近期、中期、早期序列的处理。宏观来看,模型初始的输入为一个[BOS] token,通过自回归逐个生成下一个视频的各个SID,直到生成一组完整的SID从而可以解码出下一个预测的视频为止。历史信息则在模块中间以cross attention的方式插入进来(只不过3种不同时期的序列的具体策略不同),在每层block中3种表征都计算出来后通过相加的方式得到该层的总表征,并输入到下一层中(相比于之前有些工作通过可学习权重来融合几种表征,实验发现这样会偏好近期信息,而难以利用长期信息)。
在训练时,主要loss就是NTP Loss,辅以indexer的loss:
训练分为几个阶段:
第一阶段只使用NTP Loss,关闭indexer的token选取功能,使用全注意力(训练全注意力的权重)。该部分主要是在全注意力下让NTP Loss收敛,从而使得indexer获得的监督信号准确。
第二阶段加入indexer loss并设置
第三阶段开启token选取功能后再进行一定的训练,使得最终训练目标和推理时的配置对齐。