CS234 L3 · 无模型策略评估 · 全片速览

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

1 · 开场2 · 1 · 自举:DP 不是「没有偏3 · 2 · 采样与自举是两个独立的轴4 · 3 · 首次访问 MC:无偏,而5 · 4 · MSE = 方差 + 偏6 · 5 · 每次访问 MC:有偏、方7 · 6 · α = 1/N(s):步8 · 7 · TD(0):一个回合只把9 · 8 · TD 误差不会趋于零 —10 · 9 · 批量设定:同一份数据,M11 · 完
知识点 1

开场

1 / 69
讲解
L2 里每一个算法的第一步都是「对所有 s′ 求和」。这一讲把 P 和 R 拿走,那一步就直接做不了了。 于是问题变成:给定一个固定策略,在没人给你模型的情况下,怎么估它的值?这一讲给了三个答案——动态规划(作为对照)、蒙特卡洛、时序差分——然后把大部分力气花在三者有什么不同上。 这一讲的要点几乎全在「不同」里,而不在算法本身。三个算法的伪代码加起来不到十行,但它们在偏差、方差、是否需要 Markov 性、以及在同一份数据上收敛到什么这四件事上各不相同。最后一条最反直觉,也是本片的第九集。 本片仍按六拍走:第二拍同情地说出一个貌似合理的错误模型,第五拍回去指名杀掉它。这一讲的讲稿里有几处口误和几处不精确的表述,本片会一一标出来——不是挑刺,而是因为它们恰好落在最容易形成错误模型的地方。
知识点 2

1 · 自举:DP 不是「没有偏差」,是没有采样误差

2 / 69
Vkπ(s)=r(s,π(s))+γ∑s′P(s′∣s,π(s))Vk−1π(s′)
当前状态π(s)后继
自举 = 不再往下展开,直接用上一轮的估计顶替剩余的一整棵子树。
讲解
先把 DP 的策略评估重画成一棵前瞻树。从当前状态出发,按策略取一个动作,展开一层得到所有可能的后继。 DP 在这里做了两件性质完全不同的事。第一,它把这一层的期望精确算出来——因为 P 已知,求和可以真的做。第二,它不再继续往下展开,而是把每个后继下面整棵剩余的子树换成上一轮的估计 V_{k−1}(s′)。 第二件事就叫自举(bootstrap)。它是这一讲全部比较的支点:接下来的两个算法,一个放弃了第一件事,一个两件都做。
3 / 69
DP 没有偏差因为你自举的那个 V^π,本来就是 V^π
这句话讲座里说了 —— 而它不精确。你自举的是 V^π_{k−1},差别在下标上。
讲解
讲座里有一句很容易记住的话:动态规划不会有偏差,因为你自举的那个 V^π 本来就是 V^π。 听上去无懈可击。但它把两个不同的对象当成了一个。你在第 k 轮自举的不是 V^π,而是 V^π_{k−1}——L2 已经讲清楚了,那是「只剩 k−1 步可走」时的精确值,它不等于无限时域的 V^π。 值得注意的是,她自己在后面填那张对照表的时候又承认了这一点。也就是说这不是一个立场,而是一次口头上的简化,而这个简化恰好落在最容易形成错误模型的地方。
4 / 69
‖Vkπ−Vπ‖∞≤γk‖V0π−Vπ‖∞
✓采样误差DP 没有✕截断偏差按 γ^k 消失
把「偏差」拆成两项:采样误差与截断偏差。DP 只有后者。
讲解
要把这件事说精确,得先把「偏差」拆成两项,它们的来源完全不同。 第一项是采样误差:你用有限个样本去代替一个期望。DP 没有这一项,因为模型已知,那个对 s′ 的求和是真的做了,一个样本都没用。 第二项是时域截断偏差:你用 V_{k−1} 顶替了剩余的整棵子树,而 V_{k−1} 本身只覆盖了有限步。DP 有这一项。 关键在于第二项会消失,而且消失得很快——由 L2 的 γ-压缩性,误差按 γ^k 几何衰减。所以正确的说法是:DP 没有采样误差;它确实有偏差,但那是一个随 k 几何消失的截断偏差。这比「DP 没有偏差」既更准确,也更有用。
5 / 69
γ=0.9:γk 随 k 衰减
k=1k=2k=3k=4k=50.9000.8100.7290.6560.590
截断偏差会消失,而且是几何速率 —— 这是它和采样误差的根本区别。
讲解
看什么:看柱子一根比一根矮多少:每一根都是前一根的 0.9 倍,这个比例从头到尾不变。这就是几何衰减的样子——不是越来越慢地下降,而是每一步都按同一个比例缩。 —— 截断偏差的上界是 γ^k 乘以初始误差。γ=0.9 时,k 每加 1 就乘 0.9;跑到 k=50 时这个因子已经是 5.2×10⁻³。 请把这条曲线和采样误差对照着记。采样误差按 N^(−1/2) 衰减,要把误差减半需要四倍的数据;而这里要把误差减半只需要再扫大约 6.6 轮。这就是「有模型」值多少钱。 所以两者不是同一种东西的两个程度:一个是算力换精度,一个是数据换精度。
6 / 69
✕采样误差DP 没有✓截断偏差按 γ^k 消失✕完全无偏两者都不是算力 vs 数据
指名反驳:DP 没有的是采样误差,不是偏差。
讲解
指名回去:DP 没有的是采样误差,不是偏差。它有一个截断偏差,只不过那个偏差按 γ^k 几何消失,所以在实践里可以被扫描轮数压到任意小。 为什么值得在一个措辞上较真:因为这个区分直接决定你该花钱买什么。截断偏差是用算力买的——多扫几轮就行。采样误差是用数据买的——除了收集更多轨迹别无他法。把两者混成一个词,你就没法判断手头的误差该往哪个方向投入。 下一集会把三个算法放进同一张坐标图:TD 同时背上这两项,而 MC 只有采样误差这一项。
7 / 69

知识点 1 · 总结

DP 没有的是采样误差,不是偏差

核心结论

DP 第 k 轮自举的是 V^π_{k−1}(k−1 步时域的精确值),不是 V^π。两者之差按 γ^k 几何衰减。

底层机制

「偏差」要拆两项:采样误差(用样本代替期望)与截断偏差(用 V_{k−1} 顶替剩余子树)。DP 只有后者。

常见误解

误解:讲座原话「DP 不会有偏差,因为自举的那个 V^π 就是 V^π」—— 差别就在下标 k−1 上。

与你的考试

两者花的钱不同:截断偏差用算力买(多扫几轮,γ^k),采样误差用数据买(N^(−1/2))。

8 / 69

知识点 1 · 检验

「动态规划的策略评估是无偏的」——这句话的问题在哪?

知识点 3

2 · 采样与自举是两个独立的轴,不是一条滑杆

