CS234 L12 · 贝叶斯老虎机、Thompson 采样、PAC 与 MDP 乐观探索 · 全片速览

65 镜一次看完 · Ctrl+F 可搜全文 · Ctrl+P 可存成 PDF · 想看动画回放映厅

1 · 开场2 · 1 · 依赖差距的界:算法3 · 2 · UCB 给明显坏的臂4 · 3 · 为什么必须上5 · 4 · 换到贝叶斯:Beta 的6 · 5 · 概率匹配:直观上正确,但7 · 6 · Thompson 采样:8 · 7 · PAC:数9 · 8 · 乐观初始化本身没有10 · 9 · MBIE-EB:用计数建11 · 完
知识点 1

开场

1 / 65
讲解
这一讲做两件事:把老虎机讲完,然后把整套搬回 MDP。 前半讲从频率派换到贝叶斯派。L11 的 UCB 是频率派的:用 Hoeffding 造一个置信区间,然后对区间的上端乐观。贝叶斯派换一套语言——维护一个后验分布,用共轭性让更新有闭式,然后……然后怎么办? 答案是 Thompson 采样,而它简单到有点不像话:从后验里抽一组参数,假装它就是真的,按它贪心,观察,更新。四步,没有置信区间,没有奖励加成。而它恰好实现了一个叫「概率匹配」的理想规则——不是近似,是按定义相等。 中间插一个换判据:PAC。遗憾是把所有错加起来,于是「很多人头疼」和「几个人严重副作用」是一样的。PAC 换成数大错的个数。在病人身上,这个区别不是技术性的。 后半讲回到 MDP,而结论比预期难看:乐观初始化本身没有任何保证。Even-Dar 与 Mansour 证出的 PAC 结果需要的初始值里含一个 10^T 量级的因子。真正能用的是基于模型的 MBIE-EB:用计数拟合模型,加一个 β/√N(s,a) 的奖励加成,再规划——它的样本复杂度是 |S|、|A|、1/(1−γ)、1/ε、1/δ 的多项式。 这一讲的转录稿有多处问题,最要紧的一处是根号被系统性地丢掉——UCB 的奖励项、MBIE-EB 的常数都中招。本片逐处标出。
知识点 2

1 · 依赖差距的界:算法不需要知道差距,遗憾却由差距决定

2 / 65
Regret(T)=O(∑a:Δa>0log⁡TΔa)
差距在分母
L11 证的是不依赖差距的 √T 界。UCB 还有一个界,长得完全不同。
讲解
L11 花了四集证出 UCB 的遗憾是 O(√(mT log(T²/δ)))。那条界有一个重要性质:它完全不涉及差距,对任何一组臂一致成立。 但同一个算法还有另一条界,形状完全不同:遗憾是 Σ log T / Δ_a 量级——对数增长,而系数由各个臂的差距决定。 两条界描述的是同一个算法。这一集说清它们的分工,以及第二条界告诉了我们什么第一条说不出来的东西。
3 / 65
算法得先知道差距界里有 Δ,算法总得算它吧
算法从头到尾不碰 Δ。它只是被 Δ 支配,而不是使用 Δ。
讲解
这是读到这类界时最容易犯的错:界里出现 Δ_a,就以为算法需要知道它。 不需要。把 UCB 的规则翻出来看——拉 Q̂ + √(2 log t / N_t(a)) 最大的臂。里面只有经验均值和计数,没有 Δ,也没有任何需要事先知道的问题参数。 差距出现在界里,不在算法里。 这个区分有个名字:依赖问题的界(problem-dependent bound)。它说的是「同一个算法,在不同的问题上表现不同,而不同的程度由问题的这个量决定」。 这类界在 RL 里很常见,而把它误读成「算法需要这个量」会得出完全错误的结论——比如以为这个算法没法用。
4 / 65
✓手术0.95✓并指固定0.90✕不处理0.10差距 0 / 0.05 / 0.85
讲座的玩具实例:治断脚趾的三种办法,伯努利成功率如图。
讲解
这一讲通篇用一个玩具实例,本片也跟着用它。 治断脚趾的三种办法,每种的效果是一个伯努利随机变量: 手术:成功率 0.95 并指固定(buddy taping,把伤趾和邻趾绑在一起):0.90 不处理:0.10 差距分别是 0、0.05、0.85。 这个实例挑得很好,因为它有两种完全不同的次优臂:一个几乎和最优一样好,一个明显糟糕。 直觉会说:难的是别选中那个明显糟糕的。下一镜算一下这个直觉对不对。
5 / 65
Δ=0.05Δ=0.8594.4%5.6%各占界的多少
94.4% 的界来自那个只差 0.05 的臂 —— 直觉正好反了。
讲解
看什么:左边那根几乎是全部。左边是那个「几乎和最优一样好」的臂,右边是那个「明显糟糕」的臂。难的不是避开 0.10,是区分 0.95 和 0.90 —— 而这正是差距在分母上的后果。 —— 把三个臂代进 Σ log T / Δ_a: 并指固定:Δ=0.05 → 1/Δ = 20.000 不处理:Δ=0.85 → 1/Δ = 1.176 合计 21.176。占比:94.4% 对 5.6%。 直觉正好反了。那个「明显糟糕」的臂几乎不贡献难度——因为它太容易被识别出来,几次采样就够了。绝大部分难度来自那个几乎和最优一样好的臂:要确信 0.90 确实不如 0.95,需要大量样本。 这就是 Δ 在分母上的含义。而且它和 L11 那条 Lai–Robbins 下界的形状是一致的:那里是 Δ/KL,这里是 1/Δ,两者都随差距变小而增大。 顺带说一句这个结论的现实意味:在真实的治疗方案选择里,最贵的不是排除明显没用的疗法,是在两个都不错的疗法之间做出判断。
6 / 65
✓不依赖差距√T,一致✓依赖差距log T,逐问题✓算法本身两个都不用界在描述,不在规定
指名反驳:算法不需要知道 Δ。它被 Δ 支配,而不是使用 Δ。
讲解
指名回去:算法不需要知道差距。UCB 的规则里只有经验均值和计数。 两条界的分工现在清楚了: 不依赖差距的界(L11 那条,√(mT log(T²/δ))):对所有问题一致成立,不管差距多小都不会失效。代价是在容易的问题上很松。 依赖差距的界(这一条,Σ log T/Δ_a):形状好得多(log T 而不是 √T),但系数会随差距变小而爆炸。差距趋于零时它趋于无穷。 两条都对,没有哪条是「真正的」界。它们回答不同的问题:一条问「最坏能多差」,一条问「在这个具体问题上能多好」。 下一集把这个实例真的跑起来,看 UCB 在头几步做了什么——那里会出现一个恰好为零的概率。
7 / 65

知识点 1 · 总结

依赖差距的界:算法不用知道 Δ,遗憾却由 Δ 决定

核心结论

Regret = O(Σ_{Δ_a>0} log T / Δ_a)。UCB 的规则里只有经验均值和计数 —— 没有 Δ。界在描述算法,不在规定算法。

底层机制

断脚趾实例(0.95/0.90/0.10):1/Δ = 20.000 与 1.176,占比 94.4% 对 5.6%。难的是区分 0.95 和 0.90,不是避开 0.10。

常见误解

误解:「界里有 Δ,算法总得先算它」。误读成这样会得出「这算法没法用」的错误结论。

与你的考试

