| 会议 | SIGIR 2026(第 49 届国际 ACM SIGIR 信息检索会议) |
| 发表时间 | 2026-07-15 |
| 作者 | Yueting Yang; Yao Li; Rongmei Zhao; Shenggen Ju |
| 单位 | 四川大学;成都大学 |
| 论文页码 | 2174–2184 |
| DOI | 10.1145/3805712.3809635 |
| 论文链接 | https://doi.org/10.1145/3805712.3809635 |
| 代码 | https://github.com/yyt-1219/KERec |
| 标签 | #序列推荐 #用户兴趣演化 #运动学建模 #泰勒展开 #多尺度差分 #对比学习 #SIGIR2026 |
一. 摘要与核心贡献
1.1 摘要复述
序列推荐的任务,是根据用户过去点击、购买或浏览过的物品序列,预测用户下一步最可能感兴趣的物品。现有 Transformer、RNN、CNN 或状态空间模型已经能够较好地挖掘行为之间的顺序依赖,但它们通常把历史行为编码成一组离散的位置表示,再通过注意力或循环结构聚合信息。
KERec 认为,用户偏好并不是若干静态兴趣向量的简单拼接,而是一个随时间连续变化的过程。用户可能长期喜欢某一类商品,也可能在最近几次交互中突然转向新的兴趣方向。因此,模型不仅需要知道“用户看过什么”,还应该显式感知“兴趣正在朝哪个方向变化,以及变化速度是否在加快”。
为此,作者提出 KERec,从运动学视角建模用户偏好演化:
- 用当前位置表示用户当前偏好;
- 用一阶速度表示近期兴趣变化方向;
- 用二阶加速度表示兴趣变化方向本身的改变;
- 用多尺度差分捕获短期、中期和长期的变化节奏;
- 用自适应门控融合不同时间尺度的运动学特征;
- 用动量引导的对比学习强化真实兴趣变化,削弱随机噪声。
整体上,KERec 仍然建立在 Transformer 编码框架之上,但它没有只依赖注意力聚合,而是在每个编码层中同时加入全局上下文分支和运动学演化分支,使模型既能保留长期稳定偏好,又能显式感知兴趣变化的动态趋势。
1.2 核心创新点
-
创新点 1:从连续运动学视角重新解释用户兴趣演化。
不同于把行为序列看成离散的 item token 序列,KERec 将用户偏好视为可求速度、可求加速度的运动轨迹,用一阶和二阶变化量描述兴趣的方向与趋势变化。 -
创新点 2:基于多尺度差分的运动学演化分支。
模型使用多个时间尺度构造一阶速度特征和二阶加速度特征。短尺度更多反映近期兴趣变化,长尺度更偏向稳定趋势,从而同时捕获快速兴趣漂移和长期偏好转移。 -
创新点 3:全局上下文与运动学信号的自适应融合。
全局注意力分支负责稳定、长距离的上下文建模;运动学分支负责局部变化趋势。作者使用可学习门控为每个位置自适应分配不同尺度的权重,并通过可学习系数 α\alphaα 将运动学表示耦合到 Transformer 层中。 -
创新点 4:动量引导的对比学习。
KERec 不是对行为序列做简单的随机扰动,而是根据运动学特征的漂移幅度和变化方向构造增强视图。增强方向同时混合“真实演化方向”和少量随机方向,再通过 InfoNCE 约束原始视图与增强视图的一致性。 -
创新点 5:公开代码与预训练模型。
作者开源了 PyTorch 实现,并提供了 Beauty、Sports_and_Outdoors、Toys_and_Games、Yelp 和 LastFM 五个数据集上的训练脚本与测试模型,便于复现和后续对比。
1.3 效果速览
作者在五个公开数据集上进行了实验,覆盖 Amazon 商品评论、Yelp 本地商户和 LastFM 音乐收听等场景。
根据论文摘要,KERec 在推荐准确率上优于多个当前代表性方法,并且在不同序列长度和不同噪声水平下表现出更好的鲁棒性。
作者 GitHub 仓库公开的预训练模型测试结果如下:
- Beauty:HIT@10 = 0.1050,NDCG@10 = 0.0623;
- Sports_and_Outdoors:HIT@10 = 0.0643,NDCG@10 = 0.0369;
- Toys_and_Games:HIT@10 = 0.1154,NDCG@10 = 0.0701;
- Yelp:HIT@10 = 0.0534,NDCG@10 = 0.0272;
- LastFM:HIT@10 = 0.0899,NDCG@10 = 0.0501。
需要注意的是,上面列出的结果是作者官方仓库中预训练模型在测试集上的复现输出;完整基线对比和显著性分析仍应以正式论文中的实验表为准。
二. 研究背景与动机
2.1 序列推荐要解决什么问题
给定用户 uuu 的历史交互序列:
Su=(i1,i2,…,iT) S_u=(i_1,i_2,\ldots,i_T) Su=(i1,i2,…,iT)
其中 iti_tit 表示用户在时刻 ttt 交互的物品。序列推荐模型需要根据 SuS_uSu 预测下一个物品 iT+1i_{T+1}iT+1。
现代序列推荐通常先学习物品嵌入,再通过 Transformer 自注意力捕获行为之间的依赖关系。例如 SASRec 使用因果自注意力编码历史序列,并利用最后一个位置的表示完成下一个物品预测。
这种范式解决的问题是:
- 哪些历史行为与当前预测更相关;
- 一个物品与序列中其他物品存在怎样的依赖;
- 如何从长序列中提取稳定的用户偏好表示。
但它没有直接回答一个更细的问题:
用户兴趣在这一段序列中,正在以什么速度和方向发生变化?
2.2 已有方法的不足
第一,离散聚合难以显式表达变化趋势。
注意力机制可以学习不同历史位置的权重,但最终通常还是把多个位置的表示聚合为一个兴趣向量。聚合结果能够表达“用户喜欢什么”,却不一定能表达“用户最近正在从什么兴趣转向什么兴趣”。
第二,普通位置编码只表达顺序,不表达变化强度。
在标准 Transformer 中,位置嵌入主要告诉模型某个物品位于序列的第几个位置,但不会直接给出相邻行为之间的变化幅度,也不会显式区分“缓慢漂移”和“突然转向”。
第三,仅依赖全局注意力容易弱化局部动态。
自注意力擅长建立长距离依赖,但用户兴趣变化常常发生在局部邻域。例如用户前几次都在浏览篮球鞋,最近突然开始浏览跑步鞋,这种短时间窗口内的方向变化需要更敏感的局部动态建模。
第四,随机数据增强不一定符合兴趣演化规律。
对比学习常通过随机 mask、随机 dropout 或随机扰动构造增强视图。但如果扰动方向与用户真实兴趣变化无关,模型可能被迫对齐无意义的噪声,反而削弱表示质量。
2.3 KERec 的运动学直觉
KERec 使用一个非常直观的类比:
- 位置:用户当前处于什么兴趣状态;
- 速度:用户兴趣正在朝哪个方向移动;
- 加速度:兴趣移动方向本身有没有发生变化。
例如,一个用户长期购买户外运动装备,这是稳定偏好;最近开始频繁浏览露营灯具,这是短期速度;如果浏览主题又从“露营灯具”快速转向“轻量化帐篷”,则体现了兴趣变化方向本身的改变,也就是更高阶的动态。
从数学上看,如果连续时间上的兴趣表示为 xtx_txt,那么根据二阶泰勒展开:
xt+s=xt+svt+s22at+o(s2) x_{t+s}=x_t+s v_t+\frac{s^2}{2}a_t+o(s^2) xt+s=xt+svt+2s2at+o(s2)
其中:
- xtx_txt 表示时刻 ttt 的兴趣状态;
- vtv_tvt 表示一阶变化速度;
- ata_tat 表示二阶变化加速度;
- sss 表示时间尺度;
- o(s2)o(s^2)o(s2) 表示更高阶的剩余项。
KERec 并不直接拟合连续函数,而是在离散行为序列上使用有限差分近似上述导数。这样既保留了 Transformer 的序列建模能力,又显式加入了兴趣变化的速度和加速度信息。
三. 方法与模型框架
3.1 问题定义与输入表示
给定用户行为序列:
Su=(i1,i2,…,iT) S_u=(i_1,i_2,\ldots,i_T) Su=(i1,i2,…,iT)
每个物品首先映射为 item embedding,并加上可学习的位置嵌入:
xt0=LayerNorm(Eit+Pt) x_t^0=\operatorname{LayerNorm}\left(E_{i_t}+P_t\right) xt0=LayerNorm(Eit+Pt)
其中:
- EitE_{i_t}Eit 表示第 ttt 个物品的嵌入;
- PtP_tPt 表示第 ttt 个位置的嵌入;
- xt0x_t^0xt0 表示第 ttt 个行为的初始序列表示;
- LayerNorm\operatorname{LayerNorm}LayerNorm 用于稳定不同位置表示的数值分布。
随后,序列表示进入由多个 KERec 编码层组成的双分支编码器。
3.2 总体架构

