CS234 L13 · PAC-MDP 分析、贝叶斯 RL 与带泛化的探索 · 全片速览

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

1 · 开场2 · 1 · PAC 和遗憾的参3 · 2 · 板上的 PAC 定义把 4 · 3 · 三条充分条件,以及5 · 4 · 算法故意扔掉6 · 5 · 乐观归纳证明:Hoeff7 · 6 · 两个混合 MDP:8 · 7 · 学习复杂度有界:鸽9 · 8 · MDP 的后验采样:抽<10 · 9 · 函数逼近下的探索:11 · 完
知识点 1

开场

1 / 65
讲解
这是快速 RL 这一块的收尾,也是全课证明最密的一小时。 它做三件事。 第一,把 PAC 和遗憾的差别说清。这两个判据经常被并列提起,好像只是同一件事的两种度量。不是。它们的参照系不同:遗憾拿你和「从第一步起就最优、因而会走到的那些状态」比;PAC 只拿你和「你自己走到的这个状态下最好的动作」比。后者宽容得多——它问的是「在你所在的地方,你尽力了吗」。 第二,给出证 PAC 的三条充分条件,并在板上真的证完其中一条:MBIE-EB 的奖励加成 β/√n 够大,足以让算出来的 Q 是乐观的。这个证明由三块组成——Hoeffding 偏差界、对 |S||A|m 次估计更新的并集界、以及沿值迭代扫的归纳——而它有一处精巧得值得单独看一集:Hoeffding 指数里的 n 恰好被 β/√n 的 n 抵消掉,这正是奖励加成要长成 1/√n 的全部理由。另外两条只给了梗概。 第三,掉头承认理论的边界。后验采样搬到 MDP 是干净的;但一进函数逼近,计数就不泛化了——两个从没有完全相同的状态,「访问过多少次」这个问题在连续状态空间里没有意义。伪计数、哈希计数、学到的嵌入都是在补这个洞。讲师的结论很坦白:「we still haven't made sufficient progress in how to do exploration plus generalization」。 这一讲的板书有多处 Q 与 V 混用,包括 PAC 定义本身——本片逐处修好。讲师也提前声明了:「throughout today I'm going to be a little bit loose about constants」。
知识点 2

1 · PAC 和遗憾的参照系不同:一个比全局,一个比当下

2 / 65
最优遗憾 = 这块面积PAC 只数这些步参照系不一样
两个判据经常被并列提起。但它们比的对象不同。
讲解
L11 用遗憾,L12 引入了 PAC,两个判据一直被并列提起,好像只是同一件事的两种度量。 不是。它们的区别不在精细程度,在参照系——拿你和谁比。 这一集把这个区别说清楚,因为它会决定你该用哪一个,以及为什么一个算法可以在一个判据下很好、在另一个判据下很差。
3 / 65
PAC 能给更小的遗憾两个都是衡量损失,换算一下就行
讲师说了这句,然后当场自我更正 —— 两个数不可直接比较。
讲解
这个错误模型有一个特别的来源:讲师自己说了这句话,然后当场自我更正。 说的是「PAC can give much smaller regret」,随即改口。改得对:PAC 和遗憾是两个不同的量,它们的数值不能直接比大小。说「PAC 给出更小的遗憾」就像说「摄氏度比公里少」。 她想说的是另一件事,而那件事是对的:PAC 度量的「差多少」是局部的,因此通常比遗憾那个全局参照的差距要小。 下一镜把「局部」和「全局」讲清楚。
4 / 65
遗憾:从第一步就最优会走到的那些状态PAC:你自己走到的状态
遗憾的基准是一条你没走的路;PAC 的基准是你脚下这一步。
讲解
把两个基准摆出来。 遗憾:拿你实际拿到的回报,和「从第一步起就一直最优」能拿到的回报比。注意后者不只是「每步选对动作」——最优策略会把你带到完全不同的状态去。所以遗憾隐含地把「你走错了路、落到一个糟糕的地方」这件事也算在账上。 PAC:拿你在当前这个状态选的动作,和「这个状态下最好的动作」比。它不问你怎么走到这里的。 一句话概括 PAC 的立场:「在你所在的地方,尽力做到最好。」 所以 PAC 明显更宽容。一个算法早期误入歧途、落到一个整体很差的区域,遗憾会一直为此收费;而 PAC 只要它在那个差区域里还是选得不错,就算它过关。
5 / 65
差区域起点终点遗憾一直收费PAC 不追究差别在「怎么走到这里的」
差别只在一件事上显形:你有没有因为早期的错落到坏地方。
讲解
两个判据在什么时候会给出很不同的读数? 只在一种情况下:算法因为早期的错,落进了一个整体很差的区域,并且出不来。 这时遗憾一直在收费,因为基准是那条你没走的好路;而 PAC 不追究,只要你在这个坏区域里选得还行。 反过来,什么时候两者接近?回合制的设定——每个回合都重置到固定的起点。那时「你自己走到的状态」和「最优策略会走到的状态」都从同一个地方出发,不会长期偏离,两个基准自然靠拢。 这解释了一个现象:老虎机文献主要用遗憾,MDP 文献里 PAC 更常见。老虎机只有一个状态,「走错路落到坏地方」这件事根本不存在,两个判据本来就重合;而在 MDP 里它们会真的分开,于是要选。
6 / 65
最优路跟最优路比跟当下最好比选哪个取决于要负什么责
指名反驳:不是「谁的数更小」。是拿你和谁比。
讲解
指名回去:问「PAC 给的数是不是比遗憾小」这个问题本身就不成立,因为两者量的不是同一样东西。讲师自己也立刻改口了。 可以说的是:PAC 的参照系是局部的,因此它的「差多少」通常比遗憾那个全局参照的要小——但这是两把不同的尺子,不是同一把尺子上的两个读数。 选哪一个,和 L12 第七集是同一类判断:看你要对什么负责。 如果「走到了坏地方」这件事本身就是你的责任(比如一个会把系统带进不可逆状态的策略),遗憾才在问对的问题。 如果处境已经给定、你只能在当下做最好的选择(比如接手一个已经恶化的病人),PAC 才是对的尺子。 下一集看这个定义在板上是怎么写的——那里有一处数学上不可能成立的写法。
7 / 65

知识点 1 · 总结

PAC 与遗憾的参照系不同:一个比全局,一个比当下

核心结论

遗憾的基准是「从第一步起就最优、因而会走到的那些状态」——把「走错路落到坏地方」也算在账上。PAC 只比「你自己所在的状态下最好的动作」,不问你怎么来的。

底层机制

差别只在一种情况下显形:算法因早期的错落进坏区域且出不来。遗憾一直收费,PAC 不追究。

常见误解

误解:「PAC 能给更小的遗憾」。讲师说了这句并当场自我更正 —— 两个数不可直接比较,就像说「摄氏度比公里少」。

与你的考试

回合制(每回合重置到固定起点)下两者靠近,因为两个基准从同一处出发。这也解释了为什么老虎机主要用遗憾(只有一个状态,两者本就重合),MDP 里 PAC 更常见。

8 / 65

知识点 1 · 检验

PAC 和遗憾这两个判据最本质的区别是什么?

知识点 3

2 · 板上的 PAC 定义把 Q 和 V 混了 —— Q* ≤ V* 恒成立