两条界分工不同:不依赖差距(√T,对所有问题一致,但松);依赖差距(log T,形状更好,但 Δ→0 时系数爆炸)。两条都对。

8 / 65

知识点 1 · 检验

在断脚趾实例(0.95 / 0.90 / 0.10)里,依赖差距的界主要由哪个臂贡献?

知识点 3

2 · UCB 给明显坏的臂恰好零概率 —— ε-贪心给它 0.0333

9 / 65
Ut(a)=Q^t(a)+2log⁡tNt(a)
根号盖住整个分式
把断脚趾实例真跑一遍。先把式子写对 —— 转录稿把根号丢了。
讲解
这一集把断脚趾实例真的跑几步。 先把式子写对,因为这一讲的转录稿有一个系统性的问题:根号被反复丢掉。 正确的是:U_t(a) = Q̂_t(a) + √( 2 log t / N_t(a) )——根号盖住整个分式,计数在根号里面。 转录稿里出现过「plus the square root of 2 log t」然后计数被甩到根号外面,也出现过「UCB of a3 is gonna be equal to 2 log 3 divided by 1」完全没有根号。 这一处不像别的笔误那样无害——丢了根号数值就整个错了。下面几个数全靠它。 另外注意这里的常数是 2(√(2 log t / N)),这是 Auer 等人的写法。Sutton & Barto 写成 c·√(ln t / N),c 是可调的。两者不是一回事,别混着引。
10 / 65
探索就是给每个臂一点概率总得都试试才知道
UCB 给那个明显糟糕的臂的概率,此刻恰好是 0。
讲解
这个错误模型来自 ε-贪心留下的印象:探索 = 给每个动作一点随机概率。 但定向的探索不长这样。UCB 在把注意力分给「看起来还有可能最好」的臂的同时,给那些已经明显没戏的臂的概率是恰好零——不是很小,是零。 讲座原话:「while UCB is still splitting its attention among all the arms that look good, it's not putting any weight right now on the arms that it doesn't think could be good」。 下面两镜把这个「零」算出来。
11 / 65
手术并指不处理2.48232.48231.4823t=3 时的上置信界
各拉一次得 1、1、0。前两根打平,第三根差一整个 1.0。
讲解
看什么:前两根一样高,第三根明显矮一截 —— 矮的正好是 1.0,也就是经验均值的差。三个臂的奖励项完全相同(都只拉过一次),所以此刻上置信界的排序就是经验均值的排序。 —— 开局各拉一次,假设得到 1、1、0(讲座设定的情形)。此时 t=3,每个臂 N=1。 奖励项对三个臂完全相同:√(2 log 3 / 1) = 1.4823。 于是: 手术:1.0 + 1.4823 = 2.4823 并指固定:1.0 + 1.4823 = 2.4823 不处理:0.0 + 1.4823 = 1.4823 前两个打平——讲座说这时随机破平,各 50%。第三个差了整整 1.0,不可能被选中。 注意此刻算法还不知道不处理的真实成功率是 0.10;它只看到一个 0。但这已经足够把它排到 argmax 之外了。
12 / 65
UCBε-贪心0.00000.0333此刻选中「不处理」的概率
0 对 0.0333。ε-贪心把 ε 均摊到所有臂,包括已经被排除的那个。
讲解
看什么:左边那根完全没有 —— 那不是画漏了,UCB 此刻选中「不处理」的概率精确地是 0。右边 ε-贪心给它 0.0333:把 ε=0.1 均摊到 3 个臂,不管那个臂是不是早就被排除了。 —— 把两个算法此刻选中「不处理」的概率并排放: UCB:恰好 0。它的上置信界比另外两个低 1.0,argmax 不会选它。 ε-贪心(ε=0.1):0.0333。也就是 ε/|A| = 0.1/3。 课上就是这么问的:「用 ε-贪心时选中 a3 的概率是多少?」一个学生答 0.1,另一个更正为 0.0333——正确的是后者,因为 ε 要均匀分摊到所有臂。(转录稿把这个数写成了「0.03」和「0323」,都指 ε/|A| = 0.0333。) 这个 0.0333 看着不大,但它是每一步都在付的:跑一万步就是大约 333 次把病人送去「不处理」,而这个臂的差距是 0.85——累计损失约 283。 而这笔钱买不到任何东西,因为算法早就知道这个臂没戏了。
13 / 65
手术并指不处理2.17742.66511.6651t=4,手术已被拉两次
指名反驳:探索是定向的。刚拉过的臂让位,被排除的臂仍然为零。
讲解
看什么:中间那根反超了。上一镜里手术和并指是平的;拉了一次手术之后,它的奖励项从 1.4823 缩到 1.1774,于是让位给并指。而第三根仍然排在最后 —— 注意力在两个「还有可能」的臂之间来回,从没分给第三个。 —— 指名回去:探索不是「给每个臂一点概率」,是把注意力定向地投给还有可能最好的臂。 继续跑一步。假设拉了手术并得到 1,此时 t=4,计数变成 (2, 1, 1): 手术:1.0 + √(2 log 4 / 2) = 1.0 + 1.1774 = 2.1774 并指固定:1.0 + √(2 log 4 / 1) = 1.0 + 1.6651 = 2.6651 不处理:0.0 + 1.6651 = 1.6651 翻到并指固定了。手术的均值没变,但它的奖励项缩了,于是让位。 讲座还提了一个很好的自检:就算手术这次拿到的是 0 也一样。那样它的均值掉到 0.5,上界是 0.5+1.1774 = 1.6774,仍然远低于并指的 2.6651。 这就是 UCB 的行为模式:在两个「都有可能最好」的臂之间来回交替,同时对第三个臂始终给零。交替会一直持续到其中一个的置信区间收缩到足以把另一个压下去。 下一集问一个方向问题:既然「加上半径」这么管用,减去半径会怎样?
14 / 65

知识点 2 · 总结

UCB 给明显坏的臂恰好零概率;ε-贪心给它 0.0333

核心结论

开局各拉一次得 1,1,0,t=3:奖励项对三臂相同 √(2 log 3/1)=1.4823,于是上界 2.4823 / 2.4823 / 1.4823。第三个进不了 argmax。

底层机制

拉一次手术后 t=4、N=(2,1,1):2.1774 / 2.6651 / 1.6651 —— 翻到并指。就算手术拿到 0 也一样(1.6774 仍远低于 2.6651)。

常见误解

误解:「探索就是给每个臂一点概率」。此刻 UCB 给坏臂 0,ε-贪心给它 ε/|A| = 0.0333 —— 跑一万步就是约 333 次,乘差距 0.85 ≈ 283 的损失,且买不到任何信息。

与你的考试

转录稿系统性丢根号:正确是 √(2 log t / N_t(a)),计数在根号里面。另:这里常数 2 是 Auer 等人的写法;S&B 写成 c·√(ln t/N),c 可调,别混着引。

15 / 65

知识点 2 · 检验

开局各拉一次得到 1、1、0 后,UCB 选中第三个臂的概率是多少?

知识点 4

3 · 为什么必须上界:用下界贪心会确认偏误锁死