9 / 69
✓动态规划算期望 · 自举✓蒙特卡洛抽样 · 不自举✓时序差分抽样 · 自举
三个算法的差别,可以完全压进两个是非问题:期望算不算得出来、未来展不展开。
讲解
三个算法的全部差别,可以压进两个是非问题。 第一个:这一层的期望,是算出来的还是抽样抽出来的?DP 算出来(模型已知),MC 和 TD 抽样。 第二个:剩下的未来,是展开到底还是用估计顶替?DP 和 TD 顶替(自举),MC 一路展开到回合终止。 两个问题各有两个答案,所以应该有四个格子。三个算法只填了三个——空出来的那个是「抽样到底、不自举、但也不用模型」……其实那正是 MC;真正空着的是「算期望 + 展开到底」,也就是穷举整棵树,它精确但代价爆炸,所以没人用。
10 / 69
TD 是 MC 和 DP 的折中所以它的表现也介于两者之间
前半句对。后半句把「各取一半」偷换成了「结果在中间」—— 混出来的可能是第三样东西。
讲解
这个错误模型有一个正确的前半句:TD 确实从两边各取了一半——像 MC 一样抽样后继,像 DP 一样自举。 错的是后半句:把「机制上各取一半」偷换成了「结果落在两者中间」。这个偷换很隐蔽,因为在偏差和方差这两项上它碰巧是对的:TD 的方差确实介于 DP 和 MC 之间。 但一个算法不是只有偏差和方差。第九集会给出一个具体的数据集,在上面批量 MC 和批量 TD 收敛到两个不同的值函数——不是精度不同,是答案不同。到那时你会看到,混合两种机制得到的是第三样东西,不是中间值。
11 / 69
算期望抽样DPTD穷举树MC自举不自举
两根独立的轴,四个格子。TD 在对角,不在 DP 与 MC 的连线上。
讲解
把两个问题画成两根轴:纵轴是「自不自举」,横轴是「算期望还是抽样」。 DP 在左上(算期望、自举),MC 在右下(抽样、不自举),TD 在右上(抽样、自举)。左下角是「算期望、不自举」,也就是把整棵树展开到底——精确,但代价随时域指数爆炸,所以没人用。 注意 TD 的位置:它在对角线的另一端,不在 DP 与 MC 的连线上。这张图本身就是对「TD 在中间」那个直觉的反驳——在一个二维空间里,「各取一个坐标」得到的是第四个角,不是中点。
12 / 69
DP: V(s)←r+γ∑s′P(s′|s,a)V(s′)MC: V(s)←V(s)+α[Gt−V(s)]TD: V(s)←V(s)+α[r+γV(s′)−V(s)]
差别全在方括号里:拿什么当「目标」。
讲解
把三条更新式并排放,差别全在方括号里那个「目标」是什么。 DP 的目标是精确的一步期望加自举值:需要模型,不需要样本。 MC 的目标是 G_t,也就是这一回合实际走完拿到的回报:不需要模型,也不自举,但必须等回合结束,而且只能用于回合制任务。 TD 的目标是 r + γV(s′),其中 r 和 s′ 是抽到的一个样本,V(s′) 是当前估计:不需要模型,不需要等回合结束,每走一步就能更新一次。 顺带纠一处措辞:讲座把 Q 介绍成「先取 a 再按 π 走所得的期望奖励」。那是期望回报——整条折扣和,不是一个即时奖励。这种把 reward 当 return 用的说法在本讲多次出现。
13 / 69
✓机制上确实各取一半✓方差上确实在中间✕收敛目标上不在中间MC 还不要马尔可夫
指名反驳:机制各取一半,答案未必在中间。第九集给反例。
讲解
指名回去。两根轴是独立的,所以「各取一个坐标」得到的是第四个角,不是两点的中点。 把三件事分开说。机制上,TD 确实各取一半,这是对的。方差上,TD 也确实介于两者之间,这一条碰巧成立,也正是这个直觉的来源。但收敛目标上不在中间:第九集会给出一个八条回合的数据集,在上面批量 MC 得到 V(A)=0,批量 TD 得到 V(A)=3/4,两者都不是「另一个的低精度版本」。 还有一条更硬的、完全不是程度问题的差别:MC 不需要 Markov 性,而 DP 和 TD 都需要。把 TD 用在非 Markov 的数据上,无论收集多少数据,它都会收敛到一个错的值。这一条没有任何「介于中间」的余地。
14 / 69

知识点 2 · 总结

采样与自举是两根独立的轴,TD 在对角不在中点

核心结论

DP = 算期望 + 自举;MC = 抽样 + 不自举;TD = 抽样 + 自举。第四格(算期望 + 展开到底)是穷举树,代价指数爆炸。

底层机制

差别全在更新式方括号里的目标:精确一步期望 / 实际回报 G_t / 采样的 r+γV(s′)。

常见误解

误解:「各取一半所以结果在中间」。方差上碰巧成立,收敛目标上不成立(第九集反例)。

与你的考试

最硬的分野:MC 不需要 Markov 性,DP 与 TD 都需要;非 Markov 数据上后两者收敛到错值。

15 / 69

知识点 2 · 检验

下面哪一条差别,不是程度问题而是原理性的?

知识点 4

3 · 首次访问 MC:无偏,而且不需要 Markov 性