9 / 65
Q∗(st,at) ≥? V∗(st)−ε
板上是这么写的这个不等式没法当条件用
PAC 定义写在板上是这个样子。它作为一条要求是空的。
讲解
PAC 定义写在板上是这样:算法选的动作,它的「真实最优 Q 值」不小于「这个状态下你能拿到的最好值」减 ε。 讲座的原话是:「the Q value of that action, the true optimal Q value is greater than or equal to... the best possible you could have for that state, minus epsilon」。 左边写的是 Q*,右边写的是 V*。 问题在于:Q* 和 V* 之间有一个恒成立的关系,而它让这个不等式没法当作一条对算法的要求。 下面两镜说清楚。
10 / 65
Q* 可能超过 V*某个动作特别好,就会顶出去
不可能。V* 就是所有 Q* 里的最大值 —— 按定义。
讲解
为什么这个不等式有问题?先把它背后的假设揭出来:要让「Q*(s,a) ≥ V*(s) − ε」成为一条非平凡的要求,必须存在 Q* 超过或接近 V* 的余地。 没有这个余地。 按定义,V*(s) = max_a Q*(s,a)。所以对每一个动作,Q*(s,a) ≤ V*(s) 恒成立,取等号当且仅当这个动作是最优的。 这不是近似的、通常成立的关系,是一个恒等式的直接推论。下一镜验一遍。
11 / 65
a1a2a30.45440.17410.0000V*(s) − Q*(s,a)
差值永不为负;恰好为零的那一个,就是最优动作。
讲解
看什么:第三根柱子高度为零 —— 那是最优动作,它的 Q* 就等于 V*。另外两根是正的:次优动作的 Q* 严格低于 V*。没有一根是负的,也永远不会有,因为 V* 按定义就是这些 Q* 的最大值。 —— 一个具体的例子。某个状态下三个动作的 V*(s) − Q*(s,a): a1 → 0.4544 a2 → 0.1741 a3 → 0.0000 第三个恰好为零,它就是最优动作。 再做一次系统的检验:我生成了 3000 个随机 MDP,遍历它们的所有状态动作对,算 Q*(s,a) − V*(s) 的最大值: 0.000e+00 一次都没有超过零。这是定义的直接后果,不是巧合。 于是板上那条不等式塌掉了:对最优动作它自动成立(差值是 0,对任何 ε>0 都满足);对次优动作,差值是 MDP 本身决定的固定数,和算法做了什么毫无关系。 一条完全不约束算法的条件。
12 / 65
VAt(st) ≥ V∗(st)−ε
算法当前策略的值这个状态的最优值
修好:左边换成算法自己策略的值。这才是标准的 Kakade 式定义。
讲解
正确的写法是把左边换掉:不是「这个动作的最优 Q 值」,是「算法当前策略的值」。 V^{A_t}(s_t) ≥ V*(s_t) − ε 这才是标准的 Kakade 式 PAC 定义,而且现在它真的在约束算法:左边的 A_t 是算法此刻的行为,它可好可坏;要求它不比这个状态的最优值差过 ε。 对照一下修好前后: 坏版本的左边是 Q*——一个只跟 MDP 有关的量,算法改不动它。 好版本的左边是 V^{A_t}——一个完全由算法决定的量。 判断一条「条件」是不是真的条件,看它左边那个量算法能不能改。 再补完整个定义的其余部分:这条不等式要以概率至少 1−δ 成立,除了 N 步之外的所有步,而 N 是定义域参数的多项式。(讲座把 N 说成「多项式于 |S|、|A|、γ、ε、δ」——按 L12 第九集标过的,真正的依赖是 1/(1−γ)、1/ε、1/δ。)
13 / 65
(1−γ)²1−γ²0.01000.1900γ=0.9 时,差 19 倍
指名反驳:Q* 不可能超过 V*。顺带另一处:是 (1−γ)²,不是 1−γ²。
讲解
看什么:右边那根高出近二十倍。左边是正确的 (1−γ)²,右边是把口述读成 1−γ² 的结果。这两个量在分母上,差 19 倍意味着样本复杂度被低估了 19 倍 —— 而 γ 越接近 1 差得越多。 —— 指名回去:Q* 不可能超过 V*,所以板上那条不等式不构成对算法的约束。正确的左边是 V^{A_t}(s_t)——算法自己策略的值。 这一处还连着一个更普遍的记号问题:这一讲从头到尾 V 和 Q 混用。第三集那个「乐观」条件也是——左边写的是 V_t,却同时用 s_t 和 a_t 两个下标索引,那显然是一个 Q。而自动字幕把 V* 反复念成「B star」,更是雪上加霜。 读这一讲的板书时,靠下标数目判断是 V 还是 Q,比靠字母可靠。 最后标一处会造成数值错误的口误:样本复杂度里的分母被念成「epsilon times 1 minus gamma squared」。正确的是 ε·(1−γ)²——(1−γ) 整体平方,不是 1−γ²。 差多少:γ=0.9 时 0.01 对 0.19,19 倍;γ=0.99 时 199 倍;γ=0.999 时 1999 倍。这不是排版问题。 定义修好了。下一集看怎么证一个算法满足它。
14 / 65

知识点 2 · 总结

板上的 PAC 定义把 Q 和 V 混了 —— Q* ≤ V* 恒成立

核心结论

按定义 V*(s) = max_a Q*(s,a),所以 Q*(s,a) ≤ V*(s) 恒成立(3000 个随机 MDP 全部 (s,a):max[Q*−V*] = 0.000e+00)。于是板上那条不等式不约束算法。

底层机制

正确写法:V^{A_t}(s_t) ≥ V*(s_t) − ε(Kakade 式)。判据:看左边那个量算法能不能改 —— Q* 改不动,V^{A_t} 由算法完全决定。

常见误解

误解:「某个动作特别好,Q* 会顶出 V*」。V* 就是所有 Q* 的最大值,没有余地。

与你的考试

全讲 V 与 Q 混用(第三集的「乐观」条件写 V_t 却带 s_t、a_t 两个下标 —— 那是 Q;字幕还把 V* 念成「B star」)。靠下标数目判断比靠字母可靠。另:样本复杂度分母是 ε(1−γ)² 不是 ε(1−γ²) —— γ=0.9 差 19 倍,0.99 差 199 倍,0.999 差 1999 倍。

15 / 65

知识点 2 · 检验

为什么「Q*(s_t,a_t) ≥ V*(s_t) − ε」不能当作 PAC 的定义?

知识点 4

3 · 三条充分条件,以及为什么光有乐观不行