16 / 65
✓加半径上置信界✕减半径下置信界同一个量,两个符号
既然「加上半径」这么管用,减去它会怎样?
讲解
一个很自然的问题:既然「均值加半径」这么管用,那「均值减半径」呢? 下置信界也是一个完全合理的量——它是「这个臂至少有多好」的保守估计。选下界最高的臂,听起来像是一个稳健的规则:只选那些你有把握不差的。 讲座在这里停下来让大家讨论了几分钟,因为这个问题的答案正是乐观之所以必要的理由。 这一集算这个答案。
17 / 65
用下界更稳健只选有把握不差的,保守一点总没错
结果正相反:用下界会确认偏误锁死,遗憾变成线性。
讲解
这个错误模型在很多场合是对的——在已经部署的系统里做决策,保守通常是美德。 但在需要学习的场合,它会自毁。 讲座给的设定是两个臂:a1 的上界更高,a2 的下界更高。按下界规则,你会一直选 a2。 课上一个学生说出了关键词:confirmation bias,确认偏误。 下一镜把这个机制拆开,它比「保守」这个词能解释的要精确得多。
18 / 65
1010²10³10⁴10⁵2.1463.0353.7174.2924.798没被拉的臂,半径随 t
没被拉的臂:n 冻住,而 log t 在涨 —— 它的半径越来越宽。
讲解
看什么:柱子一路变高:一个从没再被拉过的臂(n 冻在 1),它的半径 √(2 log t) 随时间持续增长 —— 2.146 到 4.799。这一个事实同时解释了 UCB 为什么必然回头,和 LCB 为什么永不回头。 —— 机制的核心是一个很小的观察:没被拉的臂,它的半径会随时间变宽。 因为半径是 √(2 log t / n):n 冻住不动,而 t 一直在涨。实测这个半径: t=10 → 2.1460 t=10² → 3.0349 t=10³ → 3.7169 t=10⁴ → 4.2919 t=10⁵ → 4.7985 现在把这一个事实分别代进两条规则: 上界规则:这个臂的分数是「均值 + 半径」,半径变宽 ⟹ 分数上升 ⟹ 迟早会被选中。 下界规则:分数是「均值 − 半径」,半径变宽 ⟹ 分数下降 ⟹ 越不拉越不会拉。 同一个量,符号一翻,行为完全相反。一个保证回头,一个保证不回头。
19 / 65
10³5×10³2×10⁴8×10⁴25.0526.3428.3430.00下界规则的每千步遗憾
不降反升,停在 30.0。同期 UCB 从 24.64 掉到 2.07。
讲解
看什么:四根柱子一根比一根高,最后停在 30.0。这是「线性遗憾」最直白的样子 —— 每步的损失非但不降,还涨了(早期还有些运行没定下来,定下来之后就再也不动了)。对照 UCB 同期:24.64 → 2.07。 —— 实测。两个臂 (0.55, 0.45)——讲座说两臂情形最容易想清楚,也确实最能看出问题。每个数据点 300 次独立重复。 下界规则的每千步遗憾: T=10³ → 25.05 T=5×10³ → 26.34 T=2×10⁴ → 28.34 T=8×10⁴ → 30.00 不降反升,最后停在 30.0。同期 UCB:24.64 → 12.71 → 5.68 → 2.07,一路下降。 把锁死的比例拆出来看,机制就完全显形了:30.0% 的运行最终锁死在次优臂上,而且这个比例不随 T 衰减(25.0% → 26.3% → 28.3% → 30.0%,在往上走)。 而锁死那部分的每千步遗憾是 99.999——精确等于 1000 × Δ = 1000 × 0.10 = 100。完全锁死,每一步都在亏满额,永远不回头。 0.30 × 100 = 30.0,正好对上总数。线性遗憾就是这么来的。
20 / 65
✕下界规则30% 锁死✕锁死之后每步亏满✓上界规则必然回头拿不到能推翻自己的证据
指名反驳:保守不是稳健。乐观的方向不能反。
讲解
指名回去:用下界不是稳健,是自毁。 讲师的说法最准确:「you're never gonna get information that allows us to disprove our hypothesis」——你永远拿不到能推翻自己假设的证据。 完整的循环是这样的:选了 a2 → 拿到样本、a2 的估计收敛到真值、半径收缩 → a2 的下界上升;与此同时 a1 没被选 → n 冻住而 log t 在涨 → a1 的下界下降。于是 a2 更领先,更不会选 a1。 这是一个正反馈,而且它不需要 a2 真的更好——它只需要 a2 一开始看起来更好。实测 30% 的运行就是这么陷进去的。 再看一眼上界规则为什么免疫:完全相同的机制,符号相反。a1 没被选 → 它的上界随 log t 上升 → 迟早必然被选中 → 拿到证据 → 假设被检验。 这就是 L11 那句「乐观面对不确定」里「乐观」两个字不能换的原因。不是风格偏好,是一个关于「能不能拿到反驳自己的证据」的结构性要求。 频率派这条线到此讲完了。下一集换一整套语言。
21 / 65

知识点 3 · 总结

用下置信界贪心会确认偏误锁死 —— 乐观的方向不能反

核心结论

机制只有一句:没被拉的臂,n 冻住而 log t 在涨,半径变宽(t=10→10⁵ 时 2.146→4.799)。上界规则里它让分数上升(必然回头),下界规则里让分数下降(永不回头)。

底层机制

实测两臂 (0.55,0.45)、300 次重复:下界规则每千步遗憾 25.05→26.34→28.34→30.00(不降反升),同期 UCB 24.64→2.07。

常见误解

误解:「用下界更稳健,保守一点没错」。在已部署的系统里保守是美德;在需要学习的场合它自毁。

与你的考试

拆开看:30.0% 的运行锁死在次优臂且比例不随 T 衰减;锁死那部分每千步遗憾 99.999(= 1000×Δ,亏满额)。0.30×100 = 30.0,正好对上。讲师原话:「you're never gonna get information that allows us to disprove our hypothesis」。

22 / 65

知识点 3 · 检验

为什么「选下置信界最高的臂」会导致线性遗憾?

知识点 5

4 · 换到贝叶斯:Beta 的 α、β 是伪计数,不是拟合参数

