“网球拍”和“羽毛球拍”在语言空间里很近;“攀岩鞋”和“镁粉袋”在文字上不那么像,却常被同一批用户连续购买。
这就是生成式推荐的核心张力:
语言语义回答:它是什么?
协同语义回答:谁会在什么上下文里要它?
TIGER 的 Semantic ID 主要由内容构造;GPTRec 的 SVD token 主要由行为构造。LC-Rec: Adapting Large Language Models by Integrating Collaborative Semantics for Recommendation 试图在预训练 LLaMA 中同时保存两者。
它的关键不是简单拼接两种 embedding,而是围绕“商品 ID ↔ 商品语言 ↔ 用户行为”设计一组互译任务。
30 秒看懂本文
- 前两篇留下的问题:内容 Semantic ID 有冷启动语义,却不等于协同行为;协同 token 有行为结构,却难调用 LLM 的世界知识。
- LC-Rec 的答案:用 LLaMA 内容 embedding 和 RQ-VAE 构造四级商品 index;用 Uniform Semantic Mapping 均匀分配末级 code;再通过序列、双向互译、意图与偏好任务对齐语言和协同空间。
- 最重要的证据:Arts 数据集上 LC-Rec 的 NDCG@10 为 0.0906,TIGER 为 0.0703;只用序列任务时为 0.0812,逐步加入互译、非对称预测、意图与偏好后升到 0.0906。
图 1:LC-Rec 不要求一个向量天然兼顾所有含义,而是用多个可监督方向建立翻译桥。
一个 ID 为什么需要两种语义
仍看八件商品:
| 商品对 | 语言关系 | 协同关系 |
|---|---|---|
| 网球拍—羽毛球拍 | 都是球拍,词义近 | 用户可能专注不同运动 |
| 攀岩鞋—镁粉袋 | 名词和类目不同 | 常在同一攀岩任务中出现 |
| 泳帽—运动毛巾 | 功能不同 | 游泳结束后的序列相关 |
如果 tokenizer 只重构标题,它可能把“所有球拍”放在一起;但推荐器真正需要的局部结构是“在此用户、此时刻,什么会跟着出现”。
LC-Rec 把商品索引当作 LLM 与目录之间的接口。一个理想 index 同时要:
- 从文本推断,所以新商品可被命名;
- 在历史中可预测,所以保留行为规律;
- 能反向生成文本,所以 code 不是完全黑箱;
- 唯一且合法,所以可做全目录检索。
用八件商品理解对齐任务
假设 I06 泳镜 的 index 为 <a17><b83><c41><d06>。
LC-Rec 让模型练习几种“翻译”。
序列任务 SEQ
<I01 index>, <I03 index>, <I05 index>, <I07 index>
→ <I06 index>
这是标准 next-item prediction,提供协同和顺序信号。
显式双向互译 MUT
“防雾训练泳镜” → <I06 index>
<I06 index> → “防雾训练泳镜”
正反两个方向迫使新增 index token 接入 LLaMA 原有语言空间。
隐式非对称预测 ASY
index 历史 → 下件商品标题
标题历史 → 下件商品 index
它防止模型只在“全是 code”或“全是文字”的封闭格式中工作。
意图与偏好 ITE / PER
论文用 GPT-3.5 从评论生成用户意图和显式偏好文本,再训练:
用户意图 → 商品 index
index 历史 → 偏好文字
这让行为序列得到可读解释,但也把合成标签的偏差带进训练。
图 2:商品 index 是枢纽;任务覆盖 code→code、text→code、code→text 三条信息流。
先解决碰撞:Uniform Semantic Mapping
LC-Rec 先用 LLaMA 对商品标题与描述取 mean pooling,得到内容 embedding;RQ-VAE 使用 4 个量化层、每层 256 个 code、32 维 code embedding,总共只需约 1000 个新增 token。
普通 RQ-VAE 可能让多件商品得到完全相同的 code。TIGER 追加任意 collision token;LC-Rec 在最后一层使用 Uniform Semantic Mapping(USM),把一个 batch 的残差近似均匀地分给所有 code。
可把它写成约束分配:
[ \min_q \sum_r\sum_k q(k\mid r)\lVert r-v_k\rVert_2^2 ]
[ \text{s.t.}\quad \sum_k q(k\mid r)=1,\qquad \sum_r q(k\mid r)=\frac{|B|}{K}. ]
- (r):进入末级量化的商品残差;
- (v_k):第 (k) 个 code;
- (q(k\mid r)):残差分给 code 的软分配;
- 第一条约束保证一件商品总共分配一次;
- 第二条约束让每个 code 在 batch 中获得相同总质量。
论文用 Sinkhorn–Knopp 求近似最优传输。它同时利用距离和容量,避免热门 code 被挤爆,也无需再加无语义的任意后缀。
模型从输入到输出发生了什么
所有 index code 被加入 LLaMA 词表。一次推荐输入可能是:
Instruction:
Given the user's interaction sequence, recommend the next item.
History:
<a12><b07><c44><d03> ...
decoder 生成四个 index token。推理时,目录构建成 prefix trie;任一位置不在合法子节点集合中的 token,其 logit 被设为负无穷。论文用 beam size 20 做全目录生成。
图 3:离线商品 index 接入 LLaMA 后,多任务微调负责把语言知识、行为序列和目录约束连接起来。
训练仍是各任务输出 token 的负对数似然:
[ \mathcal L =-\sum_{\tau\in\mathcal T}\sum_{(x,y)\in D_\tau} \sum_t\log P_\theta(y_t\mid y_{<t},x), ]
其中 (\mathcal T) 包含 SEQ、MUT、ASY、ITE、PER。每个样本每个 epoch 随机选择一种 instruction 模板,减少模型对固定措辞的依赖。论文微调 LLaMA 4 个 epoch。
实验究竟证明了什么
在 Instruments、Arts、Games 三个 Amazon 子集上进行 full-ranking:
图 4:LC-Rec 在三个子集都高于 TIGER;最强信息不只是总分,而是多类对齐任务的累积增益。
| 数据集 | TIGER | LC-Rec |
|---|---|---|
| Instruments | 0.0803 | 0.0926 |
| Arts | 0.0703 | 0.0906 |
| Games | 0.0501 | 0.0681 |
Arts 的逐步消融:
| 训练任务 | NDCG@10 |
|---|---|
| SEQ | 0.0812 |
| + MUT | 0.0832 |
| + ASY | 0.0848 |
| + ITE | 0.0889 |
| + PER | 0.0906 |
Games 也从 0.0535 依次升到 0.0681。意图和偏好文本贡献较大,说明 LLM 的语言能力只有在被任务显式连接到 index 后,才会转化为推荐收益。
论文还构造了语义相似负例来区分语言与协同判断。LC-Rec 在 language negatives 上准确率 75.73%,SASRec 为 73.52%;在 collaborative negatives 上是 60.01% 对 52.25%。这支持“二者都保留了一些”,但 60% 也说明协同辨别远未解决。
它失败在哪里
1. tokenizer 仍然离线
商品 index 在 LLM 推荐训练前冻结。生成器只能适应既定 code,推荐梯度不能修正不利于预测的量化边界。
2. 辅助语言是合成的
用户意图与偏好由 GPT-3.5 从评论生成。提升可能来自有价值的抽象,也可能继承生成模型的模板化、幻觉与信息泄露。没有评论的用户如何构造同等质量监督,仍不清楚。
3. 服务成本高
7B 级 LLaMA 加 beam 20 的全目录自回归解码,远重于 SASRec 点积或 ANN。实验目录约万级,未证明大规模延迟与吞吐。
4. 通用能力与推荐能力可能冲突
加入约 1000 个 code token 并对 LLM 做多任务微调,可能改变原有语言能力。论文提到这种风险,但没有系统评估灾难性遗忘或指令泛化。
5. index 版本仍是系统状态
重训 RQ-VAE 会改变 code;模型权重、历史转换、合法 trie 与缓存都要原子升级。USM 解决同一版本内的分配,不解决跨版本身份稳定。
下一篇为什么会出现
LC-Rec 说明多任务对齐可以把语言与协同信号接起来,但 tokenizer 本身仍主要以内容重构为目标。我们需要直接问:
什么样的商品 ID 才是“为推荐而生”的好 ID?
它至少要同时满足:
- 层次语义:共享前缀有含义;
- 协同一致:被相似用户消费的商品在 code 空间靠近;
- 分配多样:码本不要塌缩到少数热门 code。
下一篇 LETTER 会把这三条写成 tokenizer 的三个损失,并进一步用 ranking-guided generation 让 ID 学习与排序指标靠近。
本篇批判性结论:LC-Rec 真正推进的是“接口对齐”,而不是证明语言语义与协同语义已经合成一个完美空间。多向翻译任务让同一商品 index 能在不同模态间流动;但 tokenizer 冻结、合成监督和昂贵解码仍把它留在实验系统阶段。