一个 LLM 知道《教父》是犯罪电影,知道《钢铁侠》是超级英雄电影,也能解释两者的导演、年代与主题。
但你告诉它:
用户喜欢《教父》,不喜欢《星球大战》。
他会喜欢《钢铁侠》吗?
它真的在预测这个用户,还是在复述“大多数人可能喜欢什么”?
上一篇 M6-Rec 展示了预训练语言模型覆盖工业推荐任务的潜力。但庞大的系统和域内数据让一个问题不容易被单独看清:通用语言预训练本身究竟带来了多少推荐能力?
TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Model with Recommendation 用一个很干净的实验回答:
直接 prompt 通用 LLM,推荐表现接近随机;把少量用户偏好数据改写成 instruction,再用 LoRA 微调,能力才真正出现。
它把 2023 年 LLM4Rec 的关键词从 prompting 改成了 alignment。
30 秒看懂本文
- M6-Rec 留下的问题:大底座在复杂工业训练后有效,不代表一个通用 LLM 天然会根据个人历史判断喜欢。
- TALLRec 的答案:先用 Alpaca 指令数据维持通用 instruction following,再把推荐日志改写为“历史 + 目标商品 → Yes/No”,两阶段都只更新 LoRA 低秩参数。
- 最重要的证据:Movie 64-shot 中,最强传统基线 AUC×100 为 51.71,TALLRec 为 67.48;Book 64-shot 从 50.06 到 60.39。LLM 零样本基线接近 0.5,说明 domain gap 真实存在。
图 1:世界知识可以解释商品,却没有自动提供“这个用户会不会喜欢”的监督方向。
上一篇留下了什么问题
通用 LLM 的预训练数据主要由网页、书籍、代码和对话构成。它的典型目标是:
推荐系统的目标却是:
两者都能写成文本,不代表条件分布相同。
语言语料会教模型:
- “泳镜”属于游泳装备;
- 攀岩鞋通常需要抓地力;
- 羽毛球和网球都是球拍运动。
却很少明确教它:
- 小林点击而小周未点击意味着怎样的个体差异;
- 五星和一星怎样映射到偏好边界;
- 同一件热门商品对不同用户为何要给不同分数。
如果只做 in-context learning,模型可能依赖流行度、常识或候选描述,而没有学会推荐日志中的决策边界。
用八件商品构造 rec-tuning 样本
TALLRec 将一条推荐记录整理成三部分。
1. 历史按喜欢 / 不喜欢分组
假设小林的评分是:
喜欢:I01 网球拍、I03 攀岩鞋、I05 羽毛球
不喜欢:I07 瑜伽垫
Movie 数据中,评分大于 3 视为喜欢;不高于 3 视为不喜欢。Book 数据使用自己的阈值。
2. 给出一个从未见过的目标商品
目标:I06 泳镜
标题与简介:用于游泳训练的防雾护目镜……
3. 输出二元标签
Instruction:
根据用户历史,判断他是否会喜欢目标商品。
只回答 Yes 或 No。
Output:
Yes
图 2:答案来自真实评分 / 行为标签,而不是 LLM 自行推测。自然语言只是承载监督的格式。
八件商品的完整目录仍在,但 TALLRec 每次只判断一个 target。这是pointwise preference prediction,不是直接从八件中生成 Top-K。
模型从输入到输出发生了什么
1. Alpaca tuning
先用通用 self-instruct 数据训练 LLaMA,使它理解各种“指令—输入—答案”关系。这个阶段不教推荐偏好,主要保留任务理解与回答格式。
2. Rec-tuning
再用上述推荐样本训练。Prompt 中包含:
- 任务说明;
- 喜欢和不喜欢的历史商品文本;
- 目标商品文本;
- 期望输出
Yes或No。
3. 两阶段都用 LoRA
对 Transformer 某个权重矩阵 ,LoRA 不更新整矩阵,而学习低秩增量:
其中 rank 。原始 LLaMA 参数冻结,只保存小得多的 。
论文使用 LLaMA-7B,报告可以在单张 RTX 3090 上完成训练。这里的“高效”指参数高效与显存可承受,并不表示 7B 模型线上推理便宜。
图 3:第一阶段学习遵循通用指令,第二阶段学习偏好边界;LoRA 是实现手段,不是监督来源。
核心公式逐项拆解
TALLRec 的 rec-tuning 目标是:
- :冻结的 LLaMA 原始参数;
- :LoRA 的低秩可训练参数;
- :推荐 instruction 数据;
- :历史、目标商品和任务说明;
- :目标答案,主要是
Yes或No; - :加入低秩增量后的语言模型。
答案只有一两个 token 时,这就是用语言模型头实现的二分类。推理可读取 Yes 的生成概率作为偏好分数,再用 AUC 衡量正样本是否排在负样本之前。
关键不是公式比普通 SFT 更新。关键是 将推荐信号放进模型能理解的 instruction 格式,而 让小数据不必重写 70 亿参数。
训练和推理分别怎么做
# stage 1: general instruction alignment
freeze LLaMA weights Phi
train LoRA parameters on Alpaca instruction pairs
# stage 2: recommendation alignment
for each user-target example:
split history into liked and disliked items
insert item title and description
label output as Yes or No
update LoRA with causal language-modeling loss
推理:
prompt = format(history, target_item)
logits = TALLRec(prompt)
score = P("Yes") / [P("Yes") + P("No")]
rank or classify the target by score
严格实现时要固定答案词与 tokenizer:
Yes和yes可能是不同 token;- 模型若生成解释而非单个答案,需要解析或约束;
- AUC 应使用概率,不能只把生成字符串硬转成 0/1。
实验究竟证明了什么
论文使用 Movie 与 Book 两个域,分别抽取 16、64、256 条训练样本。Table 3 的 AUC×100:
| 域 / shots | 最强传统或 BERT 增强基线 | TALLRec |
|---|---|---|
| Movie / 16 | 50.85 | 67.24 |
| Movie / 64 | 51.71 | 67.48 |
| Movie / 256 | 54.20 | 71.98 |
| Book / 16 | 50.07 | 56.36 |
| Book / 64 | 50.06 | 60.39 |
| Book / 256 | 50.20 | 64.38 |
图 4:数值来自原论文 Table 3。所有方法使用相同数量的 few-shot 训练样本。
这组结果说明两件事。
第一,传统序列模型在 16–256 条样本下几乎学不到稳定边界;预训练 LLM 的先验显著提高样本效率。
第二,论文 Figure 3 中直接 in-context prompt 的 Alpaca-LoRA、GPT 系列模型接近随机,经过 rec-tuning 才跃升。模型参数里有知识,不等于任务能力已经可用。
Ablation 进一步区分:
- 只做 Alpaca tuning(AT)明显弱于 rec-tuning;
- 数据不超过 128 条时,Alpaca + rec-tuning 通常优于只做 rec-tuning;
- 数据增多后两者差距缩小,说明通用 instruction prior 的价值在极低数据区最明显;
- 用电影域训练的模型可向图书域迁移,反之亦然,但同域 / 混合数据通常更强。
它失败在哪里
1. 任务被缩成 Yes/No
TALLRec 判断一个给定商品是否喜欢,不解决百万商品召回,也不直接生成一个合法 Top-K 列表。候选从哪里来,仍是外部问题。
2. 实验规模很小
Movie 来自处理后的 MovieLens-100K 最近 10,000 条记录;Book 的历史因缺少时间戳采用随机采样。两域和几百条训练样本不足以代表广告、短视频或电商全链路。
3. 文本可能泄露流行度与标签捷径
标题和简介能提供强语义,但模型可能学习一般受欢迎程度,而非个体协同偏好。论文没有用严格反事实实验完全分离两者。
4. LoRA 解决训练成本,不解决推理成本
只训练千分之一参数,前向仍经过 LLaMA-7B 的主体。高 QPS 排序需要量化、蒸馏、缓存或更小模型。
5. 历史被压成十件商品
模型没有面对真正的长期用户:几百次跨主题点击、兴趣漂移、重复行为和噪声事件都不在主要实验里。
6. AUC 不等于推荐列表质量
二元目标没有评估列表多样性、新颖性、校准、曝光偏差或在线用户价值。
下一篇为什么会出现
TALLRec 证明少量 rec-tuning 可以跨越 domain gap。很自然的下一步是:把更多历史放进 prompt,模型是不是会持续变好?
答案出人意料。LLM 明明还远没用完 context window,历史增加到某个长度后,AUC 却开始下降。它不是“装不下”,而是“抓不住”。
下一篇 ReLLa 会把这个现象命名为 lifelong sequential behavior incomprehension,并用目标相关的行为检索 SUBR 与检索增强微调 ReiT 解决:长上下文时代,选择什么往往比塞入多少更重要。
论文:Bao et al., “TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Model with Recommendation,” RecSys 2023.
系列导航:二十篇论文看懂生成式推荐的前世今生