16 / 65
乐观准确复杂度有界三条凑齐就是 PAC
证一个算法是 PAC,有一个三条充分条件的模板。
讲解
怎么证一个算法是 PAC?这一讲给了一个模板——三条充分条件,凑齐就够: 一、乐观:算法算出来的值不低估真实的最优值。 二、准确:等你对某些状态动作对攒够了信息,算出来的值就得真的接近一个参照 MDP 上的值。 三、学习复杂度有界:算法重算值函数的次数有上限。 讲师说明了这个模板的来历:基本取自一篇论文,但那篇论文并不分析 MBIE-EB,所以细节要改。她自己的评价是:「I found this paper super helpful when I was starting to do PAC proofs in my PhD」。 这一集说清为什么是这三条——特别是第二条为什么非有不可。
17 / 65
乐观就够了乐观保证你会去试,试遍了自然就学会了
反例一句话:把所有值设成超高、永不更新 —— 乐观自动成立。
讲解
这个错误模型很有诱惑力,因为前两讲一直在讲乐观,而乐观确实解决了「会不会去试」这个问题。 讲师用一句话就把它打掉了: 「optimism would be easy to hold by just setting our values super high and never updating.」 把所有值设成超高,然后永远不更新。乐观条件完美成立——算出来的值永远不低估真值,因为它高得离谱。 而这个算法什么也学不到,永远在乱试。 乐观是一个「不要过早放弃」的条件,它不包含任何「要收敛」的内容。所以必须再加一条,专门管收敛。
18 / 65
乐观:别过早放弃准确:别永远不放弃一个推你去试,一个让你停
两条方向相反:乐观管「去试」,准确管「停下来」。
讲解
第二条「准确性」的作用,讲师说得很清楚: 「if something really is bad, you don't want to be really optimistic forever.」 如果一个东西真的很差,你不该永远对它乐观。 于是两条条件的分工是方向相反的: 乐观:值不能低估 ⟹ 你不会过早放弃任何一个选项。 准确:攒够信息之后值要接近真值 ⟹ 你不会永远不放弃任何一个选项。 一个推着你去试,一个让你停下来。缺任何一个都不行——只有乐观就是永远乱试,只有准确就退化成贪心(L12 第三集那个确认偏误)。 准确性的精确陈述里有一个关键的细节,容易搞错:算法算出来的值要接近的,不是真 MDP 上的值,也不是 V*,而是一个人为构造的混合 MDP 上、算法当前策略 π_t 的值。这个混合 MDP 是什么,第六集专讲。 这一条搞错,引入混合 MDP 的全部意义就没了。
19 / 65
最优只有乐观永远乱试只有准确卡在次优缺第三条停不下来每一条都在堵一个漏洞
三条各堵一个漏洞。第三条堵的是「会不会一直折腾下去」。
讲解
第三条「学习复杂度有界」堵的是最后一个漏洞。 前两条加起来说的是:该试的会去试,攒够了会停。但它们没有说要多久。一个算法可以满足前两条,却无限地在「发现新信息 → 重算 → 又发现新信息」之间循环。 第三条要求:算法重新跑乐观值迭代的次数有上限。 这里要标一处容易误读的地方:条件里说的「Q 更新的总次数」指的是算法因为模型变化而重跑一次乐观值迭代的次数,不是一次值迭代内部的单个 Bellman 回退的次数。后者当然多得多,而且和这个条件无关。 三条凑齐,PAC 就出来了。而这三条各自要怎么证,难度完全不同: 乐观:这一讲在板上完整证完了(第四、五集)。 准确:只给了梗概(第六集)。 学习复杂度:也只给了梗概,但核心想法一句话就说得清(第七集)。
20 / 65
ε 带Q_t 一直高着永远不收敛缺一不可
指名反驳:乐观不够 —— 它不含任何「要收敛」的内容。
讲解
指名回去:乐观不够。它是一个纯粹的「不要过早放弃」条件,里面没有任何要求你收敛的内容——「把值设成超高、永不更新」就能满足它。 三条的分工可以这样记: 乐观:不会太早放弃。 准确:不会太晚放弃。 学习复杂度有界:折腾得完。 缺一不可,而且三条互相不能替代。 这个模板值得记住,因为它的形状在别的地方也出现:任何「边探索边优化」的算法要给保证,都要回答同样的三个问题——会不会漏掉好的?会不会守着坏的?会不会没完没了? 下面两集证第一条。而这个证明的第一步会做一件看上去很奇怪的事:算法故意把数据扔掉。
21 / 65

知识点 3 · 总结

三条充分条件:乐观 + 准确 + 学习复杂度有界

核心结论

乐观:算出来的值不低估。准确:攒够信息后值要接近混合 MDP 上 π_t 的值(不是真 MDP,也不是 V*)。学习复杂度:重跑乐观值迭代的次数有上限。

底层机制

乐观不够,一句话反例(讲师原话):「setting our values super high and never updating」—— 乐观完美成立,而算法什么也学不到。

常见误解

误解:「乐观就够了,试遍了自然学会」。乐观里不含任何「要收敛」的内容。

与你的考试

分工:乐观 = 不会太早放弃;准确 = 不会太晚放弃;有界 = 折腾得完。第三条里「Q 更新的次数」指重跑值迭代的次数,不是一次值迭代内部的 Bellman 回退数。

22 / 65

知识点 3 · 检验

证 PAC 的三条充分条件里,为什么光有「乐观」不够?

知识点 5

4 · 算法故意扔掉第 m 个之后的数据 —— 这不是笔误

23 / 65
只用前 m 个样本之后的全部扔掉
算法里写着一条很奇怪的规定:每个 (s,a) 只用前 m 个样本。
讲解
证明的第一步之前,先看算法里一条很奇怪的规定。 MBIE-EB 规定:对每一个状态动作对,只用前 m 个样本来更新经验模型 R̂ 和 T̂。 讲座原话:「After that we're gonna throw away our data.」 第 m+1 次访问同一个 (s,a),拿到的奖励和转移直接丢弃,模型不再更新。 这看上去像一个 bug。这一集说明它不是——以及它是被什么逼出来的。
24 / 65
这肯定是笔误哪有算法嫌数据多的
讲师自己点破了这有多反常 —— 然后说明为什么非这样不可。
讲解
这个反应完全正当,而且讲师自己先说了出来。 她引了 Tom Mitchell——机器学习的奠基者之一——对整个领域的定义:机器学习研究的是一个智能体如何学习,以及如何设计出能随着数据增多而持续改进的算法。 而这个算法恰恰相反:它到了 m 就停止改进。 讲师把这个反讽摆出来是对的,因为它提醒了一件重要的事: 这不是这个算法的优点,是为了拿到证明付的代价。 代价从哪来?下一镜。
25 / 65
并集界要覆盖每一次估计更新所以更新次数必须有限于是每个 (s,a) 封顶 m
并集界逼出来的:要盖住所有更新,更新次数就不能是无穷。
讲解
原因在并集界上。 证明需要的是:所有状态动作对的所有估计,同时都落在置信范围内。这是 L11 第八集那一套,换了个场合。 并集界把每次估计的失败概率相加。所以要让总失败概率有界,估计更新的次数必须是有限的。 如果算法永远更新下去,更新次数是无穷,并集界给出的总失败概率上界就是无穷——等于什么都没说。 于是只能封顶:每个 (s,a) 最多更新 m 次,总更新次数 ≤ |S|·|A|·m,一个有限的数。 这不是算法设计上的选择,是证明技术的硬约束。 对照 L11 第八集那个更聪明的处理:那里没有封顶,而是让每一步的失败预算按 1/t² 衰减,靠 Basel 和收敛。这里为什么不那么做?因为那里的对象是一维的臂均值,而这里要同时控制转移模型和奖励模型,构造要复杂得多。封顶是更粗但更省事的办法。
26 / 65
状态 s →↓ 动作 a每格封顶 m=10010 × 4 × 100 = 4000|S|·|A|·m
预算 = |S|·|A|·m。有限,所以失败概率加得起来。
讲解
把预算算出来。 |S|=10、|A|=4、m=100 → 总更新次数上限 4000。 |S|=100、|A|=10、m=1000 → 1000000。 数字本身不重要,重要的是它有限。有限就能被并集界吃掉。 下一集会看到 β 正是按这个预算倒推出来的:让每一次更新的失败概率恰好是 δ/(2|S||A|m),乘以双侧、乘以 |S||A|m 次,总失败概率精确等于 δ。 所以 m 在这个证明里同时出现在三个地方,而且是同一个 m: 算法里:每个 (s,a) 用几个样本。 预算里:|S||A|m 次更新。 β 里:log(2|S||A|m/δ)。 (顺带标一处:字幕把 β 公式里的这个 m 写成了大写 M,容易被读成「一个 MDP」。它就是这个样本上限 m。)
27 / 65
第 m 个这些进模型第 m 个之后全扔实践中不会这么做
指名反驳:不是笔误。但也不是优点 —— 是为了拿到定理付的价。
讲解
指名回去:扔数据不是笔误,是并集界逼出来的硬约束。 但同样重要的是反过来说一遍:它也不是优点。 实践中没人会这么做——你当然应该用上所有数据,多出来的样本只会让估计更准,绝不会更差。扔掉它们纯粹是为了让证明能写下去。 这个区分值得记住,它和 L10 第九集那个是同一类:看一个算法的时候,要能分清哪些成分是任务需要的,哪些成分只是为了证明方便。 判断方法也很简单:问一句「去掉这一条,算法会变差吗」。去掉扔数据这一条,算法只会变好——所以它显然不是为性能服务的。 还有一个实用推论:如果你在读一篇论文,看到一个「反常识」的算法细节,先别急着认为作者有洞见。先查一下它是不是被某个证明步骤逼出来的。很多时候是。 下一集开始真正的证明。
28 / 65

