对应:Stanford CS234 Lecture 3(Policy Evaluation without a Model / Model-Free Policy Evaluation) 配套代码:
code/lecture03/预计阅读时间:4 小时(第一遍通读 1.5 小时,第二遍推导 + 跑代码 2.5 小时)
0. 本讲导航
0.1 本讲要回答的问题
不知道世界如何运转(没有 和 ),只能按某个策略与环境交互、收集经验。怎样评估这个策略有多好?
第 2 讲的策略评估写成 ——每一项都需要模型。现实中我们几乎从不知道模型:推荐系统不知道用户会怎么反应,机器人不知道地面的摩擦系数,医生不知道每个病人对药物的精确反应概率。我们手里只有数据:一条条”状态 → 动作 → 奖励 → 下一状态”的记录。
这一讲只做”评估”(给定策略算 ),不做”控制”(找最优策略)。原因是:评估是控制的基础——第 4 讲的无模型控制算法,本质上就是”本讲的评估方法 + 第 2 讲的策略改进”。
0.2 学完本讲,你应该能够
- 说出估计量的偏差、方差、均方误差、一致性的含义,并用它们比较不同的估计方法。
- 写出首次访问 / 每次访问蒙特卡洛策略评估算法,解释为什么前者无偏、后者有偏但一致。
- 写出增量式更新 ,解释常数 和 的区别。
- 写出 TD(0) 算法和 TD 误差 ,解释”自举”的含义。
- 从偏差–方差的角度比较 MC 与 TD,说明各自适用的场景。
- 解释批量 MC 与批量 TD 为什么收敛到不同答案,以及 TD 与确定性等价的关系。
- 陈述 Robbins–Monro 步长条件。
- 理解 n 步 TD 如何把 MC 和 TD(0) 统一起来。
- 说清楚马尔可夫性在 TD 中扮演的角色。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 1 讲:回报 、、蒙特卡洛估计 MRP 价值 | 第 2 节 | 必须 |
| 第 1 讲 04 代码:增量平均 | 第 2.3 节 | 看过即可 |
| 第 2 讲:贝尔曼期望方程、贝尔曼备份 | 第 3 节 | 必须 |
| 期望、方差: | 第 1.3、4 节 | 知道方差衡量”波动有多大” |
| 大数定律:独立同分布样本的平均值收敛到期望 | 第 2 节 | 知道结论即可 |
0.4 本讲地图
第1节 问题设定 + 如何评价一个"估计方法"(偏差、方差、一致性)
│
├──► 第2节 蒙特卡洛(MC):等回合结束,用真实回报取平均
│
├──► 第3节 时序差分(TD):走一步就更新,用估计值"接上"未来
│
第4节 MC vs TD:偏差与方差的权衡(实验数据)
│
第5节 批量设定:同样的数据,MC 与 TD 竟收敛到不同答案
│
第6节 确定性等价:先估模型再规划——TD 隐含地在做这件事
│
第7节 步长 α 与收敛条件
│
第8节 n 步 TD 与 TD(λ):连接 MC 与 TD 的桥梁
│
第9节 全景对比:DP / MC / TD / 确定性等价
1. 问题设定:从”规划”到”学习”
1.1 我们手里有什么?
智能体按照一个固定的策略 与环境交互,产生一条条轨迹(回合,episode):
我们的目标是用这些数据估计 。
这里有两个前提:
- 同策略(on-policy)评估:数据是由被评估的策略 自己产生的。(如果数据是由另一个策略产生的——比如用医院过去的治疗记录评估一个新的治疗方案——就叫异策略(off-policy)评估,需要重要性采样等额外技术,第 10 讲专门讨论。)
- 表格型(tabular):状态数有限且不多,可以为每个状态单独存一个估计值。(状态太多的情况在第 5 讲讨论。)
1.2 核心思想:用”采样”代替”期望”
回顾第 2 讲的两个关键公式:
两个式子里都有一个期望 ,计算期望需要知道概率分布(也就是模型)。但如果我们能从这个分布中采样,就可以用样本来近似期望。
- 用样本近似第一个式子 → 蒙特卡洛(MC):收集很多个 ,取平均。
- 用样本近似第二个式子 → 时序差分(TD):收集很多个 ,但其中 也不知道,只能用当前的估计代替。
这就是本讲的全部核心。剩下的内容都是在回答”这两种近似各有什么性质、该怎么选”。
1.3 如何评价一个”估计方法”?——统计学的四把尺子
我们要比较不同的估计方法,需要一些统计学的”尺子”。设要估计的真实值为 (比如 ),某个方法根据数据给出的估计为 。因为数据是随机的, 也是随机变量——换一批数据就会得到不同的 。
| 尺子 | 定义 | 直觉 |
|---|---|---|
| 偏差(bias) | 反复用不同数据估计很多次,平均下来是否”瞄准”了真实值? | |
| 方差(variance) | 换一批数据,估计值会”晃”多厉害? | |
| 均方误差(MSE) | 综合误差:离真实值平均有多远 | |
| 一致性(consistency) | 数据量 时,(依概率) | 数据足够多时,是否一定能得到正确答案? |
打靶的比喻:
低偏差、低方差 低偏差、高方差 高偏差、低方差 高偏差、高方差
┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐
│ ● │ │ ● ● │ │ │ │ ● │
│ ●◎● │ │ ◎ │ │ ◎ ●●│ │ ◎ ●│
│ ● │ │● ● │ │ ●●│ │ ● │
└───────┘ └───────┘ └───────┘ └───────┘
(◎ 是靶心 = 真实值,● 是每次的估计)
这个分解非常重要:它告诉我们,一个有一点偏差但方差很小的方法,总误差可能比一个无偏但方差很大的方法更小。这正是 TD 常常胜过 MC 的原因(第 4 节)。
除了这四把尺子,在 RL 中我们还关心:
- 数据效率:用同样多的数据,能估计得多准?
- 计算效率:每处理一条数据要花多少计算?
- 能否在线学习:是否必须等回合结束?
2. 蒙特卡洛策略评估(MC)
2.1 思路
价值的定义是回报的期望。那就:
- 按策略 跑很多个完整的回合;
- 对每个回合中出现的每个状态,算出从那里开始的实际回报 ;
- 每个状态的价值估计 = 它所有回报样本的平均值。
依据是大数定律:独立同分布样本的平均值会收敛到期望值。
第 1 讲我们已经这样估计过 MRP 的价值——当时是”从每个状态出发专门模拟”;这里是”用智能体自然产生的回合数据”,思路完全一样。
2.2 首次访问 vs 每次访问
一个状态可能在同一个回合中出现多次(比如火星车在 打滑了几次)。那么每次出现都算一个样本吗?
算法:首次访问 MC 策略评估(First-visit MC)
初始化:对所有 s,N(s) = 0,G_sum(s) = 0
对每个回合 i = 1, 2, ...:
按 π 生成回合 s_0, a_0, r_0, s_1, ..., s_T
计算每个时刻的回报 G_t = r_t + γ r_{t+1} + ... (从后往前算)
对回合中每个状态 s,找到它**第一次**出现的时刻 t:
N(s) ← N(s) + 1
G_sum(s) ← G_sum(s) + G_t
V(s) ← G_sum(s) / N(s)
每次访问 MC(Every-visit MC):把”第一次出现的时刻”改成”每一次出现的时刻”,其余不变。
两者的性质:
| 首次访问 MC | 每次访问 MC | |
|---|---|---|
| 每个回合给一个状态贡献的样本数 | 最多 1 个 | 出现几次就几个 |
| 偏差 | 无偏 | 有偏(样本有限时) |
| 一致性 | 一致 | 一致 |
| 实际表现 | — | 因为样本更多,MSE 常常更小 |
为什么首次访问是无偏的? 每个回合对每个状态最多贡献一个回报样本,不同回合之间相互独立,所以这些样本是独立同分布的,每个的期望都恰好是 。独立同分布样本的平均值是期望的无偏估计。
为什么每次访问是有偏的? 同一回合中对同一状态的多次访问,产生的回报不独立——后一次的回报是前一次回报的”尾巴”。看一个极端的例子:
单状态例子:只有一个状态,每步奖励 +1,每步以概率 0.5 继续、0.5 结束,。真实价值 。
一个长度为 的回合,在时刻 各访问一次该状态,回报分别为 。
- 首次访问只用第一个:估计 , ✓ 无偏。
- 每次访问取它们的平均:估计 , ✗ 有偏。
代码实验(重复 20000 次独立实验取平均):
| 每次实验用的回合数 | 首次访问估计的均值 | 每次访问估计的均值 |
|---|---|---|
| 1 | 2.006 | 1.503 |
| 10 | 2.002 | 1.909 |
| 100 | 2.001 | 1.991 |
首次访问始终无偏;每次访问的偏差随回合数增加而消失(一致性)。
代码对应:
01_monte_carlo_evaluation.py的first_visit_mc、every_visit_mc与演示 3。
2.3 增量式 MC
存下所有回报再求平均,内存会越用越多。回忆第 1 讲 04 代码的增量平均公式,每来一个新样本 :
结果与”存下全部再平均”完全相同,但只需存 和 。
更一般地,把 换成一个步长(学习率) :
请牢记这个形式:“新估计 = 旧估计 + 步长 × (目标 − 旧估计)“。括号里是”实际得到的”减去”原来预期的”,一种”惊讶程度”。本讲的 TD、第 4 讲的 SARSA 和 Q-learning、第 5 讲的 DQN,全部是这个形式,区别只在于”目标”是什么。
常数 vs :
| 常数 | ||
|---|---|---|
| 含义 | 所有样本权重相同(精确平均) | 越新的样本权重越大,旧样本影响按 指数衰减 |
| 收敛 | 收敛到真实值 | 在真实值附近持续抖动 |
| 环境变化时 | 反应越来越迟钝 | 能跟上变化(“遗忘”旧数据) |
代码实验(2000 个回合后): 时 在最后 500 个回合中的波动(标准差)只有 0.002; 时高达 0.17。
为什么后面的算法常用常数 ? 因为在控制问题中,策略一直在变(第 4 讲),被评估的对象本身在变化,这时”遗忘旧数据”反而是好事。
2.4 手算例子
火星车(第 1 讲),策略”一直向左”,,在 或 执行动作后回合结束。观察到一条轨迹:
各时刻回报(,从后往前):,,,。
- 首次访问 MC:,,,其他状态没有数据。
- 每次访问 MC: 被访问两次,回报都是 1,平均仍是 1。
一条轨迹就把终点的 +1 “一路传回”了 。记住这个结果,3.4 节会和 TD 对比。
2.5 MC 的特点总结
优点:
- 不需要模型:只需要能与环境交互。
- 首次访问 MC 无偏,且一致。
- 不依赖马尔可夫性:它直接平均真实回报,从不假设”下一状态总结了未来的一切”。即使状态表示不是马尔可夫的,MC 的估计仍然有意义。
- 概念简单。
缺点:
- 方差大:一个回报 是整条轨迹上所有随机性(每一步的动作选择、每一次状态转移、每一个奖励)的累加。轨迹越长,方差越大。
- 必须等回合结束才能计算回报并更新。回合很长时学习很慢。
- 只能用于回合制(episodic)任务:永不结束的任务(持续型任务)无法计算回报。
3. 时序差分学习(TD)
3.1 一个生活中的例子:预测到家时间
你下班开车回家,出发时估计 30 分钟到家。
- 5 分钟后发现在下雨,路况变差,你把预计的剩余时间调成 35 分钟,即总时间 40 分钟。
- 20 分钟后下了高速,比预想的顺利,你估计还要 10 分钟,总时间 30 分钟。
- 最终 32 分钟到家。
MC 的做法:等到家了,才用”实际 32 分钟”去修正出发时的预测。途中的所有信息都要等到最后才用上。
TD 的做法:每到一个”路口”就修正上一个时刻的预测。5 分钟时发现下雨,立刻就知道”出发时的 30 分钟预测偏乐观了”,不用等到家。依据是:“已经过去的 5 分钟”(真实观察)+ “从现在起的预计剩余时间 35 分钟”(新的估计)。
TD 的关键洞察:你不需要知道最终结果,就能从”前后两次预测的差异”中学习。一次预测和紧接着的下一次预测之间的差异,本身就包含了信息。
3.2 TD(0) 算法
TD 的更新目标来自贝尔曼方程:。用一个样本代替期望,用当前估计 代替未知的 :
方括号里的量叫 TD 误差:
它衡量”走了一步之后的新预测”与”走之前的旧预测”之间的差异。
算法:TD(0) 策略评估
初始化:V(s) 任意(例如 0),终止状态 V(终止) = 0
对每个回合:
s ← 初始状态
直到回合结束:
按 π 选动作 a,执行,观察奖励 r 和下一状态 s'
V(s) ← V(s) + α [ r + γ V(s') - V(s) ] (如果 s' 是终止状态,V(s') = 0)
s ← s'
注意终止状态:回合结束后没有任何奖励,所以 ,TD 目标就是 。忘记处理终止状态是 TD 代码中最常见的 bug 之一——代码 02 的演示 5 故意犯了这个错,结果所有状态的价值都被整体抬高了。
3.3 自举(bootstrapping)
TD 用自己的估计 去更新自己的估计 。这叫自举(bootstrap,字面意思是”拽着自己的鞋带把自己提起来”)。
乍一听不太靠谱:用错误的估计去更新估计,不是错上加错吗?但它确实能收敛到正确答案,直觉是:TD 目标里有一部分是真实的(奖励 是真实观察到的,状态转移 也是真实发生的)。每次更新都注入一点”真实信息”,这些真实信息通过反复的自举逐步传播开来,最终把估计”拉”向正确答案。
三种方法对比”目标”中用了什么:
| 方法 | 更新目标 | 采样?(用样本代替期望) | 自举?(用估计代替真值) |
|---|---|---|---|
| 动态规划(第 2 讲) | 否(精确期望) | 是 | |
| 蒙特卡洛 | 是 | 否(完整真实回报) | |
| TD(0) | 是 | 是 |
TD 结合了 MC 的”采样”和 DP 的”自举”。
3.4 手算例子:与 MC 对比
同一条火星车轨迹:,初始 ,,。按时间顺序更新:
| 转移 | TD 目标 | TD 误差 | 更新后 |
|---|---|---|---|
| , | 0 | ||
| , | 0 | ||
| , | 0 | ||
| 结束, | +1 |
TD 学完这条轨迹:;而 MC 学完同一条轨迹:。
TD 只更新了 !因为更新 、 时,它们的下一状态的估计还是 0。TD 每经历一遍,奖励信息只往回传一步。把同一条轨迹再学一遍, 变为 1;第三遍, 变为 1。
这揭示了 TD 的一个特点:信息传播依赖于数据的顺序和重复。这也是为什么第 5 讲的 DQN 要用”经验回放”反复利用旧数据。
3.5 逐步观察:TD 误差何时非零
随机游走(5 状态,从 C 出发,右端 +1),初始 全为 0.5,。一条回合 C→B→C→D→E→D→C→B→A→左端出去:
- 前 8 步:奖励都是 0,下一状态的估计也都是 0.5,所以 ——“没有惊讶”,就没有学习。
- 最后一步 A→左端:, 从 0.5 降到 0.45。
TD 只在”实际发生的”和”预期的”不一致时才学习。这个性质和神经科学中多巴胺神经元的”奖励预测误差”信号惊人地相似——这是 TD 学习在神经科学中影响深远的原因之一。
3.6 TD 的特点总结
优点:
- 不需要模型。
- 在线学习:每走一步就能更新,不用等回合结束。
- 适用于持续型任务:永不结束的任务也能学。代码 02 演示 4 在第 1 讲的火星车链(永不终止)上,只看一条 20 万步的 数据流,学出了与解析解接近的价值(使用递减步长时最大误差 0.41)。
- 方差低:TD 目标只包含一步的随机性。
- 在实践中通常比 MC 学得更快(第 4 节)。
缺点:
- 有偏:TD 目标中的 是估计值,不是真值。
- 对初始值敏感:初始估计会影响学习过程。
- 依赖马尔可夫性:TD 假设 能概括”从 开始的未来”,这只在状态是马尔可夫的时候才成立(第 10 节)。
- 与函数逼近结合时可能不稳定(第 5 讲)。
4. MC vs TD:偏差与方差的权衡
4.1 直接测量两种目标
在 5 状态随机游走中,从状态 C 出发各采样 20000 次,测量两种更新目标(代码 03 实验 1)。真实价值 。
(a) TD 使用真实价值时:
| 目标 | 可能的取值 | 均值 | 偏差 | 方差 |
|---|---|---|---|---|
| MC: | 0 或 1(最终是否从右边出去) | 0.505 | ≈ 0 | 0.250 |
| TD: | 或 | 0.500 | ≈ 0 | 0.028 |
TD 目标的方差小了约 9 倍!原因很直观:MC 目标包含了”之后所有步”的随机性,TD 目标只包含”下一步往左还是往右”这一步的随机性。
(b) TD 使用不准确的估计时(学习过程中的真实情况):若 ,TD 目标的均值为 0.549(偏差 +0.049)。估计不准,TD 目标就有偏差。MC 目标永远无偏,因为它不依赖任何估计。
(c) 在更长的 19 状态随机游走上:MC 目标方差仍是 0.25(回报还是只取两种值),而 TD 目标方差只有 0.0025——相差 100 倍。相邻状态的价值更接近,一步之内的不确定性更小。可以这样理解:TD 把整条轨迹的不确定性拆成了很多小份,每次更新只承担一小份。
4.2 学习曲线
复现 Sutton & Barto 图 6.2:5 状态随机游走,初始 ,100 次独立运行的平均 RMS 误差(代码 03 实验 2):
| 方法 | 第 1 回合 | 第 10 回合 | 第 25 回合 | 第 50 回合 | 第 75 回合 | 第 100 回合 |
|---|---|---|---|---|---|---|
| MC | 0.233 | 0.211 | 0.184 | 0.144 | 0.116 | 0.094 |
| MC | 0.231 | 0.196 | 0.158 | 0.112 | 0.087 | 0.077 |
| MC | 0.230 | 0.187 | 0.144 | 0.107 | 0.089 | 0.088 |
| MC | 0.229 | 0.182 | 0.139 | 0.112 | 0.099 | 0.101 |
| TD | 0.229 | 0.175 | 0.111 | 0.055 | 0.039 | 0.038 |
| TD | 0.222 | 0.131 | 0.062 | 0.051 | 0.057 | 0.059 |
| TD | 0.216 | 0.101 | 0.065 | 0.069 | 0.073 | 0.074 |
观察:
- TD 明显比 MC 学得快:100 个回合后,最好的 TD(0.038)误差约为最好的 MC(0.077)的一半。
- 步长越大,前期下降越快,但后期”停”在更高的误差水平——大步长意味着每次都被单个样本拉得很远,噪声更大。TD 在 、 时后期甚至略有回升。
- MC 的 必须很小才稳定,因为它的目标方差大。
4.3 那 MC 就没用了吗?
不是。TD 胜出的前提是状态是马尔可夫的且价值估计能表示准确。在以下情况 MC 可能更好:
- 状态不是马尔可夫的(部分可观测):TD 的自举基于错误的假设,偏差不会消失;MC 不受影响。
- 使用函数逼近时:TD 与函数逼近结合可能不稳定甚至发散(第 5 讲),MC 更稳健。
- 需要无偏估计时:比如要给出有统计保证的策略评估结果。
两者之间还有一整片”中间地带”——n 步 TD(第 8 节)。
5. 批量设定:同样的数据,不同的答案
5.1 什么是批量学习?
前面都是”在线”学习:来一条数据用一次,然后扔掉。但如果数据很贵(每条都是一个真实病人的治疗记录),我们会希望把一批固定的数据反复利用,直到榨干其中的信息。
批量(batch)学习:给定一个固定的数据集( 个回合),反复在上面运行 MC 或 TD(每一轮扫过全部数据,累积所有更新量后一次性应用),直到估计不再变化。
在一批固定数据上,只要 足够小,批量 MC 和批量 TD 都会收敛——但收敛到不同的值。
5.2 AB 例子
Sutton & Barto 例 6.4。两个状态 A、B,,8 个回合的数据:
A --0--> B --0--> 结束 (1 次)
B --1--> 结束 (6 次)
B --0--> 结束 (1 次)
应该是多少?B 一共出现 8 次,6 次获得 1,所以 。两种方法都同意。
应该是多少?
| 方法 | 理由 | |
|---|---|---|
| 批量 MC | 0 | A 只出现过一次,那一次的回报是 ,平均就是 0 |
| 批量 TD | 0.75 | 数据显示 A 总是(100%)转移到 B,而 B 的价值是 0.75,所以 A 的价值也应该是 0.75 |
哪个对? 如果过程是马尔可夫的——A 之后发生什么只取决于到了 B——那么唯一那一次 “B 之后得到 0” 只是运气不好。TD 的答案更合理,对未来的数据预测得更好。
MC 的答案在训练数据上误差最小(它就是样本平均),但它忽略了”A 和 B 之间的结构关系”。
5.3 两者分别收敛到什么?
批量 MC 收敛到:使训练数据上”估计值与观察到的回报”之间均方误差最小的解:
批量 TD 收敛到:确定性等价估计(下一节详细讲)——先从数据中估计出最可能的 MRP 模型,再精确求解这个模型的价值。
代码验证:
04_batch_and_certainty_equivalence.py实验 1、2 在 AB 数据上真的迭代运行了批量 TD(389 次扫描收敛),结果与确定性等价的解析解的差距只有 量级。
5.4 在随机游走上的批量学习
每来一个新回合,就在”迄今为止的全部数据”上重新求批量解(代码 04 实验 3,100 次运行平均 RMS 误差):
| 回合数 | 1 | 5 | 10 | 25 | 50 | 100 |
|---|---|---|---|---|---|---|
| 批量 MC | 0.401 | 0.248 | 0.189 | 0.121 | 0.084 | 0.056 |
| 批量 TD | 0.401 | 0.191 | 0.148 | 0.088 | 0.056 | 0.042 |
在每一个数据量下(只有 1 个回合时两者相同),批量 TD 都更准。这说明 TD 的优势不只是”更新得早”,更在于它更好地利用了马尔可夫结构,从同样的数据中榨取出了更多信息。
6. 确定性等价:先估模型,再规划
6.1 方法
**确定性等价(certainty equivalence)**是一种”基于模型”的评估方法:
- 估计模型(最大似然估计 = 数数,第 1 讲 7.7 节):
- 把估计当作真相(这就是”确定性等价”这个名字的含义:假装我们对模型的估计是确定的);
- 精确求解这个估计的 MRP:(第 1 讲的解析解,或第 2 讲的迭代法)。
在 AB 例子中:,,,。所以 ,。
6.2 优缺点
| 优点 | 缺点 |
|---|---|
| 数据效率极高:每条转移都贡献给模型,模型再把信息传播到所有相关状态 | 计算量大:每次数据更新后重新求解, |
| 可以复用第 1、2 讲的所有规划方法 | 存储大:模型需要 个数 |
| 模型本身有用:可以用来做”假设分析”、评估其他策略 | 需要马尔可夫假设;模型错误会被规划放大 |
TD 可以看作确定性等价的”廉价近似”:它不显式存储模型,但收敛点相同,每步计算量只有 。
在数据极其昂贵的场景(医疗、教育——正是 CS234 主讲人研究的领域),确定性等价这类基于模型的方法常常是首选。第 13、15 讲会再回到这个话题。
7. 步长与收敛:Robbins–Monro 条件
7.1 步长该怎么选?
前面的实验已经显示:
- 常数 :前期学得快,但后期在真实值附近持续抖动,不会精确收敛;
- :精确收敛,但后期几乎”学不动”。
什么样的步长序列能保证收敛?
7.2 Robbins–Monro 条件
设第 次更新某个状态时用步长 。如果
并且每个状态都被访问无穷多次,那么表格型 MC 和 TD(0) 都以概率 1 收敛到 。
直觉:
- 第一个条件(步长之和无穷大):步子总共要能”走得足够远”,否则如果初始值离真实值很远,可能永远走不到。
- 第二个条件(步长平方和有限):步子要越来越小,最终”噪声”的累积是有限的,估计才能稳定下来。
| 步长 | 满足? | ||
|---|---|---|---|
| (调和级数) | ✓ | ||
| (因为 ) | ✓ | ||
| ✗(步子缩得太快) | |||
| (常数) | ✗(噪声不会消失) |
一般地, 在 时满足条件。
代码对应:代码 02 演示 4 比较了 、 和 :递减步长的最大误差(0.41)远小于两种常数步长(2.62 和 1.72)。
实践中:大家常常使用常数 (或者缓慢衰减的 ),因为控制问题中目标本身在变,而且我们通常只需要”足够好”的估计,不需要精确收敛。
8. n 步 TD 与 TD(λ):连接 MC 与 TD 的桥梁
8.1 n 步回报
TD(0) 看 1 步真实奖励再用估计接上;MC 看完整条轨迹。为什么非得二选一?
n 步回报:看 步真实奖励,再用估计值接上:
| 回报 | 对应方法 | |
|---|---|---|
| 1 | TD(0) | |
| 2 | 2 步 TD | |
| (直到结束) | MC |
n 步 TD 的更新:。
越大,越依赖真实奖励(偏差小、方差大); 越小,越依赖估计(偏差大、方差小)。
8.2 实验:中间的 n 最好
复现 Sutton & Barto 图 7.2:19 状态随机游走(左端 −1、右端 +1),前 10 个回合的平均 RMS 误差(50 次运行平均,代码 05):
| \ | 0.05 | 0.1 | 0.2 | 0.4 | 0.6 | 0.8 | 1.0 | 最好 |
|---|---|---|---|---|---|---|---|---|
| 1(TD(0)) | 0.526 | 0.506 | 0.471 | 0.413 | 0.368 | 0.347 | 0.389 | 0.347 |
| 2 | 0.506 | 0.470 | 0.406 | 0.311 | 0.279 | 0.321 | 0.442 | 0.279 |
| 4 | 0.473 | 0.412 | 0.321 | 0.265 | 0.311 | 0.391 | 0.515 | 0.265 |
| 8 | 0.427 | 0.347 | 0.279 | 0.320 | 0.396 | 0.476 | 0.579 | 0.279 |
| 16 | 0.386 | 0.324 | 0.330 | 0.422 | 0.504 | 0.576 | 0.653 | 0.324 |
| ∞(MC) | 0.496 | 0.547 | 0.623 | 0.701 | 0.743 | 0.772 | 0.797 | 0.496 |
观察:
- 最好,两个极端(TD(0) 和 MC)都不是最优的:TD(0) 每个回合只把信息传回一步,太慢;MC 方差太大。
- 越大,最佳的 越小:方差越大,步子就得越小心。
- 过大时所有方法都变差, 大的尤其严重。
8.3 TD(λ):把所有 n 步回报加权平均
与其挑一个 ,不如把所有 步回报加权平均,权重按 几何衰减:
- :只剩 ,就是 TD(0);
- :就是 MC。
( 是归一化系数,保证权重之和 。)
以 为目标的方法叫 TD(λ)。它可以用一种叫”资格迹(eligibility traces)“的机制高效地在线实现,不需要真的等到回合结束。资格迹的细节超出本讲范围(见 Sutton & Barto 第 12 章),但这个”在 TD 和 MC 之间用一个参数平滑插值”的思想很重要:第 7 讲的**广义优势估计(GAE)**用的正是同样的想法。
9. 全景对比
9.1 四种方法的”备份图”
动态规划(DP) 蒙特卡洛(MC) TD(0) 穷举搜索
s s s s
╱ │ ╲ │ │ ╱ │ ╲
a a a a a a a a
╱│╲ ╱│╲ ╱│╲ │ │ ╱│╲ ╱│╲ ╱│╲
s' s' s' ... s' s'(用 V(s')) ...展开所有分支...
(用 V(s')) │ 直到回合结束
a
│
s''
│
...
│
终止
宽度:全部可能 宽度:1 条采样 宽度:1 条采样 宽度:全部可能
深度:1 步 + 自举 深度:直到结束 深度:1 步 + 自举 深度:直到结束
- 横向:是对所有可能性求期望(需要模型),还是只看一个采样(不需要模型)?
- 纵向:是只看一步然后自举,还是一直看到回合结束?
9.2 总结对比表
| DP(第 2 讲) | MC | TD(0) | 确定性等价 | |
|---|---|---|---|---|
| 需要模型? | 需要 | 不需要 | 不需要 | 不需要(从数据估计) |
| 采样? | 否 | 是 | 是 | 用数据估计模型 |
| 自举? | 是 | 否 | 是 | 是(在估计的模型上) |
| 需要回合结束? | 否 | 需要 | 否 | 否 |
| 依赖马尔可夫性? | 是 | 否 | 是 | 是 |
| 偏差 | —(精确) | 无偏(首次访问) | 有偏 | 有偏 |
| 方差 | — | 高 | 低 | 低 |
| 每步计算量 | 每轮 | 每步(回合结束时) | 每步 | 每次求解 |
| 数据效率 | — | 低 | 中 | 高 |
10. 马尔可夫性的角色
本讲多次提到”TD 依赖马尔可夫性,MC 不依赖”。现在把这件事讲透。
TD 的目标 隐含了一个假设: 能完整概括”从 开始的未来”,不管你是怎么到达 的。这正是马尔可夫性。
如果状态不是马尔可夫的,会发生什么?回忆第 1 讲练习 7 的走廊例子:观测只有”是否在墙边”。从左墙边出发往右走,和从右墙边出发往左走,下一步都观测到”不在墙边”——但它们的未来完全不同。此时”不在墙边”这个状态的价值取决于你从哪里来,一个数 无法同时代表两种情况。TD 用这个”平均化”的错误值去自举,偏差会持续存在,即使数据无穷多也不会消失。
MC 则不同:它平均的是真实回报,只要数据是从真实过程中采样的,它估计的就是”在当前的状态表示下,从这个观测出发的平均回报”——这个量在非马尔可夫情况下仍然有明确的意义。
实践启示:
- 状态表示接近马尔可夫时,优先用 TD(学得快、方差小)。
- 怀疑状态表示丢失了重要信息时(部分可观测),MC 或 较大的 步 TD 更稳健。
- 这也是为什么设计好的状态表示如此重要(第 1 讲 3.5 节)。
11. 本讲总结
11.1 核心概念清单
- 无模型策略评估:只用按策略 收集的数据估计 ;核心思想是用采样代替期望。
- 估计量的尺子:偏差、方差、、一致性。
- MC:用真实回报 取平均。首次访问无偏;每次访问有偏但一致。方差大,必须等回合结束,不依赖马尔可夫性。
- 增量更新 :几乎所有 RL 算法的共同形式,区别只在”目标”。
- TD(0):目标为 ;TD 误差 ;采样 + 自举;方差小、有偏、在线、适用于持续型任务、依赖马尔可夫性。
- 偏差–方差权衡:TD 通常学得更快,因为它的目标方差小得多。
- 批量设定:批量 MC 收敛到样本平均,批量 TD 收敛到确定性等价解(最大似然模型的精确价值)。
- 确定性等价:数据效率最高,但计算和存储代价大。
- Robbins–Monro 条件:,。
- n 步 TD / TD(λ):在 TD(0) 与 MC 之间插值,中间的选择往往最好。
11.2 公式速查表
| 名称 | 公式 |
|---|---|
| 回报 | |
| MSE 分解 | |
| 增量平均 | |
| 常数步长 MC | |
| TD 误差 | |
| TD(0) 更新 | |
| n 步回报 | |
| λ-回报 | |
| 确定性等价 | , |
| Robbins–Monro | , |
11.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 无模型 | Model-free | 策略评估 | Policy evaluation |
| 同策略 / 异策略 | On-policy / Off-policy | 回合 / 回合制任务 | Episode / Episodic task |
| 持续型任务 | Continuing task | 估计量 | Estimator |
| 偏差 | Bias | 方差 | Variance |
| 均方误差 | Mean squared error (MSE) | 一致性 | Consistency |
| 蒙特卡洛 | Monte Carlo (MC) | 首次访问 / 每次访问 | First-visit / Every-visit |
| 增量更新 | Incremental update | 步长 / 学习率 | Step size / Learning rate |
| 时序差分 | Temporal difference (TD) | TD 误差 | TD error |
| TD 目标 | TD target | 自举 | Bootstrapping |
| 批量学习 | Batch learning | 确定性等价 | Certainty equivalence |
| 最大似然估计 | Maximum likelihood estimate (MLE) | 均方根误差 | Root mean squared error (RMSE) |
| n 步 TD | n-step TD | λ-回报 | λ-return |
| 资格迹 | Eligibility traces | Robbins–Monro 条件 | Robbins–Monro conditions |
| 备份图 | Backup diagram | 奖励预测误差 | Reward prediction error |
12. 练习题
练习 1(概念):下面每种情况更适合 MC 还是 TD?说明理由。 (a) 一个每局要下几百步的棋类游戏,只在最后有输赢奖励;(b) 一个永不停止的数据中心温控系统;(c) 状态只包含部分传感器读数、明显不满足马尔可夫性的机器人任务;(d) 只有 20 条非常昂贵的病人治疗记录。
参考答案
(a) TD 更合适:回合很长,MC 要等几百步才能更新一次,且回报方差极大。(实际上 TD-Gammon 就是用 TD 学会双陆棋的。) (b) TD:持续型任务,没有回合结束,MC 无法直接使用。 (c) MC(或 较大的 步 TD)更稳健:TD 的自举依赖马尔可夫性,非马尔可夫时偏差不会消失。 (d) 确定性等价或批量 TD:数据极少时应当把数据”榨干”,利用马尔可夫结构的方法数据效率更高。
练习 2(手算 MC):,一条轨迹为 。分别用首次访问和每次访问 MC 计算 。
参考答案
从后往前:,,,。 出现在 和 。
- 首次访问:。
- 每次访问:。
练习 3(手算 TD):同上一题的轨迹,初始 ,,,按时间顺序做 TD(0) 更新,写出每一步后的 。
参考答案
- ,:,。
- ,:,。
- ,:,。
- 结束,:,。
最终 ,,。注意 仍是 0——与 MC 的 5.445 差很多,TD 需要更多数据才能把后面的奖励传回来。
练习 4(偏差):证明:若 TD 目标中使用的是真实价值 ,即目标为 ,那么它是 的无偏估计。为什么实际的 TD 是有偏的?
参考答案
,这正是贝尔曼期望方程,所以无偏。实际中我们用的是估计 而不是 ,,只要估计不准,这一项一般不为 0。
练习 5(批量):在 AB 例子中,如果数据再多一个回合 “A —0—> 结束”(A 直接结束),批量 MC 和批量 TD 给出的 分别是多少?
参考答案
批量 MC:A 出现两次,回报都是 0,。 批量 TD(确定性等价):,,, 不变。所以 。
练习 6(步长):下列步长序列是否满足 Robbins–Monro 条件?(a) ;(b) ;(c) 。
参考答案
(a) 满足:本质上是 的平移缩放,和发散,平方和收敛。它比 下降得慢,前期步子更大,实践中常用这种形式。 (b) 不满足: 发散,即 。( 恰好在边界上,不满足 。) (c) 不满足:,步子缩得太快,可能停在离真实值很远的地方。
练习 7(n 步回报)★:运行 05_n_step_td.py,把演示 2 中的”前 10 个回合”改成”前 50 个回合”。最佳的 会如何变化?为什么?
提示
随着数据增加,价值估计越来越准,自举带来的偏差越来越小,此时”方差小”的优势更突出,最佳的 会向 TD(0) 方向移动。修改方法:experiment(ns, alphas, n_episodes=50)。
参考结果(30 次运行平均):最佳的 从 4 变成了 2(误差 0.193), 之间的差距明显缩小(0.193~0.211),而 MC(0.431)仍然远远落后。
练习 8(思考题):TD 学习只在 时才更新。在随机游走中,如果把所有状态的初始值都设为真实值,TD 还会更新吗? 的期望是多少?
参考答案
会更新。即使 ,单次采样的 通常不为 0(比如从 C 走到 B:),但它的期望为 0(由贝尔曼方程)。所以估计会在真实值附近随机抖动(常数 时),平均来说不会偏离。这也说明:常数步长的 TD 即使从正确答案出发,也会因为噪声而”离开”一点点——这就是 7 节中步长要逐渐减小才能精确收敛的原因。
13. 延伸阅读
- Sutton & Barto,Reinforcement Learning: An Introduction(第 2 版):第 5 章(蒙特卡洛方法)、第 6 章(时序差分学习,本讲的随机游走和 AB 例子都来自这里)、第 7 章(n 步自举)、第 12 章(资格迹)。
- CS234 Spring 2024 Lecture 3 录像与课件。
- Sutton (1988),Learning to Predict by the Methods of Temporal Differences:TD 学习的原始论文,可读性很好。
- Schultz, Dayan & Montague (1997),A Neural Substrate of Prediction and Reward:多巴胺神经元与 TD 误差的经典联系。
- Singh & Sutton (1996),Reinforcement Learning with Replacing Eligibility Traces:包含首次访问 / 每次访问 MC 偏差的分析。
14. 下一讲预告
本讲只解决了”评估”:给定策略,算出它有多好。下一讲我们要找到更好的策略——无模型控制。你会看到:
- 为什么无模型控制要学 而不是 (第 2 讲 5.4 节埋下的伏笔);
- 探索问题重新出现:只按当前最好的策略行动,就永远不会发现更好的选择。-贪心与 GLIE;
- SARSA(同策略,本讲 TD 的直接推广)与 Q-learning(异策略,“不知道模型时的价值迭代”);
- 悬崖行走问题:为什么 SARSA 学到的路线更”安全”,Q-learning 学到的路线更”大胆”;
- 最大化偏差与 Double Q-learning。
下一讲之前,建议你:跑通 code/lecture03/ 下的 5 个脚本,完成练习 2、3、5,并思考练习 8。