统一序列建模与特征交叉 —— OneTrans 精读笔记

文章链接:https://arxiv.org/pdf/2510.26104

机构:字节

发布时间:2025.10

Copyright (c) Wang-Luning. All Rights Reserved.

image-20260224192855154

在以往的精排系统中,序列建模(对于用户历史序列的处理)和特征交叉模块通常是分开的:

如上图左所示,通常先将用户历史序列编码成一个压缩的序列表征,然后再将其和非序列特征进行连接后送入特征交叉模块,进行高阶的特征交互。这也被称为“encode-then-interaction”范式。然而这种将序列建模和特征交叉模块分开的做法阻碍了双向的信息交互,其限制了非序列静态特征对于序列表征的塑造(相当于late fusion),并且分开的模块会造成latency增加和优化与scaling的困难。

因此,OneTrans设计了一个统一的transformer模型来统一进行序列建模和特征交叉,打破了序列特征和非序列特征在模型结构上的隔离。具体而言,其使用一个统一的tokenizer来将序列属性和非序列属性转化成一个统一的token序列,然后输入金字塔形堆叠的OneTrans块。为了处理token序列中来源多样的tokens,模块内部采用了一种混合参数策略,其使用一组共享的参数(Q/K/V/FFN权重)来处理所有历史序列tokens,而对于每个非序列的token则分配其独有的模型参数来处理(借鉴RankMixer的Per-token FFN思路来保持各个静态特征独有的语义)

 

NS为一系列来自用户u、目标物品、上下文的非序列特征,S为用户u的历史序列。OneTrans使用一个统一的tokenizer将序列特征S映射为S-tokens,将非序列特征NS映射为NS-tokens,然后二者拼成的统一token序列X(0)=[S-tokens;NS-tokens]R(LS+LNS)×d输入金字塔形堆叠的transformer OneTrans模型。

每个OneTrans block中包含一个MixedMHA模块和一个MixedFFN模块,类比于普通transformer块中的attention和FFN:

Z(n)=MixedMHA(Norm(X(n1)))+X(n1)X(n)=MixedFFN(Norm(Z(n)))+Z(n)

这里的MixedMHA和MixedFFN模块采用了混合参数策略,如下图所示,所有序列tokens共享同一组权重参数,而各个非序列token则使用自己独立的参数(这一点和RankMixer中的Per-token FFN思想一致,希望保持每个非序列特征token自己独特的语义信息)。

在attention中使用的是causal mask,来满足自回归的约束,每个位置都只能看到其前边的tokens。由于序列tokens排在非序列tokens之前,因此各个非序列token都可以看到完整的用户历史,从而进行充分的token间交互。而序列tokens之间也可以在自回归时序约束下进行交互

为了能够逐层提取出稠密的高阶信息送给非序列tokens,每层都对序列tokens进行尾部剪裁,也即越高层中的序列tokens越少,使得各层输入的序列tokens长度呈现金字塔形。最后一层的输出被送入特定任务塔中进行预测。

image-20260224193130235

具体细节:

Tokenization

对于非序列特征,将它们分桶或按one-hot编码后转换成embeddings。由于特征数量通常上百,且不同特征重要性不同,因此可以模仿RankMixer中的处理来将特征人为分成多个(LNS个)语义组,然后对每个组分别使用MLP变换后各自产生1个token,最终产生长度为LNS维数为d的非序列特征token序列NS

对于用户历史序列S={S1,,Sn},其中的每个行为都包含若干event embeddings(例如交互物品的ID、物品的类别和价格等side info。这里似乎还可以理解成“点击、加入购物车、购买”等events):Si=[ei1,,eiLi]。然后,将每个行为的embedding序列统一成维数dS~i=[MLPi(ei1),,MLP(eiLi)]RLi×d,也即每个行为Si对应了一个长度Li的embedding序列。最后,再将各个行为中的event embeddings按照events的时序顺序进行交错穿插连接,从而将所有历史行为合并成一个长度为LSS-tokens序列(或将各个交互的embedding序列依次连接,并在每两个序列之间添加LSEP[SEP] tokens):

S-tokens=Merge(S~1,,S~n)RLS×dLS=i=1n(Li+LSEP)

OneTrans Block

MixedMHA和MixedFFN采用混合参数策略:在每层中,对于所有历史序列tokens采用一套WQ,WK,WV,WFFN参数处理,而对于每个非序列token则使用其自己专属的权重矩阵处理。

金字塔形的token pruning逐层削减历史序列tokens的序列长度,每次都丢弃其尾部的若干tokens,使得历史序列中的信息被逐步压缩到更短序列中。具体而言,在每层中,只把历史序列中最近的若干tokens映射成query,而KV仍来自该层输入的更长的历史序列,注意力计算后只有用作query的这些tokens的输出会被保留,从而减小了该层的输出长度。

 

系统优化

对于同一个用户的多次请求/多个待排序的候选物品,由于用户的历史序列S-tokens是不变的,因此可以预先算好S-tokens的KV Cache和注意力输出(因为S-tokens排在统一序列的前端,所以按照自回归约束,这部分的输出和后边的非序列tokens是无关的),然后对多个请求/多个候选物品共享使用这个cache后的用户历史序列表征