第四部分 · LLM 与生成式建模在广告排序与推荐系统中的应用¶
每次你打开短视频 App、刷社交信息流,或者在搜索结果旁边看到一条广告,背后都是一个推荐系统在几十毫秒内,从数百万乃至数十亿的候选中挑出了寥寥几条。这类系统是地球上规模最大的机器学习应用之一:每天要在数百亿条用户行为上训练,决定着数十亿人看到什么,对靠广告赚钱的公司来说,更决定了大部分收入从哪里来。
十多年来,工业界的推荐系统和语言模型长得很不一样:它们由巨大的 ID embedding 表、人工设计的特征交叉网络,以及一条逐级缩小候选集的级联(cascade)多模型链路搭起来。2024 年以来,这一局面正在快速改变。你在第 1–3 部分学过的那些思想——对序列做 Transformer、scaling law、next-token prediction、基于 RL/DPO 的偏好对齐,以及借助 KV cache 的高效推理——正被迁移过来,催生出生成式推荐(generative recommender)和大推荐模型,它们的效果会随算力增长而可预测地提升。
这一部分从零开始讲这个领域。我们先讲清楚经典的推荐与广告系统到底是怎么运转的(这样你才知道什么被替换了、为什么要换),然后逐步推进到基于语义 ID 的生成式召回、用 RL 对齐的端到端生成式推荐、把 LLM 当作推荐器和特征提供者,最后落到广告的经济学:竞价、校准和自动出价。
先修知识与学习时间¶
- 数学: 线性代数(点积、矩阵乘法)、概率(伯努利分布、期望、贝叶斯公式)、求梯度所需的基础微积分。
- 代码: Python 与基础 PyTorch(
nn.Module、nn.Embedding、优化器训练循环)。 - 本站内容: 第 1 部分的 Transformer 与 next-token prediction;第 2 部分的 DPO 与基于 RL 的对齐;第 3 部分的 KV cache、batching 与推理成本。每一章都会回链到它所复用的具体思想。
- 预计时间: 阅读加练习约 25–35 小时;如果把所有动手项目都做完,时间翻倍。
章节地图¶
| 章节 | 你将学到什么 |
|---|---|
| 4.1 推荐系统基础 | 推荐问题的定义、反馈类型、多阶段级联、带 sampled softmax 的双塔召回、ANN 检索、离线与在线指标、反馈回路与流式训练 |
| 4.2 精排与 CTR 模型 | 作为分类问题的 CTR 预估、embedding 表、LR → FM → Wide & Deep → DCN → DLRM、目标注意力(DIN)、多任务学习、分数融合、校准、embedding collapse |
| 4.3 用户行为序列建模 | 用户行为序列、SASRec("item ID 上的 GPT")、BERT4Rec、终身序列(基于检索的兴趣模型)、实时 vs 离线用户 embedding、基础用户模型 |
| 4.4 推荐模型的 Scaling | DLRM 为什么会遇到瓶颈、推荐系统的 scaling law、HSTU / Generative Recommenders 详解、Wukong、RankMixer、MTGR、LUM、MARM、算力预算 |
| 4.5 语义 ID 与生成式召回 | 向量量化与残差量化、RQ-VAE、语义 ID 冲突、TIGER、带 trie 约束解码的 beam search、排序中的语义 ID、生成式召回 vs 稠密召回 |
| 4.6 端到端生成式推荐 | 用一个模型取代级联:OneRec、reward model、迭代式 DPO 与 RL、OneRec-V2、推荐中的推理、PLUM、开放问题 |
| 4.7 LLM 在推荐中的应用 | LLM 作为推荐器、作为离线知识/特征提供者、作为用户/物品编码器;360Brew、RecGPT;延迟与成本的设计模式 |
| 4.8 广告系统 | 广告竞价(eCPM、GSP、VCG)及带数值的定价示例、校准为何重要、转化建模与延迟反馈、预算/pacing/自动出价、生成式出价与生成式广告 |
心智模型¶
经典的工业级推荐栈是一个由越来越昂贵的模型组成的漏斗,每一级打分的候选越来越少:
候选池:10^6 – 10^10 个物品(视频、帖子、商品、广告)
│
┌──────────────────────────▼──────────────────────────┐
│ 召回(双塔 + ANN,多路并行) │ 输出约 10^3–10^4 (4.1 章, 4.5 章)
└──────────────────────────┬──────────────────────────┘
┌──────────────────────────▼──────────────────────────┐
│ 粗排(轻量模型,通常也是双塔) │ 输出约 10^2–10^3 (4.1 章)
└──────────────────────────┬──────────────────────────┘
┌──────────────────────────▼──────────────────────────┐
│ 精排(重型多任务 CTR/CVR/观看时长模型) │ 逐个打分 (4.2 章, 4.3 章, 4.4 章)
└──────────────────────────┬──────────────────────────┘
┌──────────────────────────▼──────────────────────────┐
│ 重排 / 竞价(多样性、策略、广告 eCPM) │ 最终展示约 10 个 (4.8 章)
└──────────────────────────┬──────────────────────────┘
▼
用户屏幕 ──► 点击、观看、跳过 ──► 训练日志(回流)
每个方框都正在用 LLM 的思想重新审视。下面这张对照表是整个第四部分的主线:
| 经典架构 | 生成式 / LLM 架构 | 所在章节 |
|---|---|---|
| 物品 = 巨大稀疏表中的随机 ID embedding | 物品 = 语义 ID:由内容导出的一小段离散 token 序列 | 4.5 |
| 模型变大后就不再提升的特征交叉 DNN(FM、DCN、DIN) | 作用于用户行为历史的序列 Transformer(HSTU),以及遵循 scaling law 的 GPU 友好骨干网络(RankMixer、Wukong) | 4.3, 4.4 |
| 彼此独立的召回 → 精排 → 重排模型 | 一个生成式模型直接解码出推荐列表(OneRec) | 4.6 |
| 针对日志点击的 pointwise CTR loss | 下一行为预测 + 偏好对齐(reward model、DPO、RL) | 4.6 |
| 人工设计的文本/图像特征 | LLM / 多模态 embedding、LLM 生成的知识、LLM 对意图的推理 | 4.7 |
| 手工调参的竞价 + RL 出价器 | 生成式自动出价(diffusion)与端到端生成式广告 | 4.8 |
开始之前,值得先记住推荐系统与 LLM 的四点差异,因为你之后看到的大多数设计选择都能用它们来解释:
- 词表。 LLM 的词表只有约 10^5 个 token 且永远不变;推荐系统有 10^8–10^10 个物品,每天还有数百万个被创建、被下线。
- 数据。 训练数据是非平稳的数据流。模型在线训练,通常每个样本只看一遍,若不及时更新,几天内效果就会衰退。
- 延迟与扇出。 一次请求必须在几十毫秒内返回,而精排模型在极高的 QPS 下,每次请求要给数百到数千个候选打分。
- 钱。 在广告里,预测概率要乘以出价、进而决定价格。预测必须是校准过的,而不仅仅是排序正确。
如何学习这一部分¶
- 按顺序读 4.1 → 4.2 → 4.3;它们是后面所有章节默认你已掌握的"经典"基础。做一下代码练习:带 in-batch 负样本的双塔模型、FM 层、DIN 注意力单元,以及 SASRec。
- 接着读 4.4(scaling)和 4.5(语义 ID);两者相互独立,并且都会汇入 4.6。
- 读 4.6 之前,先回顾第 2 部分的 DPO 与 RL。
- 4.7(LLM 在推荐中的应用)在读完 4.3 之后的任何时候都可以读。
- 最后读 4.8(广告);它会用到 4.2 的校准和 4.6 的生成式建模。
建议的动手项目(至少选两个):
- 在 MovieLens-1M 或 Amazon Reviews 上训练 SASRec;再训练一个 GPT 风格的下一物品模型,确认两者其实是同一个思想(4.3)。
- 构建语义 ID:用句子编码器对物品文本做 embedding,训练一个 RQ-VAE(3 层 × 每层 256 个码字),检查相似物品是否共享前缀(4.5)。
- 实现 TIGER 风格的、带 trie 约束 beam search 的生成式召回(可从 GRID 入手);与双塔基线比较召回率,尤其是在冷启动物品上(4.5)。
- 运行 Meta 开源的 generative-recommenders(HSTU)仓库,画出效果随模型规模变化的曲线(4.4)。
- KAR 风格实验:让 LLM 离线撰写用户兴趣摘要,对其做 embedding 后作为特征加入 DIN 或 DCN-V2 的 CTR 模型,度量 AUC 提升(4.7)。
- 用点击 vs 跳过的偏好对,通过 DPO 对齐一个小型生成式推荐器(4.6)。
- 用一个未校准的 pCTR 模型模拟 GSP 竞价,度量其对收入和广告主成本分布造成的扭曲(4.8)。