KERec 的总体结构可以分为四部分:
- Embedding Layer:融合物品嵌入与位置嵌入;
- Dual-Branch Encoder:同时建模全局上下文和运动学演化;
- Prediction Layer:使用余弦相似度和多样本 Dropout 完成下一物品预测;
- Momentum-Guided Contrastive Learning:构造与运动趋势一致的增强视图,并计算对比损失。
论文中的“双分支”并不是两个完全独立、最后才拼接的网络,而是在每个 Transformer 编码层内部同时形成两条表示路径,再将二者融合。
3.3 全局上下文分支
全局上下文分支采用因果多头自注意力:
htatt=MHA(xt(l);Mcausal) h_t^{att}=\operatorname{MHA}\left(x_t^{(l)};M_{causal}\right) htatt=MHA(xt(l);Mcausal)
其中:
- xt(l)x_t^{(l)}xt(l) 表示第 lll 层第 ttt 个位置的输入表示;
- MHA\operatorname{MHA}MHA 表示多头自注意力;
- McausalM_{causal}Mcausal 是因果掩码,保证当前位置只能看到当前及更早的行为;
- htatth_t^{att}htatt 表示全局上下文表示。
这一分支负责建模长期依赖。例如用户过去半年购买过多个户外品牌,注意力机制可以把这些分散的长期行为联系起来,形成相对稳定的偏好结构。
3.4 运动学演化分支
3.4.1 多尺度速度与加速度
对于时间尺度 sss,一阶速度定义为:
vt,s=xt−xt−s v_{t,s}=x_t-x_{t-s} vt,s=xt−xt−s
二阶加速度定义为:
at,s=xt−2xt−s+xt−2s a_{t,s}=x_t-2x_{t-s}+x_{t-2s} at,s=xt−2xt−s+xt−2s
其中:
- vt,sv_{t,s}vt,s 表示在尺度 sss 下,从 t−st-st−s 到 ttt 的一阶变化;
- at,sa_{t,s}at,s 表示同一尺度下变化速度的方向和幅度变化;
- sss 越大,对应的时间跨度越长。
在官方代码中,这两个操作由固定的分组一维卷积完成:
- 一阶差分使用卷积核 [1,−1][1,-1][1,−1];
- 二阶差分使用卷积核 [1,−2,1][1,-2,1][1,−2,1];
- 通过 dilation 控制尺度 sss,并配合左侧 padding 保持序列长度;
- 这些卷积核不参与训练,因此它们相当于稳定的离散微分算子。
3.4.2 多尺度运动学特征集合
对于尺度集合:
S={s1,s2,…,sK} \mathcal{S}=\{s_1,s_2,\ldots,s_K\} S={s1,s2,…,sK}
KERec 构造如下特征集合:
Zt=[xt,vt,s1,at,s1,…,vt,sK,at,sK] Z_t=\left[x_t,v_{t,s_1},a_{t,s_1},\ldots,v_{t,s_K},a_{t,s_K}\right] Zt=[xt,vt,s1,at,s1,…,vt,sK,at,sK]
其中:
- ZtZ_tZt 表示第 ttt 个位置的多尺度运动学特征;
- KKK 表示尺度数量;
- vt,skv_{t,s_k}vt,sk 和 at,ska_{t,s_k}at,sk 分别表示第 kkk 个尺度下的速度和加速度。
不同尺度反映不同的兴趣变化节奏:
- 小尺度更关注最近几次行为中的快速变化;
- 大尺度可以捕获持续时间较长的兴趣迁移;
- 多个尺度组合后,模型可以同时看到“短期转折”和“长期趋势”。
3.5 自适应特征融合
不同用户、不同位置所适用的时间尺度并不相同,因此 KERec 不直接把所有速度、加速度特征相加,而是学习位置级门控权重:
wt=Softmax(W2SiLU(W1Zt)) w_t=\operatorname{Softmax}\left(W_2\operatorname{SiLU}(W_1 Z_t)\right) wt=Softmax(W2SiLU(W1Zt))
x~t=∑r=11+2Kwt,rZt,r \tilde{x}_t=\sum_{r=1}^{1+2K}w_{t,r}Z_{t,r} x~t=r=1∑1+2Kwt,rZt,r
其中:
- wt,rw_{t,r}wt,r 表示第 ttt 个位置对第 rrr 个尺度特征的权重;
- Zt,rZ_{t,r}Zt,r 表示第 rrr 个速度、加速度或当前位置特征;
- W1W_1W1 和 W2W_2W2 是可学习参数;
- SiLU\operatorname{SiLU}SiLU 为激活函数;
- x~t\tilde{x}_tx~t 表示融合后的运动学表示。
门控机制使模型能够根据上下文动态选择更重要的尺度。例如在稳定兴趣阶段,模型可以更依赖长尺度特征;在突然发生兴趣漂移时,模型可以提高短尺度速度和加速度特征的权重。
3.6 双分支耦合与 Transformer 层更新
融合后的运动学表示通过可学习系数 α\alphaα 耦合到注意力输出中:
ht(l+1)=FFN(LayerNorm(xt(l)+htatt+αx~t(l))) h_t^{(l+1)}=\operatorname{FFN}\left(\operatorname{LayerNorm}\left(x_t^{(l)}+h_t^{att}+\alpha\tilde{x}_t^{(l)}\right)\right) ht(l+1)=FFN(LayerNorm(xt(l)+htatt+αx~t(l)))
其中:
- htatth_t^{att}htatt 表示全局自注意力输出;
- x~t(l)\tilde{x}_t^{(l)}x~t(l) 表示当前层的运动学表示;
- α\alphaα 是可学习的融合系数;
- FFN\operatorname{FFN}FFN 表示前馈网络;
- LayerNorm\operatorname{LayerNorm}LayerNorm 用于稳定残差更新。
这一设计的作用是:
- 全局上下文分支保证长期偏好不被局部波动淹没;
- 运动学分支显式提供变化方向和变化速度;
- 可学习系数 α\alphaα 让模型自己决定运动学信号的注入强度;
- 残差结构避免动态信息直接破坏原有的序列表示。
3.7 动量引导的对比学习
KERec 的第二个关键设计是对比学习,但它并不是随机增强序列,而是利用运动学特征指导增强方向和强度。
设融合后的运动学表示为 x~t\tilde{x}_tx~t,其漂移幅度为:
ρt=clip(∥x~t∥1T∑j=1T∥x~j∥+ϵ,0,ρmax) \rho_t=\operatorname{clip}\left( \frac{\|\tilde{x}_t\|} {\frac{1}{T}\sum_{j=1}^{T}\|\tilde{x}_j\|+\epsilon}, 0, \rho_{\max} \right) ρt=clip(T1∑j=1T∥x~j∥+ϵ∥x~t∥,0,ρmax)
其中:
- ρt\rho_tρt 表示第 ttt 个位置的相对漂移幅度;
- ∥x~t∥\|\tilde{x}_t\|∥x~t∥ 表示运动学表示的范数;
- 分母表示整条序列的平均漂移尺度;
- ρmax\rho_{\max}ρmax 用于限制异常大的扰动;
- ϵ\epsilonϵ 用于防止除零。
增强后的表示可以写成:
x^t=xt+mtρtut \hat{x}_t=x_t+m_t\rho_t u_t x^t=xt+mtρtut
其中:
- mt∼Bernoulli(η)m_t\sim\operatorname{Bernoulli}(\eta)mt∼Bernoulli(η) 表示是否对该位置施加增强;
- η\etaη 对应代码中的
noise_scale; - utu_tut 表示增强方向;
- ρt\rho_tρt 控制增强强度。
进一步增强方向不是完全随机的,而是混合真实运动方向与随机方向:
ut=normalize((1−β)normalize(x~t)+βnormalize(ϵt)) u_t=\operatorname{normalize}\left( (1-\beta)\operatorname{normalize}(\tilde{x}_t) +\beta\operatorname{normalize}(\epsilon_t) \right) ut=normalize((1−β)normalize(x~t)+βnormalize(ϵt))
其中:
- x~t\tilde{x}_tx~t 提供真实兴趣变化方向;
- ϵt\epsilon_tϵt 是随机噪声方向;
- β\betaβ 控制随机方向所占比例。
这样做的直觉是:
- 增强视图应该沿着用户真实兴趣变化方向移动;
- 同时保留少量随机性,避免增强过于单一;
- 漂移越大的位置,可以获得更明显的增强幅度;
- 与真实演化方向无关的随机扰动会被限制。
随后,原始序列表示 huh_uhu 与增强序列表示 h^u\hat{h}_uh^u 构成正样本对,同一 batch 中其他用户表示作为负样本。对比损失采用 InfoNCE 形式:
Lcl=−1B∑u=1Blogexp(sim(hu,h^u)/τ)∑v=1Bexp(sim(hu,h^v)/τ) \mathcal{L}_{cl}= -\frac{1}{B}\sum_{u=1}^{B} \log \frac{ \exp\left(\operatorname{sim}(h_u,\hat{h}_u)/\tau\right) }{ \sum_{v=1}^{B} \exp\left(\operatorname{sim}(h_u,\hat{h}_v)/\tau\right) } Lcl=−B1u=1∑Blog∑v=1Bexp(sim(hu,h^v)/τ)exp(sim(hu,h^u)/τ)
其中:
- BBB 表示 batch size;
- sim(⋅,⋅)\operatorname{sim}(\cdot,\cdot)sim(⋅,⋅) 表示余弦相似度或点积相似度;
- τ\tauτ 是温度系数;
- huh_uhu 表示原始视图中的用户表示;
- h^u\hat{h}_uh^u 表示增强视图中的用户表示。
3.8 训练目标与预测方式
推荐主任务使用交叉熵损失:
Lrec=−logexp(su,iT+1)∑j∈Iexp(su,j) \mathcal{L}_{rec}= -\log \frac{ \exp(s_{u,i_{T+1}}) }{ \sum_{j\in\mathcal{I}}\exp(s_{u,j}) } Lrec=−log∑j∈Iexp(su,j)exp(su,iT+1)
其中:
- su,is_{u,i}su,i 表示用户 uuu 对物品 iii 的预测分数;
- iT+1i_{T+1}iT+1 表示真实的下一个物品;
- I\mathcal{I}I 表示候选物品集合。
最终训练目标为:
L=Lrec+λclLcl \mathcal{L}=\mathcal{L}_{rec}+\lambda_{cl}\mathcal{L}_{cl} L=Lrec+λclLcl
其中 λcl\lambda_{cl}λcl 是控制对比学习强度的权重。
在预测阶段,模型取序列最后一个位置的表示,并与物品嵌入做余弦相似度计算。官方实现还使用了 Multi-Sample Dropout:对最终表示进行多次 Dropout,分别计算推荐分数后取平均,以减少单次随机丢弃带来的波动。
四. 实验设计
4.1 数据集
论文使用五个公开数据集:
| 数据集 | 场景 | 特点 |
|---|---|---|
| Beauty | Amazon 美妆商品 | 用户行为较稀疏,兴趣变化较快 |
| Sports_and_Outdoors | Amazon 运动户外商品 | 商品类别丰富,长短期兴趣并存 |
| Toys_and_Games | Amazon 玩具游戏商品 | 序列交互模式多样,适合测试动态兴趣 |
| Yelp | 本地商户 | 包含较强的地点、时间和行为序列特征 |
| LastFM | 音乐收听 | 用户兴趣具有明显重复性和阶段性 |
这五个数据集覆盖电商评论、本地生活服务和音乐消费三类场景,可以检验模型在不同行为模式下的泛化能力。
4.2 评价指标
实验采用 full ranking 方式进行评估,即对完整候选物品集合排序,而不是只对少量负样本排序。
主要指标包括:
- HIT@K:真实物品是否出现在前 KKK 个推荐结果中,等价于 Recall@K;
- NDCG@K:考虑真实物品排名位置的归一化折损累计增益;
- 实验主要报告 K=5,10,20K=5,10,20K=5,10,20 的结果。
其中:
- HIT@K 更关注“有没有召回”;
- NDCG@K 更关注“排得够不够靠前”。
4.3 实现细节
根据作者官方代码和 README,主要实验配置如下:
| 配置项 | 设置 |
|---|---|
| 深度学习框架 | PyTorch 2.4.1 |
| Python 版本 | 3.9 |
| 隐藏维度 | 64 |
| Transformer 层数 | 2 |
| 注意力头数 | 2 |
| 最大序列长度 | 50 |
| Dropout | 0.5 |
| Batch size | 256 |
| 优化器 | Adam |
| 学习率 | 0.001 |
| 训练轮数 | 200 |
| 相似度计算 | 点积或余弦相似度 |
| 硬件 | NVIDIA Tesla V100 |
4.4 不同数据集的超参数
作者针对不同数据集设置了不同的运动学尺度和对比学习权重:
| 数据集 | scales | cl_weight | noise_scale |
|---|---|---|---|
| Beauty | 1,3,5 | 0.3 | 0.2 |
| Sports_and_Outdoors | 1,2 | 0.5 | 0.3 |
| Toys_and_Games | 1,2 | 0.5 | 0.3 |
| Yelp | 1,2,4 | 0.5 | 0.2 |
| LastFM | 1,4,8 | 0.2 | 0.5 |
其中:
scales表示一阶、二阶差分的尺度集合;cl_weight表示 λcl\lambda_{cl}λcl;noise_scale表示对比增强时施加扰动的概率。
这些设置也说明 KERec 对运动学尺度较敏感。不同数据集的最佳时间跨度并不相同,实际使用时通常需要根据序列长度和业务采样频率调整。
五. 实验结果与分析
5.1 作者公开模型的测试结果
下表来自 KERec 官方 GitHub README。作者直接加载已训练模型,在测试集上运行 --do_eval 得到结果。
| 数据集 | HIT@5 | NDCG@5 | HIT@10 | NDCG@10 | HIT@20 | NDCG@20 |
|---|---|---|---|---|---|---|
| Beauty | 0.0745 | 0.0525 | 0.1050 | 0.0623 | 0.1455 | 0.0725 |
| Sports_and_Outdoors | 0.0442 | 0.0304 | 0.0643 | 0.0369 | 0.0916 | 0.0438 |
| Toys_and_Games | 0.0845 | 0.0602 | 0.1154 | 0.0701 | 0.1506 | 0.0790 |
| Yelp | 0.0324 | 0.0205 | 0.0534 | 0.0272 | 0.0853 | 0.0352 |
| LastFM | 0.0624 | 0.0413 | 0.0899 | 0.0501 | 0.1376 | 0.0620 |
从表中可以看出:
- 在 Toys_and_Games 和 Beauty 上,KERec 的 HIT@20 分别达到 0.1506 和 0.1455;
- LastFM 上的 NDCG@20 为 0.0620,说明音乐场景中的重复性与阶段性兴趣也能被较好利用;
- Yelp 整体指标相对较低,其本地商户行为通常更稀疏,也更依赖地理位置、时间和上下文信息。
论文完整主表还包含与其他序列推荐方法的对比,具体基线名称、相对提升和显著性结果应以原文为准。
5.2 序列长度鲁棒性
论文摘要指出,KERec 在不同序列长度下具有更好的鲁棒性。
这与模型结构是吻合的:
- 自注意力分支负责建模长距离依赖;
- 多尺度差分分支负责捕获局部趋势和多阶段变化;
- 自适应门控可以根据不同位置和不同尺度动态调整权重。
当序列较短时,全局注意力可利用的信息有限,运动学分支可以从少量相邻行为中提取直接的变化方向;当序列较长时,多尺度差分能够避免所有历史位置被同等平滑地聚合。
5.3 噪声鲁棒性
论文还报告了不同噪声水平下的实验结果。
序列推荐中的噪声可能来自:
- 用户误点击;
- 偶然浏览但与长期兴趣无关的商品;
- 共享账号或多人使用导致的行为混杂;
- 采集过程中缺失或错位的交互记录。
KERec 主要从两个方面降低噪声影响:
- 全局与运动学双分支让模型同时关注稳定偏好和真实变化趋势,减少单个异常行为的影响;
- 对比学习中的增强方向由运动学特征引导,避免完全随机扰动把模型拉向无意义方向。
5.4 消融设计的意义
从模型结构看,可以通过以下变体验证各模块作用:
- 去掉运动学演化分支,只保留普通 Transformer 自注意力;
- 只保留一阶速度,移除二阶加速度;
- 使用单尺度差分替代多尺度差分;
- 将自适应门控替换为固定平均融合;
- 去掉动量引导,只使用普通随机 dropout 增强;
- 去掉对比学习损失,仅保留推荐交叉熵。
论文报告了相关消融实验。对于希望复现实验的读者,可以直接参考官方仓库中的配置参数和模型输出进行二次对比。
六. 讨论与局限
6.1 方法优势
第一,解释性较强。
“位置、速度、加速度”的概念与用户兴趣变化有直观对应关系。相比只观察注意力权重,运动学视角更容易解释某次推荐为什么受到近期兴趣转向的影响。
第二,全局信号与局部动态互补。
全局注意力擅长建模稳定偏好和长距离依赖,运动学分支擅长捕获局部变化趋势。二者在每个 Transformer 层内耦合,而不是简单地在输出端拼接。
第三,增强视图更符合序列语义。
动量引导的增强不是对任意维度随机加噪,而是利用运动学表示决定增强强度与方向,使对比学习更关注真实的兴趣演化轨迹。
第四,工程复现门槛相对可控。
核心差分操作由固定卷积核实现,不引入复杂的额外网络;官方代码和预训练模型均已公开,便于在统一实验协议下比较。
6.2 需要注意的问题
第一,KERec 主要建模“序列位置上的变化”,不是严格意义上的真实时间间隔建模。
“速度”和“加速度”是多尺度位置差分,而不是根据真实时间戳计算出的物理速度。如果两次交互之间相隔一天还是一个月,KERec 的默认实现并不能直接区分。
因此,在真实业务中,如果时间间隔、周期性和季节性非常重要,还需要额外加入:
- 时间间隔编码;
- 绝对时间或周期性时间嵌入;
- 连续时间状态空间模型;
- 神经 ODE 或时间感知注意力。
第二,多尺度集合需要针对数据分布调参。
Beauty 使用尺度 [1,3,5][1,3,5][1,3,5],Sports 和 Toys 使用 [1,2][1,2][1,2],LastFM 使用 [1,4,8][1,4,8][1,4,8]。这说明最佳尺度与数据集的采样频率、序列长度和兴趣变化速度紧密相关。
第三,高阶差分对异常行为可能较敏感。
一阶和二阶差分能够放大兴趣变化,也可能放大部分误点击或异常序列的影响。虽然对比学习与全局分支可以缓解这一问题,但在噪声很高的业务场景中仍需要额外的数据清洗和鲁棒性设计。
第四,官方实现包含增强视图的前向计算。
训练时同时编码原始视图和增强视图会增加计算开销。实际部署时需要评估是否保留增强分支、是否进行蒸馏,或者仅在训练阶段启用完整对比学习流程。
参考链接
- 论文主页:https://doi.org/10.1145/3805712.3809635
- 官方代码:https://github.com/yyt-1219/KERec
- 模型结构图:https://github.com/yyt-1219/KERec/blob/main/pics/model.png
KERec是一种新型序列推荐模型,将用户兴趣建模为具有位置、速度和加速度的连续运动轨迹。通过多尺度离散差分提取一阶速度与二阶加速度特征,结合全局上下文分支与运动学演化分支,在Transformer编码层内实现自适应融合;引入动量引导的对比学习,使增强视图沿真实兴趣变化方向构造。在Beauty、Yelp等五个数据集上验证了其在准确率、序列长度鲁棒性与噪声鲁棒性方面的优势。
281

被折叠的 条评论
为什么被折叠?



