UxSID: Semantic-Aware User Interests Modeling for Ultra-Long Sequence

基本信息

字段 内容
标题 UxSID: Semantic-Aware User Interests Modeling for Ultra-Long Sequence
作者 Hongwei Zhang, Qiqiang Zhong, Jiangxia Cao, Yiyang Lv, Huanjie Wang, Liwei Guan, Jing Yao, Junfeng Shu, Yiyu Wang, Zhaojie Liu, Han Li
机构 Kuaishou Technology(快手)
年份 2026 (arXiv 预印, 5 月)
方向 Ultra-Long Sequence Modeling, Semantic ID, Target-Aware Attention, 离线预计算
场景 工业级广告推荐,超长用户行为序列(10k 级)建模
arXiv https://arxiv.org/abs/2605.09040

TL;DR:超长序列建模长期集中在"逐候选检索 SIM/TWIN"和"与目标无关的压缩 MIMN/C-Former"两条路线上。UxSID 主张走中间路线: 不为每个 item 单独压缩,计算代价过高;也不做完全 target-agnostic 的压缩,会丢失目标相关的兴趣峰值;而是按 Semantic ID 语义组来共享一份压缩好的用户兴趣记忆,语义相近的 item 共用同一份。这样既能离线预计算、线上 O(1)O(1) 查表,又保留了"目标语义感知"。

关键方法:用目标 item 的 SID 当 query 去 attend 用户历史,离线把 (UID, SID) 这一对的兴趣 embedding 算好存进 KV,线上拿到候选只需 Hash(UID ⊕ SID) 查一次表,复杂度与序列长度无关。

一、动机与背景

超长序列建模的核心矛盾:效率 vs 效果

用户行为序列越长,越能刻画长期兴趣,近年来是公认的提升方向。但推荐系统流量规模很大,序列长度一旦增加,在线计算量显著增加: 这是一个难以回避的 trade-off。如何在"输入更长的序列"和"保持线上轻量"之间取平衡,现有工作大致分两条技术路线:

image-20260621165235698

路线一:Search-based Top-K 选择,即 item-specific 的逐候选检索。 代表是 SIM、ETA、TWIN、SDIM。核心做法:不直接处理超长序列,而是用一个 General Search Unit GSU 针对每个候选 item 从长序列里检索出一个 item-specific 子序列,例如与候选同类目或相似的历史行为,再把短子序列输入后面的精排注意力。

  • 问题 1:选择偏差。检索这一步受限于预定义的 key 空间,例如按类目或作者 ID 匹配,表达力有限,固定的检索范围会遗漏那些表面相关性低、但语义上确实相关的远端行为,即 hidden semantic synergy。
  • 问题 2:逐候选检索本身存在成本,且 GSU 的硬筛 quota 也是一个超参。

代表工作:

  • SIM(Alibaba,CIKM 2020):两级检索的奠基工作。GSU 从超长序列(最长达 5.4 万)按类目硬检索或向量内积软检索出与候选相关的子序列,ESU 再对该子序列做精确 target attention。
  • ETA(Alibaba,arXiv 2021):用 SimHash / LSH 把向量内积近似为汉明距离计算,使 GSU 检索可端到端训练,免去 SIM 中需离线异步维护检索索引的工程代价。
  • TWIN(Kuaishou,KDD 2023):让 GSU 与 ESU 采用一致的 target-attention 相关性度量,消除两级度量不一致导致的「GSU 漏掉真正相关行为、却检索到无关行为」问题。
  • SDIM(Meituan,CIKM 2022):用多个哈希函数为候选与各历史行为生成签名,直接聚合与候选同签名的行为得到兴趣表示,复杂度随序列线性增长、对线上 CTR 服务近似零延迟。