23 / 65
✕频率派造置信区间✓贝叶斯维护后验换一整套语言
不再造置信区间,而是维护一个分布,用数据把它更新。
讲解
前三集都在频率派的框架里:真值是一个未知的固定数,我们用 Hoeffding 围一个区间,然后对区间的上端乐观。 贝叶斯派换一整套语言:真值本身是一个随机变量,我们对它维护一个分布——先验,然后用观测到的数据更新成后验。 换语言不是为了换而换。它会带来一个前三集做不到的东西:一个不需要设计奖励项、不需要挑 δ、也不需要 Hoeffding 的算法。 但先得回答一个实际问题:更新一个分布,计算上代价多大?
24 / 65
α、β 是拟合出来的每次重新拟合一遍分布
不用拟合。它们就是数出来的 —— 见过多少个 1,多少个 0。
讲解
一提到「维护分布」,第一反应通常是:那得每一步重新拟合一遍,太贵了。 不用。这就是共轭性要解决的问题。 共轭的意思是:如果先验属于某个分布族,观测到数据之后的后验还属于同一族,只是参数变了。于是更新退化成改几个数,不需要任何积分或优化。 对伯努利奖励,共轭的先验族是 Beta 分布。而它的两个参数有一个极简单的含义——下一镜就是这个。
25 / 65
Beta(α,β) → r=1  Beta(α+1,β)Beta(α,β) → r=0  Beta(α,β+1)
α 数 1 的个数β 数 0 的个数
伪计数:α 是「见过多少个 1」,β 是「见过多少个 0」。
讲解
Beta 分布的两个参数就是伪计数: α = 见过多少个 1(成功)。 β = 见过多少个 0(失败)。 「伪」的意思是先验也可以贡献计数。Beta(1,1) 就是 [0,1] 上的均匀分布——相当于「假装已经见过一个 1 和一个 0」,也就是完全不带偏见。 更新规则于是简单到不像话:观测到 1,α 加一;观测到 0,β 加一。 恰好加一个。这里要标一处转录稿的问题:它写成「if we observe a 1 we update the first parameter, also we're gonna update the second parameter」——「also」应该是「otherwise」。两个都加就等于每次都加一个 1 和一个 0,分布的均值永远不动,整个机制就废了。 这一处一个字之差,方向完全不同。
26 / 65
✓手术Beta(4,2)✓并指Beta(3,3)✕不处理Beta(2,4)—先验都是 Beta(1,1)各观测四次之后
从 Beta(1,1) 出发,各拉四次:3胜1负 / 2胜2负 / 1胜3负。
讲解
把断脚趾实例放进来。三个臂都从 Beta(1,1)(均匀先验,不带偏见)出发,各拉四次: 手术得 3 胜 1 负 → Beta(4, 2) 并指固定得 2 胜 2 负 → Beta(3, 3) 不处理得 1 胜 3 负 → Beta(2, 4) 对照一下这套记法和频率派的差别: 频率派手里是一个数加一个区间(Q̂ 和 u),两者是分开维护的。 贝叶斯手里是一个分布,均值和不确定性都装在同一个对象里——Beta(4,2) 的均值是 4/6,而它有多集中由 α+β 决定。 拉得越多,α+β 越大,分布越尖——「不确定性随数据收缩」这件事不需要单独设计,它是分布自带的。 这是换语言的第一个回报。
27 / 65
✓共轭更新只改数✓α β是计数✕β 这个字母后半讲另指记号会撞车
指名反驳:不用拟合,共轭让更新退化成加一。
讲解
指名回去:不需要拟合。共轭性让「更新一个分布」退化成把一个整数加一。 代价是模型假设:这只在奖励真是伯努利、且先验取 Beta 时成立。换一种奖励分布就要换一个共轭族(高斯配高斯、泊松配伽马),而对复杂的似然,共轭族可能根本不存在——那时就得回到采样或变分,计算代价就回来了。 共轭不是普遍的便利,是一个恰好很合用的特例。而老虎机的伯努利奖励恰好落在这个特例里。 最后标一处这一讲最容易撞车的记号:β。 前半讲它是 Beta 分布的第二个参数(数 0 的个数)。 后半讲它是 MBIE-EB 的探索加成缩放常数(第九集会看到)。 两者毫无关系。读到 β 时先看在哪半讲。 分布有了。下一集问:拿它怎么选臂?
28 / 65

知识点 4 · 总结

Beta 的 α、β 是伪计数,不是拟合参数

核心结论

共轭:Beta 先验 + 伯努利观测 ⟹ 后验还是 Beta。更新退化成 α 加一(见到 1)或 β 加一(见到 0) —— 不需要积分或优化。

底层机制

Beta(1,1) = 均匀分布,即「假装见过一个 1 一个 0」。不确定性装在分布里:α+β 越大分布越尖,收缩不需要单独设计。

常见误解

误解:「α、β 要拟合」。它们是数出来的。转录稿有一字之差的坑:「we update the first parameter, also the second」—— 应是 otherwise,恰好一个递增。

与你的考试

代价是模型假设:共轭族不普遍存在,复杂似然要回到采样/变分。记号撞车:β 在前半讲是 Beta 的参数,在后半讲是 MBIE-EB 的加成常数,毫无关系。

29 / 65

知识点 4 · 检验

Beta-Bernoulli 共轭为什么让贝叶斯老虎机在计算上可行?

知识点 6

5 · 概率匹配:直观上正确,但没有明显的算法

30 / 65
后验有了拿它怎么选臂
分布维护好了。但选哪个臂还是个没回答的问题。
讲解
上一集把后验维护起来了:三个 Beta 分布,更新成本几乎为零。 但这还不是一个算法。拿这三个分布怎么选臂? 注意这一步不是显然的。频率派那边这一步很直接——造一个上界,取 argmax。贝叶斯这边手上是三个分布,而「取三个分布的 argmax」不是一个有定义的操作。 这一集看一个几乎一定是对的答案,以及它为什么不能直接执行。
31 / 65
按后验均值比例选均值高的多选一点,公平
那又把不确定性扔了 —— Beta(4,2) 和 Beta(40,20) 均值一样。
讲解
一个直接的想法:按后验均值的比例分配选择概率。均值高的多选,均值低的少选。 但这又犯了贪心那个错——只用了分布的均值,把形状扔了。 Beta(4,2) 和 Beta(40,20) 的均值完全一样(都是 2/3),但前者是拉过 4 次的结果,后者是拉过 58 次的结果,集中程度差得很远。按均值比例选,这两种情形会得到一样的处理。 而它们显然该被区别对待:前者「可能其实是 0.9」,后者基本没这个可能了。 下一镜的规则会把整个分布用上。
32 / 65
P(选 a) = P(a=arg⁡maxa′θa′ | 数据)
以「它是最优臂」的概率选它
概率匹配:选某个臂的概率,等于它确实是最优臂的后验概率。
讲解
概率匹配(probability matching):以某个臂确实是最优臂的后验概率去选它。 这条规则几乎一定是对的,因为它自动做到了想要的每一件事: 明显最好的臂:是最优的概率接近 1 → 几乎总被选中(利用)。 没怎么试过的臂:后验很宽 → 是最优的概率不小 → 会被选中(探索)。 明显糟糕的臂:是最优的概率接近 0 → 几乎不被选中。 和 ε-贪心对比一下就看出区别:ε-贪心给第三类臂的是 ε/|A|,一个固定的数;概率匹配给它的是一个随证据收缩的数。 和 UCB 对比:UCB 给第三类臂恰好零,概率匹配给它一个很小但非零的数——所以它永远留着翻案的可能。 这条规则自己就是一个完整的答案。问题在于它不是一个算法。
33 / 65
P(a=arg⁡max)=∫⋯∫1[θa=max]∏a′p(θa′)dθa′
m 个臂就是 m 重积分
要真算这个概率,得做一个 m 维积分 —— 没有闭式。
讲解
把「它是最优臂的概率」写出来,问题就暴露了。 这个概率是一个 m 维积分:对所有臂的参数联合积分,被积函数是「这个臂的 θ 恰好是最大值」这个指示函数。 两个臂的伯努利情形勉强能推;三个臂就已经没有好用的闭式了,更别说连续动作或复杂的似然。 所以概率匹配的处境很尴尬:它把「该怎么选」回答得很好,却没有说「怎么执行」。 讲座提到这个想法从 1929 年左右就有了。(按约定标一处:讲座里 Thompson 采样被说成「roughly the 1920s」,Thompson 的论文实际是 1933 年;这一讲的年份都是约数。) 一个九十多年前就被认为正确、却长期没法执行的规则。下一集是它的解法——而解法简单到有点荒唐。
34 / 65
✕按均值比例又扔了形状✓概率匹配规则是对的✕怎么算m 维积分正确 ≠ 可执行
指名反驳:不是按均值比例,是按「它是最优臂」的概率。
讲解
指名回去:不该按后验均值的比例选,那等于又把分布的形状扔了——Beta(4,2) 和 Beta(40,20) 会被同等对待。 该按的是「它是最优臂」的后验概率。这条规则把整个分布都用上了,而且三种臂的处理方式全部自动正确。 但要把话说完整:规则正确不等于有算法。这个概率是一个 m 维积分,三个臂就没有好用的闭式了。 这种处境在 RL 里出现过好几次,形状都一样——精确的东西不可算,可算的东西不精确(L09 的相对性能恒等式、L10 的 max KL 都是)。通常的出路是近似。 而这一次不是。下一集的解法不近似任何东西:它恰好实现这条规则,而且只用一行代码。
35 / 65

