1 研究背景与动机¶
1.1 冷启动崩塌问题¶
生成式推荐 (Generative Recommendation, GR) 将每个物品表示为一组离散语义 ID (Semantic IDs, SIDs),通过自回归模型预测下一个物品的 SID 序列来完成推荐。然而,GR 模型在冷启动物品上存在严重的冷启动崩塌 (cold-start collapse) 现象:推荐准确率接近于零。
作者在 Figure 1 中展示了三个 Amazon 数据集上的统计数据:
- Phone 数据集:cold item 的 NDCG@10 仅为 0.0014(warm item 为 0.0108),下降 -84.93%
- Video 数据集:cold item 的 NDCG@10 仅为 0.0023(warm item 为 0.0165),下降 -87.76%
- Software 数据集:cold item 的 NDCG@10 仅为 0.0005(warm item 为 0.0020),下降 -86.82%
1.2 现有方案的局限¶
传统解决方案是收集冷启动物品的交互数据后重新训练模型,但面临三大问题: 1. 稀疏反馈:冷启动物品缺少用户交互数据 2. 高计算成本:重训练代价高昂 3. 延迟更新:在新闻、短视频等需要实时推荐的场景中不可接受
1.3 从 NLP 模型编辑获得启发¶
NLP 领域的模型编辑 (Model Editing) 技术可以在不重训练的情况下向 LLM 注入新知识。然而,直接将 NLP 模型编辑迁移到 GR 面临两个根本性挑战(Figure 2):
- 缺乏主谓宾结构:NLP 中的编辑依赖句子的 subject-object binding(如 "The American President is ..."),但 GR 序列(SID 序列)没有显式的句子结构,难以定位编辑目标
- 缺乏稳定的 token 共现模式:自然语言中的短语(如 "Donald" 和 "Trump")有高共现概率(来自预训练语料),但冷启动物品的 SID 模式是模型未见过的,无法通过单次编辑同时注入多个 token
2 问题分析¶
2.1 冷启动崩塌的根源分析¶
作者设计了两个诊断实验(Figure 3),基于 Cell Phones and Accessories 数据集:
实验1:逐位置 NDCG 分析(Figure 3 左)
- 将四位 SID 逐步生成(position 0-3),观察前 n 个 SID token 的 NDCG
- 结果:Position 0 的 NDCG 最高(0.05 左右),之后急剧下降
- 结论:GR 模型通常能正确生成冷启动物品的第一个语义 ID(即粗粒度类别),但后续 token 生成越来越不稳定
实验2:IID Ratio 分析(Figure 3 右) 定义 IID Ratio@K 度量 top-K 推荐中属于当前测试子集(warm 或 cold)的物品占比:
$$\text{IID Ratio@K} = \frac{1}{|\mathcal{U}|} \sum_{u \in \mathcal{U}} \frac{|R_{iid} \cap \hat{R}_{u,K}|}{|R_{iid}|}$$
其中 $\mathcal{U}$ 是用户集合,$R_{iid}$ 是与当前测试集关联的物品集合,$\hat{R}_{u,K}$ 是 GR 模型生成的 top-K 物品。
结果显示 warm/cold 之间 IID Ratio 存在巨大差距:模型几乎不生成冷启动物品,即使推荐正确时也倾向于生成已见过的语义 ID 模式。
2.2 模型编辑在 GR 中的形式化¶
FFN 中的信息流:对于 Transformer 中的 FFN 层,给定隐状态 $h \in \mathbb{R}^{d_h}$:
$$k = \sigma(W_{\text{in}} h) \in \mathbb{R}^{d_0}, \quad z = W_{\text{out}} k \in \mathbb{R}^{d_1}$$
其中 $W_{\text{in}} \in \mathbb{R}^{d_0 \times d_h}$,$W_{\text{out}} \in \mathbb{R}^{d_1 \times d_0}$,$\sigma(\cdot)$ 为逐元素激活。$k$ 是 key-value memory 中的 key,$z$ 是 value。
编辑目标:对于第 $i$ 个编辑请求,运行模型获得激活向量 $k_i$,原始 FFN 输出 $z_i = W_{\text{out}} k_i$。寻找最小干预 $\delta_i$:
$$\delta_i = \arg\min_\delta -\log p_\theta(o_i \mid (s_i, r_i); z_i + \delta_i)$$
其中 $(s_i, r_i)$ 是编辑请求的上下文,目标是使模型更倾向于生成目标 token。
理想更新矩阵 $\Delta W_{\text{out}}^*$ 满足:
$$(W_{\text{out}} + \Delta W_{\text{out}}^*) k_i = z_i'$$
其中 $z_i' \triangleq z_i + \delta_i$。
GR 中的适配:由于 GR 序列缺乏显式主谓宾结构且不存在稳定 token 共现,作者将单个 token 作为编辑对象 $o$,将整个交互历史与冷启动物品的 SID 前缀作为 subject $s$,丢弃 relation $r$。每个编辑请求形式为 $\langle s_p, o_p \rangle$,其中 $p \in \{0,1,2,3\}$ 表示四位 SID 中的位置。
3 GenRecEdit 框架¶
GenRecEdit 由三个核心模块组成(Figure 4):
3.1 Position-Wise Knowledge Preparation(逐位置知识构建)¶
通过相似度匹配为冷启动物品构建伪交互历史:
Step 1:编码冷启动物品
$$e_c = f_{\text{enc}}(m_c)$$
其中 $m_c$ 是物品元数据信息,$f_{\text{enc}}(\cdot)$ 是编码器(使用 Sentence-T5)。
Step 2:检索相似 warm 物品
$$\text{sim}(c, j) = \cos(e_c, e_j) = \frac{e_c^\top e_j}{\|e_c\|_2 \|e_j\|_2}$$
$$\mathcal{N}_k(c) = \text{TopK}_{j \in \mathcal{I}_{\text{warm}}} \text{sim}(c, j)$$
Step 3:构建伪交互序列
对每个检索到的 warm item $j \in \mathcal{N}_k(c)$,提取用户的真实交互历史中 $j$ 之前的交互作为冷启动物品 $c$ 的伪交互历史。然后按位置拆分为编辑请求 $(s_p, o_p)$,其中 $s_p$ 由交互历史和冷启动物品的 SID 前缀组成,$o_p$ 是对应位置的 SID token。
3.2 Locate-Then-Edit Framework(定位-编辑框架)¶
3.2.1 Layer Location(层定位)¶
使用 probing classifier 定位最关键的编辑层。对于每个位置 $p$,从每一层 $l$ 提取 subject $s_p$ 最后一个 token 的激活 key $k_{p,i}^l$,训练线性分类器:
$$Cls(k_{p,i}^l) = \text{Sigmoid}(\langle \theta, k_{p,i}^l \rangle)$$
判断激活是否来自冷启动物品(编辑知识,标签1)还是原始训练数据(标签0)。数据集按 8:2 划分为训练集和验证集,选择分类准确率最高的层作为位置 $p$ 的编辑层 $l_p$。
3.2.2 Memory Construction(记忆构建)¶
对每个编辑请求 $(s_{p,i}, o_{p,i})$,在编辑层 $l_p$ 的 FFN 上计算目标向量 $z_i'$,使得将 $\delta_i = z_i' - z_i$ 加到隐状态后,模型能正确生成目标 token $T$。优化损失:
$$\mathcal{L}_{\text{edit}}(\delta_i) = \mathcal{L}_{\text{CE}}(\text{onehot}(o_{p,i}), p_\theta(\cdot \mid s_{p,i}; z_i + \delta_i))$$
其中 $\text{onehot}(o_{p,i}) \in \mathbb{R}^{|\mathcal{V}|}$。
3.2.3 Parameter Updating(参数更新)¶
将 $m$ 个编辑请求的 key 和 memory 堆叠为矩阵 $K_1 = [k_1 | k_2 | \cdots | k_m]$ 和 $Z_1' = [z_1' | z_2' | \cdots | z_m']$。参数更新通过最小化以下目标求解:
$$W_1 \triangleq \arg\min_{\tilde{W}} \left( \left\| \tilde{W} K_0 - Z_0 \right\|_F^2 + \left\| \tilde{W} K_1 - Z_1' \right\|_F^2 \right)$$
其中 $(K_0, Z_0)$ 是原始训练数据的 key-value 对,$(K_1, Z_1')$ 是冷启动物品的编辑对。
通过 block form 正规方程求解,最终得到闭式更新:
$$\Delta W = R K_1^\top \left( \lambda C_0 + K_1 K_1^\top \right)^{-1}$$
其中 $C_0 \triangleq K_0 K_0^\top$,$R \triangleq Z_1' - W_0 K_1$,$\lambda$ 控制保留原有知识和注入新知识之间的权衡。
3.3 One-One Triggering Policy(一对一触发策略)¶
推理时生成一个物品需要产生多个 SID token(4位),每个位置 $p$ 的编辑在不同层 $l_p$ 上执行。如果所有编辑层同时激活,不同位置间的编辑会相互干扰,导致不可预测的 token 输出。
解决方案:引入门控机制,在生成位置 $p$ 的 SID token 时,只触发对应层 $l_p$ 的编辑,其他位置的编辑保持不激活。这种 One-One 激活方式防止了跨位置耦合效应,确保每个位置的输出只受其对应编辑的影响。
4 实验¶
4.1 实验设置¶
数据集:Amazon Review 2023 的三个类别:
- Video Games (Video)
- Software
- Cell Phones and Accessories (Phone)
按时间戳排序,采用 timestamp-based protocol 严格划分 train/validation/test,无时间重叠。cold subset 在三个数据集中分别占 65.6%、24.3%、75.5%。
实现细节:
- Tokenization:Sentence-T5 编码元数据,$M=4$ 个 codebook,每个 $K=256$ 个码字,维度 $d=32$
- 骨干模型:T5,6 层 decoder,使用 gated-silu 激活(而非 ReLU,因为 ReLU 会导致 key 被截断为低秩,使矩阵求逆 ill-conditioned)
- RQ-VAE:multi-head,训练 10,000 epochs,Adam 优化器,学习率 $1e^{-3}$,batch size 2048
- $\lambda \in \{3000, 3000, 1000\}$(分别对应三个数据集)
评估指标:top-$k$ Recall 和 NDCG($k \in \{10, 20, 50\}$),以及 IID Ratio
Baselines:
- Item ID-based: SASRec, BERT4Rec
- Semantic ID-based: VQ-Rec, TIGER, LC-Rec
- Cold-start-based: Retraining, Finetuning, SpecGR
4.2 Overall Performance(Table 1)¶
Video 数据集:
| Metric | SASRec (Overall) | BERT4Rec (Overall) | VQ-Rec (Overall/Cold) | TIGER (Overall/Cold) | LC-Rec (Overall/Cold) | Retrain (Overall/Cold) | Finetune (Overall/Cold) | SpecGR (Overall/Cold) | GenRecEdit (Overall/Cold) |
|---|---|---|---|---|---|---|---|---|---|
| NDCG@10 | 0.0014 | 0.0019 | 0.0027/0.0000 | 0.0070/0.0020 | 0.0055/0.0012 | 0.0083/0.0044 | 0.0076/0.0103 | 0.0114/0.0051 | 0.0118/0.0123 |
| NDCG@20 | 0.0019 | 0.0028 | 0.0035/0.0000 | 0.0096/0.0030 | 0.0072/0.0017 | 0.0109/0.0058 | 0.0093/0.0125 | 0.0136/0.0062 | 0.0140/0.0141 |
| NDCG@50 | 0.0027 | 0.0044 | 0.0046/0.0001 | 0.0137/0.0052 | 0.0099/0.0028 | 0.0158/0.0096 | 0.0124/0.0164 | 0.0158/0.0075 | 0.0182/0.0176 |
| RECALL@10 | 0.0028 | 0.0046 | 0.0053/0.0000 | 0.0141/0.0043 | 0.0109/0.0026 | 0.0167/0.0094 | 0.0141/0.0191 | 0.0237/0.0106 | 0.0210/0.0209 |
| RECALL@20 | 0.0051 | 0.0081 | 0.0085/0.0001 | 0.0243/0.0083 | 0.0177/0.0045 | 0.0270/0.0148 | 0.0209/0.0281 | 0.0409/0.0195 | 0.0299/0.0283 |
| RECALL@50 | 0.0089 | 0.0163 | 0.0141/0.0006 | 0.0455/0.0197 | 0.0318/0.0102 | 0.0521/0.0344 | 0.0364/0.0475 | 0.0953/0.0504 | 0.0510/0.0457 |
Software 数据集:
| Metric | GenRecEdit (Overall/Cold) |
|---|---|
| NDCG@10 | 0.0370/0.0228 |
| NDCG@20 | 0.0475/0.0249 |
| NDCG@50 | 0.0601/0.0286 |
| RECALL@10 | 0.0706/0.0359 |
| RECALL@20 | 0.0480/0.0445 |
| RECALL@50 | 0.1754/0.0629 |
Phone 数据集:
| Metric | GenRecEdit (Overall/Cold) |
|---|---|
| NDCG@10 | 0.0064/0.0052 |
| NDCG@20 | 0.0078/0.0063 |
| NDCG@50 | 0.0098/0.0079 |
| RECALL@10 | 0.0108/0.0083 |
| RECALL@20 | 0.0144/0.0126 |
| RECALL@50 | 0.0369/0.0207 |
关键结论: 1. GenRecEdit 在 overall 和 cold subset 上均取得最佳或接近最佳性能,全面超越 item ID-based 和 semantic ID-based 方法 2. Semantic ID-based 方法一致优于 item ID-based 方法,因为语义 ID 可以分配给未见物品,使模型通过语义 token 推理冷启动物品 3. GenRecEdit 与 Retrain、Finetune、SpecGR 等冷启动专用方法相比也取得优异效果,但效率远高于它们
4.3 Warm Subset Performance(Table 2)¶
在 Phone 数据集上评估各冷启动方法对 warm subset 的影响:
| Method | IID R.@10 | N.@10 | N.@20 | R.@10 | R.@20 | Drop |
|---|---|---|---|---|---|---|
| TIGER | 0.7020 | 0.0108 | 0.0144 | 0.0215 | 0.0362 | -- |
| Retraining | 0.6181 | 0.0080 | 0.0104 | 0.0165 | 0.0259 | -25.9% |
| Finetuning | 0.1052 | 0.0014 | 0.0018 | 0.0022 | 0.0037 | -87.0% |
| SpecGR | 0.3329 | 0.0067 | 0.0081 | 0.0207 | 0.0389 | -38.0% |
| GenRecEdit | 0.6366 | 0.0101 | 0.0127 | 0.0186 | 0.0288 | -6.5% |
GenRecEdit 在 warm subset 上 NDCG@10 仅下降 6.5%,远优于 Retraining (-25.9%)、Finetuning (-87.0%) 和 SpecGR (-38.0%)。
4.4 Ablation Study(Table 3,Phone 数据集)¶
| Model | IID R.@10 | N.@10 | N.@20 | R.@10 | R.@20 |
|---|---|---|---|---|---|
| GenRecEdit | 0.7359 | 0.0064 | 0.0078 | 0.0108 | 0.0165 |
| w/o position-wise | 0.0220 | 0.0002 | 0.0002 | 0.0004 | 0.0005 |
| w/o classifier (random) | 0.7339 | 0.0059 | 0.0072 | 0.0100 | 0.0150 |
| w/o classifier (worst) | 0.6865 | 0.0055 | 0.0066 | 0.0094 | 0.0137 |
| w/o one-one triggering | 0.0030 | 0.0000 | 0.0001 | 0.0001 | 0.0002 |
结论: 1. Knowledge Preparation 和 One-One Triggering 是最关键的模块:去掉 position-wise 知识构建或 one-one triggering 后性能几乎降为零 2. Layer Location 的 probing classifier 也有正面贡献,选错层(worst)会导致明显性能下降
4.5 知识质量分析(Figure 5)¶
比较三种设置:
- Origin:不注入新知识
- Ours (GenRecEdit):注入构建的伪交互知识
- Upper Bound:注入真实交互历史
GenRecEdit 相比 Origin 有显著提升,但与 Upper Bound 之间仍存在较大 Quality Gap,表明伪交互历史的质量仍有较大改进空间。
4.6 知识数量分析(Figure 6)¶
随着每个冷启动物品注入的知识量增加:
- cold subset 上 IID Ratio@10 和 NDCG 持续上升
- overall test set 上 NDCG 先上升后下降,存在 warm/cold 之间的内在权衡
4.7 超参数 $\lambda$ 分析(Figure 7)¶
$\lambda$ 控制保留原有知识和注入新知识的权衡:
- $\lambda$ 增大:warm item 性能提升,cold item 性能下降
- 适度的 $\lambda$ 可以在 overall test set 上取得最优平衡
4.8 更新时间分析(Table 4)¶
| Model Update | Retraining | Finetuning | SpecGR | GenRecEdit |
|---|---|---|---|---|
| Type | Train | Train | Alignment | Edit |
| Relative Time | 100% | 18.1% | 41.6% | 9.5% |
GenRecEdit 仅需重训练时间的 9.5%,是效率最高的方法。
4.9 分类器层准确率分析(Figure 8)¶
- 跨位置一致:中间层到前面的层 probing 准确率更高,编辑作为等价线性变换在这些层更有效
- Position 3 的 probing 准确率在深层急剧下降,因为该位置的 SID token 多为非语义 token,new/old 知识难以区分
5 总结¶
GenRecEdit 是首个将模型编辑应用于生成式推荐冷启动场景的框架。核心贡献:
- 揭示冷启动崩塌现象:GR 模型能生成冷启动物品的第一个语义 ID,但后续生成不稳定,倾向于已见过的语义 ID 模式
- 三模块框架:Position-Wise Knowledge Preparation 构建伪交互历史 -> Locate-Then-Edit 通过 probing classifier 定位关键层并执行 FFN 编辑 -> One-One Triggering 防止多位置编辑干扰
- 高效实用:仅需 9.5% 的重训练时间,warm subset 性能仅下降 6.5%
局限性:伪交互历史的质量与真实交互仍有差距(Quality Gap),未来可改进知识构建方法。