路线二:Pre-trained 用户兴趣压缩,即 item-agnostic、与目标无关的压缩。 代表是 MIMN、LURM、C-Former、PinnerFormer。核心做法:把超长序列离线压成少量与目标无关的用户兴趣记忆 dense memory,线上模型直接读这份高度压缩的记忆来感知长期兴趣。

  • 问题:压缩是 target-agnostic 的: 它不知道当前要打分的候选是什么。静态压缩相当于一个低通滤波器,保留了粗粒度的全局趋势,却把"针对当前目标的高频兴趣峰值"平滑掉了,还会在融合多样兴趣时引入无关噪声。

代表工作:

  • MIMN(Alibaba,KDD 2019):用 NTM 记忆网络加 MIU(Memory Induction Unit),配合独立的 UIC(User Interest Center)增量地把终身行为压入固定大小的记忆槽,将最耗资源的兴趣建模与在线打分解耦、对实时 CTR 零延迟。
  • LURM(蚂蚁集团 Ant Group,2021;同脉络见 KDD’23 arXiv 2110.11337):自监督学习通用用户表示。BoI(Bag of Interests)把任意时段行为编码成超高维稀疏向量,SMEN 经对比学习映射成多个低维用户表示;表示与目标无关。
  • C-Former(Kuaishou,CIKM 2025):以「终身行为聚类」作为压缩手段,用 transformer 将行为聚成固定数量的簇,使检索可在簇上进行,从而触达终身行为又保持推理效率。
  • PinnerFormer(Pinterest,KDD 2022):离线(按天)用 transformer 配合 dense all-action 预测损失,把用户序列压成单条用户 embedding 供下游检索;表示离线生成、与目标无关。

感觉这里其实路线划分不严谨,这篇文章本身是 2026 年的文章,序列统一建模这个时候已经涌现出如 OneTrans、TokenMixer、HyFormer 等一系列工作了,也都是在长序列基础上做的,这些方法没有做候选检索或者静态压缩,而是靠高效注意力、kvcache、精度混合等方法实现的。

UxSID 的主张:语义组共享

作者的论点是:上面两条路是两个极端: 要么完全 item-specific、每个 item 一份,要么完全 item-agnostic、全用户一份。中间还有一条尚未被充分探索的路线:保留用户序列与目标 item 的"部分相关性",仅暴露有限的信号来引导压缩的方向。 不追求 per-item 的压缩,而是按 item 属性寻求语义组共享的通用兴趣记忆: 语义相近的 item 共用同一份压缩后的用户兴趣记忆。

这个"有限信号"就是 Semantic ID,简称 SID。SID 是把 item 的多模态属性,包括文本、图像等 metadata,经 RQ-VAE 这类深度量化得到的离散语义簇编码,天然对齐"用户兴趣簇"。用 SID 当压缩的 condition,就能在粒度过细的逐物品和粒度过粗的无关压缩之间,取一个按语义分组的中间粒度。

论文 Fig 1 概括了三种范式:Item-specific Search 为每个候选在线筛序列,计算代价高;Item-agnostic Compression 离线蒸馏成静态记忆,但 target 无关;UxSID 走语义组路线,SID 相同的 item 共享一份压缩兴趣记忆。

创新点

  1. Target Semantic-Aware Behavior Compression:作者称这是第一个把"SID 携带的目标语义"接入超长序列建模 ULSM 的工作: 用 SID 当 query 去探询用户历史,而不是做 user-centric 的静态蒸馏。
  2. 可扩展的 UxSID 架构:两阶段框架,包含 Item-Agnostic 兴趣压缩与层次化目标注意力,保证即便在 10k 交互下仍是常数时间推理
  3. SOTA + 工业落地:公开 benchmark 达到 SOTA,快手广告线上 +0.337% revenue

二、问题形式化

Semantic ID 的定义

给定一个 item 的多模态属性,先用多模态大模型编码成稠密向量:

zi=EncMLLM(Attri)\mathbf{z}_i = \text{Enc}_{\text{MLLM}}(\text{Attr}_i)