16 / 69
Gt=rt+γrt+1+γ2rt+2+⋯+γT−trT
s₃0s₂0s₂0s₁+1
MC = 走完,然后平均。没有模型,没有自举,没有 Bellman 方程。
讲解
蒙特卡洛策略评估朴素到几乎不像一个算法:按策略走完整个回合,算出每个被访问状态的实际折扣回报,然后对多个回合取平均。 没有模型,没有自举,没有 Bellman 方程。它甚至不需要状态是 Markov 的——因为它从不假设「从 s 出发的未来只取决于 s」,它只是把实际发生的回报记下来。 本片用的轨迹是 s₃ → s₂ → s₂ → s₁ → 终止。只有 s₁ 给 +1,γ=1(回合制,有限时域下 γ=1 是安全的——这是 L2 第三集的结论)。所以从 s₃、从 s₂、从 s₁ 出发的回报都等于 1。 注意 s₂ 被访问了两次。这件事下一集会变成一个真正的分歧点。
17 / 69
MC 只是个笨办法能用 TD 的时候没理由用它
「笨」是真的。但笨恰好意味着假设更少 —— 少的那条是马尔可夫性。
讲解
这个错误模型在很多场景下是对的:有模型、状态确实 Markov、回合又长,那么 MC 又慢又抖,没理由用它。 但它漏掉了 MC 唯一的、而且是质上而非量上的优势:它是三者里唯一不需要 Markov 性的。 这个优势之所以容易被漏掉,是因为在课堂的表格世界里 Markov 性总是成立的。而在你真正会遇到的问题里——用最近 4 帧当状态的 Atari、把对话历史截断成固定窗口的对话系统、传感器有延迟的机器人——状态几乎从来不是严格 Markov 的。此时 TD 不会报错,它会安静地收敛到一个错的值。
18 / 69
V^π(s)=1N(s)∑i=1N(s)G(i)(s)
✓首次访问只取第一次✓于是 IID无偏 + 相合
首次访问:每回合每状态最多取一个样本,于是样本之间 IID。
讲解
首次访问 MC 的规则只有一句:一个回合里,某个状态只取它第一次出现处的回报,后面再访问到也不算。 这条规则看起来像是在浪费数据,但它换来了一个很硬的性质:每个回合最多给每个状态贡献一个样本,所以这些样本来自不同的回合,彼此独立同分布。 一旦 IID 成立,剩下的全是标准统计:样本均值是无偏的,而且由大数定律相合——样本数趋于无穷时收敛到 V^π。请注意这两条结论没有用到任何强化学习的性质,它们就是「独立同分布样本的均值」这一件事。 下一集会看到,一旦允许同一回合里的多次访问都算数,IID 就破了,无偏性也跟着破了。
19 / 69
一个回合之后(首次访问 MC)
s1s2s3s4s5s6s71.001.001.000.000.000.000.00
MC 在回合结束时一次性更新所有访问过的状态;没走到的一动不动。
讲解
看什么:看有几根柱子立起来:s₁、s₂、s₃ 三根一起到 1,而 s₄ 到 s₇ 始终贴地。三根同时更新——这正是下一个知识点里 TD 做不到的事(TD 一回合只更新一格)。 —— 一个回合之后,首次访问 MC 把轨迹上的三个状态全部更新为 1。因为 γ=1 且唯一的奖励在终点,从 s₃、s₂、s₁ 出发的回报都等于 1。 没被访问到的 s₄ 到 s₇ 完全没动——MC 只更新它实际走过的地方。 请把「三根一起立起来」这件事记住。第七集会把 TD 放在同一条轨迹上跑,那时只有一根柱子会动。两张图并排看,就是自举与不自举的全部差别。
20 / 69
✓要的回合制 · 够多回合✓不要的模型 · 马尔可夫✕代价方差高 · 只能离线
指名反驳:假设越少越「笨」,也越难被环境悄悄证伪。
讲解
指名回去。MC 的「笨」等价于「假设少」,而少掉的那条假设恰好是最难验证的一条:Markov 性。 把账算清楚。MC 需要的:任务是回合制的、回合数足够多。MC 不需要的:模型、Markov 性、任何形式的 Bellman 方程。MC 的代价:方差高——整条回合的随机性都压进了一个样本;而且只能离线、只能回合制。 所以选择依据不是「谁更先进」,而是一个关于你的问题的经验判断:你的状态表示是不是真的 Markov。如果是,TD 几乎总是更划算;如果不是,TD 给你的是一个收敛得很漂亮的错误答案,而 MC 给你的是一个方差很大但正确的答案。
21 / 69

知识点 3 · 总结

首次访问 MC:无偏、相合,而且不需要 Markov 性

核心结论

每回合每状态只取第一次访问的回报 ⟹ 样本来自不同回合、IID ⟹ 均值无偏 + 大数定律相合。

底层机制

无偏与相合的全部依据就是 IID,没有用到任何 RL 的性质。允许重复访问就会破坏 IID(下一集)。

常见误解

误解:「MC 只是笨办法」。笨 = 假设少,而少掉的那条是最难验证的 Markov 性。

与你的考试

代价:高方差(整条回合的随机性进一个样本)+ 只能回合制、只能离线。

22 / 69

知识点 3 · 检验

首次访问 MC 的无偏性,最终依赖于哪一条?

知识点 5

4 · MSE = 方差 + 偏差²,讲座这里说错了一个字

23 / 69
MSE(θ^)=E[(θ^−θ)2]
✕偏差系统性偏到一边✕方差每次都抖
要比较三个算法先得有一把尺子。而这两样东西怎么合成一个数,讲座说错了一个字。
讲解
要比较 MC 和 TD,得先有一把共同的尺子。这把尺子是均方误差:估计值与真值之差的平方的期望。 MSE 的用处在于它把两种性质完全不同的「错」压成了一个可比较的数。一种是系统性地偏到一边——每次都高估或每次都低估,这是偏差。另一种是围着正确答案剧烈抖动——平均下来没错,但任何一次都不可信,这是方差。 问题是:这两样东西是怎么合成一个数的?讲座在这里说错了一个字。那个字看起来微不足道,但它改变了整个式子的性质——下面会看到,按她说的那个式子算,MSE 可以是负数。
24 / 69
MSE = 偏差 + 方差所以无偏估计总是更好的
第一句少了一个平方;第二句由它顺理成章推出。两句合起来刚好挡住 TD 为什么有用。
讲解
讲座的原话是:均方误差是它的偏差与方差之和。少了一个平方。 这个口误本身不难改,真正麻烦的是它顺理成章地支撑了第二句:既然 MSE 是偏差加方差,那无偏就把一项清零了,所以无偏估计总是更好。 而「无偏 = 正确,有偏 = 有毛病」这个立场,在很多统计课上确实是默认的。它在这里是有害的,因为这一讲后面最重要的结论恰恰是:TD 在每一个有限样本量下都有偏,但它常常比无偏的 MC 更好用。带着「无偏更好」的立场,这句话根本读不进去。
25 / 69
MSE=Var(θ^)+Bias(θ^)2
平方保证两项都 ≥ 0没它,MSE 能算出负数
正确写法:MSE = 方差 + 偏差²。而 MSE 是平方的期望,永远不可能为负。
讲解
正确的分解是:MSE 等于方差加上偏差的平方。 那个平方不是排版上的装饰。它保证右边两项都非负,因而 MSE 非负——这是必须的,因为 MSE 本身就是一个平方的期望,它在定义上不可能小于零。 而「方差加偏差」这个写法允许偏差是负数(估计系统性偏低时就是负的),于是右边可以算出一个负数。一个恒非负的量等于一个可以为负的表达式——这不是近似,是自相矛盾。 下一镜用一个具体的估计器把这件事验出来。
26 / 69
X∼N(10,1),θ^1=X,θ^2=0.9X
方差偏差²实测 MSE0.8080.9941.802
20 万次抽样:0.808 + 0.994 = 1.802,与直接测出的 MSE 逐位吻合。
讲解
看什么:看前两根柱子的高度加起来是不是正好等于第三根。第三根是直接测出来的 MSE,前两根是分解出来的两项——三根柱子一起出现,就是在验这个等式。 —— 取一个具体例子:X 服从均值 10、方差 1 的正态分布。估计器一是 X 本身(无偏),估计器二是 0.9X(把估计往零缩了一成)。 对 0.9X 做二十万次抽样实测:方差 0.808,偏差 −0.997(偏差的平方是 0.994),两者相加 1.802;而直接测出来的 MSE 也是 1.802。分解逐位吻合。 现在换成讲座说的那个式子:方差加偏差 = 0.808 + (−0.997) = −0.189。一个负的均方误差。这就是那个平方的作用——它不是细节。
27 / 69
X∼N(1,9):θ^=X(无偏)vsθ^=0.1X
无偏 X有偏 0.1X9.000.90
有偏可以完胜无偏:0.1X 的偏差高达 −0.9,MSE 却从 9.00 降到 0.90。
讲解
看什么:看两根柱子的悬殊:左边无偏的那根几乎顶格,右边重度有偏的那根只剩一小截。柱子越矮越好——这里越矮的恰恰是那个「有毛病」的估计器。 —— 换一组参数:X 的均值只有 1,方差却有 9——信号弱、噪声大。这正是强化学习里的常见处境。 无偏估计 X 的 MSE 就等于它的方差,9.00。把估计往零缩到十分之一:偏差变成 −0.9,看起来糟透了;但方差被压到 0.01×9 = 0.09,于是 MSE = 0.09 + 0.81 = 0.90。只有无偏估计的十分之一。 这就是「有偏但低方差」为什么值钱。请把这个图像直接搬到 TD 上:TD 就是那个被缩过的估计器。它自举一个不准的值,因而有偏;但它不必把整条回合的随机性都吞进一个样本,因而方差小得多。数据有限时,它常常赢。
28 / 69
✕方差 + 偏差0.808−0.997=−0.189✓方差 + 偏差²0.808+0.994=1.802✕无偏必更好反例 9.00 vs 0.90
指名反驳:判据是总 MSE。无偏只在方差相同时才更好 —— 而这正是 TD 存在的理由。
讲解
指名回去。第一句少了一个平方,而那个平方一旦没有,式子就会给出负的 MSE——0.808 加 −0.997 等于 −0.189,而均方误差不可能是负数。 第二句「无偏总是更好」是从第一句推出来的,所以也跟着倒。正确的判据是总 MSE,不是「有没有偏差」。无偏只在方差相同的前提下才更好——这个前提在 MC 与 TD 之间恰恰不成立。 偏差与方差之间存在交换,而交换点取决于你有多少数据:数据极多时,无偏估计的方差自己就降下来了,偏差就成了唯一的障碍;数据有限时,用一点偏差换掉一大块方差几乎总是划算的。 这就是 TD 存在的全部理由。
29 / 69