知识点 4 · 总结

算法故意扔掉第 m 个之后的数据 —— 并集界逼的

核心结论

并集界把每次估计的失败概率相加,所以更新次数必须有限。于是每个 (s,a) 封顶 m 次,总预算 |S|·|A|·m(10×4×100 = 4000)。

底层机制

m 在证明里出现三次且是同一个:算法里(用几个样本)、预算里(|S||A|m 次更新)、β 里(log(2|S||A|m/δ))。字幕把它写成大写 M,容易读成「一个 MDP」。

常见误解

误解:「这肯定是笔误」。不是笔误 —— 但也不是优点。讲师自己引 Tom Mitchell:机器学习的要义是设计能随数据增多而持续改进的算法,而它到 m 就停。

与你的考试

对照 L11 第八集:那里不封顶,靠失败预算按 1/t² 衰减(Basel 和收敛)。这里要同时控转移与奖励两个模型,封顶更粗但更省事。判断法:去掉这一条算法会变差吗?不会 ⟹ 它不为性能服务。

29 / 65

知识点 4 · 检验

MBIE-EB 为什么规定每个 (s,a) 只用前 m 个样本?

知识点 6

5 · 乐观归纳证明:Hoeffding 里的 n 恰好抵消

30 / 65
R~(s,a)=R^(s,a)+βn
要证这个加成「够大」
三条条件里的第一条:证明 β/√n 大到足以让算出的 Q 乐观。
讲解
现在证第一条条件:乐观。 要证的是:MBIE-EB 给奖励加的那个 β/√n,大到足以补偿经验模型的误差,使得算出来的 Q 值不低估真实的最优 Q。 证明由三块拼成: Hoeffding 偏差界——控制单次估计的误差。 并集界——让所有 |S||A|m 次估计同时成立(上一集那个预算)。 归纳——沿值迭代的每一次扫推下去。 这一集看第一块,因为它里面有一处非常精巧的事情发生。
31 / 65
1/√n 是挑出来的衰减快慢调一调就行
不是挑的。换成别的幂次,Hoeffding 里的 n 就不会抵消。
讲解
很自然的印象是:奖励加成要随访问次数衰减,1/√n 是一个合理的选择,1/n 或 1/n^0.4 也可以,调一调看哪个好用。 不是这样。 1/√n 是被 Hoeffding 唯一地逼出来的——换成任何别的幂次,证明的关键一步就断掉。 断在哪里、为什么,下一镜。这是这个证明里最漂亮的一处,而且它只需要一行代数。
32 / 65
P(|X¯−EX|≥t)≤2exp(−2nt2R2),R=11−γ
取值范围宽度这个前提讲座没念出来
Hoeffding 的一般形式。这里被平均的量落在宽度 1/(1−γ) 的范围里。
讲解
先把 Hoeffding 写成带取值范围的一般形式:n 个独立同分布、落在宽度 R 的区间里的量,它们的均值偏离期望 t 以上的概率不超过 2exp(−2nt²/R²)。 这里被平均的是什么?是用真实的 V* 构造的 Bellman 目标——也就是 R(s,a) + γV*(s′)。 它的取值范围宽度是多少? 如果奖励落在 [0,1],那么 V* 落在 [0, 1/(1−γ)],于是这个目标的取值范围宽度是 R = 1/(1−γ)。 「奖励落在 [0,1]」这个前提讲座从头到尾没有念出来,但后面那个指数完全依赖它。补上它,下一镜的代数才成立。 (顺带标一处:这里的下标 i 用来数样本 X_i,而归纳那一段的下标 i 数的是值迭代的扫次。同一个字母,两个完全不同的计数器。)
33 / 65
n=11010³10⁵0.18000.18000.18000.1800|Hoeffding 指数|
代入 t = β/√n:n 精确地约掉。四个 n 差十万倍,指数完全相同。
讲解
看什么:四根柱子一模一样高 —— 这不是画错了。n 从 1 到 100000,相差十万倍,而 Hoeffding 指数完全不变,都是 0.1800。这就是奖励加成必须长成 β/√n 的全部理由:只有这个幂次能让 n 从指数里彻底消失。 —— 现在做那一行代数。把偏差取成 t = β/√n,代进 Hoeffding 的指数: −2n·t²/R² = −2n·(β²/n)·(1−γ)² = −2β²(1−γ)² n 精确地约掉了。 我数值验了一遍(β=3、γ=0.9): n=1 → 指数 −0.1800000000 n=10 → −0.1800000000 n=10³ → −0.1800000000 n=10⁵ → −0.1800000000 一位都不差。 这就是为什么加成必须是 1/√n:只有这一个幂次能让 n 从指数里消失。换成 1/n,指数会变成 −2β²(1−γ)²/n,随 n 增大而趋于零——失败概率趋于 1,界作废。换成 1/n^0.25,指数会随 n 发散,界是成立了但松到毫无意义。 1/√n 是唯一让失败概率「与访问次数无关」的选择。而「与 n 无关」正是并集界需要的——每一次更新都用同一个失败预算。 (标一处字幕:这个指数被念成「exponential minus 2 beta squared, 1 minus gamma squared」。念的是对的,但只有在补上「奖励在 [0,1]」这个前提之后才对。)
34 / 65
β=11−γ12ln⁡2|S||A|mδ ⟹ e−2β2(1−γ)2=δ2|S||A|m
双侧 × |S||A|m 次 = δ
指名反驳:1/√n 不是挑的。β 也不是 —— 它是从总预算 δ 倒推的。
讲解
指名回去:1/√n 不是挑出来的,它是 Hoeffding 唯一允许的幂次。 而 β 也不是挑出来的。把上一集那个预算接进来,整条公式就是倒推出来的: 要求:总失败概率 = δ。 手上有:|S||A|m 次更新,每次双侧。 所以:每次单侧的失败概率必须是 δ/(2|S||A|m)。 令 exp(−2β²(1−γ)²) = δ/(2|S||A|m),解出 β = (1/(1−γ))·√(½·ln(2|S||A|m/δ))。 我验了一遍这条链是不是真的闭合:取 |S|=10、|A|=4、m=100、δ=0.05、γ=0.9,β = 24.4775;代回 exp(−2β²(1−γ)²) = 6.250000×10⁻⁶,而 δ/(2|S||A|m) = 6.250000×10⁻⁶——相等到机器精度;再乘双侧、乘 4000 次更新,总失败率 = 0.050000,精确等于 δ。 整个 β 里没有一个数是自由的。1/(1−γ) 来自取值范围,½ 和根号来自 Hoeffding 反解,log 里的 2|S||A|m/δ 来自并集界的预算。 这和 L11 第六集是同一个手法:先定失败预算,再反解半径。剩下的归纳部分把这个单点的界沿值迭代的每一次扫推下去,从 1/(1−γ) 的乐观初始化开始——那一步是标准的,本片不单开一集。 第一条条件证完了。下一集看第二条要跟谁比。
35 / 65