知识点 5 · 总结

概率匹配:以「它是最优臂」的概率去选它

核心结论

P(选 a) = P(a 是最优臂 | 数据)。三种臂自动各得其所:明显最好的→概率≈1;没试过的→后验宽、概率不小;明显糟的→概率≈0 但非零(保留翻案可能)。

底层机制

对照:ε-贪心给坏臂固定的 ε/|A|;UCB 给它恰好 0;概率匹配给它一个随证据收缩的小数。

常见误解

误解:「按后验均值比例选」。那又把形状扔了 —— Beta(4,2) 与 Beta(40,20) 均值相同,集中程度却差很远。

与你的考试

正确 ≠ 可执行:这个概率是 m 维积分,三个臂就没有好用的闭式。想法从 1929 年左右就有(讲座把 Thompson 说成 1920 年代,论文实为 1933)。

36 / 65

知识点 5 · 检验

概率匹配这条规则的问题在哪里?

知识点 7

6 · Thompson 采样:抽一个样本当真 —— 恰好就是概率匹配

37 / 65
✓抽一组 θ从后验✓当成真的不加权✓贪心取 argmax✓更新加一整个算法四步
那个积分不用算。Thompson 采样:抽一次样,当真,贪心。
讲解
解法叫 Thompson 采样,整个算法四步: 一、从每个臂的后验里抽一个参数。 二、假装抽到的就是真的。 三、按这组假想的真值贪心,取 argmax。 四、观察奖励,更新那个臂的后验。 没有置信区间,没有奖励加成,没有 δ,没有积分。 第二步是最反直觉的:为什么可以把一个随机抽样当成真的去贪心?这一集就是回答它。
38 / 65
抽样只是近似那个积分多抽几次估一估概率
不是近似。抽一次就精确地实现了概率匹配。
讲解
最自然的解读是:那个积分算不了,就用蒙特卡洛估一估——多抽几组样本,数一数每个臂当最大值的频率,得到概率的估计,然后按这个估计去随机选臂。 这不是 Thompson 采样在做的事。 Thompson 采样只抽一次,而且根本不去估那个概率。它抽一组 θ,取 argmax,选那个臂,完事。 而它得到的选择分布,恰好等于概率匹配要的那个分布。不是估计,不是近似——相等。 下一镜说明为什么,以及数值上验一遍。
39 / 65
抽一组 θ,取 argmax某个臂中选的概率= 它的 θ 恰好最大的概率
按定义相等:中选 ⟺ 它抽到的 θ 最大 ⟺ 它是(这次抽样下的)最优臂。
讲解
为什么相等?把两边各写一遍就看出来了。 概率匹配要的:P(选 a) = P(θ_a 是所有 θ 中最大的 | 数据)。 Thompson 采样做的:从后验抽一组 θ,选 θ 最大的那个臂。那么臂 a 中选的概率 = P(抽出来的 θ_a 恰好最大) = P(θ_a 是最大的 | 数据)。 同一个式子。 关键在于:那个积分之所以难算,是因为要把「谁最大」这个事件的概率求出来;而 Thompson 采样根本不需要这个概率——它只需要按这个概率发生一次。而从后验抽样再取 argmax,就是让这个事件按它本来的概率发生。 抽样把「算出概率」换成了「按这个概率掷一次骰子」。而后者恰恰是我们真正需要的——我们要的本来就只是选一个臂。
40 / 65
0.6975手术0.2398并指0.0627不处理TS 频率 → 最优概率
两组数字逐位吻合到小数点后三位 —— 剩下的是蒙特卡洛噪声。
讲解
看什么:三根柱子几乎纹丝不动。起点是 Thompson 采样实际选各臂的频率,终点是独立算出的「它是最优臂」的后验概率。动不了才是结论 —— 如果 TS 只是近似,柱子会明显挪一下。 —— 数值自证。三个臂的后验取 Beta(4,2)、Beta(3,3)、Beta(2,4)(上一集断脚趾各拉四次之后的样子),做 40 万次蒙特卡洛: Thompson 采样的选择频率:0.6979 / 0.2404 / 0.0617 「它是最优臂」的后验概率:0.6975 / 0.2398 / 0.0627 逐位吻合,差异都在 0.001 量级——那就是 40 万次抽样本身的噪声。 (说明一句方法:这两行是用两组独立的样本分别算的,所以吻合不是同一批数据的自我复读。但它们本来就该相同,因为按上一镜的论证,二者是同一个式子。) 再看这三个数在做什么:手术 0.70,并指 0.24,不处理 0.0617——小,但不是零。对照上一集:UCB 给坏臂恰好零,ε-贪心给它固定的 0.0333。Thompson 给的这个 0.0617 会随着证据积累继续缩,而 ε-贪心那个永远不动。 标一处转录稿的问题:讲 Thompson 的执行轨迹时说「we're going to select theta as 0.6」——被选的是「抽到 θ=0.6 的那个臂」,不是 θ 本身。参数是抽出来的,动作是选出来的,两者不能混。
41 / 65
20010³5×10³2×10⁴2.73×4.08×6.91×11.14×UCB 遗憾 ÷ TS 遗憾
指名反驳:不是近似,是恰好相等。而且在这个实例上它跑得更好。
讲解
看什么:倍数一路拉大:在这个实例上,UCB 的遗憾从 TS 的 2.7 倍涨到 11.1 倍。注意这是比值在涨 —— 两者的遗憾都还在增长,只是 TS 增长得慢得多。这是这个实例上的结果,不是普遍定理。 —— 指名回去:抽样不是在近似那个积分。它恰好实现了概率匹配,因为「按某个概率发生一次」不需要先把那个概率算出来。 这是本讲最漂亮的一处:一个看上去需要计算的东西,被一次采样免费实现了。 实测跑一下断脚趾(Beta(1,1) 先验,120 次重复),TS 对 UCB 的平均遗憾: T=200 → 4.14 对 11.32(2.73 倍) T=10³ → 7.26 对 29.59(4.08 倍) T=5×10³ → 11.31 对 78.16(6.91 倍) T=2×10⁴ → 14.54 对 161.89(11.14 倍) 但这句话要说得准:这是这个实例、这个先验下的结果,不是一个普遍定理。TS 的优势来自它能利用先验信息,而先验错了它也会被带偏——课上就有学生问到这一点(如果一个臂看起来特别好,别的臂会不会很难翻身)。Thompson 采样在贝叶斯遗憾上确实有匹配 Lai–Robbins 下界的结果,但那是另一套陈述。 老虎机到此讲完。下一集换判据,然后回 MDP。
42 / 65

知识点 6 · 总结

Thompson 采样:抽一次样当真 —— 恰好就是概率匹配

核心结论

四步:从后验抽一组 θ → 假装是真的 → 贪心 argmax → 更新。没有置信区间、没有奖励加成、没有 δ、没有积分。

