文章链接:https://arxiv.org/pdf/2510.26104
机构:字节
发布时间:2025.10
Copyright (c) Wang-Luning. All Rights Reserved.
在以往的精排系统中,序列建模(对于用户历史序列的处理)和特征交叉模块通常是分开的:
序列建模:将用户历史序列处理成目标物品感知的表征,例如使用DIN、DIEN、SIM、Longer等来通过target attention思想提取序列中的重要信息,进行序列建模
特征交叉:学习非序列特征(如用户画像特征、目标物品特征、上下文特征等)之间的高阶交叉,例如使用FM、WuKong、RankMixer等进行特征交叉
如上图左所示,通常先将用户历史序列编码成一个压缩的序列表征,然后再将其和非序列特征进行连接后送入特征交叉模块,进行高阶的特征交互。这也被称为“encode-then-interaction”范式。然而这种将序列建模和特征交叉模块分开的做法阻碍了双向的信息交互,其限制了非序列静态特征对于序列表征的塑造(相当于late fusion),并且分开的模块会造成latency增加和优化与scaling的困难。
因此,OneTrans设计了一个统一的transformer模型来统一进行序列建模和特征交叉,打破了序列特征和非序列特征在模型结构上的隔离。具体而言,其使用一个统一的tokenizer来将序列属性和非序列属性转化成一个统一的token序列,然后输入金字塔形堆叠的OneTrans块。为了处理token序列中来源多样的tokens,模块内部采用了一种混合参数策略,其使用一组共享的参数(Q/K/V/FFN权重)来处理所有历史序列tokens,而对于每个非序列的token则分配其独有的模型参数来处理(借鉴RankMixer的Per-token FFN思路来保持各个静态特征独有的语义)。
设
每个OneTrans block中包含一个MixedMHA模块和一个MixedFFN模块,类比于普通transformer块中的attention和FFN:
这里的MixedMHA和MixedFFN模块采用了混合参数策略,如下图所示,所有序列tokens共享同一组权重参数,而各个非序列token则使用自己独立的参数(这一点和RankMixer中的Per-token FFN思想一致,希望保持每个非序列特征token自己独特的语义信息)。
在attention中使用的是causal mask,来满足自回归的约束,每个位置都只能看到其前边的tokens。由于序列tokens排在非序列tokens之前,因此各个非序列token都可以看到完整的用户历史,从而进行充分的token间交互。而序列tokens之间也可以在自回归时序约束下进行交互
为了能够逐层提取出稠密的高阶信息送给非序列tokens,每层都对序列tokens进行尾部剪裁,也即越高层中的序列tokens越少,使得各层输入的序列tokens长度呈现金字塔形。最后一层的输出被送入特定任务塔中进行预测。
具体细节:
Tokenization:
对于非序列特征,将它们分桶或按one-hot编码后转换成embeddings。由于特征数量通常上百,且不同特征重要性不同,因此可以模仿RankMixer中的处理来将特征人为分成多个(
对于用户历史序列[SEP] tokens):
OneTrans Block:
MixedMHA和MixedFFN采用混合参数策略:在每层中,对于所有历史序列tokens采用一套
金字塔形的token pruning逐层削减历史序列tokens的序列长度,每次都丢弃其尾部的若干tokens,使得历史序列中的信息被逐步压缩到更短序列中。具体而言,在每层中,只把历史序列中最近的若干tokens映射成query,而KV仍来自该层输入的更长的历史序列,注意力计算后只有用作query的这些tokens的输出会被保留,从而减小了该层的输出长度。
系统优化:
对于同一个用户的多次请求/多个待排序的候选物品,由于用户的历史序列