知识点 5 · 总结

乐观归纳证明:Hoeffding 里的 n 恰好被 β/√n 抵消

核心结论

取偏差 t = β/√n 代进 exp(−2nt²/R²)(R = 1/(1−γ)):−2n·(β²/n)·(1−γ)² = −2β²(1−γ)²,n 精确约掉。实测 n 从 1 到 10⁵ 指数恒为 −0.1800000000。

底层机制

所以 1/√n 是唯一选择:换 1/n 指数随 n 趋零(界作废),换 1/n^0.25 会发散(界松到无意义)。只有它让失败概率与访问次数无关 —— 并集界正需要这一条。

常见误解

误解:「1/√n 是挑出来的,幂次可调」。它是 Hoeffding 唯一允许的幂次。β 也不是挑的,是从总预算 δ 倒推的。

与你的考试

讲座没念出的前提:奖励落在 [0,1],于是 Bellman 目标的取值范围宽度是 1/(1−γ)。闭合验证:β=24.4775 → exp(−2β²(1−γ)²) = 6.25×10⁻⁶ = δ/(2|S||A|m),×2×4000 = 0.050000 = δ。

36 / 65

知识点 5 · 检验

为什么 MBIE-EB 的奖励加成必须是 β/√n 这个形状?

知识点 7

6 · 两个混合 MDP:M̂ 与 M̃ 只差奖励,M′ 只在已知集上换

37 / 65
准确性条件:值要接近接近谁?
第二条条件说「算出来的值要够接近」。接近谁,是这一集全部的内容。
讲解
第二条条件「准确性」说:等你对某些状态动作对攒够了信息,算出来的值就得够接近。 接近谁? 这个问题听上去像细节,其实是整条证明的关键分岔。选错参照对象,引入混合 MDP 的全部意义就没了。 这一集把这些人造的 MDP 理清楚——一共三个,而它们之间的差别比名字看上去要小得多。
38 / 65
跟真 MDP 比不然还能跟谁比
跟真 MDP 比做不到 —— 没探索过的地方,你对它一无所知。
讲解
最自然的答案是:算出来的值要接近它在真 MDP 上的值,或者接近 V*。 两个都做不到。 道理很直接:算法只在访问够多次的状态动作对上有可靠的估计。对那些只去过一两次的地方,它对真 MDP 一无所知——凭什么要求算出来的值接近真值? 而且这个要求也不该成立:在没探索过的地方,算法应该保持乐观(第三集那条条件),也就是应该高估。要求它准确,恰好和乐观冲突。 所以参照对象必须是一个介于两者之间的东西:在熟悉的地方像真 MDP,在陌生的地方像乐观模型。 这样的东西现实中不存在。所以就造一个。
39 / 65
R̂(s,a)R̂ + β/√nM̂M̃同一个 T̂名字像,差别只在奖励
先分清两个:M̂ 与 M̃ 共用同一个转移模型,只差那个奖励加成。
讲解
先分清两个最容易混的。 M̂(M-hat):纯经验模型。用计数拟合出来的 T̂ 和 R̂,没有别的。 M̃(M-tilde):经验模型加奖励加成。转移还是 T̂,奖励是 R̂ + β/√n。 关键:两者用的是同一个转移模型 T̂,唯一的差别在奖励。 这一处非记不可,因为 M-hat 和 M-tilde 在英语里近乎同音,自动字幕把它们调换过好几次。课上就有学生专门举手问这两个是不是一回事。 记法可以这样:带波浪的那个多了一项(波浪像加上去的一笔);而无论哪个,转移模型都是同一个 T̂。 还有一处名字要分清:MBIE 和 MBIE-EB 在讲座里被混着用了。只有 MBIE-EB(带 β/√n 加成项那个)是上一集那个乐观证明真正分析的对象;不带 EB 的 MBIE 用的是模型上的置信集,是另一套东西。
40 / 65
已知集:用真模型其余:用 M̃现实里不存在,只是分析工具
第三个:M′ —— 在已知的 (s,a) 上用真模型,其余用 M̃。
讲解
第三个 MDP 是 M′,它就是那个「介于两者之间」的东西: 对已知集里的 (s,a)(访问够 m 次、估计可靠的那些):用真实的 R 和 T。 对其余的 (s,a):用 M̃ 的模型(经验转移 + 带加成的奖励)。 讲师明确说了这东西的性质:「Again, this doesn't exist in the real world we're just gonna use it as a tool for our analysis.」——现实中不存在,纯粹是分析工具。 于是准确性条件的正确陈述是:算法算出来的值,要接近「算法当前策略 π_t 在 M′ 上的值」——不是 V*,不是真 MDP 上的值。 为什么这样构造刚好合用?因为它把两种情形都摆平了: 在熟悉的地方,M′ 用的是真模型,所以「接近 M′ 上的值」就意味着「接近真值」——准确性起作用了。 在陌生的地方,M′ 用的是乐观模型,所以「接近 M′ 上的值」允许算法保持高估——不和乐观冲突。 把 M′ 上的值和真 MDP 上的值联系起来,靠的是 simulation lemma(模拟引理):两个 MDP 的模型接近,则同一策略在两者上的值也接近。讲座提了这个名字但没展开。
41 / 65
V* 真 MDPV^π_t 在 M′V^π_t 真实比这一对不是 V*,不是真 MDP
指名反驳:不跟真 MDP 比。跟 π_t 在 M′ 上的值比。
讲解
指名回去:准确性不是拿算出来的值和真 MDP 比,也不是和 V* 比。是和算法当前策略 π_t 在混合 MDP M′ 上的值比。 把三个人造 MDP 收在一起: M̂:经验模型。 M̃:经验模型 + 奖励加成(与 M̂ 共用 T̂,只差奖励)。 M′:已知集上用真模型,其余用 M̃。 这个构造的手法本身值得记住,它在理论工作里很常见:当你要比较的两个对象差太远、没法直接比时,造一个「中间体」,让每一边只跟它比一次。M′ 就是这么用的——一边连着算法算出来的值,另一边通过模拟引理连着真 MDP。 最后提醒一处适用范围:这一整套机器(M′、M̂′、已知集 K)在 Sutton & Barto 里完全没有。从教科书过来的读者会发现这一段没有任何可对照的记号,这不是你漏读了,是它真的不在里面。 第二条条件的梗概到此。下一集是第三条,而它的核心只是一个鸽笼原理。
42 / 65