底层机制

为什么恰好相等:中选 ⟺ 它抽到的 θ 最大 ⟺ 它是最优臂 —— 同一个式子。抽样把「算出概率」换成了「按这个概率掷一次骰子」,而后者正是我们要的。

常见误解

误解:「抽样是在近似那个积分」。不是。40 万次验证:TS 频率 0.6979/0.2404/0.0617 vs 最优概率 0.6975/0.2398/0.0627,差异只是抽样噪声。

与你的考试

实测断脚趾(Beta(1,1) 先验)UCB/TS 遗憾比:2.73 → 4.08 → 6.91 → 11.14 倍。但这是这个实例、这个先验下的结果,不是普遍定理。转录稿:「select theta as 0.6」应为选那个臂 —— 参数是抽的,动作是选的。

43 / 65

知识点 6 · 检验

Thompson 采样与概率匹配是什么关系?

知识点 8

7 · PAC:数大错的个数,而不是把所有错加起来

44 / 65
✕很多人头疼每人亏一点✕几个人重伤每人亏很多累积遗憾看不出区别
遗憾是把所有错加起来。于是这两种情形完全等价。
讲解
老虎机讲完了。这一集换一个判据,理由很具体。 遗憾是把每一步的损失加起来。于是两种完全不同的情形会得到完全相同的分数: 很多人受了一点小损失(讲座的说法:给所有人都弄得头疼)。 少数人受了严重损失(少数病人出现很严重的副作用)。 讲师说得很直白:「if a couple of people have really bad side effects, that's the same as a lot of people having headaches when you average over those」。 在很多场合这个等价没问题。在病人身上它不成立。
45 / 65
遗憾已经够用了总损失小就是好算法
总损失相同的两个算法,可接受程度可以完全不同。
讲解
这个错误模型在 L11 一整讲里都是对的——那里造遗憾这把尺子,恰恰是为了替换掉更弱的判据。 但遗憾有一个内建的假设:损失是可加的、可互相抵偿的。1000 个人各亏 0.01,和 10 个人各亏 1.0,在这个尺度下一样。 这是把伦理问题折算成了算术问题。而在治疗决策里,这个折算通常不成立——「一千个人轻微不适」和「十个人重度损伤」不是同一件事,哪怕总量相等。 所以需要一个能区分它们的判据。
46 / 65
以概率 1−δ除了多项式多步之外每步都 ε-最优
PAC:大概(1−δ)、近似(ε-最优)、正确 —— 而例外步数有上限。
讲解
PAC:Probably Approximately Correct,「大概近似正确」。在决策的语境里定义是: 算法所选的动作是 ε-最优的(approximately,近似),以概率 1−δ(probably,大概),除了多项式多步之外的每一步。 三个部分各对应名字里的一个词。最要紧的是第三个: 它数的是「不够好的步数有多少」,而不是「一共亏了多少」。 讲师给的解释很直接:我们想界定的是会经历严重副作用的病人的数量——不是他们受的伤加起来有多大,是有多少人。 而且这个上限是事先可算的:它是定义域参数(动作数、ε、δ 等)的多项式函数。讲师特别强调了这一点:「you should be able to compute how many mistakes you might make」——在跑之前就能算出来。
47 / 65
01000×0.011010×1.0遗憾 → 大错的个数
同样的总损失 10。换成 PAC 计数(ε=0.1),左边塌到零。
讲解
看什么:两根柱子开始时一样高 —— 那是累积遗憾,两种情形都是 10,分不开。然后左边塌到零:换成「亏超过 ε=0.1 的步数」,1000 个各亏 0.01 的一个都不算,而 10 个各亏 1.0 的全都算。同一组事实,两把尺子给出完全不同的读数。 —— 把两种情形摆出来算。 情形一:1000 个人,每人损失 0.01。累积遗憾 = 10。 情形二:10 个人,每人损失 1.0。累积遗憾 = 10。 遗憾完全相同。 换成 PAC 的计数,取 ε=0.1: 情形一:每一步的损失 0.01 小于 ε,所以「非小错误」的个数是 0。 情形二:每一步的损失 1.0 大于 ε,所以个数是 10。 0 对 10。同一组事实,因为问的问题不同,读数完全不同。 哪一把尺子对?取决于你的损失能不能互相抵偿。如果能(比如广告点击率),遗憾更合适,它用上了全部信息。如果不能(比如严重副作用),PAC 才是在问对的问题。 判据不是数学问题,是你要负什么责任的问题。
48 / 65
✓遗憾损失加总✓PAC大错计数✓哪个对看能否抵偿两个判据,两个问题
指名反驳:遗憾不够用 —— 它假设损失可以互相抵偿。
讲解
指名回去:遗憾不够用,因为它内建了「损失可加可抵偿」这个假设,而这个假设在很多真实场景里不成立。 两个判据的分工: 遗憾:损失能抵偿时更合适,它用上了每一步的全部信息。老虎机文献主要用它(讲座原话:「In bandits, most of the time we look at regret」)。 PAC:损失不能抵偿时才在问对的问题。它在 MDP 这一块更常用。 两者不是竞争关系。而且讲师提了一个好消息:「a lot of the algorithms that are PAC are based on optimism or Thompson sampling」——PAC 算法大多就建立在前面几集那两个想法上。换判据不用换工具箱。 最后标一处讲座里的边界情形:PAC 的例子里说 0.9 的臂「在 0.95 的 0.05 之内」。这是等号成立的边界——差距恰好是 0.05,只有在 ε ≥ 0.05 时才算 ε-最优,严格小于号下不算。举例时挑边界值容易把定义讲糊。 老虎机讲完了,判据也齐了。下面两集回 MDP。
49 / 65

知识点 7 · 总结

PAC:数大错的个数,而不是把所有错加起来

核心结论

以概率 1−δ,除了多项式多步之外,每一步选的动作都是 ε-最优的。三个部分分别对应 Probably / Approximately / Correct。且这个上限事先可算。

底层机制

同一组事实两把尺子:1000×0.01 与 10×1.0,遗憾都是 10;换成 ε=0.1 的大错计数,是 0 对 10。

常见误解

误解:「遗憾已经够用了」。遗憾内建了损失可互相抵偿的假设 —— 把伦理问题折算成了算术问题。

与你的考试

两者分工:损失能抵偿用遗憾(老虎机主流),不能抵偿用 PAC(MDP 更常用)。好消息:PAC 算法大多就建立在乐观或 Thompson 采样上。讲座举例时用了 0.9 vs 0.95 这个边界情形(ε 须 ≥ 0.05)。

50 / 65

知识点 7 · 检验

PAC 判据相对累积遗憾,多回答了什么问题?

知识点 9

8 · 乐观初始化本身没有保证:要到 10^T 那么大才有