知识点 4 · 总结

MSE = 方差 + 偏差²,那个平方不是装饰

核心结论

实测(20 万次抽样,0.9X):方差 0.808 + 偏差² 0.994 = 1.802 = 直接测得的 MSE。而「方差+偏差」= −0.189,负的 MSE。

底层机制

判据是总 MSE,不是有没有偏差。反例:X~N(1,9) 时无偏 MSE=9.00,重度有偏的 0.1X 只有 0.90。

常见误解

误解:讲座原话「MSE 是偏差与方差之和」,以及由它推出的「无偏总是更好」。两句一起倒。

与你的考试

交换点取决于数据量。TD 正是那个「被缩过」的估计器:用一点偏差换掉一大块方差。

30 / 69

知识点 4 · 检验

为什么「MSE = 偏差 + 方差」这个写法不只是少写了一个上标?

知识点 6

5 · 每次访问 MC:有偏、方差更低、仍然相合

31 / 69
s₃0s₂0s₂0s₁+1s₂ 出现了两次
同一回合里重复访问:两次都算,还是只算第一次?这个选择决定了估计有没有偏。
讲解
回到那条轨迹:s₃ → s₂ → s₂ → s₁。s₂ 在同一个回合里出现了两次。 第一次访问的回报是从那个位置往后所有奖励的折扣和,第二次访问的回报是从更靠后的位置往后的和。两次都算进平均,还是只算第一次? 这个选择听起来只是「要不要浪费数据」。实际上它决定了这个估计器有没有偏——而原因藏在那两个回报共享的部分里。
32 / 69
当然两次都算样本越多,估计越准
「样本越多越准」少说了两个字:独立样本越多越准。
讲解
这个错误模型的直觉很硬:数据就这么多,扔掉一半观测是浪费。 但「样本越多越准」这句话少说了两个字:独立样本越多越准。而同一个回合里的两个回报共享了后半段的全部随机性——从第二次访问 s₂ 之后发生的一切,同时进了两个回报里。它们高度相关。 把相关样本当作独立样本去平均,均值就不再是无偏估计了。这就是每次访问 MC 有偏的全部原因:不是算法写错了,是 IID 这个前提被破坏了。 第三集里首次访问 MC 的无偏性,唯一的依据就是 IID。依据没了,结论自然跟着没。
33 / 69
G(1)=r2+γr3+γ2r4,G(2)=r3+γr4
共享 r₃ 与 r₄共享 ⟹ 相关 ⟹ 有偏
后半段运气好,两个样本会同时偏高 —— 误差不抵消,反而叠加。
讲解
把两个回报写出来就一目了然:第一次访问的回报包含 r₂、r₃、r₄,第二次访问的回报包含 r₃、r₄。它们共享 r₃ 和 r₄。 共享意味着相关。直观地说:如果这一回合的后半段运气特别好,那么两个样本会同时偏高。独立样本的误差会互相抵消,相关样本的误差则叠加。 对照一下首次访问:它的两个样本来自两个不同的回合,运气互不相干,所以误差会抵消。这就是为什么那边无偏、这边有偏。 注意这里没有用到任何强化学习的性质,全部是统计。
34 / 69
✓首次访问无偏 · 方差相同✕每次访问有偏 · 方差相同同计数下首次访问占优
一样的方差,却没有偏差。每次访问的全部优势是计数攒得快。
讲解
讲座在这里给了一个很精确、也很容易被读漏的陈述,值得完整记住。 在相同计数下——也就是每个状态已经积累了同样多的样本时——首次访问占优:两者方差相同,而首次访问没有偏差。 那每次访问凭什么还有人用?因为它攒计数攒得快。同样跑一百个回合,每次访问积累的样本数可能是首次访问的好几倍。它的全部优势就在这一条,而不在「用了更多信息所以更准」。 这个区分很重要,因为它告诉你什么时候该用哪个:回合很便宜、可以随便跑,就用首次访问;回合很贵、每一条都要榨干,就用每次访问,并接受那点偏差。
35 / 69
✓首次访问无偏 · 相合✓每次访问有偏 · 相合✓同计数比首次占优✓实际用量每次攒得快
指名反驳:多的是样本量,不是信息量。两者都相合,差别只在有限样本。
讲解
指名回去:多出来的不是独立样本,是相关样本。多的是量,不是信息。 但也别把每次访问说成错的——它相合:回合数趋于无穷时同样收敛到 V^π,偏差会消失。所以这是一个有限样本量下的取舍,不是对错问题。 最后借这一集把两个经常被混用的词分清楚,因为下一次遇到它们是在 TD 上。无偏说的是:对每一个有限的样本量 n,估计的期望都等于真值。相合说的是:当 n 趋于无穷时,估计收敛到真值。 两者互不蕴含。每次访问 MC 和 TD 都是「有偏但相合」——在任何一个你真正跑得完的样本量下它们都偏,但偏差会随数据消失。
36 / 69

