对应:Stanford CS234 Lecture 12–13(Bayesian Bandits, Thompson Sampling, Contextual Bandits) 配套代码:
code/lecture12/(只需 numpy) 预计阅读时间:3.5 小时
0. 本讲导航
0.1 本讲要回答的问题
如果对未知的世界有一些先验的信念,能不能探索得更好?
第 11 讲的 UCB 属于频率学派:它不对未知的成功率 做任何假设,只用”对所有分布都成立”的集中不等式来构造置信区间。这很稳健,但也有代价:
- 它无法利用先验知识。一个做了十年广告的工程师知道”新广告的点击率通常在 1%~5%“,UCB 却只能从”什么都不知道”开始。
- 它的置信区间是按最坏情况构造的,往往偏保守。
贝叶斯方法换了一个角度:把未知量本身看作随机变量,用概率分布表示我们对它的信念,看到数据就用贝叶斯公式更新这个信念。在此基础上,有一个异常简单、却异常有效的探索策略——汤普森采样:
从信念中随机抽一个”可能的世界”,然后在这个世界里做最优的选择。
它提出于 1933 年(比 UCB 早了近 70 年),却沉寂了几十年,直到 2010 年前后才被重新发现,如今是工业界最常用的探索算法之一。
0.2 学完本讲,你应该能够
- 用贝叶斯公式描述”先验 → 数据 → 后验”,解释 Beta–Bernoulli 共轭及其”虚拟计数”的含义。
- 解释先验在数据少时和数据多时的不同作用,以及错误先验的后果。
- 描述汤普森采样,解释概率匹配,说明它与贝叶斯贪心、UCB 的区别。
- 区分频率学派遗憾与贝叶斯遗憾,了解汤普森采样的理论保证。
- 说出汤普森采样在实践中的优势(简单、批量反馈下稳健)与风险(依赖先验)。
- 形式化上下文老虎机,推导 LinUCB 的置信上界,描述线性汤普森采样。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 11 讲:遗憾、UCB、Lai–Robbins 下界 | 全讲 | 必须 |
| 条件概率、贝叶斯公式 | 第 1、2 节 | 必须 |
| 概率密度、均值、方差 | 第 2 节 | 必须 |
| 线性回归、最小二乘 | 第 6 节 | 知道”用直线拟合数据”即可 |
| 矩阵乘法、逆矩阵 | 第 6 节 | 会算 |
0.4 本讲地图
第1节 贝叶斯视角:把未知量看作随机变量
│
第2节 Beta–Bernoulli 共轭:更新只需要加法;先验的作用
│
第3节 汤普森采样:抽一个可能的世界;概率匹配
│
第4节 理论:贝叶斯遗憾与频率学派遗憾;贝叶斯最优的探索
│
第5节 实践:先验的影响、批量反馈、非共轭模型
│
第6节 上下文老虎机:LinUCB 与线性汤普森采样
1. 贝叶斯视角
1.1 两种看待不确定性的方式
硬币正面朝上的概率 未知。抛了 10 次,7 次正面。
- 频率学派: 是一个固定的、未知的数。我们能说的是:“如果重复这个实验很多次,按这个方法构造的区间,有 95% 的时候会包含真值”(置信区间)。
- 贝叶斯学派: 本身是不确定的,用一个概率分布来描述”我相信 是多少”。我们能说的是:“给定这些数据, 在 [0.4, 0.9] 之间的概率是 90%“(可信区间)。
两者在数据很多时通常给出相近的结论,但在数据很少、或者有先验知识时,会有明显的差异。
1.2 贝叶斯公式
- 先验 :看数据之前的信念;
- 似然 :如果真值是 ,观察到这些数据的可能性有多大;
- 后验 :看了数据之后的信念。
“后验 ∝ 似然 × 先验”:那些能很好地解释数据、又符合先验认识的 ,后验概率高。
1.3 为什么老虎机需要贝叶斯?
老虎机的核心问题是:不确定的时候怎么办。后验分布恰好完整地描述了”我对每个臂有多不确定”——不只是一个区间,而是一整个分布:哪些值更可能,哪些值不太可能。有了它,我们就能问:“这个臂是最好的臂的概率有多大?“——汤普森采样正是围绕这个问题设计的。
2. Beta–Bernoulli 共轭
2.1 Beta 分布
上最常用的分布是 Beta 分布:
- 是 [0, 1] 上的均匀分布——“什么都不知道”;
- 大、 小:集中在 1 附近;反之集中在 0 附近;
- 越大,分布越窄(越确定)。
2.2 共轭:更新只需要加法
伯努利奖励:成功概率为 ,观察到 次成功、 次失败,似然为 。乘以 Beta 先验:
这正是 !
先验和后验属于同一个分布族,这叫共轭先验(conjugate prior)。它的好处是:更新只需要把成功次数加到 上、失败次数加到 上,不需要任何积分。
代码 01_beta_bernoulli.py 演示 2 用最笨的方法——在 [0, 1] 的 2001 个网格点上逐点计算”先验 × 似然”再归一化——验证了公式,差异只有 量级(浮点误差)。而且后验只取决于成功和失败的次数,与顺序无关。
2.3 看后验如何演化
演示 1:真实成功率 ,均匀先验:
| 看过的数据 | 后验 | 均值 | 标准差 | 90% 可信区间 |
|---|---|---|---|---|
| Beta(1, 1) | 0.500 | 0.289 | [0.051, 0.950] | |
| Beta(2, 1) | 0.667 | 0.236 | [0.224, 0.974] | |
| Beta(5, 2) | 0.714 | 0.160 | [0.419, 0.937] | |
| Beta(7, 5) | 0.583 | 0.137 | [0.350, 0.800] | |
| Beta(36, 16) | 0.692 | 0.063 | [0.584, 0.793] | |
| Beta(128, 74) | 0.634 | 0.034 | [0.577, 0.688] |
- 标准差大约按 缩小——与第 11 讲霍夫丁区间的宽度一致。两种语言描述的是同一件事。
- 注意 时,90% 可信区间没有包含真值 0.7——这 200 个观察中恰好只有 63% 是成功。这并不矛盾:“90% 可信区间”本来就有约 10% 的时候不包含真值。后验描述的是”根据这些数据应该相信什么”,数据本身不走运时,后验也会跟着偏。
2.4 先验的作用:虚拟计数
后验均值
就像是先验提供了 次虚拟的成功和 次虚拟的失败,然后与真实数据合并。先验的”分量”= 次观察。
演示 3:一个新广告,真实点击率 3%(前 10 次展示中有 1 次点击,前 100 次中有 2 次):
| 先验(先验均值) | |||||
|---|---|---|---|---|---|
| 均匀 Beta(1,1)(0.500) | 0.500 | 0.167 | 0.029 | 0.035 | 0.031 |
| 了解行情 Beta(2,48)(0.040) | 0.040 | 0.050 | 0.027 | 0.034 | 0.031 |
| 错误但不固执 Beta(1,3)(0.250) | 0.250 | 0.143 | 0.029 | 0.035 | 0.031 |
| 错误且固执 Beta(50,50)(0.500) | 0.500 | 0.464 | 0.260 | 0.076 | 0.040 |
| 不用先验:点击数/展示数 | — | 0.100 | 0.020 | 0.034 | 0.031 |
- 数据少时,先验很重要: 时直接用比例估计是 10%(真实值的 3 倍多),“了解行情”的先验给出 5%。
- 数据终将压倒先验: 时,除了最固执的先验,所有估计都收敛到真实值附近。
- 固执的错误先验需要几千次数据才能纠正——它相当于”已经看过 100 次、一半被点击”。
2.5 可信区间可信吗?
演示 4:真实点击率从 Beta(2, 48) 中随机抽取(模拟”很多个不同的广告”),每个广告看 50 次展示,重复 2000 次:
| 用来计算后验的先验 | 90% 区间包含真值的比例 | 区间平均宽度 |
|---|---|---|
| 正确的先验 Beta(2,48) | 90.4% | 0.061 |
| 均匀先验 Beta(1,1) | 88.8% | 0.096 |
| 错误且固执 Beta(50,50) | 0.0% | 0.127 |
| 霍夫丁区间(不用先验) | 100.0% | 0.346 |
- 先验正确时,贝叶斯推断是校准的:90% 的区间恰好 90% 的时候包含真值。注意这个”90%“是对”从先验中抽出的所有问题”平均而言的。
- 错误的先验会让你”自信地犯错”:区间被先验牢牢拉在 0.27~0.41 一带,从不包含真值——而你从后验本身完全看不出问题。
- 霍夫丁区间从不出错,但宽得多——比真实点击率的整个范围还宽。
这就是频率学派与贝叶斯方法的根本取舍:前者不需要先验、有最坏情况保证,但保守;后者能利用先验知识、更高效,但依赖先验的正确性。
3. 汤普森采样
3.1 有了后验,怎么选臂?
每个臂都有一个后验 。三种自然的想法:
- 贝叶斯贪心:选后验均值最高的臂。——丢掉了不确定性,又回到贪心。
- 贝叶斯 UCB:选后验某个高分位数(比如 分位数)最高的臂。——UCB 的贝叶斯版本。
- 汤普森采样:从每个臂的后验中随机抽一个样本,选样本最大的臂。
3.2 算法
汤普森采样(Beta–Bernoulli)
对每个臂 ,初始化 (或其他先验)。 对 :
- 对每个臂抽样
- 拉臂 ,观察奖励
- 更新:,
就这么简单。更一般的形式适用于任何模型:
从后验中抽一个”可能的世界”(模型参数),然后执行在这个世界里最优的动作。
这个”后验采样”的思想,第 13 讲会推广到 MDP(PSRL)。
3.3 为什么有效?概率匹配
汤普森采样选臂 的概率是多少?它选 当且仅当 的样本最大。而每个样本都来自后验,所以
每个臂被选中的概率 = 根据目前的数据,它是最好的臂的后验概率。这叫概率匹配(probability matching)。
代码 02_thompson_sampling.py 演示 1 取了一次实验第 60 步的状态,用数值积分独立计算 ,与汤普森采样抽 20 万次的选择频率对照:
| 臂 | 拉的次数 | 成功 | 后验 | 后验均值 | (数值积分) | 汤普森采样选它的频率 |
|---|---|---|---|---|---|---|
| 0 | 5 | 2 | Beta(3, 4) | 0.429 | 0.0639 | 0.0632 |
| 1 | 2 | 0 | Beta(1, 3) | 0.250 | 0.0237 | 0.0242 |
| 2 | 4 | 1 | Beta(2, 4) | 0.333 | 0.0279 | 0.0268 |
| 3 | 16 | 9 | Beta(10, 8) | 0.556 | 0.1073 | 0.1071 |
| 4 | 33 | 24 | Beta(25, 10) | 0.714 | 0.7772 | 0.7787 |
两列几乎完全相同。而在同一个状态下:
- 贝叶斯贪心选臂 4(后验均值最高),每次都选它;
- UCB1()选臂 1——只拉过 2 次、2 次都失败,但它最不确定,上界最高;
- 汤普森采样大部分时候选臂 4,偶尔按概率试试其他臂,选臂 1 的概率只有约 2%。
UCB 按”可能有多好”探索;汤普森采样按”有多大可能是最好的”探索。 这是两种不同的”乐观”:UCB 对每个臂都取最乐观的值;汤普森采样只是”随机地乐观”——不确定的臂的样本时高时低,偶尔抽到高值时被探索一下。
3.4 抽样本 = 全部的探索
演示 3 中,贝叶斯贪心与汤普森采样用的是完全相同的后验,唯一的区别是”取均值”还是”抽样本”:
| 策略 | 默认老虎机 | 最差 1% 实验 | 点击率老虎机 | 最差 1% 实验 |
|---|---|---|---|---|
| 汤普森采样 | 62.9 | 145.7 | 65.8 | 140.0 |
| 贝叶斯贪心 | 5510.3 | 29999.2 | 417.9 | 2000.4 |
贝叶斯贪心的遗憾线性增长,最差的实验卡死在次优臂上。抽样本这一步,就是全部的探索。
3.5 后验如何演化
演示 2 用字符画出了一次实验中每个臂后验的形状。到 时:最好的臂(被拉了 9334 次)的后验是一个紧贴 0.7 的尖峰;差的臂只被拉了 10~58 次,后验仍然很宽。汤普森采样不在乎把差的臂估计得多准——只要它们的后验”几乎不可能超过最好的臂”就够了。探索是为了决策,不是为了精确估计。这一点与 UCB 完全一致(第 11 讲 5.3 节”上界齐平”)。
4. 理论
4.1 两种遗憾
- 频率学派遗憾:固定一个老虎机 ,看算法在它上面的遗憾 。第 11 讲用的就是它。
- 贝叶斯遗憾:老虎机本身是从先验 中随机抽出来的,看平均的遗憾:
前者要求”在每一个问题上都好”,后者只要求”在典型的问题上平均地好”。
4.2 汤普森采样的理论保证
- 频率学派(Agrawal & Goyal, 2012;Kaufmann, Korda & Munos, 2012):对伯努利老虎机,使用均匀先验的汤普森采样满足 恰好达到 Lai–Robbins 下界——与 KL-UCB 一样渐近最优。这是一个令人惊讶的结果:一个贝叶斯算法,在频率学派的标准下也是最优的。
- 贝叶斯(Russo & Van Roy, 2014, 2016):对任何先验,。他们的”信息比率”分析给出了一个优美的解释:汤普森采样每承受一单位的遗憾,就获得足够多的关于”哪个臂最好”的信息。
4.3 实验:频率学派遗憾
演示 3(,重复 100 次):
| 策略 | 默认老虎机 | 点击率老虎机 | ||
|---|---|---|---|---|
| 汤普森采样(均匀先验) | 62.9 | 5.5 | 65.8 | 5.7 |
| KL-UCB | 93.4 | 8.1 | 109.9 | 9.5 |
| UCB1() | 104.5 | 9.1 | 409.6 | 35.6 |
| UCB1() | 390.5 | 33.9 | 783.0 | 68.0 |
| Lai–Robbins 常数 | 9.2 | 15.4 |
- 汤普森采样的遗憾比渐近最优的 KL-UCB 还小约三分之一到五分之二。两者渐近地同样最优,但在有限的 下,汤普森采样往往表现更好。
- 它的 低于 ——和第 11 讲一样,下界是 的渐近结论。
- 而且它的计算量很小:每步只需要抽 个 Beta 样本;KL-UCB 每步都要做二分查找(演示中汤普森采样快了约 8 倍)。
4.4 贝叶斯最优的探索:真正的”最优”是什么?
如果我们真的相信先验,那么”最优”的探索策略应该最小化贝叶斯遗憾(或最大化期望总奖励)。这可以写成一个 MDP:
- 状态 = 当前的信念(所有臂的 );
- 动作 = 拉哪个臂;
- 转移 = 按后验预测的概率得到成功或失败,信念相应更新。
这叫信念 MDP(或贝叶斯自适应 MDP)。它的最优策略完美地权衡了探索与利用——探索的价值就是”信息在未来能带来的额外奖励”,被精确地计算在价值函数里。
问题在于:信念状态的数量随时间爆炸,一般无法求解。一个著名的例外是Gittins 指数(1979):对于折扣的无限视界、各臂独立的老虎机,最优策略可以分解为”每个臂单独算一个指数,选指数最大的”。但它不能推广到有限视界、相关的臂或 MDP。
汤普森采样可以看作对贝叶斯最优策略的一个简单、可计算的近似:它不去解信念 MDP,而是”假装”抽到的世界是真的,然后在其中贪心。它不是贝叶斯最优的,但遗憾的阶数是最优的。
5. 实践中的汤普森采样
5.1 先验的影响
演示 4:500 个随机的点击率老虎机(每个 10 个臂,点击率从 Beta(2, 48) 抽取,平均 4%),:
| 策略 | 最差 1% 实验 | |||
|---|---|---|---|---|
| TS,正确的先验 Beta(2,48) | 4.7 | 26.0 | 65.9 | 188.8 |
| TS,均匀先验 Beta(1,1) | 4.9 | 32.7 | 87.5 | 160.3 |
| TS,过于乐观 Beta(20,20) | 5.1 | 47.8 | 235.9 | 316.2 |
| TS,过于悲观 Beta(1,500) | 4.3 | 23.5 | 187.6 | 944.5 |
| KL-UCB(不用先验) | 4.8 | 33.8 | 119.7 | 177.9 |
| UCB1() | 4.9 | 43.0 | 250.6 | 336.2 |
- 正确的先验有帮助:贝叶斯遗憾比均匀先验小 25%。
- 均匀先验的汤普森采样依然很强:优于 KL-UCB,远优于 UCB1。“没有先验知识”时,用均匀先验是安全的选择。
- 过于乐观的先验(以为点击率在 50% 左右):每个臂都要先”失败”几百次,后验才会降到真实水平——探索过多,遗憾大但稳定。
- 过于悲观的先验(以为点击率只有 0.2%):前期看起来最好(很少探索),但探索不足——最差的实验遗憾极大,就像贪心”卡住”。
错误的先验,就是错误的探索强度。这与第 11 讲中 UCB 的 太大或太小的现象完全对应。
5.2 批量反馈
真实系统中,奖励往往不是立刻反馈的:日志每小时汇总一次,模型每天更新一次。演示 5(默认老虎机,,每 步才把奖励告诉算法):
| 策略 | ||||
|---|---|---|---|---|
| 汤普森采样 | 45.8 | 46.4 | 52.2 | 229.9 |
| KL-UCB | 72.1 | 78.6 | 126.3 | 300.7 |
| UCB1() | 80.9 | 87.5 | 140.9 | 304.0 |
时,UCB 类方法的遗憾明显上升,汤普森采样几乎不受影响。原因:
- UCB 是确定性的——同一批里看到的数据都一样,它会把整批 100 次全部分给同一个臂;
- 汤普森采样是随机的——同一批里每次抽样都不同,自然地把机会分散给几个”可能最好”的臂。
Chapelle & Li (2011) 在雅虎的新闻推荐和广告系统中发现了同样的现象,这是汤普森采样在工业界流行的重要原因。
5.3 超越共轭:近似后验
Beta–Bernoulli 之所以方便,是因为后验有公式。对于复杂的模型(比如用神经网络预测点击率),后验没有公式,需要近似:
- 拉普拉斯近似:在后验的峰值附近用高斯分布近似;
- 自助法(bootstrap)/ 集成:在数据的不同重采样上训练多个模型,随机选一个作为”后验样本”。第 13 讲会提到的 Bootstrapped DQN 就是这个思路;
- 变分推断、MCMC:更一般但更昂贵的方法。
汤普森采样的思想——“从后验中抽一个可能的世界,然后在其中最优地行动”——不依赖于具体的近似方法。
6. 上下文老虎机
6.1 问题
在推荐系统中,不同的用户喜欢不同的东西。只找”平均最好的一篇文章”远远不够。
上下文老虎机(contextual bandit):每一步
- 观察一个上下文 (用户特征:兴趣、历史、时间……);
- 选一个臂 ;
- 得到奖励 ,其期望依赖于 。
遗憾相对于”知道真实模型、对每个上下文都选最好的臂”的理想策略来计算。
它在 RL 谱系中的位置:上下文就像”状态”,但动作不影响下一个状态(下一个用户与你给这个用户推荐了什么无关)。所以它介于老虎机(只有一个状态)和完整的 RL(动作影响未来状态)之间。第 9 讲的 RLHF 其实也常被看作上下文老虎机:提示词是上下文,回答是动作,奖励模型给出奖励。
6.2 实验平台
代码 03_contextual_linucb.py 模拟新闻推荐:5 个兴趣话题,每个用户的兴趣 是这 5 个话题上的比例(多数用户集中在一两个话题上);8 篇文章,每篇主要属于一个话题。用户 点击文章 的概率 ,其中 未知。
演示 1:上下文有多重要?(100 个随机环境的平均)
| 策略 | 平均点击率 |
|---|---|
| 随机推荐 | 0.130 |
| 永远推荐”平均最好”的那一篇 | 0.158 |
| 按用户推荐最合适的文章(理想) | 0.297 |
看上下文能把点击率提高到 1.9 倍。任何不看用户的算法,即使完美地找到了”平均最好”的文章,每一步也比理想策略少 0.139 的点击率——相对于理想策略,遗憾是线性的。
6.3 线性模型与岭回归
假设期望奖励是上下文的线性函数:。对每个臂,用它被选中时的数据做岭回归:
线性模型的关键好处是泛化:所有用户共享同一组参数 ,一个体育迷的反馈也能帮助预测其他体育迷(甚至”体育 + 科技”的混合用户)的点击率——即使这个具体的兴趣组合从没出现过。
6.4 LinUCB:线性版的 UCB
置信椭球:可以证明,以高概率,真实的 落在以 为中心的椭球 内,其中 。
乐观的预测:在椭球内,对当前用户 最乐观的预测是
(由柯西–施瓦茨不等式:。)
LinUCB(Li, Chu, Langford & Schapire, 2010):选
的含义:在当前用户的兴趣方向上,文章 有多少数据。 累积了 ——在某个方向上观察得越多, 在这个方向上越”大”, 越”小”,不确定性越小。一篇从没推荐给体育迷的文章,对体育迷的不确定性很大,即使它已经被科技迷点击过很多次。
当 是独热向量(每个用户就是一个”类型”)时,,LinUCB 退化为普通的 UCB。
线性汤普森采样(Agrawal & Goyal, 2013):从近似后验 中抽样,选 。(实现上的小技巧: 服从 ,直接对得分抽样即可,不需要对 做矩阵分解。)
实现上的另一个技巧:每一步都要用 ,每次重新求逆太慢。加入一个数据点时,用 Sherman–Morrison 公式在 内更新逆矩阵:
6.5 实验
演示 2(,100 个随机环境的平均):
| 算法 | 最后 1000 步每步遗憾 | ||
|---|---|---|---|
| UCB1(不看用户) | 162.5 | 1558.1 | 0.1529 |
| 按用户类型分组的 UCB1 | 110.9 | 466.4 | 0.0271 |
| 岭回归 + ε-贪心() | 87.2 | 314.8 | 0.0159 |
| 岭回归 + 贪心 | 112.1 | 1006.5 | 0.0978 |
| LinUCB() | 52.8 | 157.2 | 0.0077 |
| 线性汤普森采样() | 56.5 | 170.8 | 0.0082 |
- 不看用户的 UCB1:最后每步遗憾停在”上下文的价值”(0.139)附近——线性遗憾。
- 按用户类型分组(把用户按”最感兴趣的话题”分成 5 类,每类单独跑 UCB1):好了很多,但把兴趣混合的用户粗暴地归为一类,各类之间也不共享信息。
- 线性模型 + 好的探索(LinUCB、线性 TS):遗憾最小。
- 线性模型本身不解决探索问题:岭回归 + 贪心的遗憾是 LinUCB 的 6 倍多,最后每步遗憾停在 0.1 左右——卡住了。原因与普通老虎机一样:一开始所有文章的预测都是 0,某篇文章先被点击,它的预测变成正数,之后这类用户就一直被推荐它;其他文章从来没有机会。
探索强度(演示 3):
| LinUCB 的 | 0 | 0.1 | 0.5 | 1.0 | 2.0 |
|---|---|---|---|---|---|
| 1114.2 | 458.8 | 157.2 | 157.9 | 279.7 |
| 线性 TS 的 | 0.05 | 0.2 | 0.5 | 1.0 |
|---|---|---|---|---|
| 384.3 | 170.8 | 263.6 | 540.0 |
与第 11 讲 UCB 的 完全一样:太小探索不够( 就是贪心),太大探索过多。LinUCB 论文中的理论值 ()偏保守。
6.6 真实世界
- 雅虎首页新闻推荐(Li et al., 2010):LinUCB 的原始应用,相比不看上下文的方法点击率提升了 12.5%。
- 离线评估:上下文老虎机的新策略通常先用历史日志做离策略评估(第 10 讲的重要性采样!),再上线。日志中记录每次推荐的概率,正是为了让这种评估成为可能。
- 更复杂的模型:用神经网络代替线性模型时,探索需要近似的不确定性估计(集成、最后一层贝叶斯化等)。
7. 本讲总结
7.1 核心概念清单
- 贝叶斯视角:把未知量看作随机变量;后验 ∝ 似然 × 先验。
- Beta–Bernoulli 共轭:;先验 = 次虚拟观察。
- 先验的作用:数据少时很重要,数据多时被压倒;正确的先验让推断校准,错误的先验让你”自信地犯错”。
- 汤普森采样:从后验抽样,选样本最大的臂;概率匹配:选 的概率 = 最好的后验概率。
- 抽样本 = 探索:同一个后验,取均值(贝叶斯贪心)会卡住,抽样本则渐近最优。
- 理论:频率学派意义下渐近最优(达到 Lai–Robbins 下界);贝叶斯遗憾 。
- 贝叶斯最优:信念 MDP,一般无法求解(Gittins 指数是特例);汤普森采样是它的一个可计算的近似。
- 实践:通常优于 UCB;批量反馈下稳健;错误先验 = 错误的探索强度。
- 上下文老虎机:动作不影响下一个上下文的”一步 RL”;线性模型让用户之间共享信息。
- LinUCB:,来自置信椭球;线性汤普森采样:从 抽样。
7.2 公式速查表
| 名称 | 公式 |
|---|---|
| 贝叶斯公式 | |
| Beta 均值、方差 | , |
| 共轭更新 | |
| 后验均值 | |
| 汤普森采样 | , |
| 概率匹配 | |
| 贝叶斯遗憾 | |
| 岭回归 | ,, |
| LinUCB | |
| 线性 TS | |
| Sherman–Morrison |
7.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 先验 | Prior | 后验 | Posterior |
| 似然 | Likelihood | 共轭先验 | Conjugate prior |
| 可信区间 | Credible interval | 置信区间 | Confidence interval |
| 虚拟计数 | Pseudo-counts | 校准 | Calibration |
| 汤普森采样 | Thompson sampling | 后验采样 | Posterior sampling |
| 概率匹配 | Probability matching | 贝叶斯遗憾 | Bayesian regret |
| 信念 MDP | Belief MDP | 贝叶斯自适应 MDP | Bayes-adaptive MDP |
| Gittins 指数 | Gittins index | 批量反馈 | Batched / delayed feedback |
| 上下文老虎机 | Contextual bandit | 岭回归 | Ridge regression |
| 置信椭球 | Confidence ellipsoid | LinUCB | Linear UCB |
| 线性汤普森采样 | Linear Thompson sampling | 自助法 | Bootstrap |
8. 练习题
练习 1(共轭更新):先验 Beta(2, 2),观察到序列 1, 0, 1, 1, 0, 1。后验是什么?后验均值是多少?与不用先验的估计相比如何?
参考答案
4 次成功、2 次失败 → Beta(6, 4),后验均值 0.6。不用先验的估计是 4/6 ≈ 0.667。先验 Beta(2,2) 相当于 2 次成功和 2 次失败的虚拟观察,把估计往 0.5 拉了一点。
练习 2(先验的分量):你认为一个新药的有效率大约是 30%,而且这个判断的”可靠程度”大约相当于看过 20 个病人。应该用什么 Beta 先验?
参考答案
, → Beta(6, 14)。
练习 3(概率匹配):两个臂,后验分别为 Beta(1, 1) 和 Beta(2, 1)。汤普森采样选第二个臂的概率是多少?(提示:,其中 ,。)
参考答案
。第二个臂拉过一次且成功了,它”是更好的臂”的后验概率是 2/3,汤普森采样就以 2/3 的概率选它。
练习 4(贝叶斯贪心):解释为什么贝叶斯贪心(选后验均值最高的臂)会有线性遗憾,尽管它用的是正确的后验。
参考答案
后验均值只是一个点估计,丢掉了不确定性。如果最好的臂早期运气不好,它的后验均值低于某个次优臂,贝叶斯贪心就不再拉它;它的后验因此不再更新,均值就一直偏低——与普通贪心卡住的机制完全相同(演示 3 中最差的实验遗憾接近 )。后验”知道”自己不确定,但贪心的决策规则没有利用这个信息。
练习 5(错误的先验):用 5.1 节的结果解释:为什么过于悲观的先验在 时表现最好,在 时却很差?这与第 11 讲的哪个现象对应?
参考答案
悲观的先验(以为点击率只有 0.2%)让所有臂的后验样本都很低,一旦某个臂得到几次点击,它的后验就明显高于其他臂,算法很快”锁定”它,几乎不探索——短期内遗憾很小。但如果锁定的不是最好的臂,其他臂的后验在悲观先验的压制下很难抽到高值,纠正得很慢,最差的实验遗憾很大。这对应第 11 讲 UCB 的 太小,以及乐观初始化的伪计数太小的情况:探索不足,平均看起来还行,但有”卡住”的风险。
练习 6(LinUCB 的退化):证明当上下文是独热向量 (每个用户属于且只属于一个类型 )、 时,LinUCB 等价于对每个用户类型单独运行一个 UCB,其中探索奖励为 。
参考答案
是对角矩阵,第 个对角元是 (类型 的用户被推荐文章 的次数)。 的第 个分量是这些推荐中的点击总数 。所以 (带一点正则的经验均值),。LinUCB 的得分就是 ——每个类型一个独立的 UCB。线性模型的优势只在上下文不是独热时才体现:不同类型的用户通过共享的参数互相帮助。
练习 7(动手)★:在 03_contextual_linucb.py 中把用户兴趣的 Dirichlet 参数从 0.3 改成 3(用户兴趣更混合、更多样)。有研究指出,上下文足够多样时,贪心算法也能自然地探索。在这个环境里是这样吗?
参考答案
实测(100 个环境,):
| Dirichlet 参数 | 上下文的价值(理想 − 最好的固定文章) | 贪心 | ε-贪心 | 分组 UCB1 | LinUCB | 线性 TS |
|---|---|---|---|---|---|---|
| 0.3 | 0.297 − 0.158 = 0.139 | 1013.6 | 331.1 | 470.9 | 151.0 | 167.9 |
| 3 | 0.198 − 0.158 = 0.040 | 581.2 | 236.2 | 450.4 | 166.1 | 177.9 |
即使用户更多样,贪心仍然卡住:它最后 1000 步的每步遗憾约 0.057,比”不看用户、只推荐平均最好的文章”(每步遗憾 0.040)还差。原因是:上下文的多样性只能帮助已经被推荐过的文章把参数估计得更准;从没被推荐过的文章没有任何数据,它们的预测永远停在 0,多样的上下文也帮不了它们。“贪心也够用”的结论依赖于更强的条件(比如所有臂共享同一个参数向量,或每个臂一开始都有足够的数据),不能随便推广。
练习 8(思考题):第 9 讲的 RLHF 可以看作上下文老虎机(提示词 = 上下文,回答 = 动作)。在这个视角下,“探索”意味着什么?为什么 RLHF 中很少讨论探索?
参考答案
探索意味着生成一些”当前策略认为不太好、但可能更好”的回答,以获得关于奖励的信息。RLHF 中很少讨论探索,一是因为动作空间(所有可能的文本)极其巨大,语言模型的采样本身就带来了大量随机性;二是因为预训练模型提供了一个极强的”先验”,大多数有意义的回答已经在它的支撑集内;三是因为奖励模型在分布外不可信(第 9 讲的过度优化),过度探索反而危险——这时 KL 约束扮演的正是”不要离已知区域太远”的角色。近年来,为了提升推理能力,如何在语言模型中更有效地探索(比如鼓励多样的解题路径)正成为活跃的研究问题(第 16 讲)。
9. 延伸阅读
- CS234 Spring 2024 Lecture 12–13 录像与课件。
- Russo, Van Roy, Kazerouni, Osband & Wen (2018),A Tutorial on Thompson Sampling:最好的入门教程,含大量例子。
- Chapelle & Li (2011),An Empirical Evaluation of Thompson Sampling:让汤普森采样重新流行的论文。
- Agrawal & Goyal (2012, 2013),Analysis of Thompson Sampling for the Multi-armed Bandit Problem;Thompson Sampling for Contextual Bandits with Linear Payoffs。
- Kaufmann, Korda & Munos (2012),Thompson Sampling: An Asymptotically Optimal Finite-Time Analysis。
- Russo & Van Roy (2016),An Information-Theoretic Analysis of Thompson Sampling。
- Li, Chu, Langford & Schapire (2010),A Contextual-Bandit Approach to Personalized News Article Recommendation(LinUCB)。
- Lattimore & Szepesvári,Bandit Algorithms,第 19–20 章(线性老虎机)、第 34–36 章(贝叶斯方法与汤普森采样)。
10. 下一讲预告
到目前为止,所有的探索都发生在只有一个状态(或上下文与动作无关)的问题中。在真正的 MDP 中,探索要难得多:
- 有些状态只有经过一长串特定的动作才能到达,随机探索几乎不可能碰到它们;
- 探索的价值要考虑未来:去一个没见过的状态,可能打开一整片新的区域。
下一讲将把本讲和上一讲的两种思路推广到 MDP:
- 乐观:R-max、MBIE-EB——给没见过的状态-动作对一个乐观的奖励,让智能体”有计划地”去探索;
- 后验采样:PSRL——从 MDP 的后验中抽一个 MDP,按它的最优策略走一个回合;
- PAC-MDP 框架与样本复杂度;
- 深度 RL 中的探索:基于计数的奖励、好奇心。
我们会在一个著名的探索难题——RiverSwim——上看到 -贪心为什么会彻底失败。
下一讲之前,建议你:跑通 code/lecture12/ 下的 3 个脚本,完成练习 1、3、4、6,并尝试练习 7。