51 / 65
Q0(s,a) ← Rmax1−γ
把乐观搬到 MDP
最直接的搬法:把 Q 初始化成可能的最大回报,让没试过的都显得好。
讲解
回到 MDP。怎么把「乐观面对不确定」搬过来? 最直接的做法是乐观初始化:把每个 Q(s,a) 初始化成 R_max/(1−γ)——折扣无穷时域下可能拿到的最大回报。 效果很直观:任何没试过的状态动作对看起来都是最好的,所以 Q 学习会先把它们试一遍;试过之后 Q 值降到真实水平,注意力自动转向别处。 这看上去就是 UCB 的想法,用一个更便宜的方式实现了:不用维护计数,不用算奖励项,只要把初始值调高。 它管用吗?
52 / 65
这样就有保证了乐观初始化 = MDP 版的 UCB
乐观初始化本身不带任何保证 —— 它是个好启发式,不是定理。
讲解
这个错误模型很值得拆,因为乐观初始化在实践中确实常常有用,于是很容易被当成有理论支撑的做法。 它没有。讲座的措辞是:先想想只做乐观初始化会怎样——然后给出的结论是,单靠它得不到 PAC 保证。 差别在哪里?UCB 的奖励项随时间重新变宽(L11 第九集:n 冻住而 log t 在涨)。而乐观初始化是一次性的:Q 值降下去就再也不会自己回升。一个状态动作对如果因为几次不走运的采样被压低了,没有任何机制让它翻案。 这正是第三集那个确认偏误的结构,只是换了个地方出现。 那要多乐观才够?下一镜给一个真实的答案,而这个答案有点吓人。
53 / 65
Q0 ← Rmax(1−γ)∏iαi
学习率之积在分母
Even-Dar 与 Mansour(2002):要 PAC,初始值得再除以学习率之积。
讲解
Even-Dar 与 Mansour 在 2002 年证明了:Q 学习可以是 PAC 的——但需要的初始值不是 R_max/(1−γ),而是它再除以所有学习率的乘积。 先标一处口误,因为它把方向弄反了。讲座说的是「R_max divided by 1−γ times the product of those learning rates」——乘以学习率。但学习率都小于 1,乘上去只会让初始值变小,而我们要的是更大。 正确的是除以学习率之积,等价于乘以学习率倒数的积。 讲座紧接着自己算的那个数就是证据:(1/0.1)^T = 10^T——倒数,不是学习率本身。 (另标一处:这个结果里的 t 被说成「学到最优 Q 所需的样本数」,而这一讲其他地方 t 一直是老虎机的轮次计数器。读成一个独立的时域符号 T。)
54 / 65
✓T=510⁵✕T=1010¹⁰✕T=2010²⁰—α=0.1每步 ×10这些是初始值的倍数
学习率 0.1 时,倍数是 10^T —— T=20 就已经是 10²⁰。
讲解
代个数。学习率取 α=0.1(一个很常见的值),那么每一步贡献一个 1/0.1 = 10 的因子: T=5 → 10⁵ T=10 → 10¹⁰ T=20 → 10²⁰ 指数增长,而且底数是 10。 这些不是最终的 Q 值,是初始值相对 R_max/(1−γ) 的倍数。也就是说,要让 Q 学习享有 PAC 保证,你得把初始值调到一个天文数字。 后果是可以想象的:初始值这么高,每个状态动作对都要被拉低无数次才会让位,算法在很长时间里等价于穷举。保证是真的,但按它做等于不做。 这个形状我们在 L10 见过一模一样的——TRPO 那里理论常数 C 在 γ=0.99 时是 39600ε,按它走步子小到策略几乎不动。一个正确的理论结果,可以松到没有任何实用价值。这是这门课里第二次出现同一个教训。 (学习率大一点会好些但救不了:α=0.5 时 T=20 也已经是 10⁶。)
55 / 65
✕乐观初始化好用,没保证✕有保证的版本10^T,没法用✓Jin 等无模型有界了启发式和定理要分清
指名反驳:乐观初始化是启发式。有保证的那个版本用不了。
讲解
指名回去:乐观初始化本身不带保证。它是一个常常管用的启发式,而「常常管用」和「有定理」是两回事——这个区别 L10 第九集已经强调过一次(TRPO 不是那条定理的实现)。 把 MDP 探索的现状排一下: 乐观初始化:便宜、常用、无保证。 Even-Dar & Mansour 式的初始化:有 PAC 保证,但初始值含 10^T 量级的因子,没法用。 Jin 等人(Berkeley):给无模型的 Q 学习加上 UCB 式的奖励项,得到了遗憾界——也就是说,把 L11 那套真正搬进了 MDP,而不是用初始值凑。 关于最后这条要标一处:Jin 等人的结果是有限时域 episodic 设定,用时域 H 参数化;而讲座通篇用的是折扣无穷时域的记号(γ、R_max/(1−γ))。两套记号被悄悄混着用了。它们能互相翻译(1/(1−γ) 扮演 H 的角色),但不是同一个设定。 下一集看另一条路:基于模型的方法,而它有一个干净的 PAC 结果。
56 / 65

知识点 8 · 总结

乐观初始化本身没有保证:有保证的版本要到 10^T 那么大

核心结论

乐观初始化把 Q₀ 设成 R_max/(1−γ),但它是一次性的:Q 值降下去再也不会自己回升。UCB 的奖励项会随 log t 重新变宽 —— 这才是能翻案的原因。

底层机制

Even-Dar & Mansour (2002):PAC 需要 R_max/((1−γ)·Πα_i)。α=0.1 时倍数是 10^T:T=5→10⁵,T=10→10¹⁰,T=20→10²⁰。

常见误解

误解:「乐观初始化 = MDP 版的 UCB,有保证」。它是好用的启发式,不是定理 —— 同 L10「TRPO 不是那条定理的实现」。

与你的考试

口误方向错:讲座说「乘以学习率」,乘以 <1 的数只会变小;正确是除以学习率之积(讲座自己算的 (1/0.1)^T 就是证据)。记号混用:Jin 等人的结果是有限时域 episodic(参数 H),讲座通篇用折扣记号。

57 / 65

知识点 8 · 检验

为什么乐观初始化本身不足以给出 PAC 保证?

知识点 10

9 · MBIE-EB:用计数建模 + β/√N 奖励加成,样本复杂度是多项式