知识点 5 · 总结

每次访问 MC 有偏,因为同回合内的回报相关

核心结论

同回合两次访问的回报共享后半段(G⁽¹⁾ 含 r₃r₄,G⁽²⁾ 也含 r₃r₄)⟹ 不 IID ⟹ 均值有偏。

底层机制

讲座的精确陈述:同计数下首次访问占优(方差相同、无偏);每次访问的全部优势是攒计数快。

常见误解

误解:「两次都算所以数据更多」。多的是样本量不是信息量 ——「越多越准」要求样本独立。

与你的考试

无偏=每个有限 n 都对;相合=n→∞ 才对。两者互不蕴含;每次访问 MC 与 TD 都属「有偏但相合」。

37 / 69

知识点 5 · 检验

每次访问 MC 为什么有偏?

知识点 7

6 · α = 1/N(s):步长与计数规则是两个独立的选择

38 / 69
V(s)←V(s)+α[Gt−V(s)],α=1N(s)
这就等于求算术平均但 N 数的是什么?
增量式 + α = 1/N(s) = 求平均。而「哪个 N」讲座没说。
讲解
把「先存下所有回报,最后求平均」改写成增量式:每来一个样本就更新一次,V(s) 加上 α 乘以「新样本减去当前估计」。 取 α = 1/N(s) 时,这条式子和求算术平均完全等价——展开就能看见,第 N 次更新之后 V(s) 正好是前 N 个回报的平均值。这是一个恒等式,不是近似。 讲座接着说:α = 1/N(s) 就等同于每次访问 MC。这句话只在一个没被说出来的前提下成立,而那个前提恰好是这一集要拆开的东西。
39 / 69
增量式 = 每次访问选了写法就等于选了计数规则
这句话把两个互相独立的选择绑成了一个。
讲解
讲座的原话是:α = 1/N(s) 的增量式 MC 就等同于每次访问蒙特卡洛。 由此很容易形成一个印象:增量式写法对应每次访问,批量求平均对应首次访问;选了写法就等于选了计数规则。 这个印象把两个互相独立的选择绑成了一个。实际上它们是两个开关:一个是「怎么更新」(增量式还是批量),一个是「怎么计数」(首次访问还是每次访问)。两个开关可以任意组合,出来四种算法。 下一镜把这四种列出来。
40 / 69
✓开关一批量 / 增量✓开关二首次 / 每次计数α=1/N 只管步长
α = 1/N(s) 说的是「步长跟着计数走」,没说 N 数的是什么。
讲解
把两个开关分开。开关一是更新方式:批量求平均,还是增量式。开关二是计数规则:N(s) 数的是「每回合第一次访问」,还是「每一次访问」。 α = 1/N(s) 这个设定只说了一件事:步长跟着计数走。它复现出的是首次访问还是每次访问,完全取决于 N 数的是哪一种。 用首次访问的计数,增量式 MC 就精确复现首次访问 MC(无偏)。用每次访问的计数,它就精确复现每次访问 MC(有偏)。同一条更新式,两个不同的估计器。 所以讲座那句话缺的前提是:N 必须是每次访问的计数。
41 / 69
✓首次计数无偏✕每次计数有偏批量/增量不改变它
「增量还是批量」是工程选择;「首次还是每次」才是统计选择。
讲解
把四种组合列出来,结论很干净:左右两列在数学上完全相同,增量式和批量求平均只是同一个估计器的两种写法,算出来的数一模一样。而上下两行才是真正的分歧,一个无偏一个有偏。 所以这两个开关的地位完全不同。「增量还是批量」是工程选择——增量式省内存、能在线跑,仅此而已,它不改变你在估计什么。「首次还是每次」是统计选择——它决定了估计器有没有偏。 把两者绑在一起的坏处很实际:你会以为改了写法就改了算法,或者反过来,以为为了省内存改成增量式就不得不接受偏差。两者都不对。
42 / 69
✓α = 1/N(s)等权平均全部历史✓α = 常数按 (1−α)^k 遗忘常数 α 不收敛到算术平均
指名反驳:步长与计数规则是两个独立选择。常数 α 是为非平稳环境准备的。
讲解
指名回去:α = 1/N(s) 只有在 N 数的是每次访问时才复现每次访问 MC。步长规则与计数规则是两个独立的选择。 顺带把常数步长说清楚,因为它从下一集起会一直出现。α = 1/N(s) 是对所有历史样本等权平均,随着 N 增大,每个新样本的影响越来越小,估计越来越不动——这正是收敛所需要的。 而常数 α 做的是另一件事:指数加权移动平均。旧样本的权重按 (1−α)^k 衰减,越近的样本权重越大。所以常数 α 不会收敛到算术平均,它永远保留着对最近数据的敏感。 这不是缺陷,是设计:它是为非平稳环境准备的。如果环境会变,你根本不想要那个把远古数据等权算进去的平均。代价是估计永远在抖,不会真正收敛——这一点在第八集会变成一个具体的失效模式。
43 / 69

知识点 6 · 总结

步长规则与计数规则是两个独立的选择

核心结论

α = 1/N(s) 只说「步长跟着计数走」。N 若是首次访问计数就复现首次访问 MC(无偏),若是每次访问计数才复现每次访问 MC(有偏)。

底层机制

四种组合里,左右两列(增量 vs 批量)数学上相同;上下两行(首次 vs 每次)才决定有没有偏。

常见误解

误解:讲座原话「α=1/N(s) 的增量式 MC 就等同于每次访问 MC」—— 缺了「N 是每次访问计数」这个前提。

与你的考试

常数 α = 指数加权移动平均(旧样本按 (1−α)^k 遗忘),不收敛到算术平均;它是为非平稳环境准备的。

44 / 69

知识点 6 · 检验

用首次访问的计数 N(s),跑增量式更新 V ← V + (1/N(s))[G − V]。得到的是什么?

知识点 8

7 · TD(0):一个回合只把信息往回传一格

