Skip to content

推荐与广告中的 RL

本页速览 把用户当环境:列表页排序、实时出价、探索与收入的权衡;淘宝/阿里妈妈、字节等公开技术;bandit 到全 RL 的工程演进与离线评估困境。

推荐与广告中的 RL ​

一句话定位:这一页讲清楚推荐与广告系统里 RL 的真实用法——为什么它天然是 RL 场景、业界先从 contextual bandit 起步、列表排序和实时出价如何用 RL、以及"离线评估难、在线试错贵"这个贯穿始终的工程困境。

一、为什么推荐/广告是 RL 场景 ​

1. 三个"序列"属性 ​

传统推荐把"给你推什么"当作独立的分类/排序问题(每个请求独立决策)。但真实业务有三个序列属性,让 RL 有了用武之地:

属性含义对建模的影响
用户状态用户是会演化的状态:看了什么、点了什么改变未来行为单请求决策丢失状态,MDP 天然适配
延迟反馈点击 → 转化(下单/注册)往往隔几分钟到几天奖励延迟,需要价值学习而非即时监督
探索-利用推送未知内容才能发现新兴趣,但探索有短期收入代价这是 bandit/RL 的立身之本

一句话:推荐/广告的问题不是"预测用户喜欢什么",而是"决策下一步推什么"。前者是监督学习(点击率预测 CTR),后者是序列决策——RL 的领域。

2. 商业指标与"奖励"的映射 ​

text
用户(状态 s) → 平台推内容(动作 a) → 用户行为(反馈) → 商业奖励 r

s = 用户画像 + 近期行为序列 + 上下文(时间/设备)
a = 一个 item 或一个候选列表(slate)
r = 点击?转化?停留时长?GMV? — 由产品目标决定的加权和

TIP

推荐/广告是"奖励工程"最好的教学现场:点击率、转化率、GMV、用户时长、多样性、新鲜度各有各的权重,权重就是产品决策。同一个用户,把"停留时长"权重调高,系统会推更"上瘾"的内容;把"GMV"调高,会推更贵的商品。奖励怎么定,行为就怎么长——详见奖励工程。

二、第一站:Contextual Bandit ​

1. 为什么业界从 bandit 开始 ​

完整 RL 需要建模"状态转移",工程上贵且难验证。contextual bandit 砍掉状态转移:每个请求独立决策,立即观察奖励,目标是"在当前上下文下选最优动作"。它适合推荐的第一版 RL 化改造,因为:

  • 实现简单、能在线更新、有遗憾(regret)理论保障;
  • 与已有 CTR 模型兼容(把 bandit 建在 CTR 预估之上);
  • 上线风险可控。
对比项Contextual Bandit完整 RL
状态有上下文,无状态转移状态 + 转移
决策时长单步多步序列
需要价值函数/规划否是
工程复杂度低高
适用冷启动、单次决策优化序列推荐、长期价值

2. 三种核心算法 ​

算法思路特点
ε-greedy以概率 ε 随机探索最简单,探索无目标
LinUCB线性模型 + 置信上界:点击率预测 + c·√(xᵀA⁻¹x)有理论保障,工业常用
Thompson Sampling参数后验采样,按采样值选动作贝叶斯、实用效果好

Li et al. (2010) 在雅虎新闻推荐上比较了 LinUCB 与 ε-greedy 等,离线评估(基于历史日志的 replay)下 LinUCB 比人工挑选的内容点击率提升约 12%+。这个经典案例的完整推导见多臂老虎机页。

3. bandit 的边界 ​

bandit 假设"本次决策不影响下次"——但推荐里推了一个视频后用户下次看到的就是全新的流,状态确实在演化。所以业界共识是:bandit 是第一站,不是终点。当需要"考虑长期回报"(如让用户养成熟客)时,要上完整 RL。

4. 冷启动:bandit 最成熟的落地场景 ​

推荐系统里最穷的场景是冷启动:新内容没有任何点击数据、新用户没有任何行为历史。此时"均匀随机探索"性价比极低,bandit 的"不确定性感知"特性恰好发挥价值:

冷启动对象用 bandit 做什么典型配置
新内容决定给多少流量、给谁UCB/TS,探索量随曝光衰减
新用户先广泛试探再收敛兴趣ε 较大,随行为积累递减
新物品池决定推荐池排序Thompson Sampling 商品打散

工程细节:工业实现几乎从不把 bandit 单独跑,而是嵌进 CTR 预估模型——先有一个基础预估,bandit 在"不确定性修正"层叠加。这样既保留机器学习的主体能力,又获得探索能力。这个"基础模型 + 探索层"的两段式架构,是推荐/广告里 bandit 落地的主流形态。

三、列表排序:从 pointwise 到 sequence-wise RL ​

1. 排序问题的三种建模 ​

text
pointwise:  对每个 item 独立打分 → 排序
pairwise:   比较两两 item 的偏好
listwise:   把整个列表作为输入输出 → 序列决策

RL 登场的关键是 listwise(列表视角):列表里的 items 有组合效应——放什么和放哪里、彼此是否重复、用户可能只点一个。用 RL 的术语:动作 = 选择整个 slate,而不是逐个 item。

2. 经典案例:YouTube 的 slate RL ​

YouTube(Chen et al., 2019)发表了一个"可解的组合"框架:把"选择 top-k 的列表"分解为可加和的项,并解决off-policy 评估——因为线上日志来自旧策略(行为策略),不能用"旧策略的数据直接算新策略的回报"。他们用top-k off-policy correction:每个位置的 item 根据"它被选中的概率差"重新加权,得到无偏(至少低偏)的价值估计。

关键思想:推荐日志是"旧策略"采样的,评估"新策略"必须做
重要性加权:
  Û(π_new) ≈ Σ_logs  [ π_new(a|x) / π_old(a|x) ] · r

但 top-k 的组合空间太大,YouTube 把它分解到逐位置,工程上可行。

3. 淘宝搜索的 DQN 变体 ​

Zhao et al. (2018) 在淘宝搜索推荐上把问题建成了 MDP,用 DQN 变体训练排序策略。其工程挑战非常有代表性:

  • 动作空间巨大:一次排序要处理上千个候选 item,直接枚举动作不可行,他们用"在候选中逐个决策"的方式化解。
  • 状态表示:用户行为序列(点击/购买序列)+ 候选 item 特征。
  • 奖励:用户行为信号的加权(点击、加购、成交等)。
  • 上线时用了"混合策略":RL 策略只决定部分位置的 item,其余位置保留原有排序,以控制风险。

4. slate 的组合爆炸与工程分解 ​

列表排序 RL 的第一个敌人是组合爆炸:从 1000 个候选里选 10 个的排列数约 1000^10,任何"枚举所有 slate"的方法都不可行。工程上四种分解策略:

策略做法代价
逐个位置决策一次决定一个位置,已选的不再选(淘宝做法)忽略位置间高阶交互
可加和分解假设 slate 总价值≈各 item 价值之和(YouTube)忽略"选了A就不用B"的互补性
候选预筛 + RL 排序先用轻量模型筛到几百,再用 RL 排前几名预筛质量成为瓶颈
隐式顺序建模把位置当序列输入,用 RNN/Transformer 建模训练与推理成本高

关键取舍:位置间交互(重复、互补、竞争)越重要,越该用完整的序列建模;但序列建模越贵、越难评估。工业界默认从"逐个位置 + 分解"起步,只有在消融中确认"组合效应"显著时才升级——这正是评估实践页"从简单开始"的纪律。

WARNING

淘宝/YouTube 论文里的收益数字(如"转化率提升 X%")都是特定流量、特定时间段、混合策略下的 A/B 结果。它们在工程上真实,但不构成"RL 一定比现有排序好"的一般结论。读这类工业论文要看"实验设置"小节:对照组是谁、流量占比、是否只改部分位置——这正是评估与基准页说的"评估协议决定结论"。

四、实时出价(RTB):竞价中的 RL ​

1. 广告拍卖的机制 ​