知识点 6 · 总结

三个人造 MDP:M̂ 与 M̃ 只差奖励,M′ 只在已知集上换

核心结论

M̂ = 经验模型(T̂, R̂)。M̃ = 经验模型 + 奖励加成(共用同一个 T̂,唯一差别在奖励)。M′ = 已知集上用真 R、T,其余用 M̃。

底层机制

准确性比的是「π_t 在 M′ 上的值」,不是 V*、不是真 MDP。这样构造才不与乐观冲突:熟悉处 M′ 是真模型(准确起作用),陌生处是乐观模型(允许高估)。

常见误解

误解:「跟真 MDP 比」。没探索过的地方你对真 MDP 一无所知,而且那里本来就该高估(乐观条件),要求准确会和乐观直接冲突。

与你的考试

M-hat 与 M-tilde 近乎同音,字幕调换过,课上有学生专门问。另:MBIE 与 MBIE-EB 被混用 —— 只有带 β/√n 的 MBIE-EB 是乐观证明的对象。连接 M′ 与真 MDP 靠 simulation lemma。这套机器 S&B 没有。

43 / 65

知识点 6 · 检验

M̂(M-hat)和 M̃(M-tilde)的区别是什么?

知识点 8

7 · 学习复杂度有界:鸽笼二分法

44 / 65
第三条:折腾得完犯大错的次数有上限
最后一条条件:算法犯「大于 ε 的错」的次数要有上限。
讲解
最后一条条件:学习复杂度有界。 要证的是:算法选出「比最优差过 ε 的动作」的次数,有一个上限——而且这个上限是定义域参数的多项式。 注意这正是 PAC 定义里的那个 N。所以这一条不是辅助条件,它就是要证的结论的一半。 而它的核心只是一个中学就学过的原理。
45 / 65
得先证它会收敛证明次数有限,总要先有个收敛性吧
不用。二分法只需要穷尽两种情形,两边各自成立就够。
讲解
很自然的想法是:要说「犯大错的次数有限」,得先证明算法会收敛到某个东西,然后再数收敛之前犯了多少错。 不需要。 这个论证完全不谈收敛。它做的是:把每一个时刻分成两类,然后证明两类各自都没问题——第一类不犯大错,第二类次数有限。 两类合起来覆盖所有时刻,结论就出来了。 这是一个穷尽式论证,不是一个收敛性论证。下面两镜看这两类怎么分。
46 / 65
把经验流切成若干段每段问一句:会不会碰到没探明的 (s,a)
切成段,每段只问一个问题:这一段里会不会走到陌生的地方。
讲解
把经验流切成若干段(讲座说不必是回合制 MDP,但按回合想最容易)。 对每一段,只问一个问题: 在接下来的 T 步里,走到一个「未知」状态动作对的概率有多大? 这里「未知」的意思很具体:访问次数还没到让估计可靠的程度——讲座的说法是「我们只去过一次之类的」。访问够了的那些构成已知集。 注意这个概率是算法当前策略在真实环境里的一个量,我们不需要算出它,只需要按它的大小分两种情形。 讲座管这个叫逃逸概率的想法,而整个论证就是对它做二分。
47 / 65
基本待在已知区情形一
情形一:逃逸概率小 ⟹ 你基本待在已知区 ⟹ 估计准 ⟹ 近最优。
讲解
情形一:逃逸概率小。 那么这一段里你基本上一直待在已知集内。而已知集的定义就是「估计已经可靠」,所以你在那里算出来的值是准的(第六集那条准确性条件,M′ 在已知集上用的正是真模型)。 值准 ⟹ 按它贪心选出来的动作就是近最优的 ⟹ 不犯大于 ε 的错。 讲座的说法:「if that probability is small, we're being near accurate, near optimal」。 这一段不消耗任何预算,也不产生任何大错。所以这类时刻要多少有多少,不影响结论。 关键在于另一半。
48 / 65
每次撞上烧一格预算 |S||A|m鸽笼原理
指名反驳:不用证收敛。情形二撞上未知就烧掉一格计数 —— 而格子有限。
讲解
情形二:逃逸概率大。 那么你很可能真的会撞上一个未知的状态动作对。而每撞上一次,那个 (s,a) 的计数就加一——你在消耗一格预算。 而预算是有限的:每个 (s,a) 封顶 m 次(第四集那条规定),总共 |S|·|A|·m 格。 所以「逃逸概率大」的段数不可能超过这个预算(乘上一个常数)。格子用完了,你就再也不会有「概率大」的段了。 这就是鸽笼原理:有限多个格子,每次事件填掉一格,事件总数就被格子数封住。 指名回去:整个论证没有用到任何收敛性。它只是把所有时刻分成两类,证明第一类不犯大错、第二类次数有限。两类穷尽所有时刻,于是大错总数有限——正是 PAC 定义里的那个 N。 现在回头看第四集那条「故意扔数据」的规定:它在这里第二次发挥作用。第一次是让并集界能加起来,第二次是让鸽笼有一个有限的格子数。同一个 m,撑起了整个证明的两根支柱。 三条条件到此讲完。下面两集掉头看理论之外。
49 / 65

知识点 7 · 总结

学习复杂度有界:鸽笼二分法

核心结论

把经验流切段,每段问「会不会走到未知 (s,a)」。概率小 ⟹ 待在已知区、估计准 ⟹ 近最优,不犯大错。概率大 ⟹ 会撞上未知 ⟹ 每次烧掉一格计数。

底层机制

预算 |S||A|m 有限 ⟹「概率大」的段数有限 ⟹ 大错总数有限,正是 PAC 定义里的 N。这就是鸽笼原理。

常见误解

误解:「得先证它会收敛」。这是一个穷尽式论证,不是收敛性论证 —— 两类覆盖所有时刻,各自成立就够。

与你的考试

第四集那条「故意扔数据」在这里第二次发挥作用:第一次让并集界加得起来,第二次给鸽笼一个有限的格子数。同一个 m 撑起证明的两根支柱。

50 / 65

知识点 7 · 检验

「学习复杂度有界」这一条是怎么证的?

知识点 9

8 · MDP 的后验采样:抽一整个 MDP,然后解它