其中 Attri\text{Attr}_i 为第 ii 个 item 的多模态属性,包括文本、图像、世界知识,EncMLLM\text{Enc}_{\text{MLLM}} 为多模态大模型编码器,zi\mathbf{z}_i 为编码得到的稠密语义向量,下标 ii 标识 item。

再做层次化残差量化,如 RQ-VAE、Res-Kmeans-FSQ 之类,得到 MM 层离散码:

zim=1MCm(km),km=argminjrm1cm,j2\mathbf{z}_i \approx \sum_{m=1}^{M}\mathcal{C}_m(k_m),\qquad k_m=\arg\min_j \|\mathbf{r}_{m-1}-\mathbf{c}_{m,j}\|_2

其中 MM 为残差量化的总层数,Cm\mathcal{C}_m 是第 mm 层 codebook,Cm(km)\mathcal{C}_m(k_m) 为该层第 kmk_m 个码向量,rm\mathbf{r}_m 是该层量化残差,rm1\mathbf{r}_{m-1} 为进入第 mm 层量化的输入残差,cm,j\mathbf{c}_{m,j} 为第 mm 层 codebook 中第 jj 个码向量,kmk_m 为该层取到的最近码的下标,下标 jj 遍历该层 codebook 的所有码。实现中取 M=4M=4 层、每层 codebook 大小 256,即 256×256×256×256256\times256\times256\times256。最终一个 item 的 SID 形如 <7>,<5>,<9>,...语义相近的 item 会落到相同或相近的 SID: 这是后面"语义组共享"的基础。

目标

记用户原始行为序列 B=[b1,,bL]\mathcal{B}=[b_1,\dots,b_L],其中 LL 可达 10k,其 embedding 序列 E=[e1,,eL]RL×d\mathbf{E}=[e_1,\dots,e_L]\in\mathbb{R}^{L\times d}。UxSID 要产出一个目标语义感知的压缩表示 EUxSID\mathbf{E}^{\text{UxSID}},要求:

  • 计算节俭:线上代价与序列长度 LL 无关;
  • 目标语义感知:表示随目标 item 的 SID 而变;
  • 离线-在线一致,即 online-offline parity:线上读取的,就是离线算好的。

三、方法 / 模型架构

image-20260621165136181

整体分为三个部分:

  1. Target SIDs Generator:把 item 属性量化成离散 SID。
  2. Semantic-Aware Compression Network: 含兴趣压缩 IAIC 与层次化双层注意力。
  3. End-to-End Multi-Task Supervision Framework: 多任务监督学习。

3.1 SIDs Generator

编码器:把 item 的 metadata 经一个 MLLM encoder 编成稠密向量 zi\mathbf{z}_i(即 §二 zi=EncMLLM(Attri)\mathbf{z}_i=\text{Enc}_{\text{MLLM}}(\text{Attr}_i) 那一步)。

量化器:不是纯 RQ-VAE,而是论文自述的 Res-KmeansFSQ 混合量化: 残差量化叠加 K-means 与 FSQ(Finite Scalar Quantization)。形式化地,记初始残差 r0=zi\mathbf{r}_0=\mathbf{z}_i,第 mm 层在码本 Cm\mathcal{C}_m 中取与当前残差最近的码、再将其从残差中减去传入下一层,MM 层后累加重构:

km=argminjrm1cm,j2,rm=rm1Cm(km),zim=1MCm(km)k_m=\arg\min_{j}\|\mathbf{r}_{m-1}-\mathbf{c}_{m,j}\|_2,\qquad \mathbf{r}_m=\mathbf{r}_{m-1}-\mathcal{C}_m(k_m),\qquad \mathbf{z}_i\approx\sum_{m=1}^{M}\mathcal{C}_m(k_m)

codebook 与 SID 结构:各层码拼成该 item 的 SID:

SID(i)=(k1,k2,,kM),km{1,,Cm}\text{SID}(i)=(k_1,k_2,\dots,k_M),\qquad k_m\in\{1,\dots,|\mathcal{C}_m|\}

公开实验为 M=4M=4 层、每层 Cm=256|\mathcal{C}_m|=256 码。工业部署做了关键简化:线上主要只用第一层码 k1k_1 作为 target SID(即 ctargetc_{target}),并把第一层 codebook 放大到 C1=4096|\mathcal{C}_1|=4096

query 构造ctargetc_{target} 具体如何由码得到,论文未明确;结合工业部署只用 k1k_1,最可能是按 k1k_1 查一张可学习的 SID embedding 表:

ctarget=Esid[k1],EsidRC1×dc_{target}=\mathbf{E}^{\text{sid}}[k_1],\qquad \mathbf{E}^{\text{sid}}\in\mathbb{R}^{|\mathcal{C}_1|\times d}

第一层码相同的 item 构成一组:

G(k1)={i:SID(i)1=k1}\mathcal{G}(k_1)=\{\,i:\text{SID}(i)_1=k_1\,\}

3.2 Item-Agnostic Interest Compression

这一阶段先不引入目标,把原始长序列 ERL×d\mathbf{E}\in\mathbb{R}^{L\times d} 压成 KK 个兴趣锚点 PRK×d\mathbf{P}\in\mathbb{R}^{K\times d},其中 KLK\ll L,实现取 K=16K=16

(1) Cross-Attention 压缩:用 KK 个可学习的兴趣锚点 Qanc\mathbf{Q}_{anc} 当 query,长序列当 key/value:

H=Softmax ⁣((QancWQ)(EWK)d)(EWV)RK×d\mathbf{H}=\text{Softmax}\!\left(\frac{(\mathbf{Q}_{anc}\mathbf{W}^Q)(\mathbf{E}\mathbf{W}^K)^\top}{\sqrt{d}}\right)(\mathbf{E}\mathbf{W}^V)\in\mathbb{R}^{K\times d}

其中 WQ,WK,WV\mathbf{W}^Q,\mathbf{W}^K,\mathbf{W}^V 分别为 query、key、value 的投影矩阵,dd 为 embedding 维度,d\sqrt{d} 为缩放因子,HRK×d\mathbf{H}\in\mathbb{R}^{K\times d} 为压缩后的 KK 个锚点表示。

这一步把长度为 LL 的序列压到固定 KK 个 slot, 这是后面"常数时间"的来源。

(2) Per-token FFN,记 PFFN:每个锚点 hk\mathbf{h}_k 过一套自己专属的 FFN,参数 W1(k),W2(k)\mathbf{W}_1^{(k)},\mathbf{W}_2^{(k)} 按锚点独立,再残差 + LayerNorm:

pk=LayerNorm ⁣(hk+σ(hkW1(k)+b1(k))W2(k)+b2(k))\mathbf{p}_k=\text{LayerNorm}\!\big(\mathbf{h}_k+\sigma(\mathbf{h}_k\mathbf{W}_1^{(k)}+\mathbf{b}_1^{(k)})\mathbf{W}_2^{(k)}+\mathbf{b}_2^{(k)}\big)

其中 hk\mathbf{h}_k 为第 kk 个锚点的输入表示,W1(k),W2(k)\mathbf{W}_1^{(k)},\mathbf{W}_2^{(k)}b1(k),b2(k)\mathbf{b}_1^{(k)},\mathbf{b}_2^{(k)} 为第 kk 个锚点专属的两层 FFN 权重与偏置,σ\sigma 为非线性激活函数,pk\mathbf{p}_k 为该锚点经残差与 LayerNorm 后的输出表示,上标 (k)(k) 表示参数按锚点独立。

这与 MPFormer 的 per-task MLP 思路一致: 让每个锚点使用独立参数,避免不同兴趣面被同一套变换混合到一起。