程序化广告中,每次广告展示都是一场实时拍卖(Real-Time Bidding, RTB):广告主(或其代理)对曝光机会出价,价高者得。于是决策变成了"看到一次曝光,出多少价":

text
状态 s:这次曝光的信息(用户画像、页面、上下文)+ 预算余额 + 剩余时间
动作 a:出价 bid(连续或离散分档)
奖励 r:若赢得拍卖 → 曝光,并按点击/转化结算;若没赢 → 0
约束:预算约束(一天花多少钱)——这是带约束的 MDP

2. RL 出价策略 ​

Cai et al. (2017) 等将出价建模为 RL,学习"出价-赢得-回报"的映射,目标是在预算约束下最大化转化。工业界(阿里妈妈、字节、腾讯广告等)的公开技术报告表明出价策略已普遍 RL 化(如 DRLB、非线性出价等变体),但细节多为内部资料。

3. 多智能体视角:拍卖本就是博弈 ​

RTB 的关键洞察:所有广告主都在用策略出价,市场出清价是由全体参与者的行为共同决定的——这本质是多智能体强化学习里的博弈问题。独立学出价的广告主会互相"军备竞赛"推高出价。因此业界的务实做法是:把其他参与者当作"环境噪声",用 bandit/RL 学单边最优出价,而不是真的建模对手(那是 MARL 研究话题)。

4. 出价 RL 的工程要点 ​

把出价 RL 工程化时有几个绕不开的细节:

text
1. 二价拍卖(second-price auction):赢家付第二名出价 → 出价≠支付价
   RL 学习的目标是"赢下便宜的展示",出价策略要利用这一点
2. 预算约束:一天预算有限,出价要"前松后紧"还是"前紧后松"取决于目标
   → 常把预算写进状态,用"剩余预算/剩余时间"特征
3. 延迟结算:点击/转化发生在出价之后很久 → 奖励延迟,需价值估计而非即时监督
4. 出价粒度的连续性:离散分档 vs 连续出价,影响 RL 动作空间的设计

这些细节和金融交易中的 RL的订单执行问题高度同构:同样是"用策略优化出价/下单,奖励延迟,约束(预算/滑点)显式"。广告出价是"有清晰模拟器"的金融 RL——这也是它能先落地的原因。

五、工程现实:离线评估难、在线小步试错 ​

1. 为什么推荐 RL 的评估这么难 ​

障碍说明
离策略评估线上日志来自旧策略,直接算新策略回报有偏差;需要反事实校正(importance weighting)
反事实问题日志里"没推过的内容没有反馈",无法知道如果推了会怎样
反馈延迟转化隔数天,训练与评估时间窗难对齐
商业护栏探索太多立刻伤收入,探索太少永远学不到

Bottou et al. (2013) 的 Counterfactual Reasoning and Learning Systems 是这一问题的奠基论述:"基于历史日志做 A/B" 本质是反事实推理,必须做无偏校正。这也是离线强化学习页讨论的核心困难之一。

2. 工业级的三级评估阶梯 ​

text
第 1 级  离线(offline):日志 replay、反事实评估 → 快速筛掉明显差的策略
第 2 级  影子(shadow):新策略旁路输出、不打流量 → 看"如果上线会怎样"
第 3 级  在线 A/B:小流量(如 1%–5%)分桶 → 统计显著后才全量

每一级都有坑:离线评估被日志分布欺骗、影子模式忽略"策略影响用户状态"、A/B 需要大量流量才显著。工程纪律是层层递进、任何一级都不可跳过。

DANGER

推荐/广告里最经典的"评估作弊"是用同一份历史日志反复调参,直到离线指标最好,然后宣称策略有效。这等于用测试集调超参,离线分数必然虚高。正确做法是离线数据也要划分时间窗:训练窗、验证窗、评估窗(时间上严格先后)。这就是评估与基准页反复强调的协议问题。

3. 反事实评估的实现细节 ​

"用历史日志评估新策略"(离线策略评估,Off-Policy Evaluation)有标准的实现要点:

text
基本公式(重要性加权):
  V̂(π_new) = (1/N) · Σᵢ [ π_new(aᵢ|xᵢ) / π_old(aᵢ|xᵢ) ] · rᵢ
  权重 = 新策略选该动作的概率 / 旧策略选该动作的概率

三个工程修正:
  1. 权重大小截断(clip):避免单个样本权重爆炸 → 有偏但方差大减
  2. 自归一化(self-normalized):权重除以它们的和 → 无偏性更好
  3. 仅在"旧策略覆盖"的日志上评估:新策略喜欢的动作在日志里几乎没出现时,权重方差爆炸

判断一份离线评估是否可信的三问:日志来自哪个行为策略?权重是否 clip/归一?动作覆盖度够不够?——三个问题有一个答不上来,评估结论就当不了决策依据。这也是离线强化学习页"离线评估难"的核心。

六、探索成本与商业护栏 ​

1. 探索的"钱"问题 ​

在推荐/广告里,探索不只是学术问题,是真金白银:把 1% 的流量拿去做"未知内容"实验,若这些内容的收入只有均值的一半,每天就损失约 0.5% 的 GMV——对超大平台那是天文数字。

策略探索占比收入影响适用
ε-greedy固定 ε(如 1%–5%)直接损失约 ε×差额简单、可控
UCB/TS自适应探索集中在"不确定性高"处冷启动、新内容
个性化探索按用户/情景调节低成熟平台

2. 商业护栏 ​

  • 保底策略:新策略线上前必须能"随时一键回滚"到旧策略。
  • 探索额度控制:按天/按用户配额限制探索量,超出即切回利用。
  • 新鲜度/多样性硬约束:即使 RL 说"推它",也要通过合规与多样性检查——RL 只负责排序,不负责突破产品边界。

这些护栏在常见陷阱与反模式页被总结为"安全护栏"通用原则。

七、离线 RL 在此地的角色 ​

1. 为什么推荐是离线 RL 最大的应用现场 ​

推荐/广告有 RL 界最稀缺的资源:海量、持续、真实的历史交互日志(每天上亿条)。这恰好命中离线 RL 的设定:"只有历史数据、不再与环境交互"。

  • 安全:离线训练不碰线上流量,无探索风险。
  • 成本:无需昂贵的在线实验。
  • 合规:不因探索收集额外个人信息。

2. 离线 RL 在推荐的落地形态 ​

形态说明挑战
离线预训练 + 在线微调先在大日志上离线学,再小流量在线继续分布偏移、价值高估
保守主义方法(CQL/IQL 思想)防止 OOD 动作的价值幻觉调参敏感、超参多
反事实排序用重要性加权评估新排序方差大、需要大量日志

注意区分:很多号称"离线 RL"的推荐论文其实是反事实评估 + 监督重排序,并不是完整离线 RL 训练。读论文时先看"它真的学了一个策略吗,还是只在日志上评估"。方法论细节见离线强化学习页。

3. 落地路径建议:从 bandit 走到完整 RL ​

给想在此领域落地的团队一张升级路线图:

text
阶段 1  bandit 冷启动 + 反事实评估 → 稳定收益、低风险
阶段 2  列表局部 RL(部分位置 RL 化,混合策略)→ 验证序列价值
阶段 3  完整序列策略 + 离线 RL 预训练 → 长期回报优化
每个阶段都要先证明"比上一阶段好"才能前进,否则停在上一步。

为什么必须这样走:完整 RL 的收益(长期回报)只有在工程链条全通后才能兑现,而链条每一环(环境、奖励、评估、护栏)都可能让收益归零。用阶段化方式,既控制风险,也让每一步都有可回滚的余地。这与RL 设计原则页"基线先行、小步迭代"的原则完全一致。

4. bandit 与完整 RL 的数学关系 ​

从 bandit 到 RL 是一条连续的谱系,理解它有助于选型:

text
多臂老虎机(无上下文)        :每次选一个动作,立即得奖励,无状态转移
上下文老虎机(contextual)    :选择依赖上下文 x,但动作不影响未来
RL(完整 MDP)              :状态演化,动作影响未来回报