45 / 69
V(st)←V(st)+α[rt+γV(st+1)−V(st)]
✓不必等回合结束每步就更新✓不需要回合制永不终止也能跑
TD 每一步都更新。放到同一条轨迹上(α=1):一个回合能学到多少?
讲解
TD(0) 的更新式:把 V(s) 往「r 加 γ 乘下一个状态的当前估计」这个目标上推一点。它只往前看一步,剩下的未来全部交给自举。 好处立刻可见:不必等回合结束,每走一步就能更新;而且不需要任务是回合制的,永不终止的任务同样能跑。这两条是 MC 做不到的。 现在把它放到第三集那条轨迹上——s₃ → s₂ → s₂ → s₁,只有 s₁ 给 +1,取 α=1。第三集里 MC 一个回合更新了三个状态。TD 呢?
46 / 69
TD 每步都更新所以同样的数据上它学得更快
「更新更频繁」是事实。但更新次数和每次的信息量是两个量 —— TD 赢前者,输后者。
讲解
这个错误模型的前半句是事实:TD 每走一步更新一次,MC 要等整个回合。 错在把「更新更频繁」直接推成「学得更快」。这里其实有两个独立的量:更新的次数,和每次更新携带的信息量。TD 赢在前者,但输在后者——它每次只把信息挪动一格。 下面三镜在同一条轨迹上把这件事量出来。你会看到一个相当刺眼的对比:MC 一个回合更新三个状态,TD 一个回合只更新一个。
47 / 69
α=1,V 初始全 0:四笔更新的结果
①s₃②s₂③s₂④s₁0001前三笔目标里 V(s′) 全是 0
四笔更新,只有最后一笔碰到奖励 —— 而那时前三个状态已经更新完了。
讲解
看什么:前三根都是零,只有最后一根立起来。这四根是同一条轨迹上四笔 TD 更新各自的结果 —— 前三笔的目标里 V(s′) 全是 0,所以更新了等于没更新;等第四笔碰到真正的奖励时,前面三个状态已经更新完了。 —— 逐笔追踪一遍,α=1,V 初始全零。 第一笔,从 s₃ 到 s₂,奖励 0:目标是 0 加 V(s₂),而 V(s₂) 此刻是 0,所以 V(s₃) 更新成 0——等于没动。第二、第三笔同理。 第四笔,从 s₁ 转到终止,奖励 +1:目标是 1 加 0,于是 V(s₁) 变成 1。 关键在于顺序:唯一带着真实奖励的那笔更新发生在最后,而那时前面三个状态已经更新完了,它们看到的都是零。奖励的信息在这个回合里根本来不及往回走。
48 / 69
同一条轨迹,一个回合之后
s1s2s3s4s5s6s71.000.000.000.000.000.000.00
TD 一个回合只更新了一个状态。对照第三集 MC 那张图:那里三根一起立起来。
讲解
看什么:看有几根柱子立起来:只有 s₁ 一根。请把它和第三集 MC 那张图并排记住——那里是三根一起立起来。同一条轨迹,同样的数据,更新出来的东西相差三倍。 —— 一个回合之后,TD 的估计是「1 后面全是 0」。只有 s₁ 动了。 这里必须补上讲座没说的一个前提:这个答案只在 α=1 时成立。α 取 0.5 时结果是 (0.5, 0, 0, 0, 0, 0, 0)——那个 1 会变成 α。讲座直接给出了「1 后面全是 0」而没有交代步长,这是很容易在作业里踩的坑。 和第三集 MC 的同一张图对照:MC 一个回合把 s₁、s₂、s₃ 三个状态全部推到 1。同一条轨迹、同样的数据,MC 一次挪了三格,TD 只挪了一格。
49 / 69
第 2 个回合⟶第 3 个回合(同一条轨迹反复跑)
1.00s11.00s21.00s30.00s40.00s50.00s60.00s7
信息每个回合往回走一格。所需回合数与状态到奖励的距离同阶。
讲解
看什么:只看 s₃ 那一根:第 2 回合结束时它还贴着地面,第 3 回合结束时才立起来。前两根始终不动——它们早就到位了。动的永远只有锋面上那一根。 —— 把同一条轨迹反复跑。第二个回合结束时,V 变成 (1, 1, 0, …)——s₂ 起来了,因为这一次它更新时 V(s₁) 已经是 1。第三个回合结束时 s₃ 才起来。 每个回合恰好往回推进一格。所以 TD 学完一个状态所需的回合数,与它到奖励的距离同阶——这和 L2 里值迭代的传播锋面是同一个现象,因为它们自举的方式相同。 这也让「TD 学得更快」这句话有了精确的反驳:TD 的更新次数多,但每次更新的射程只有一格;MC 的更新次数少,但每次更新覆盖整条轨迹。谁快取决于轨迹有多长、以及你在乎的是哪个状态。
50 / 69
✓真优势在线 · 低方差✕真代价有偏 · 一回合一格「1 后面全是 0」只在 α=1 时
指名反驳:TD 的优势是在线、低方差、不需回合制 —— 不是「更快」。
讲解
指名回去。TD 的更新次数确实更多,但每次更新的射程只有一格。学习速度要看这两项的乘积,而不是只看其中一项。 把 TD 的真实优势和代价分清楚。优势:能在线更新、不需要任务是回合制的、方差低得多、内存恒定。这几条都很硬,而且都与「更快」无关。 代价:它自举一个不准的值,所以有偏;信息一个回合只往回走一格;而且它需要 Markov 性——这是第二集里那条原理性的差别。 最后重复那个讲座没说的前提:「1 后面全是 0」只在 α=1 时成立。α=0.5 时是 (0.5, 0, …)。而 α=1 本身是一个极端设定——下一集会看到它为什么危险。
51 / 69

知识点 7 · 总结

TD 更新更频繁,但每次只把信息往回挪一格

核心结论

同一条轨迹 s₃→s₂→s₂→s₁,α=1:MC 一个回合更新三个状态(全变 1),TD 一个回合只更新一个(1 后面全是 0)。

底层机制

唯一带真实奖励的那笔更新发生在最后,前面几笔看到的 V(s′) 还是 0。信息每回合往回走一格。

常见误解

误解:「更新次数多所以学得快」。次数 × 射程才是速度;TD 赢次数,输射程。

与你的考试

讲座没说的前提:「1 后面全是 0」只在 α=1 时成立;α=0.5 时是 (0.5,0,0,0,0,0,0)。

52 / 69

知识点 7 · 检验

同一条轨迹 s₃→s₂→s₂→s₁(只有 s₁ 给 +1,γ=1),TD(0) 取 α=0.5,跑一个回合后 V 是多少?

知识点 9

8 · TD 误差不会趋于零 —— 除非环境是确定的