(3) 正交与多样性约束:为了让 KK 个锚点各自对应一个兴趣面、避免塌缩成同一个,加一个正交正则,逼近"锚点两两正交":

Lortho=PPP22IF\mathcal{L}_{ortho}=\left\|\frac{\mathbf{P}\mathbf{P}^\top}{\|\mathbf{P}\|_2^2}-\mathbf{I}\right\|_F

其中 PRK×d\mathbf{P}\in\mathbb{R}^{K\times d}KK 个兴趣锚点堆叠成的矩阵,P2\|\mathbf{P}\|_2 为其归一化所用的谱范数,即最大特征值,I\mathbf{I}K×KK\times K 单位矩阵,F\|\cdot\|_F 为 Frobenius 范数,Lortho\mathcal{L}_{ortho} 为正交正则项。

这一 F\|\cdot\|_F 正交正则最早见于 Lin et al., ICLR 2017,用惩罚项 AAIF\|AA^\top-\mathbf{I}\|_F 让多个 attention 向量各关注一处、去除冗余;UxSID 这里是其归一化变体。推荐侧自 MIND(胶囊路由)、ComiRec(自注意力)起,多兴趣向量易塌缩成同一个,正交 / disagreement 正则便成了常见解法。

3.3 Hierarchical Semantic Probing 双层目标注意力

得到与目标无关的锚点 P\mathbf{P} 后,再引入目标 SID ctargetc_{target},分两级做 target-aware 的探询。注意两级 attend 的对象不同: 一个 attend 原始全序列以获取细粒度全局信号,一个 attend 压缩锚点以获取去噪后的局部意图。

Stage 1 — Explicit Semantic Probing,全局,attend 原始序列

eglobal=Softmax ⁣((ctargetWgQ)(EWgK)d)(EWgV)\mathbf{e}_{global}=\text{Softmax}\!\left(\frac{(c_{target}\mathbf{W}_g^Q)(\mathbf{E}\mathbf{W}_g^K)^\top}{\sqrt{d}}\right)(\mathbf{E}\mathbf{W}_g^V)

其中 ctargetc_{target} 为目标 SID 聚合得到的语义 query 向量,WgQ,WgK,WgV\mathbf{W}_g^Q,\mathbf{W}_g^K,\mathbf{W}_g^V 为全局注意力的 query、key、value 投影矩阵,下标 gg 表示全局阶段,eglobal\mathbf{e}_{global} 为对原始全序列做目标注意力得到的全局兴趣表示。

直接对原始全序列做目标注意力,恢复细粒度、target-specific 的信号,也就是压缩可能滤掉的那部分"高频峰值"。这里有一个隐含的代价:attend 原始序列 E\mathbf{E} 的复杂度是 O(Ld)O(Ld)。论文之所以能做到常数时间,是因为这部分离线计算。线上只查表,不在线运行这个 O(Ld)O(Ld)

Stage 2 — Gated Latent Probing,局部,attend 锚点:先用全局信号算一个上下文门控向量,去 refine query,再 attend 压缩锚点 P\mathbf{P}

gctx=σ(GatedNet(eglobal)),qref=ctargetgctx\mathbf{g}_{ctx}=\sigma(\text{GatedNet}(\mathbf{e}_{global})),\qquad \mathbf{q}_{ref}=c_{target}\odot\mathbf{g}_{ctx}

其中 GatedNet\text{GatedNet} 为以全局信号为输入的门控网络,σ\sigma 为激活函数将输出压到门控取值范围,gctx\mathbf{g}_{ctx} 为上下文门控向量,\odot 为逐元素相乘,qref\mathbf{q}_{ref} 为经门控调制后用于局部注意力的精炼 query。