51 / 65
抽到一个 θL12:抽一个 θ0.70.3L13:抽一整个 MDP同一个想法,放大
把 L12 那四步搬到 MDP:抽一次、当真、贪心、更新。
讲解
理论部分讲完了。这一集把 L12 第六集那个想法搬到 MDP——它常被叫做 MDP 的后验采样(posterior sampling for MDPs,PSRL)。 四步一模一样:抽一次、当真、贪心、更新。 变的只有「一次抽的是什么」: L12:抽一组臂的参数 θ。 L13:抽一整个 MDP——所有状态的转移分布,所有状态动作对的奖励。 而「贪心」这一步也随之升级:老虎机里贪心就是取 argmax;MDP 里贪心意味着要在抽出来的那个 MDP 上做一次完整的规划。
52 / 65
每一步重抽一次每步都用最新的后验,不是更好吗
标准答案是不行(时间一致性)—— 但我三次都没能实测出差别。
讲解
一个很自然的改动:既然后验每一步都在更新,那每一步都重抽一次、重新规划,岂不是更及时? 标准的回答是不行,理由是结构性的:抽一次样本的意思是提出一个关于世界的、内部一致的假设。在这个假设上规划出来的策略,是为了检验这个假设而设计的——而检验它可能需要一长串动作(比如「一直往前走十五步去看看那边有没有东西」)。每一步重抽就是每一步换一个假设,于是没有任何一个长计划被执行完。这个性质有个名字叫深度探索。 这里我要把话说清楚:上面这段是推理,不是我的实测结果。我试了三次想把这个差别在一条链上做出来(链长 10 到 15,最后一次连余量都拿掉、让回合步数恰好等于链长),三次的比值分别是 1.00、0.99、1.04——没有差别。 回头看原因是我的实例挑错了:在一条链上,每步重抽时「抽出来的最大值落在右边」的概率是 (N−1−s)/(N−1),在起点附近接近 1。所以每步重抽仍然有很强的向右漂移,并不是我以为的随机游走。链太仁慈,分不开这两种做法。 深度探索这件事在文献里是确立的,但我没有复现出来,所以本片只把结构性理由讲给你,不把它当成一个已验证的数值结论。
53 / 65
Beta(α,β)→Beta(r+α,1−r+β)
观测前观测到 r=1 之后共轭,更新还是加一
怎么抽:转移用 Dirichlet,奖励用 Beta —— 都是共轭的。
讲解
具体怎么抽?靠的还是 L12 第四集那个共轭性,只是换了分布族。 转移:从状态 s 做动作 a 之后落到哪个状态,这是一个多项式分布(|S| 个可能的结果)。它的共轭先验是 Dirichlet。 奖励:如果是伯努利奖励,共轭先验还是 Beta(L12 那个)。 Dirichlet 是 Beta 的多维推广,参数同样是伪计数:从 (s,a) 转移到 s′ 观察到几次,对应的那一维就加一。 所以更新仍然是「加一」,和 L12 完全一样。共轭性让「维护一个关于整个 MDP 的后验」这件听起来很吓人的事,落地成一堆整数计数。 抽一个 MDP,就是从每个 Dirichlet 抽一个转移分布、从每个 Beta 抽一个奖励——然后把它们拼成一个完整的 MDP。
54 / 65
抽解走更新一个回合的开销贵在「解」这一步
抽出来之后要解它 —— 每个回合一次完整规划,这是主要开销。
讲解
整个循环: 抽:从后验抽一个完整的 MDP。 解:在这个 MDP 上做值迭代,得到它的最优策略。 走:按这个策略走完一个回合。 更新:把观察到的转移和奖励计入计数。 代价在「解」那一步:每个回合都要做一次完整的规划。老虎机那边「贪心」只是取一个 argmax,几乎不花钱;MDP 这边它是一次值迭代。 但要看清这个代价换来了什么: 它换来了 MBIE-EB 需要用整整六集去构造的那个东西——乐观。MBIE-EB 要算 β、要维护计数、要设奖励加成、还要人为扔掉数据。后验采样什么都不用设计:抽一次样本,乐观就自动来了——因为抽出来的样本本来就有一定概率比真值好。 这是 L12 第六集那句话在 MDP 上的重演:一个看上去需要精心设计的东西,被一次采样免费实现了。
55 / 65
每步重抽每回合抽一次这是理由,不是本片验过的结论
指名反驳:抽出来的是一个假设,得走完才检验得了。
讲解
指名回去:抽一次样本得到的是一个内部一致的世界假设;在它上面规划出来的策略,是为了检验这个假设而生的。而检验往往需要一整段连贯的行动。每步重抽等于每步换一个假设。 这是标准的论证,而我上一镜说了:我自己三次都没能把它在数值上做出来。所以请把它当成一条值得知道的理由,而不是一条本片替你验过的结论。要做出这个差别,需要的实例得让「走错一步就彻底失去机会」,一条可以来回走的链做不到。 乐观不只要在数值上成立,还要在时间上保持一致——这一条在老虎机里看不出来,那里每一步都是独立的一次决策,没有「长计划」这回事。一到 MDP 它才浮出来。 对照一下三种做法怎么获得乐观: UCB / MBIE-EB:造一个奖励加成,要推导常数、要控制并集界。 后验采样:抽一个样本,乐观是抽样自带的。 乐观初始化:设一个高初值,而它不带保证(L12 第八集)。 理论部分到这里就完整了。但这一整套——MBIE-EB 也好,后验采样也好——都有一个共同的前提,而下一集会看到这个前提在深度学习里直接失效。
56 / 65

知识点 8 · 总结

MDP 的后验采样:抽一整个 MDP,解它,跟着走完一个回合

核心结论

共轭仍然管用:转移是多项式,配 Dirichlet;奖励是伯努利,配 Beta。Dirichlet 是 Beta 的多维推广,参数同样是伪计数,更新还是加一。

底层机制

四步:抽一个完整 MDP → 值迭代解它 → 按解出的策略走完整个回合 → 计数加一。代价在「解」那一步(每回合一次完整规划)。

常见误解

误解:「每一步重抽更及时」。标准答案是不行 —— 抽出来的是一个内部一致的世界假设,检验它需要一整段连贯行动(深度探索)。但本片三次尝试都没做出这个差别(比值 1.00 / 0.99 / 1.04)。当理由记,别当结论记。

与你的考试

三种获得乐观的方式:造一个奖励加成(MBIE-EB,要推常数、控并集界);抽一个样本(后验采样,乐观自带);设一个高初值(不带保证)。「时间一致性」是从老虎机到 MDP 真正新增的困难。

57 / 65

知识点 8 · 检验

MDP 的后验采样为什么要「抽一次、走完一个回合」,而不是每步重抽?

知识点 10

9 · 函数逼近下的探索:计数不泛化,而理论还没跟上