53 / 69
δt=rt+γV(st+1)−V(st)
TD 更新的全部内容收敛后它会趋于 0 吗
TD 误差不会趋于零。这不是没收敛 —— 是它的定义决定的。
讲解
TD 误差 δ 是 TD 更新的全部内容:V(s) 加上 α 乘以 δ。 它的名字带「误差」,用法又像梯度下降里的残差,所以有一个判据几乎自动成立:δ 变小说明学好了,δ 趋于零说明收敛了。很多人就是这么监控训练的。 但答案是:δ 不会趋于零,除非环境是确定性的。哪怕你有无穷多的数据、哪怕 V 已经精确等于 V^π,δ 依然会在一个非零的范围里跳。 这不是没收敛,这是 δ 的定义决定的。
54 / 69
δ 学好了就该趋于 0所以可以拿 |δ| 当收敛判据
梯度残差比的是预测与标签;δ 比的是期望与它的一个样本。后者不会消失。
讲解
这个错误模型来自一个很自然的类比:在监督学习里,残差趋于零意味着拟合到位,所以可以用梯度范数或损失判断收敛。 但两边有一处关键差别。梯度下降的残差比较的是「预测值」与「一个确定的标签」——标签是固定的,拟合好了差就真的没了。 TD 误差比较的是什么?V(s) 是对期望的估计,而 r + γV(s′) 里的 r 和 s′ 是从那个分布里抽出来的一个样本。拿一个期望去减它自己的一个样本,差不会消失——消失的只有这个差的期望。 下一镜用一个两行的例子把它固定下来。
55 / 69
r=0,γ=1,V(s1′)=0,V(s2′)=10,V(s)=5
ss′₁s′₂0.5
一个已经完全收敛的例子:V(s)=5 是精确值,没有任何估计误差。
讲解
构造一个尽可能干净的例子。状态 s 的即时奖励是 0,γ=1,它以各一半的概率转到 s′₁ 或 s′₂。 设算法已经完全收敛:V(s′₁)=0,V(s′₂)=10,于是 V(s) = 0.5×0 + 0.5×10 = 5。这是精确的 V^π,一点估计误差都没有。 现在在这个完美收敛的状态下,算一算 TD 误差是多少。
56 / 69
δ=0+V(s′)−5={−5抽到 s1′+5抽到 s2′
抽到 s′₁抽到 s′₂δ 的期望5.05.00.0
完全收敛之后,每一次的 |δ| 仍然是 5。归零的只有期望。
讲解
看什么:看前两根柱子和第三根的反差:前两根都是 5,也就是每一次实际观测到的 |δ|;第三根是 0,那是它们的平均。「每次都是 5」和「平均是 0」同时成立——这正是全部要点。 —— 抽到 s′₁ 时,δ = 0 + 0 − 5 = −5。抽到 s′₂ 时,δ = 0 + 10 − 5 = +5。 每一次的绝对值都是 5,一次都不是 0。而它们的期望恰好是 0——这正是 V(s)=5 是正确值的意思。 所以 δ 的行为是:期望为零,方差不为零,而且那个方差直接来自环境的随机性,与学得好不好毫无关系。把 |δ| 当收敛判据,在这个例子里你会永远认为算法没收敛。 只有当环境是确定性的——每个状态的后继唯一——采样才等于期望,δ 才会真正趋于零。这也解释了为什么在确定性环境里调 TD 感觉特别顺手,而那个经验不能搬到随机环境。
57 / 69
∑tαt=∞,∑tαt2<∞
✓和发散才走得到任何地方✓平方和收敛才压得住噪声
δ 不归零,所以收敛必须靠 α 趋于 0。α=1/t 同时满足两条;常数 α 只满足第一条。
讲解
既然 δ 永远不归零,那 V 凭什么会停下来?靠步长。更新量是 α 乘以 δ;δ 停不下来,就让 α 趋于零。 这就是 Robbins–Monro 的两个条件。第一,步长的总和发散——否则你可能从初值出发走不到真值就把步长用光了。第二,步长的平方和收敛——这一条负责把噪声的累积影响压住。 α_t = 1/t 同时满足两条:调和级数发散,而平方和收敛。这也正是第六集里 α=1/N(s) 的那个设定。 常数 α 只满足第一条,所以 V 会一直抖,不会真正收敛到一点——它收敛到的是一个围绕真值的分布。这是第六集说的「指数加权移动平均」的另一面。而 α=1 是最极端的情形:完全丢弃旧估计,V(s) 直接等于这一次的样本目标。
58 / 69
✓E[δ] → 0成立✕δ → 0随机环境下不成立✕拿 |δ| 当判据永远显示没收敛
指名反驳:该监控的是 δ 的移动平均或 V 本身的变化量,不是单次 δ。
讲解
指名回去:归零的是 δ 的期望,不是 δ 本身。δ 比较的是一个期望和从它里面抽出的一个样本,这个差的方差来自环境,不来自学习。 确定性环境是唯一的例外:后继唯一,样本就等于期望,δ 才真的归零。 实践上的推论很直接:不要拿单次 δ 或 |δ| 判断收敛,那会让你永远看到「没收敛」。该监控的是 δ 的移动平均(它估计的是 E[δ]),或者 V 本身的变化量。 最后把 α=1 的危险接上:它让 V(s) 直接等于这一次的样本目标,把环境的全部噪声原样吃进估计里。在刚才那个例子上跑 α=1,V(s) 会在 0 和 10 之间永远来回跳——一次都不会停在 5。
59 / 69

知识点 8 · 总结

TD 误差不会趋于零 —— 归零的只有它的期望

核心结论

例:r=0、γ=1、后继各半概率、V(s′)=0 或 10,完全收敛时 V(s)=5。此时 每一次 |δ| 都是 5,而 E[δ]=0。

底层机制

δ 比较的是一个期望与从它抽出的一个样本;这个差的方差来自环境,与学得好不好无关。

常见误解

误解:拿 |δ| 当收敛判据(类比梯度范数)。监督学习的标签是确定的,TD 的目标是随机的。

与你的考试

收敛靠步长:Robbins–Monro(Σα=∞ 且 Σα²<∞,如 α=1/t)。常数 α 只满足第一条,V 会一直抖。

60 / 69

知识点 8 · 检验

TD(0) 已经完全收敛到 V^π。在一个随机环境里,单步 TD 误差 δ 会怎样?

知识点 10

9 · 批量设定:同一份数据,MC 与 TD 给出不同答案

61 / 69
8 条回合:A→0→B→0(×1),B→1(×6),B→0(×1)
B 访问 8 次,6 次得 1V(B)=0.75 两法一致
固定数据集,γ=1。V(B) 无争议。那 V(A) 等于多少?
讲解
最后一集换一个设定:数据是固定的,不能再去环境里收集了。这叫批量或离线设定,也是你在真实项目里最常遇到的处境——日志已经躺在那里。 数据集只有八条回合。第一条是 A 开始,得到奖励 0,转到 B,B 也得到 0,回合结束。另外七条都只经过 B:其中六条得到 1,一条得到 0。γ=1。 B 一共被访问八次,六次得到 1,所以 V(B) = 6/8 = 0.75。这一点两种方法完全一致,没有争议。 问题只有一个:V(A) 等于多少?
62 / 69
同一份数据该有唯一答案两个正确的算法顶多精度不同
背后是一个更深的假设:数据里有一个唯一的正确答案。而回答问题的是你对数据做的假设。
讲解
这个错误模型几乎是所有人的默认设定:同一份数据,两个正确的算法跑到收敛应该给出同一个答案,顶多精度不同。 它背后是一个更深的假设:数据里躺着一个唯一的正确答案,算法的工作只是把它找出来。 但数据本身不回答问题。回答问题的是你对数据做的假设。MC 和 TD 在这里做了两个不同的假设——而且两个假设都不荒谬——于是它们得到两个不同的答案。 接下来两镜分别算一遍。
63 / 69
批量 MC:arg⁡minV∑i(G(i)−V(s(i)))2
A 只被访问过一次那一次的回报是 0
批量 MC:V(A) = 0。它只相信实际发生过的回报,完全不用「A 会到 B」这条信息。
讲解
批量 MC 的目标是:找一个 V,使它对实际观测到的回报的平方误差最小。 A 只被访问过一次,那一次的回报是 0 加 0 等于 0。要让平方误差最小,V(A) 只能取那唯一一个观测值:V(A) = 0。 注意它完全没有使用「A 之后会转到 B,而 B 的值是 0.75」这条信息。MC 不自举,它只相信实际发生过的回报。 从 MC 的角度看这是无可指摘的:你只见过 A 一次,那一次的回报是 0,所以最符合观测的估计就是 0。
64 / 69
P^(B∣A)=1,R^(A)=0,R^(B)=0.75⟹V(A)=0+γV(B)
先估一个最大似然 MDP再在它上面做 DP
批量 TD:V(A) = 0.75。它相信从 A 一定会走到 B。
讲解
批量 TD 做的是另一件事:先用计数从数据里估出一个 MDP,再在这个估出来的 MDP 上做动态规划。这个估出来的模型叫最大似然 MDP,也叫确定性等价模型。 数一数:A 出现过一次,那一次转到了 B,即时奖励 0。所以估计出 P(B|A)=1,R(A)=0。B 出现八次,六次得 1,所以 R(B)=0.75。 在这个 MDP 上做 DP:V(A) = R(A) + γ·V(B) = 0 + 0.75 = 0.75。 从 TD 的角度看这同样无可指摘:我知道从 A 必然走到 B,也知道 B 值 0.75,那 A 当然值 0.75——至于那一次观测里 B 恰好给了 0,那只是运气不好,不该让它决定 A 的估值。
65 / 69
同一份数据,V(A)=0 还是 V(A)=0.75?
MC 的 V(A)TD 的 V(A)两者的 V(B)0.000.750.75
MC 给 0,TD 给 0.75。两者都收敛了,都没算错 —— 数据再多也不会让它们合并。
讲解
看什么:看最左边那根柱子:它的高度是零,而中间那根是 0.75。两根说的是同一个状态在同一份数据上的值。最右边 V(B) 两法一致,用来说明分歧不是因为哪一步算错了。 —— 并排放:同一个状态 A,同一份数据,批量 MC 给 0,批量 TD 给 0.75。V(B) 两者一致,所以分歧不是某一步算错了。 这不是精度差别。数据再多也不会让它们合并——只要数据集里 A 的样本仍然稀少而 B 的样本充足,这个分歧就一直在。 那么谁对?答案取决于一件关于世界而不是关于算法的事:如果这个环境真的是 Markov 的——从 A 出发的未来完全由「你在 A」决定——那么 TD 对:它正确地把 B 的八次观测借给了 A。如果不是 Markov 的——比如「经过 A 再到的 B」和「直接开始的 B」其实是不同的情境——那么 MC 对:它拒绝借用,只相信 A 自己的那一次观测。
66 / 69
✓批量 MC 问最贴合见过的回报✓批量 TD 问最可能的那个 MDP谁对取决于世界,不取决于算法
指名反驳:分歧不在算法,在假设。你的状态是不是真的充分统计量?
讲解
指名回去:两个算法都正确,只是在回答两个不同的问题。 批量 MC 回答的是:什么样的 V 最贴合我实际见过的回报?它不跨状态借用数据,因而不需要 Markov 性。 批量 TD 回答的是:如果世界真是 Markov 的,那么最可能的那个 MDP 会给出什么 V?它跨状态借用数据——把 B 的八次观测借给了只见过一次的 A——而这个借用只有在 Markov 性成立时才合法。 所以选择依据是一个关于你的问题的经验判断:你的状态表示是不是真的充分统计量。是,TD 的借用就是免费的信息增益,它会明显更高效;不是,那个借用就是凭空编出来的信息,而且它会让你的估计自信地错。 这也把第二集那句话落到了实处:MC 不需要 Markov 性,这是质上的差别,不是程度差别。 最后一句提醒,也是这一讲的结尾:以上所有收敛性结论都建立在表格表示上。一旦换成函数逼近,无模型的策略评估可能根本不收敛——不是收敛到错的值,是发散。那是第五讲和第六讲的主题。
67 / 69

知识点 9 · 总结

同一份数据,批量 MC 与批量 TD 收敛到不同的值函数

核心结论

八条回合下 V(B)=6/8=0.75 无争议;但 批量 MC 给 V(A)=0(只信 A 那唯一一次回报),批量 TD 给 V(A)=0.75(最大似然 MDP:A 必到 B)。

底层机制

MC 最小化对观测回报的均方误差;TD 求解最大似然 MDP 的 DP 解。TD 跨状态借数据,而借用只在 Markov 时合法。

常见误解

误解:「同一份数据,正确的算法该给同一答案」。数据不回答问题,假设才回答。

与你的考试

谁对是经验问题:状态是不是真的充分统计量。另:离开表格用函数逼近后,无模型方法可能根本不收敛。

68 / 69

知识点 9 · 检验

批量 TD 在 A/B 例上给出 V(A)=0.75,而批量 MC 给出 0。TD 凭什么敢用 0.75?

知识点 11

完

69 / 69
讲解
回头看这九集,承重的是三件事。 第一,采样与自举是两个独立的轴。DP 不采样、自举;MC 采样、不自举;TD 两样都做。TD 不是 MC 与 DP 之间的插值——第九集已经证明,在同一份数据上它收敛到一个和 MC 不同的答案。 第二,无偏不等于更好。MSE 是方差加偏差的平方,TD 每一个有限样本量下都有偏,但方差低得多,所以在数据有限时常常赢。讲座把这个分解口误成了「偏差与方差之和」,而那个式子会给出负的 MSE。 第三,批量 MC 与批量 TD 的分歧不是谁算错了。MC 最小化对观测回报的均方误差,TD 求解最大似然 MDP。哪个对,完全取决于世界是不是真的 Markov——而这是一个关于环境的经验问题,不是一个关于算法的数学问题。 下一讲从评估转到控制。一旦要改进策略而不只是评估它,V 就不够用了——你需要 Q,而要估 Q 就必须访问那些当前策略不会选的动作,于是探索成为不可回避的问题。