elocal=Softmax ⁣((qrefWlQ)(PWlK)d)(PWlV)\mathbf{e}_{local}=\text{Softmax}\!\left(\frac{(\mathbf{q}_{ref}\mathbf{W}_l^Q)(\mathbf{P}\mathbf{W}_l^K)^\top}{\sqrt{d}}\right)(\mathbf{P}\mathbf{W}_l^V)

其中 WlQ,WlK,WlV\mathbf{W}_l^Q,\mathbf{W}_l^K,\mathbf{W}_l^V 为局部注意力的 query、key、value 投影矩阵,下标 ll 表示局部阶段,P\mathbf{P} 为前一阶段得到的压缩兴趣锚点,elocal\mathbf{e}_{local} 为对锚点做目标注意力得到的局部兴趣表示。

门控 gctx\mathbf{g}_{ctx} 让全局信号调制目标 query: 先由全局信号确定大方向,再带着这个方向在压缩锚点中精确定位局部意图。Gate 在消融实验中有效,去掉后指标下降。

最终表示:两级拼接,而非相加:

  EUxSID=[eglobal;elocal]  \boxed{\;\mathbf{E}^{\text{UxSID}}=[\mathbf{e}_{global};\mathbf{e}_{local}]\;}

3.4 端到端多任务监督

EUxSID\mathbf{E}^{\text{UxSID}} 与其它特征拼接后输入精排 MLP,做 CTR、CTCVR 多任务预测:

p(x)=σ ⁣(MLP([Et;Eu;Ec;Eshort;EUxSID]x))p(x)=\sigma\!\Big(\text{MLP}\big([\mathbf{E}^t;\mathbf{E}^u;\mathbf{E}^c;\mathbf{E}^{\text{short}};\mathbf{E}^{\text{UxSID}}]\mid x\big)\Big)

其中 xx 为一条样本,p(x)p(x) 为该样本的预测点击或转化概率,σ\sigma 为 sigmoid 函数把 MLP 输出映射到 [0,1][0,1]Et\mathbf{E}^t 目标 item 特征、Eu\mathbf{E}^u 用户画像、Ec\mathbf{E}^c 上下文、Eshort\mathbf{E}^{\text{short}} 短期序列特征。总损失 = 交叉熵 + 正交正则:

L=1Nn=1N[ynlogp(xn)+(1yn)log(1p(xn))]+λLortho\mathcal{L}=-\frac{1}{N}\sum_{n=1}^N\big[y_n\log p(x_n)+(1-y_n)\log(1-p(x_n))\big]+\lambda\,\mathcal{L}_{ortho}

其中 NN 为样本数,下标 nn 标识第 nn 条样本,yn{0,1}y_n\in\{0,1\} 为其真实标签,p(xn)p(x_n) 为对应预测概率,λ\lambda 为正交正则项的权重系数。

注意

  1. 离线预计算的超长序列 UxSID 与线上实时的短期序列 Eshort\mathbf{E}^{\text{short}}两条独立的输入。这回答了"预计算的 embedding 是否会过时"这一问题: 长期兴趣变化缓慢,离线计算、容忍一定 staleness 是可接受的;而对时效敏感的近期行为,交给线上短期模块实时计算。两者职责分离明确。
  2. 长序列 多兴趣锚点 CrossAttention 和 SID 两阶段 Cross Attention 的计算过程均发生在离线,这部分最终的产出仅仅为 EUxSID\mathbf{E}^{\text{UxSID}} 。也就是长序列依靠 SID 和 多兴趣锚点融合最终压缩成了一个 Embedding。

3.5 在线服务与离线-在线一致性

整个双层注意力,含 O(Ld)O(Ld) 的全局 attend,都在离线完成。对每个 (用户 UID, 目标 SID) 对,离线算出 EUxSID\mathbf{E}^{\text{UxSID}},按下式存入分布式 KV,即 Embedding Server:

Key=Hash(UIDSID),Value=EUxSID\text{Key}=\text{Hash}(\text{UID}\oplus\text{SID}),\qquad \text{Value}=\mathbf{E}^{\text{UxSID}}