58 / 65
✓数计数N(s,a)✓拟合模型MLE✓加奖励β/√N✓规划当成真的MBIE-EB 四步
能拿到 PAC 保证的那条路:基于模型,而且只有四步。
讲解
上一集的结论是:无模型这条路上,能用的没保证,有保证的用不了。这一集看另一条路。 MBIE-EB(model-based interval estimation with exploration bonus),四步: 一、数计数 N(s,a):每个状态动作对访问了多少次。 二、用计数拟合转移和奖励的最大似然估计。 三、给奖励加一个探索加成 β/√N(s,a)。 四、把这个加了料的模型当成真的去规划。 注意第三步的形状:1/√N——和 UCB 的奖励项是同一个衰减率。乐观没有消失,它换了个位置:从值函数的初始化搬到了奖励函数里。
59 / 65
无模型更简单,所以更好何必去估一个模型
在探索这件事上,基于模型的路更早拿到了保证。
讲解
这个错误模型有很强的时代背景:深度 RL 的大部分成果在无模型这边(L06 的 DQN、L08 到 L10 的策略梯度),而估一个模型看起来又贵又容易出错。 但在探索的理论这件事上,情况反过来。讲师的原话是:「all of the work that's been going on has been in the model-based setting」——PAC 结果基本都出在基于模型这一侧。 原因不难理解:模型把「我对这里了解多少」这件事显式地记下来了。N(s,a) 是一个直接可查的量,不确定性可以直接由它算出来。无模型方法把一切压进 Q 值,而 Q 值里看不出哪部分来自充分的证据,哪部分来自一次侥幸。 讲座也说明了为什么还是要讲奖励加成而不是显式置信集:如果动态模型是个深度网络,写下它的不确定性非常棘手;而奖励加成可以直接搬到无模型的情形,且经验上和显式置信集差不多好。
60 / 65
R~(s,a)=R^(s,a)+βN(s,a),β=11−γ12ln⁡2|S||A|mδ
根号和 ½ 都在里面
奖励加成的常数。转录稿把根号和 ½ 都丢了 —— 差约 4.9 倍。
讲解
把奖励加成的常数写清楚,因为转录稿这里又丢了根号。 正确的是:β = (1/(1−γ)) · √( ½ · ln( 2|S||A|m/δ ) )。 转录稿念的是「one over one minus gamma, two log the number of states, number of actions, two times m, divided by delta」——没有根号,也没有 ½。 差多少?取 |S|=10、|A|=4、m=100、δ=0.05、γ=0.9: 正确 β = 24.477 丢掉根号之后 = 119.829 差 4.9 倍。 再看这个常数的结构,每一块都有含义: 1/(1−γ):有效时域。一个奖励上的误差会沿着时域累积这么多倍。 ln(2|S||A|m/δ):并集界——要对所有状态动作对同时成立,所以 |S||A| 进了 log。这就是 L11 第八集那一套,换了个场合。 ½ 和根号:Hoeffding 反解留下的,和 L11 第六集同源。
61 / 65
有根号漏根号24.48119.83β,|S|=10 |A|=4 m=100
丢一个根号,加成常数大 4.9 倍 —— 探索会过度到跑不动。
讲解
看什么:右边那根高出近五倍。这不是一个可以忽略的排版问题:β 直接乘在每一个状态动作对的奖励加成上,大了五倍意味着算法会在已经探明的地方继续反复探索。和 L11 那处「根号盖住整个表达式」是同一类错误,后果同样是数值全错。 —— 把差距画出来。同样的参数(|S|=10、|A|=4、m=100、δ=0.05、γ=0.9): 有根号:β = 24.477 漏根号:β = 119.829 4.9 倍。 β 直接乘在每一个状态动作对的奖励加成上,大五倍意味着算法会把已经探明的地方当成还没探明的,继续反复去试。这不是精度问题,是行为问题。 再看参数变大时它怎么走:|S|=100、|A|=10、m=1000、γ=0.99 时 β = 295.841。主要的增长来自 1/(1−γ)(从 10 变成 100),而不是来自 log 里那些量——|S||A| 翻了 25 倍,log 只涨了不到一倍。 并集界的代价是对数的,时域的代价是线性的。这是这一整块课反复出现的结构。
62 / 65
✓MBIE-EB是 PAC 的✓样本复杂度多项式✕依赖的是1/(1−γ)γ→1 时爆炸
指名反驳:基于模型这条路拿到了保证,而且是能用的那种。
讲解
指名回去:在探索这件事上,基于模型的路更早拿到了保证,而且这次的保证是能用的那种。 MBIE-EB 是 PAC 的,样本复杂度是 |S|、|A|、1/(1−γ)、1/ε、1/δ 的多项式。 对照上一集:Even-Dar & Mansour 那个是指数的(10^T),这个是多项式的。这就是「有保证但用不了」和「有保证且能用」之间的分界线。 标最后一处记号:讲座把这个复杂度说成「多项式于 γ」。不对,是多项式于 1/(1−γ)。这个区别很关键,因为 γ 是有界的(永远在 [0,1) 里),而 1/(1−γ) 在 γ→1 时爆炸:γ=0.9 是 10,γ=0.99 是 100,γ=0.999 是 1000。说成「多项式于 γ」会让人以为长时域是免费的。 这一讲到此结束。把两讲连起来看,探索这条线走完了一个完整的形状: L11 在最小装置(老虎机)里把「乐观」变成了一个可证的定理。 L12 先把它换成贝叶斯的语言(Thompson 采样),再把整套搬回 MDP——而搬运的代价是真实的:无模型那边至今只能在启发式和不可用的定理之间选,基于模型那边则拿到了多项式的样本复杂度。 下一讲收尾快速 RL 这条线。
63 / 65

知识点 9 · 总结

MBIE-EB:计数建模 + β/√N 奖励加成,样本复杂度是多项式

核心结论

四步:数 N(s,a) → MLE 拟合模型 → 奖励加 β/√N(s,a) → 当成真的去规划。乐观没消失,它从值的初始化搬到了奖励函数里,衰减率仍是 1/√N。

底层机制

β = (1/(1−γ))·√( ½·ln(2|S||A|m/δ) )。三块各有来历:1/(1−γ) 是有效时域,log 里的 |S||A| 是并集界(同 L11 第八集),½ 与根号来自 Hoeffding 反解(同 L11 第六集)。

常见误解

误解:「无模型更简单所以更好」。在探索的理论上反过来 —— 模型把「我对这里了解多少」显式记下来了,而 Q 值里看不出哪部分来自侥幸。

与你的考试

转录稿又丢根号:β 从 24.477 变成 119.829,差 4.9 倍。另一处:复杂度被说成「多项式于 γ」,实为 1/(1−γ) —— γ 有界而 1/(1−γ) 在 γ→1 时爆炸(10 / 100 / 1000)。

64 / 65

知识点 9 · 检验

MBIE-EB 的样本复杂度是哪些量的多项式?

知识点 11

完

65 / 65
讲解
回头看这九集,承重的是四件事。 第一,依赖差距的界告诉你难在哪里。断脚趾实例的 Σ1/Δ = 21.18,其中 94.4% 来自那个只差 0.05 的臂,只有 5.6% 来自那个差 0.85 的臂。直觉会说「避开那个明显糟糕的选项最要紧」,而算账的结果正相反:难的是区分 0.95 和 0.90,不是避开 0.10。这也是 UCB 给坏臂恰好零概率而 ε-贪心还在给它 0.0333 的原因。 第二,乐观必须是「上」,方向不能反。用下置信界贪心会产生确认偏误:被选中的臂样本越多下界越高,没被选中的臂 n 冻住而 log t 在涨、下界越来越低。于是越不选越不会选,永远拿不到能推翻自己假设的证据。同一个量,加号是探索,减号是锁死。 第三,Thompson 采样恰好实现概率匹配,不是近似它。「按某个臂是最优臂的概率去选它」这条规则听上去要算一个积分;而「从后验抽一组参数、按它贪心」按定义就给出同一个分布。我用 40 万次蒙特卡洛验过,两行数字逐位吻合。这是本讲最漂亮的一处:一个看上去需要计算的东西,被一次采样免费实现了。 第四,从老虎机搬回 MDP,代价比想象的大。乐观初始化在老虎机里几乎是免费的直觉,在 MDP 里本身不带任何保证;要让 Q 学习变成 PAC,Even-Dar 与 Mansour 需要的初始值含 Π(1/α_i),α=0.1 时就是 10^T——写得出来,用不了。能用的是基于模型的 MBIE-EB。 最后把这一讲的转录稿问题归个类,它们几乎全是同一种:根号丢了。UCB 的奖励项「square root of 2 log t」漏掉了分母里的 N;MBIE-EB 的常数漏掉了根号和 1/2(差约 4.9 倍)。另有一处方向错误:Even-Dar 与 Mansour 的初始化被说成「乘以学习率」,而乘以小于 1 的数只会让它变小——正确的是乘以学习率的倒数之积,讲座紧接着自己算的 (1/0.1)^T = 10^T 就是证据。 下一讲收尾快速 RL 这条线。