58 / 65
前八集全部建立在一件事上N(s,a):这里去过几次而它在连续空间里没有意义
整套理论都靠一个量:计数。而计数不泛化。
讲解
回头看前八集,所有东西都挂在同一个量上:N(s,a),这个状态动作对访问过几次。 UCB 的奖励项是 √(2 log t / N)。MBIE-EB 的加成是 β/√N。已知集的定义是 N ≥ m。鸽笼的预算是 |S||A|m。Dirichlet 的参数是计数。 全部是计数。 而一进函数逼近,这个量就失去意义了:在连续状态空间里,你永远不会两次到达完全相同的状态。每个状态的访问次数都是 1,或者 0。 这一集是这一讲的最后一集,也是讲师最坦白的一段。
59 / 65
把计数换成网络就行深度学习不就是干这个的吗
「见过多少次」不是一个可以回归的目标 —— 没有标签可学。
讲解
最直接的想法:既然表格存不下,那就训练一个网络来预测访问次数。 问题在于这件事没有监督信号。 值函数可以回归,因为有 Bellman 目标当标签。策略可以优化,因为有回报当信号。而「这个状态我见过多少次」——在连续空间里每个状态的真实答案都是 0 或 1,学出来的东西没有意义。 你真正想要的其实是另一个量:「这一带我探索得够不够」——一个关于密度的问题,不是关于计数的问题。 所以要做的不是「把计数换成网络」,而是先把问题换掉。下一镜看三条替代路线。
60 / 65
密度哈希嵌入三条替代路线
三条路:伪计数、哈希计数、学到的嵌入 —— 都在补同一个洞。
讲解
讲座列了几条实际在走的路,本质上都是在把「计数」换成某种能泛化的东西: 密度模型 / 伪计数(Bellemare 等人):显式地估计一个关于「访问过的状态」的密度模型,然后从密度反推一个伪计数。密度高的地方相当于去得多。 哈希计数(Berkeley 一系):把状态空间哈希到有限多个桶里,在桶上数数,并随时间更新哈希函数。讲师说这在某种意义上和嵌入是相近的——都是先降维成可数的东西,再数。 学到的嵌入:在一个学出来的表示空间里做同样的事。 三条路的共同形状:先找一个「相似的状态会被算作同一类」的划分,再在这个划分上恢复计数。 共同的代价也一样:前八集那些保证,一条都不再成立。划分是学出来的,而所有的界都建立在「计数是对的」之上。
61 / 65
Q 更新式+ β/√n加成:塞得进置信集?置信集:写不出这才是选 MBIE-EB 讲的理由
讲 MBIE-EB 的真正理由在这里:奖励加成能直接塞进无模型更新。
讲解
现在可以回答一个前面一直没说的问题:为什么这一讲花了六集讲 MBIE-EB,而不是别的算法? 讲师自己给了答案:「that's why I chose MBIE-EB is the algorithm to show you before, because I think that those sort of reward bonuses are much easier to extend to the model-free case」。 理由是可移植性: 显式置信集(不带 EB 的那个 MBIE 用的)在深度网络上写不出来。如果你的动态模型是一个深度网络,要给它写一个置信集——讲师的说法是「really tricky」。 奖励加成则不同:它只是在 Q 学习更新里加一项。不需要模型,不需要置信集,直接就能用在无模型的设定里。 而且讲师还提了经验上的结论:奖励加成在实践中大体和显式置信集做得一样好。 所以这六集的理论选择,其实是被「哪个能搬到深度学习里」倒推出来的。 (顺带一个实现细节:加成项通常在访问的当时算好存下来;而 MBIE-EB 原本是可以事后重算的——如果你的回放缓冲区留着数据。两种做法不等价。)
62 / 65
111111连续:每个状态只到一次1272343191862715321表格:数得起来讲师的原话很直接
指名反驳:不是换个网络。计数不泛化,而理论还没跟上。
讲解
指名回去:不是「把计数换成网络」就行。计数在连续空间里不成立,得先把问题换成密度或划分,而换完之后所有保证都失效了。 讲座最后比较了两条估计 Q* 不确定性的路线,评价很直接: bootstrap DQN(Osband):用自助采样训练 C 个不同的智能体,得到 C 个 Q 值,对这一组乐观地行动。讲师的评价是——「It's not incredibly effective. It gives you some performance gain.」 冻结嵌入 + 贝叶斯线性回归:把深度网络的嵌入固定住,只在它上面做一层线性回归;用贝叶斯线性回归就自然带出不确定性。她的评价是——「super simple」,而且「actually gives a lot of performance gains in a lot of cases」。 更简单的那个反而更好用。这个结论值得记住,它在深度 RL 里不算罕见:在一个深度网络顶上放一点点不确定性表示,往往比把整个网络贝叶斯化更划算。 最后是讲师对整块领域的判断,本片照录: 「we still haven't made sufficient progress in how to do exploration plus generalization.」 这不是谦辞。这一讲花了七集把表格情形的探索证成了定理,而这些定理没有一条能跨过函数逼近这道门。快速 RL 这条线,理论走到哪里、实践走到哪里,中间这段空白就是这一讲留下的题目。
63 / 65

知识点 9 · 总结

计数不泛化 —— 理论到函数逼近为止

核心结论

前八集全部挂在 N(s,a) 上(UCB 的 √(2log t/N)、MBIE-EB 的 β/√N、已知集 N≥m、鸽笼的 |S||A|m)。而连续空间里每个状态只到达一次。

底层机制

三条替代:密度模型/伪计数(Bellemare)、哈希计数(Berkeley)、学到的嵌入。共同形状是「先把相似状态归为一类,再恢复计数」;共同代价是所有保证都失效。

常见误解

误解:「把计数换成网络就行」。「见过多少次」没有监督信号 —— 连续空间里真实答案都是 0 或 1。要的其实是密度,不是计数。

与你的考试

选 MBIE-EB 讲的真正理由:奖励加成能直接塞进无模型更新,而深度网络上写不出置信集。讲师评 bootstrap DQN 「not incredibly effective」,而冻结嵌入 + 贝叶斯线性回归更简单却更有效。

64 / 65

知识点 9 · 检验

为什么这一讲花六集讲的是 MBIE-EB,而不是用置信集的 MBIE?

知识点 11

完

65 / 65
讲解
回头看这九集,承重的是五件事。 第一,判据的差别在参照系,不在数值。遗憾和 PAC 不能直接比大小——讲师自己说了一句「PAC can give much smaller regret」然后当场自我更正。两者衡量的东西不同:遗憾的基准是「从头最优会到的地方」,PAC 的基准是「你现在所在的地方」。在回合制、每次重置到固定起点的设定里,两者会靠得近一些。 第二,光有乐观不够,这是三条充分条件里第二条存在的全部理由。讲师的反例一句话就说完了:把所有值设成超高然后永不更新,乐观自动成立——而这个算法什么也学不到。所以必须再要求「准确性」:等你对某些状态动作对攒够了信息,你算出来的值就得真的接近它们的值。乐观负责让你去试,准确负责让你停下来。 第三,β/√n 这个形状不是猜的,是被 Hoeffding 逼出来的。X_i 的取值范围宽度是 1/(1−γ),偏差取 β/√n 代进 exp(−2n t²/R²),n 精确地约掉:我从 n=1 试到 n=10⁵,指数一动不动,都是 −2β²(1−γ)²。然后把 β 定成 (1/(1−γ))√(½ln(2|S||A|m/δ)),单次失败概率恰好等于 δ/(2|S||A|m),双侧再乘 |S||A|m 次更新,总失败率精确等于 δ——我验到机器精度。整条 β 是从「总预算是 δ」倒推回来的,和 L11 第六集是同一个手法。 第四,「故意扔掉数据」是并集界逼出来的,不是失误。并集界要覆盖所有估计更新,所以更新次数必须有限;于是算法规定每个 (s,a) 只用前 m 个样本。讲师自己点破了这有多反常——她引了 Tom Mitchell 对机器学习的定义:设计能随数据增多而持续改进的算法——而这个算法恰恰相反。这是为了拿到证明而付的代价,不是这个算法的优点。 第五,理论到函数逼近为止。计数不泛化,于是所有基于计数的保证都断在这里。伪计数、哈希、嵌入是工程上的替代,都没有 PAC 保证。讲师对两种主流做法的评价也很直接:bootstrap DQN 「not incredibly effective」,只有一些提升;而在冻结的嵌入上做贝叶斯线性回归——「super simple」——反而在很多情形下带来明显收益。 快速 RL 这条线到此为止。