其中 UID\text{UID} 为用户标识,SID\text{SID} 为目标 item 的 Semantic ID,\oplus 为二者的拼接或组合算子,Hash\text{Hash} 为哈希函数,Key\text{Key} 为 KV 表的查询键,Value\text{Value} 为离线预计算并存入的兴趣表示。

线上到达一个候选 item:取它的 SID → 算 Hash(UID ⊕ SID)一次哈希点查取得预计算好的 embedding,O(1)O(1),与 LL 无关。

"语义组共享"在这里实现:因为 SID 相同的 item 共用同一份用户兴趣记忆,需要存储的不是十亿级的"每用户 × 每 item",而是"每用户 × 每 SID 组"。实测平均每用户约 100 个 SID,400M 用户总共约 2.56 TB,现代分布式 KV 可以承载。反推存储量可验证自洽:64 维 embedding × 约 100 SID × 400M 用户,若按 int8、1 字节每维,约 64×100×4×108=2.56×101264\times100\times4\times10^8=2.56\times10^{12} B = 2.56 TB,数值吻合,说明 value 是量化存储的。

为什么强调 online-offline parity? 因为线上读取的就是离线训练时算出的那一份 embedding,逐比特一致,不存在线上另行运行一套近似编码器、导致 train/serve skew 的问题: 这恰恰是部分压缩类方法的隐患。线上额外延迟仅 +0.16 ms

四、为什么这条"中间路线"成立

本质是一个压缩粒度的可调参数:

粒度 代表 存储/计算 目标感知
最细:每 item 一份 SIM / TWIN(逐候选检索) 线上逐候选计算,代价高 强(item-specific)
中间:每 SID 组一份 UxSID 离线预计算,线上 O(1)O(1) 查表,约 100/用户 中(语义组级)
最粗:每用户一份 MIMN / C-Former O(1)O(1),开销最低 无(target-agnostic)

两个极端各有明显短板:item-specific 计算代价高且受 GSU key 空间偏差影响;item-agnostic 开销低但类似低通滤波器、把目标相关的兴趣峰值平滑掉了。SID 组数就是这个可调参数: 它远小于 item 数,因此预计算加查表可行,又远大于 1,因此保留了目标语义区分度。SID 在这里充当"暴露给压缩的有限信号",恰好把压缩方向引导正确。

复杂度对比BB batch、LL 原始序列长、RR 检索子序列长、dd 隐层、cc 压缩兴趣数、ff 为 TWIN 中目标无关行为打分所用的特征数:

模型 推理复杂度
DIN O(BRd)O(BRd)R100R\approx100
SIM-Soft O(BLd+BRd)O(BLd+BRd)
TWIN O(BL+BfLd+BRd)O(BL+BfLd+BRd)
C-Former O(BRd)O(BRd)
UxSID O(Bcd)\boxed{O(Bcd)}c=16c=16

UxSID 线上复杂度只与固定的 c=16c=16 有关,与 LL 解耦: 这是"序列扩展到 10k 也不增加线上成本"的根本原因,主要计算全部在离线。

五、实验

5.1 数据与指标

数据集 用户 item 交互 平均序列长
XLong 1,000 3,269,017 1,000,000 1,000
KuaiRec-Big 7,176 10,728 12,530,806 1,746
工业数据集(快手广告) impression logs 最长 10k

指标:AUC、UAUC / WUAUC,即用户级与加权用户级、Interest Recall@K,记 Int.R@K,衡量兴趣路由质量。Baseline 覆盖两条路线:search-based 的 DIN、SIM-Hard/Soft、ETA、SDIM、MIRRN、TWIN,以及 compression-based 的 C-Former。

5.2 主结果

公开数据集,Table 1,AUC,最优加粗:

模型 XLong KuaiRec-Big
DIN 0.7889 0.8181
SIM-Soft 0.7971 0.8279
TWIN 0.8154 0.8269
C-Former 0.8135 0.8276
UxSID 0.8408 0.8348

工业数据集,Table 2,AUC:

模型 CTR CTCVR
SIM-Soft 0.8711 0.8608
TWIN 0.8712 0.8609
UxSID 0.8728 0.8626

公开集上 UxSID 相对 TWIN、C-Former 领先明显,XLong 0.8408 对 0.8154、0.8135,约 +2.5 pt;但工业集上相对 TWIN 的领先收窄到 CTR +0.0016、CTCVR +0.0017。工业 AUC 本身提升难度较大,这种量级的提升在整体流量上仍可能带来可观收益,下面的 A/B 验证了这一点。

5.3 消融实验

变体 XLong AUC 结论
满配 UxSID 0.8408
w/o eglobal\mathbf{e}_{global} 0.8370 掉最多,细粒度全局信号关键
w/o elocal\mathbf{e}_{local} 0.8375 压缩锚点也重要
w/o Gate 0.8376 门控调制有效
w/o Lortho\mathcal{L}_{ortho} 0.8385 正交约束有正贡献
用类目/Tag 当 query 代替 SID Int.R@50: 0.0543 vs 0.1488 用 SID 路由兴趣显著优于 Tag

去掉全局比去掉局部的指标下降更多,0.8370 低于 0.8375,说明**"直接 attend 原始全序列恢复的细粒度信号"是主要贡献**: 这也反过来支撑了作者对 item-agnostic 压缩"低通滤波丢失峰值"的批评。SID 与 Tag 的对比是一组关键证据:把 query 从 SID 换成人工类目,Int.R@50 从 0.1488 显著下降到 0.0543,约为原来的 1/3。这证明性能提升不是来自多向量压缩本身,而是 SID 携带的语义确实在做有效的兴趣路由

5.4 序列长度扩展

随序列长度增长到 10k,UxSID 始终保持最高 AUC,且在 10k 处与 SIM、TWIN、C-Former 的差距进一步扩大,论文只给出曲线、未给 10k 精确数值。

5.5 线上 A/B:Table 3,快手广告,一周

指标 提升
Exposure(曝光) +0.111%
Cost(消耗) +0.231%
Revenue(收入) +0.337%

曝光 +0.111% 而收入 +0.337%,收入增幅大于曝光增幅,说明收益主要来自转化精度提升,即更精准地把广告投放给会转化的用户,而非单纯增加曝光量: 与工业集上 CTCVR 同步提升的方向一致。

5.6 工程开销

  • 存储:约 2.56 TB,对应 400M 用户、每用户约 100 SID,分布式 KV 可承载。
  • 线上延迟:+0.16 ms。
  • 训练:1k 序列用 16 张 A10;10k 序列用 40 张 A10。
  • 超参:锚点数 K=16K=16K=4K=4 欠拟合、过大引入冗余;d=32d=32;SID M=4M=4 层 codebook 各 256;λ\lambda 需调优,过大会过度约束锚点。

六、讨论

6.1 缺少与其它统一序列建模工作的对比

论文没提 OneTrans、Hyformer、TokenMixer 等同期或者稍早一些的 统一长序列建模的工作,这些没有做压缩的办法感觉应该要对比一下才是。

6.2

七、总结

UxSID 的核心贡献不是某个新算子,而是把超长序列建模的设计空间显式参数化为"压缩粒度",并指出 SID 语义组是此前被忽略的折中点

  • 比 item-specific 检索成本更低:离线预计算、线上 O(Bcd)O(Bcd) 查表,与 LL 解耦;
  • 比 item-agnostic 压缩更精细:按 SID 分组,保留目标语义区分度,不退化为低通滤波器;
  • 工程上 online-offline 逐比特一致、+0.16 ms、2.56 TB 可落地,快手广告 +0.337% revenue。