区别只有一处:有没有"状态转移"。bandit 去掉了时序维度,
所以它是"退化的 RL"——这也是[多臂老虎机](/concepts/bandits)页把它定位为
"探索与利用的简化实验室"的原因。

工程推论:

问题形态用哪一层原因
每次决策独立(推荐一个商品给新用户)contextual bandit状态转移可忽略
决策影响后续(视频流里推了 A 影响下次)完整 RL状态演化不能忽略
介于两者之间bandit + 状态特征用上下文近似状态

很多宣称"RL 排序"的工业系统,实际只在"上下文 + 单步奖励"上工作,本质是 contextual bandit。这不算坏事——bandit 简单、稳定、可回滚;但读论文和做架构时要知道自己站在谱系的哪一段,别把 bandit 的效果误记成 RL 的效果。

5. 延迟反馈与序列建模的工程细节 ​

推荐/广告里最折磨人的是延迟反馈:用户点击了但 3 天后才下单,奖励该记给哪次推荐?工程上四个应对:

方案做法代价
等待窗口决策后等 N 天才结算奖励训练慢、数据滞后
即时代理奖励用"点击率"当奖励代理可能偏乐观(点击≠转化)
衰减/概率归属按时间衰减分配转化需要估计归属模型
序列状态建模把"上次推了什么、用户做了什么"编码进状态需要完整行为序列数据

与 RL 的关系:延迟反馈本质上是"奖励延迟"问题——这正是价值学习页里"TD 与信用分配"要解决的问题(长期价值估计把远期奖励折现回来)。但工业实践中很少有人为它上完整 RL,更多是用"转化归因 + 点击代理奖励"做工程近似——务实,但要知道近似在哪里。

八、案例速览:公开技术路线 ​

系统场景RL 形态公开资料要点
雅虎新闻文章推荐LinUCB contextual bandit经典 bandit 实验(Li et al. 2010)
YouTube视频列表slate RL + off-policy correction组合动作的可解化分解
淘宝搜索搜索排序DQN 变体(混合策略上线)大动作空间处理、用户行为序列状态
阿里妈妈(DeepLight)广告 CTR 预估(深度 CTR 工程,非 RL 本体)特征交互加速,展示广告工程全貌
各平台 RTB实时出价bandit/RL 出价预算约束、博弈视角

INFO

"字节等公开技术"在 2020 年后以技术博客与论文形式公布了不少 bandit/RL 在推荐与广告的实践(如 UCB 冷启动、TS 商品打散、出价策略),但多数没有可引用的正式论文。本页只列有公开文献的案例,避免传播无法核验的说法。

延伸阅读 ​

参考资料 ​

  • Li, L., Chu, W., Langford, J., & Schapire, R. E. (2010). A Contextual-Bandit Approach to Personalized News Article Recommendation. WWW 2010.(arXiv:1003.0146)
  • Auer, P., Cesa-Bianchi, N., & Fischer, P. (2002). Finite-time Analysis of the Multiarmed Bandit Problem. Machine Learning, 47, 235–256.(UCB1)
  • Thompson, W. R. (1933). On the Likelihood that One Unknown Probability Exceeds Another in View of the Evidence of Two Samples. Biometrika, 24(3–4), 285–294.
  • Bottou, L., et al. (2013). Counterfactual Reasoning and Learning Systems: The Example of Computational Advertising. JMLR 14, 3207–3260.(arXiv:1209.6875)
  • Zhao, J., et al. (2018). Deep Reinforcement Learning for Search Recommendation in Taobao. arXiv:1801.02057.
  • Chen, M., et al. (2019). Top-K Off-Policy Correction for a REINFORCE Recommender System. WSDM 2019.(arXiv:1812.02353)
  • Cai, H., et al. (2017). Real-Time Bidding by Reinforcement Learning in Display Advertising. WSDM 2017.(会议论文)
  • Wang, R., et al. (2021). DeepLight: Deep-Lightweight Feature Interactions for Accelerating Inference in Ad Click Prediction. 阿里妈妈团队技术论文。