第 3 讲:无模型策略评估——蒙特卡洛与时序差分

Reinforcement Learning · Lecture 03。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应:Stanford CS234 Lecture 3(Policy Evaluation without a Model / Model-Free Policy Evaluation) 配套代码:code/lecture03/ 预计阅读时间:4 小时(第一遍通读 1.5 小时,第二遍推导 + 跑代码 2.5 小时)


0. 本讲导航

0.1 本讲要回答的问题

不知道世界如何运转(没有 PP 和 RR),只能按某个策略与环境交互、收集经验。怎样评估这个策略有多好?

第 2 讲的策略评估写成 Vπ=Rπ+γPπVπV^\pi = R^\pi + \gamma P^\pi V^\pi——每一项都需要模型。现实中我们几乎从不知道模型:推荐系统不知道用户会怎么反应,机器人不知道地面的摩擦系数,医生不知道每个病人对药物的精确反应概率。我们手里只有数据:一条条”状态 → 动作 → 奖励 → 下一状态”的记录。

这一讲只做”评估”(给定策略算 VπV^\pi),不做”控制”(找最优策略)。原因是:评估是控制的基础——第 4 讲的无模型控制算法,本质上就是”本讲的评估方法 + 第 2 讲的策略改进”。

0.2 学完本讲,你应该能够

  1. 说出估计量的偏差、方差、均方误差、一致性的含义,并用它们比较不同的估计方法。
  2. 写出首次访问 / 每次访问蒙特卡洛策略评估算法,解释为什么前者无偏、后者有偏但一致。
  3. 写出增量式更新 V←V+α(目标−V)V \leftarrow V + \alpha(\text{目标} - V),解释常数 α\alpha 和 1/N1/N 的区别。
  4. 写出 TD(0) 算法和 TD 误差 δt\delta_t,解释”自举”的含义。
  5. 从偏差–方差的角度比较 MC 与 TD,说明各自适用的场景。
  6. 解释批量 MC 与批量 TD 为什么收敛到不同答案,以及 TD 与确定性等价的关系。
  7. 陈述 Robbins–Monro 步长条件。
  8. 理解 n 步 TD 如何把 MC 和 TD(0) 统一起来。
  9. 说清楚马尔可夫性在 TD 中扮演的角色。

0.3 先修知识

知识点用在哪里最低要求
第 1 讲:回报 GtG_t、Gt=rt+γGt+1G_t = r_t + \gamma G_{t+1}、蒙特卡洛估计 MRP 价值第 2 节必须
第 1 讲 04 代码:增量平均 xˉn=xˉn−1+1n(xn−xˉn−1)\bar x_n = \bar x_{n-1} + \frac{1}{n}(x_n - \bar x_{n-1})第 2.3 节看过即可
第 2 讲:贝尔曼期望方程、贝尔曼备份第 3 节必须
期望、方差:Var[X]=E[(X−EX)2]\mathrm{Var}[X] = \mathbb{E}[(X - \mathbb{E}X)^2]第 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 我们手里有什么?

智能体按照一个固定的策略 π\pi 与环境交互,产生一条条轨迹(回合,episode):

s0,a0,r0,  s1,a1,r1,  s2,a2,r2,  …,  sT  (终止)s_0, a_0, r_0,\; s_1, a_1, r_1,\; s_2, a_2, r_2,\; \dots,\; s_T \;(\text{终止})

我们的目标是用这些数据估计 Vπ(s)V^\pi(s)。

这里有两个前提:

  • 同策略(on-policy)评估:数据是由被评估的策略 π\pi 自己产生的。(如果数据是由另一个策略产生的——比如用医院过去的治疗记录评估一个新的治疗方案——就叫异策略(off-policy)评估,需要重要性采样等额外技术,第 10 讲专门讨论。)
  • 表格型(tabular):状态数有限且不多,可以为每个状态单独存一个估计值。(状态太多的情况在第 5 讲讨论。)

1.2 核心思想:用”采样”代替”期望”

回顾第 2 讲的两个关键公式:

Vπ(s)=Eπ[ Gt∣st=s ](定义)V^\pi(s) = \mathbb{E}_\pi[\,G_t \mid s_t = s\,] \qquad\text{(定义)} Vπ(s)=Eπ[ rt+γVπ(st+1)∣st=s ](贝尔曼方程)V^\pi(s) = \mathbb{E}_\pi[\,r_t + \gamma V^\pi(s_{t+1}) \mid s_t = s\,] \qquad\text{(贝尔曼方程)}

两个式子里都有一个期望 E\mathbb{E},计算期望需要知道概率分布(也就是模型)。但如果我们能从这个分布中采样,就可以用样本来近似期望。

  • 用样本近似第一个式子 → 蒙特卡洛(MC):收集很多个 GtG_t,取平均。
  • 用样本近似第二个式子 → 时序差分(TD):收集很多个 rt+γV(st+1)r_t + \gamma V(s_{t+1}),但其中 V(st+1)V(s_{t+1}) 也不知道,只能用当前的估计代替。

这就是本讲的全部核心。剩下的内容都是在回答”这两种近似各有什么性质、该怎么选”。

1.3 如何评价一个”估计方法”?——统计学的四把尺子

我们要比较不同的估计方法,需要一些统计学的”尺子”。设要估计的真实值为 θ\theta(比如 Vπ(s)V^\pi(s)),某个方法根据数据给出的估计为 θ^\hat\theta。因为数据是随机的,θ^\hat\theta 也是随机变量——换一批数据就会得到不同的 θ^\hat\theta。

尺子定义直觉
偏差(bias)Bias(θ^)=E[θ^]−θ\mathrm{Bias}(\hat\theta) = \mathbb{E}[\hat\theta] - \theta反复用不同数据估计很多次,平均下来是否”瞄准”了真实值?
方差(variance)Var(θ^)=E[(θ^−Eθ^)2]\mathrm{Var}(\hat\theta) = \mathbb{E}[(\hat\theta - \mathbb{E}\hat\theta)^2]换一批数据,估计值会”晃”多厉害?
均方误差(MSE)MSE(θ^)=E[(θ^−θ)2]=Bias2+Var\mathrm{MSE}(\hat\theta) = \mathbb{E}[(\hat\theta - \theta)^2] = \mathrm{Bias}^2 + \mathrm{Var}综合误差:离真实值平均有多远
一致性(consistency)数据量 n→∞n \to \infty 时,θ^→θ\hat\theta \to \theta(依概率)数据足够多时,是否一定能得到正确答案?

打靶的比喻:

   低偏差、低方差        低偏差、高方差        高偏差、低方差        高偏差、高方差
      ┌───────┐            ┌───────┐            ┌───────┐            ┌───────┐
      │   ●   │            │ ●   ● │            │       │            │ ●     │
      │  ●◎●  │            │   ◎   │            │   ◎ ●●│            │   ◎  ●│
      │   ●   │            │●    ● │            │     ●●│            │     ● │
      └───────┘            └───────┘            └───────┘            └───────┘
     (◎ 是靶心 = 真实值,● 是每次的估计)

MSE=Bias2+Var\mathrm{MSE} = \mathrm{Bias}^2 + \mathrm{Var} 这个分解非常重要:它告诉我们,一个有一点偏差但方差很小的方法,总误差可能比一个无偏但方差很大的方法更小。这正是 TD 常常胜过 MC 的原因(第 4 节)。

除了这四把尺子,在 RL 中我们还关心:

  • 数据效率:用同样多的数据,能估计得多准?
  • 计算效率:每处理一条数据要花多少计算?
  • 能否在线学习:是否必须等回合结束?

2. 蒙特卡洛策略评估(MC)

2.1 思路

价值的定义是回报的期望。那就:

  1. 按策略 π\pi 跑很多个完整的回合;
  2. 对每个回合中出现的每个状态,算出从那里开始的实际回报 GtG_t;
  3. 每个状态的价值估计 = 它所有回报样本的平均值。

依据是大数定律:独立同分布样本的平均值会收敛到期望值。

第 1 讲我们已经这样估计过 MRP 的价值——当时是”从每个状态出发专门模拟”;这里是”用智能体自然产生的回合数据”,思路完全一样。

2.2 首次访问 vs 每次访问

一个状态可能在同一个回合中出现多次(比如火星车在 s2s_2 打滑了几次)。那么每次出现都算一个样本吗?

算法:首次访问 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 常常更小

为什么首次访问是无偏的? 每个回合对每个状态最多贡献一个回报样本,不同回合之间相互独立,所以这些样本是独立同分布的,每个的期望都恰好是 Vπ(s)V^\pi(s)。独立同分布样本的平均值是期望的无偏估计。

为什么每次访问是有偏的? 同一回合中对同一状态的多次访问,产生的回报不独立——后一次的回报是前一次回报的”尾巴”。看一个极端的例子:

单状态例子:只有一个状态,每步奖励 +1,每步以概率 0.5 继续、0.5 结束,γ=1\gamma = 1。真实价值 V=11−0.5=2V = \frac{1}{1-0.5} = 2。

一个长度为 LL 的回合,在时刻 1,2,…,L1, 2, \dots, L 各访问一次该状态,回报分别为 L,L−1,…,1L, L-1, \dots, 1。

  • 首次访问只用第一个:估计 =L= L,E[L]=2\mathbb{E}[L] = 2 ✓ 无偏。
  • 每次访问取它们的平均:估计 =L+12= \frac{L+1}{2},E[L+12]=2+12=1.5≠2\mathbb{E}\left[\frac{L+1}{2}\right] = \frac{2+1}{2} = 1.5 \ne 2 ✗ 有偏。

代码实验(重复 20000 次独立实验取平均):

每次实验用的回合数首次访问估计的均值每次访问估计的均值
12.0061.503
102.0021.909
1002.0011.991

首次访问始终无偏;每次访问的偏差随回合数增加而消失(一致性)。

代码对应:01_monte_carlo_evaluation.py 的 first_visit_mc、every_visit_mc 与演示 3。

2.3 增量式 MC

存下所有回报再求平均,内存会越用越多。回忆第 1 讲 04 代码的增量平均公式,每来一个新样本 GtG_t:

N(s)←N(s)+1,V(s)←V(s)+1N(s)(Gt−V(s))N(s) \leftarrow N(s) + 1, \qquad V(s) \leftarrow V(s) + \frac{1}{N(s)}\big(G_t - V(s)\big)

结果与”存下全部再平均”完全相同,但只需存 V(s)V(s) 和 N(s)N(s)。

更一般地,把 1N(s)\frac{1}{N(s)} 换成一个步长(学习率) α\alpha:

  V(s)←V(s)+α (Gt⏟目标−V(s))  \boxed{\;V(s) \leftarrow V(s) + \alpha\,\big(\underbrace{G_t}_{\text{目标}} - V(s)\big)\;}

请牢记这个形式:“新估计 = 旧估计 + 步长 × (目标 − 旧估计)“。括号里是”实际得到的”减去”原来预期的”,一种”惊讶程度”。本讲的 TD、第 4 讲的 SARSA 和 Q-learning、第 5 讲的 DQN,全部是这个形式,区别只在于”目标”是什么。

常数 α\alpha vs 1/N1/N:

α=1/N(s)\alpha = 1/N(s)常数 α\alpha
含义所有样本权重相同(精确平均)越新的样本权重越大,旧样本影响按 (1−α)k(1-\alpha)^k 指数衰减
收敛收敛到真实值在真实值附近持续抖动
环境变化时反应越来越迟钝能跟上变化(“遗忘”旧数据)

代码实验(2000 个回合后):α=1/N\alpha = 1/N 时 V(C)V(C) 在最后 500 个回合中的波动(标准差)只有 0.002;α=0.2\alpha = 0.2 时高达 0.17。

为什么后面的算法常用常数 α\alpha? 因为在控制问题中,策略一直在变(第 4 讲),被评估的对象本身在变化,这时”遗忘旧数据”反而是好事。

2.4 手算例子

火星车(第 1 讲),策略”一直向左”,γ=1\gamma = 1,在 s1s_1 或 s7s_7 执行动作后回合结束。观察到一条轨迹:

s3→r=0s2→r=0s2→r=0s1→r=1结束s_3 \xrightarrow{r=0} s_2 \xrightarrow{r=0} s_2 \xrightarrow{r=0} s_1 \xrightarrow{r=1} \text{结束}

各时刻回报(γ=1\gamma = 1,从后往前):G3=1G_3 = 1,G2=0+1=1G_2 = 0 + 1 = 1,G1=1G_1 = 1,G0=1G_0 = 1。

  • 首次访问 MC:V(s1)=1V(s_1) = 1,V(s2)=G1=1V(s_2) = G_1 = 1,V(s3)=1V(s_3) = 1,其他状态没有数据。
  • 每次访问 MC:s2s_2 被访问两次,回报都是 1,平均仍是 1。

一条轨迹就把终点的 +1 “一路传回”了 s3s_3。记住这个结果,3.4 节会和 TD 对比。

2.5 MC 的特点总结

优点:

  1. 不需要模型:只需要能与环境交互。
  2. 首次访问 MC 无偏,且一致。
  3. 不依赖马尔可夫性:它直接平均真实回报,从不假设”下一状态总结了未来的一切”。即使状态表示不是马尔可夫的,MC 的估计仍然有意义。
  4. 概念简单。

缺点:

  1. 方差大:一个回报 GtG_t 是整条轨迹上所有随机性(每一步的动作选择、每一次状态转移、每一个奖励)的累加。轨迹越长,方差越大。
  2. 必须等回合结束才能计算回报并更新。回合很长时学习很慢。
  3. 只能用于回合制(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 的更新目标来自贝尔曼方程:Vπ(s)=E[rt+γVπ(st+1)∣st=s]V^\pi(s) = \mathbb{E}[r_t + \gamma V^\pi(s_{t+1}) \mid s_t = s]。用一个样本代替期望,用当前估计 VV 代替未知的 VπV^\pi:

  V(st)←V(st)+α [ rt+γV(st+1)⏟TD 目标−V(st) ]  \boxed{\;V(s_t) \leftarrow V(s_t) + \alpha\,\big[\,\underbrace{r_t + \gamma V(s_{t+1})}_{\text{TD 目标}} - V(s_t)\,\big]\;}

方括号里的量叫 TD 误差:

δt=rt+γV(st+1)−V(st)\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)

它衡量”走了一步之后的新预测”与”走之前的旧预测”之间的差异。

算法: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'

注意终止状态:回合结束后没有任何奖励,所以 V(终止)=0V(\text{终止}) = 0,TD 目标就是 rr。忘记处理终止状态是 TD 代码中最常见的 bug 之一——代码 02 的演示 5 故意犯了这个错,结果所有状态的价值都被整体抬高了。

3.3 自举(bootstrapping)

TD 用自己的估计 V(st+1)V(s_{t+1}) 去更新自己的估计 V(st)V(s_t)。这叫自举(bootstrap,字面意思是”拽着自己的鞋带把自己提起来”)。

乍一听不太靠谱:用错误的估计去更新估计,不是错上加错吗?但它确实能收敛到正确答案,直觉是:TD 目标里有一部分是真实的(奖励 rtr_t 是真实观察到的,状态转移 st→st+1s_t \to s_{t+1} 也是真实发生的)。每次更新都注入一点”真实信息”,这些真实信息通过反复的自举逐步传播开来,最终把估计”拉”向正确答案。

三种方法对比”目标”中用了什么:

方法更新目标采样?(用样本代替期望)自举?(用估计代替真值)
动态规划(第 2 讲)∑aπ(a∣s)[R(s,a)+γ∑s′P(s′∣s,a)V(s′)]\sum_a \pi(a \mid s)[R(s,a) + \gamma \sum_{s'} P(s' \mid s,a) V(s')]否(精确期望)是
蒙特卡洛GtG_t是否(完整真实回报)
TD(0)rt+γV(st+1)r_t + \gamma V(s_{t+1})是是

TD 结合了 MC 的”采样”和 DP 的”自举”。

3.4 手算例子:与 MC 对比

同一条火星车轨迹:s3→0s2→0s2→0s1→1结束s_3 \xrightarrow{0} s_2 \xrightarrow{0} s_2 \xrightarrow{0} s_1 \xrightarrow{1} \text{结束},初始 V=0V = 0,α=1\alpha = 1,γ=1\gamma = 1。按时间顺序更新:

转移TD 目标TD 误差 δ\delta更新后
s3→s2s_3 \to s_2,r=0r = 00+V(s2)=00 + V(s_2) = 00V(s3)=0V(s_3) = 0
s2→s2s_2 \to s_2,r=0r = 00+V(s2)=00 + V(s_2) = 00V(s2)=0V(s_2) = 0
s2→s1s_2 \to s_1,r=0r = 00+V(s1)=00 + V(s_1) = 00V(s2)=0V(s_2) = 0
s1→s_1 \to 结束,r=1r = 11+0=11 + 0 = 1+1V(s1)=1V(s_1) = 1

TD 学完这条轨迹:V=[1,0,0,0,0,0,0]V = [1, 0, 0, 0, 0, 0, 0];而 MC 学完同一条轨迹:V(s1)=V(s2)=V(s3)=1V(s_1) = V(s_2) = V(s_3) = 1。

TD 只更新了 s1s_1!因为更新 s2s_2、s3s_3 时,它们的下一状态的估计还是 0。TD 每经历一遍,奖励信息只往回传一步。把同一条轨迹再学一遍,V(s2)V(s_2) 变为 1;第三遍,V(s3)V(s_3) 变为 1。

这揭示了 TD 的一个特点:信息传播依赖于数据的顺序和重复。这也是为什么第 5 讲的 DQN 要用”经验回放”反复利用旧数据。

3.5 逐步观察:TD 误差何时非零

随机游走(5 状态,从 C 出发,右端 +1),初始 VV 全为 0.5,α=0.1\alpha = 0.1。一条回合 C→B→C→D→E→D→C→B→A→左端出去:

  • 前 8 步:奖励都是 0,下一状态的估计也都是 0.5,所以 δ=0+0.5−0.5=0\delta = 0 + 0.5 - 0.5 = 0——“没有惊讶”,就没有学习。
  • 最后一步 A→左端:δ=0+0−0.5=−0.5\delta = 0 + 0 - 0.5 = -0.5,V(A)V(A) 从 0.5 降到 0.45。

TD 只在”实际发生的”和”预期的”不一致时才学习。这个性质和神经科学中多巴胺神经元的”奖励预测误差”信号惊人地相似——这是 TD 学习在神经科学中影响深远的原因之一。

3.6 TD 的特点总结

优点:

  1. 不需要模型。
  2. 在线学习:每走一步就能更新,不用等回合结束。
  3. 适用于持续型任务:永不结束的任务也能学。代码 02 演示 4 在第 1 讲的火星车链(永不终止)上,只看一条 20 万步的 (s,r,s′)(s, r, s') 数据流,学出了与解析解接近的价值(使用递减步长时最大误差 0.41)。
  4. 方差低:TD 目标只包含一步的随机性。
  5. 在实践中通常比 MC 学得更快(第 4 节)。

缺点:

  1. 有偏:TD 目标中的 V(st+1)V(s_{t+1}) 是估计值,不是真值。
  2. 对初始值敏感:初始估计会影响学习过程。
  3. 依赖马尔可夫性:TD 假设 V(st+1)V(s_{t+1}) 能概括”从 st+1s_{t+1} 开始的未来”,这只在状态是马尔可夫的时候才成立(第 10 节)。
  4. 与函数逼近结合时可能不稳定(第 5 讲)。

4. MC vs TD:偏差与方差的权衡

4.1 直接测量两种目标

在 5 状态随机游走中,从状态 C 出发各采样 20000 次,测量两种更新目标(代码 03 实验 1)。真实价值 V(C)=0.5V(C) = 0.5。

(a) TD 使用真实价值时:

目标可能的取值均值偏差方差
MC:GG0 或 1(最终是否从右边出去)0.505≈ 00.250
TD:r+V(s′)r + V(s')V(B)=1/3V(B) = 1/3 或 V(D)=2/3V(D) = 2/30.500≈ 00.028

TD 目标的方差小了约 9 倍!原因很直观:MC 目标包含了”之后所有步”的随机性,TD 目标只包含”下一步往左还是往右”这一步的随机性。

(b) TD 使用不准确的估计时(学习过程中的真实情况):若 V=[0.1,0.2,0.5,0.9,0.95]V = [0.1, 0.2, 0.5, 0.9, 0.95],TD 目标的均值为 0.549(偏差 +0.049)。估计不准,TD 目标就有偏差。MC 目标永远无偏,因为它不依赖任何估计。

(c) 在更长的 19 状态随机游走上:MC 目标方差仍是 0.25(回报还是只取两种值),而 TD 目标方差只有 0.0025——相差 100 倍。相邻状态的价值更接近,一步之内的不确定性更小。可以这样理解:TD 把整条轨迹的不确定性拆成了很多小份,每次更新只承担一小份。

4.2 学习曲线

复现 Sutton & Barto 图 6.2:5 状态随机游走,初始 V=0.5V = 0.5,100 次独立运行的平均 RMS 误差(代码 03 实验 2):

方法第 1 回合第 10 回合第 25 回合第 50 回合第 75 回合第 100 回合
MC α=0.01\alpha = 0.010.2330.2110.1840.1440.1160.094
MC α=0.02\alpha = 0.020.2310.1960.1580.1120.0870.077
MC α=0.03\alpha = 0.030.2300.1870.1440.1070.0890.088
MC α=0.04\alpha = 0.040.2290.1820.1390.1120.0990.101
TD α=0.05\alpha = 0.050.2290.1750.1110.0550.0390.038
TD α=0.1\alpha = 0.10.2220.1310.0620.0510.0570.059
TD α=0.15\alpha = 0.150.2160.1010.0650.0690.0730.074

观察:

  1. TD 明显比 MC 学得快:100 个回合后,最好的 TD(0.038)误差约为最好的 MC(0.077)的一半。
  2. 步长越大,前期下降越快,但后期”停”在更高的误差水平——大步长意味着每次都被单个样本拉得很远,噪声更大。TD 在 α=0.1\alpha = 0.1、0.150.15 时后期甚至略有回升。
  3. MC 的 α\alpha 必须很小才稳定,因为它的目标方差大。

4.3 那 MC 就没用了吗?

不是。TD 胜出的前提是状态是马尔可夫的且价值估计能表示准确。在以下情况 MC 可能更好:

  • 状态不是马尔可夫的(部分可观测):TD 的自举基于错误的假设,偏差不会消失;MC 不受影响。
  • 使用函数逼近时:TD 与函数逼近结合可能不稳定甚至发散(第 5 讲),MC 更稳健。
  • 需要无偏估计时:比如要给出有统计保证的策略评估结果。

两者之间还有一整片”中间地带”——n 步 TD(第 8 节)。


5. 批量设定:同样的数据,不同的答案

5.1 什么是批量学习?

前面都是”在线”学习:来一条数据用一次,然后扔掉。但如果数据很贵(每条都是一个真实病人的治疗记录),我们会希望把一批固定的数据反复利用,直到榨干其中的信息。

批量(batch)学习:给定一个固定的数据集(KK 个回合),反复在上面运行 MC 或 TD(每一轮扫过全部数据,累积所有更新量后一次性应用),直到估计不再变化。

在一批固定数据上,只要 α\alpha 足够小,批量 MC 和批量 TD 都会收敛——但收敛到不同的值。

5.2 AB 例子

Sutton & Barto 例 6.4。两个状态 A、B,γ=1\gamma = 1,8 个回合的数据:

A --0--> B --0--> 结束      (1 次)
B --1--> 结束               (6 次)
B --0--> 结束               (1 次)

V(B)V(B) 应该是多少?B 一共出现 8 次,6 次获得 1,所以 V(B)=6/8=0.75V(B) = 6/8 = 0.75。两种方法都同意。

V(A)V(A) 应该是多少?

方法V(A)V(A)理由
批量 MC0A 只出现过一次,那一次的回报是 0+0=00 + 0 = 0,平均就是 0
批量 TD0.75数据显示 A 总是(100%)转移到 B,而 B 的价值是 0.75,所以 A 的价值也应该是 0.75

哪个对? 如果过程是马尔可夫的——A 之后发生什么只取决于到了 B——那么唯一那一次 “B 之后得到 0” 只是运气不好。TD 的答案更合理,对未来的数据预测得更好。

MC 的答案在训练数据上误差最小(它就是样本平均),但它忽略了”A 和 B 之间的结构关系”。

5.3 两者分别收敛到什么?

批量 MC 收敛到:使训练数据上”估计值与观察到的回报”之间均方误差最小的解:

VMC(s)=arg⁡min⁡v∑i,t: si,t=s(Gi,t−v)2=该状态所有回报的平均值V_{\text{MC}}(s) = \arg\min_v \sum_{i,t:\, s_{i,t} = s} \big(G_{i,t} - v\big)^2 = \text{该状态所有回报的平均值}

批量 TD 收敛到:确定性等价估计(下一节详细讲)——先从数据中估计出最可能的 MRP 模型,再精确求解这个模型的价值。

代码验证:04_batch_and_certainty_equivalence.py 实验 1、2 在 AB 数据上真的迭代运行了批量 TD(389 次扫描收敛),结果与确定性等价的解析解的差距只有 10−910^{-9} 量级。

5.4 在随机游走上的批量学习

每来一个新回合,就在”迄今为止的全部数据”上重新求批量解(代码 04 实验 3,100 次运行平均 RMS 误差):

回合数15102550100
批量 MC0.4010.2480.1890.1210.0840.056
批量 TD0.4010.1910.1480.0880.0560.042

在每一个数据量下(只有 1 个回合时两者相同),批量 TD 都更准。这说明 TD 的优势不只是”更新得早”,更在于它更好地利用了马尔可夫结构,从同样的数据中榨取出了更多信息。


6. 确定性等价:先估模型,再规划

6.1 方法

**确定性等价(certainty equivalence)**是一种”基于模型”的评估方法:

  1. 估计模型(最大似然估计 = 数数,第 1 讲 7.7 节): P^(s′∣s)=N(s→s′)N(s),R^(s)=1N(s)∑从 s 出发的转移r\hat P(s' \mid s) = \frac{N(s \to s')}{N(s)}, \qquad \hat R(s) = \frac{1}{N(s)} \sum_{\text{从 } s \text{ 出发的转移}} r
  2. 把估计当作真相(这就是”确定性等价”这个名字的含义:假装我们对模型的估计是确定的);
  3. 精确求解这个估计的 MRP:V=(I−γP^)−1R^V = (I - \gamma \hat P)^{-1} \hat R(第 1 讲的解析解,或第 2 讲的迭代法)。

在 AB 例子中:P^(B∣A)=1\hat P(B \mid A) = 1,R^(A)=0\hat R(A) = 0,P^(结束∣B)=1\hat P(\text{结束} \mid B) = 1,R^(B)=0.75\hat R(B) = 0.75。所以 V(B)=0.75V(B) = 0.75,V(A)=0+V(B)=0.75V(A) = 0 + V(B) = 0.75。

6.2 优缺点

优点缺点
数据效率极高:每条转移都贡献给模型,模型再把信息传播到所有相关状态计算量大:每次数据更新后重新求解,O(∣S∣3)O(\lvert S\rvert^3)
可以复用第 1、2 讲的所有规划方法存储大:模型需要 O(∣S∣2∣A∣)O(\lvert S\rvert^2 \lvert A\rvert) 个数
模型本身有用:可以用来做”假设分析”、评估其他策略需要马尔可夫假设;模型错误会被规划放大

TD 可以看作确定性等价的”廉价近似”:它不显式存储模型,但收敛点相同,每步计算量只有 O(1)O(1)。

在数据极其昂贵的场景(医疗、教育——正是 CS234 主讲人研究的领域),确定性等价这类基于模型的方法常常是首选。第 13、15 讲会再回到这个话题。


7. 步长与收敛:Robbins–Monro 条件

7.1 步长该怎么选?

前面的实验已经显示:

  • 常数 α\alpha:前期学得快,但后期在真实值附近持续抖动,不会精确收敛;
  • α=1/N\alpha = 1/N:精确收敛,但后期几乎”学不动”。

什么样的步长序列能保证收敛?

7.2 Robbins–Monro 条件

设第 kk 次更新某个状态时用步长 αk\alpha_k。如果

∑k=1∞αk=∞且∑k=1∞αk2<∞\sum_{k=1}^\infty \alpha_k = \infty \qquad \text{且} \qquad \sum_{k=1}^\infty \alpha_k^2 < \infty

并且每个状态都被访问无穷多次,那么表格型 MC 和 TD(0) 都以概率 1 收敛到 VπV^\pi。

直觉:

  • 第一个条件(步长之和无穷大):步子总共要能”走得足够远”,否则如果初始值离真实值很远,可能永远走不到。
  • 第二个条件(步长平方和有限):步子要越来越小,最终”噪声”的累积是有限的,估计才能稳定下来。
步长∑αk\sum \alpha_k∑αk2\sum \alpha_k^2满足?
αk=1/k\alpha_k = 1/k∞\infty(调和级数)π2/6<∞\pi^2/6 < \infty✓
αk=1/k0.7\alpha_k = 1/k^{0.7}∞\infty<∞< \infty(因为 2×0.7>12 \times 0.7 > 1)✓
αk=1/k2\alpha_k = 1/k^2<∞< \infty<∞< \infty✗(步子缩得太快)
αk=0.1\alpha_k = 0.1(常数)∞\infty∞\infty✗(噪声不会消失)

一般地,αk=1/kp\alpha_k = 1/k^p 在 0.5<p≤10.5 < p \le 1 时满足条件。

代码对应:代码 02 演示 4 比较了 α=0.1\alpha = 0.1、0.010.01 和 αk=1/k0.7\alpha_k = 1/k^{0.7}:递减步长的最大误差(0.41)远小于两种常数步长(2.62 和 1.72)。

实践中:大家常常使用常数 α\alpha(或者缓慢衰减的 α\alpha),因为控制问题中目标本身在变,而且我们通常只需要”足够好”的估计,不需要精确收敛。


8. n 步 TD 与 TD(λ):连接 MC 与 TD 的桥梁

8.1 n 步回报

TD(0) 看 1 步真实奖励再用估计接上;MC 看完整条轨迹。为什么非得二选一?

n 步回报:看 nn 步真实奖励,再用估计值接上:

Gt(n)=rt+γrt+1+⋯+γn−1rt+n−1+γnV(st+n)G_t^{(n)} = r_t + \gamma r_{t+1} + \cdots + \gamma^{n-1} r_{t+n-1} + \gamma^n V(s_{t+n})
nn回报对应方法
1rt+γV(st+1)r_t + \gamma V(s_{t+1})TD(0)
2rt+γrt+1+γ2V(st+2)r_t + \gamma r_{t+1} + \gamma^2 V(s_{t+2})2 步 TD
∞\inftyrt+γrt+1+⋯r_t + \gamma r_{t+1} + \cdots(直到结束)MC

n 步 TD 的更新:V(st)←V(st)+α [Gt(n)−V(st)]V(s_t) \leftarrow V(s_t) + \alpha\,[G_t^{(n)} - V(s_t)]。

nn 越大,越依赖真实奖励(偏差小、方差大);nn 越小,越依赖估计(偏差大、方差小)。

8.2 实验:中间的 n 最好

复现 Sutton & Barto 图 7.2:19 状态随机游走(左端 −1、右端 +1),前 10 个回合的平均 RMS 误差(50 次运行平均,代码 05):

nn \ α\alpha0.050.10.20.40.60.81.0最好
1(TD(0))0.5260.5060.4710.4130.3680.3470.3890.347
20.5060.4700.4060.3110.2790.3210.4420.279
40.4730.4120.3210.2650.3110.3910.5150.265
80.4270.3470.2790.3200.3960.4760.5790.279
160.3860.3240.3300.4220.5040.5760.6530.324
∞(MC)0.4960.5470.6230.7010.7430.7720.7970.496

观察:

  1. n=4n = 4 最好,两个极端(TD(0) 和 MC)都不是最优的:TD(0) 每个回合只把信息传回一步,太慢;MC 方差太大。
  2. nn 越大,最佳的 α\alpha 越小:方差越大,步子就得越小心。
  3. α\alpha 过大时所有方法都变差,nn 大的尤其严重。

8.3 TD(λ):把所有 n 步回报加权平均

与其挑一个 nn,不如把所有 nn 步回报加权平均,权重按 λn−1\lambda^{n-1} 几何衰减:

Gtλ=(1−λ)∑n=1∞λn−1Gt(n),λ∈[0,1]G_t^\lambda = (1 - \lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)}, \qquad \lambda \in [0, 1]
  • λ=0\lambda = 0:只剩 Gt(1)G_t^{(1)},就是 TD(0);
  • λ=1\lambda = 1:就是 MC。

((1−λ)(1-\lambda) 是归一化系数,保证权重之和 (1−λ)(1+λ+λ2+⋯ )=1(1-\lambda)(1 + \lambda + \lambda^2 + \cdots) = 1。)

以 GtλG_t^\lambda 为目标的方法叫 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 讲)MCTD(0)确定性等价
需要模型?需要不需要不需要不需要(从数据估计)
采样?否是是用数据估计模型
自举?是否是是(在估计的模型上)
需要回合结束?否需要否否
依赖马尔可夫性?是否是是
偏差—(精确)无偏(首次访问)有偏有偏
方差—高低低
每步计算量O(∣S∣2∣A∣)O(\lvert S\rvert^2\lvert A\rvert) 每轮O(1)O(1) 每步(回合结束时)O(1)O(1) 每步O(∣S∣3)O(\lvert S\rvert^3) 每次求解
数据效率—低中高

10. 马尔可夫性的角色

本讲多次提到”TD 依赖马尔可夫性,MC 不依赖”。现在把这件事讲透。

TD 的目标 rt+γV(st+1)r_t + \gamma V(s_{t+1}) 隐含了一个假设:V(st+1)V(s_{t+1}) 能完整概括”从 st+1s_{t+1} 开始的未来”,不管你是怎么到达 st+1s_{t+1} 的。这正是马尔可夫性。

如果状态不是马尔可夫的,会发生什么?回忆第 1 讲练习 7 的走廊例子:观测只有”是否在墙边”。从左墙边出发往右走,和从右墙边出发往左走,下一步都观测到”不在墙边”——但它们的未来完全不同。此时”不在墙边”这个状态的价值取决于你从哪里来,一个数 V(不在墙边)V(\text{不在墙边}) 无法同时代表两种情况。TD 用这个”平均化”的错误值去自举,偏差会持续存在,即使数据无穷多也不会消失。

MC 则不同:它平均的是真实回报,只要数据是从真实过程中采样的,它估计的就是”在当前的状态表示下,从这个观测出发的平均回报”——这个量在非马尔可夫情况下仍然有明确的意义。

实践启示:

  • 状态表示接近马尔可夫时,优先用 TD(学得快、方差小)。
  • 怀疑状态表示丢失了重要信息时(部分可观测),MC 或 nn 较大的 nn 步 TD 更稳健。
  • 这也是为什么设计好的状态表示如此重要(第 1 讲 3.5 节)。

11. 本讲总结

11.1 核心概念清单

  1. 无模型策略评估:只用按策略 π\pi 收集的数据估计 VπV^\pi;核心思想是用采样代替期望。
  2. 估计量的尺子:偏差、方差、MSE=Bias2+Var\mathrm{MSE} = \mathrm{Bias}^2 + \mathrm{Var}、一致性。
  3. MC:用真实回报 GtG_t 取平均。首次访问无偏;每次访问有偏但一致。方差大,必须等回合结束,不依赖马尔可夫性。
  4. 增量更新 V←V+α(目标−V)V \leftarrow V + \alpha(\text{目标} - V):几乎所有 RL 算法的共同形式,区别只在”目标”。
  5. TD(0):目标为 rt+γV(st+1)r_t + \gamma V(s_{t+1});TD 误差 δt\delta_t;采样 + 自举;方差小、有偏、在线、适用于持续型任务、依赖马尔可夫性。
  6. 偏差–方差权衡:TD 通常学得更快,因为它的目标方差小得多。
  7. 批量设定:批量 MC 收敛到样本平均,批量 TD 收敛到确定性等价解(最大似然模型的精确价值)。
  8. 确定性等价:数据效率最高,但计算和存储代价大。
  9. Robbins–Monro 条件:∑αk=∞\sum \alpha_k = \infty,∑αk2<∞\sum \alpha_k^2 < \infty。
  10. n 步 TD / TD(λ):在 TD(0) 与 MC 之间插值,中间的选择往往最好。

11.2 公式速查表

名称公式
回报Gt=rt+γrt+1+γ2rt+2+⋯G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots
MSE 分解MSE(θ^)=Bias(θ^)2+Var(θ^)\mathrm{MSE}(\hat\theta) = \mathrm{Bias}(\hat\theta)^2 + \mathrm{Var}(\hat\theta)
增量平均V(s)←V(s)+1N(s)(Gt−V(s))V(s) \leftarrow V(s) + \frac{1}{N(s)}(G_t - V(s))
常数步长 MCV(st)←V(st)+α(Gt−V(st))V(s_t) \leftarrow V(s_t) + \alpha (G_t - V(s_t))
TD 误差δt=rt+γV(st+1)−V(st)\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)
TD(0) 更新V(st)←V(st)+α δtV(s_t) \leftarrow V(s_t) + \alpha\, \delta_t
n 步回报Gt(n)=∑k=0n−1γkrt+k+γnV(st+n)G_t^{(n)} = \sum_{k=0}^{n-1} \gamma^k r_{t+k} + \gamma^n V(s_{t+n})
λ-回报Gtλ=(1−λ)∑n≥1λn−1Gt(n)G_t^\lambda = (1-\lambda) \sum_{n \ge 1} \lambda^{n-1} G_t^{(n)}
确定性等价P^(s′∣s)=N(s→s′)/N(s)\hat P(s' \mid s) = N(s \to s')/N(s),V=(I−γP^)−1R^V = (I - \gamma \hat P)^{-1} \hat R
Robbins–Monro∑kαk=∞\sum_k \alpha_k = \infty,∑kαk2<∞\sum_k \alpha_k^2 < \infty

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 步 TDn-step TDλ-回报λ-return
资格迹Eligibility tracesRobbins–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(或 nn 较大的 nn 步 TD)更稳健:TD 的自举依赖马尔可夫性,非马尔可夫时偏差不会消失。 (d) 确定性等价或批量 TD:数据极少时应当把数据”榨干”,利用马尔可夫结构的方法数据效率更高。

练习 2(手算 MC):γ=0.9\gamma = 0.9,一条轨迹为 s1→0s2→2s1→0s3→5结束s_1 \xrightarrow{0} s_2 \xrightarrow{2} s_1 \xrightarrow{0} s_3 \xrightarrow{5} \text{结束}。分别用首次访问和每次访问 MC 计算 V(s1)V(s_1)。

参考答案

从后往前:G3=5G_3 = 5,G2=0+0.9×5=4.5G_2 = 0 + 0.9 \times 5 = 4.5,G1=2+0.9×4.5=6.05G_1 = 2 + 0.9 \times 4.5 = 6.05,G0=0+0.9×6.05=5.445G_0 = 0 + 0.9 \times 6.05 = 5.445。 s1s_1 出现在 t=0t = 0 和 t=2t = 2。

  • 首次访问:V(s1)=G0=5.445V(s_1) = G_0 = 5.445。
  • 每次访问:V(s1)=(5.445+4.5)/2=4.9725V(s_1) = (5.445 + 4.5)/2 = 4.9725。

练习 3(手算 TD):同上一题的轨迹,初始 V=0V = 0,α=0.5\alpha = 0.5,γ=0.9\gamma = 0.9,按时间顺序做 TD(0) 更新,写出每一步后的 VV。

参考答案
  1. s1→s2s_1 \to s_2,r=0r = 0:δ=0+0.9×0−0=0\delta = 0 + 0.9 \times 0 - 0 = 0,V(s1)=0V(s_1) = 0。
  2. s2→s1s_2 \to s_1,r=2r = 2:δ=2+0−0=2\delta = 2 + 0 - 0 = 2,V(s2)=1V(s_2) = 1。
  3. s1→s3s_1 \to s_3,r=0r = 0:δ=0+0−0=0\delta = 0 + 0 - 0 = 0,V(s1)=0V(s_1) = 0。
  4. s3→s_3 \to 结束,r=5r = 5:δ=5−0=5\delta = 5 - 0 = 5,V(s3)=2.5V(s_3) = 2.5。

最终 V(s1)=0V(s_1) = 0,V(s2)=1V(s_2) = 1,V(s3)=2.5V(s_3) = 2.5。注意 V(s1)V(s_1) 仍是 0——与 MC 的 5.445 差很多,TD 需要更多数据才能把后面的奖励传回来。

练习 4(偏差):证明:若 TD 目标中使用的是真实价值 VπV^\pi,即目标为 rt+γVπ(st+1)r_t + \gamma V^\pi(s_{t+1}),那么它是 Vπ(st)V^\pi(s_t) 的无偏估计。为什么实际的 TD 是有偏的?

参考答案

E[rt+γVπ(st+1)∣st=s]=Vπ(s)\mathbb{E}[r_t + \gamma V^\pi(s_{t+1}) \mid s_t = s] = V^\pi(s),这正是贝尔曼期望方程,所以无偏。实际中我们用的是估计 VV 而不是 VπV^\pi,E[rt+γV(st+1)∣st=s]−Vπ(s)=γ E[V(st+1)−Vπ(st+1)∣st=s]\mathbb{E}[r_t + \gamma V(s_{t+1}) \mid s_t = s] - V^\pi(s) = \gamma\, \mathbb{E}[V(s_{t+1}) - V^\pi(s_{t+1}) \mid s_t = s],只要估计不准,这一项一般不为 0。

练习 5(批量):在 AB 例子中,如果数据再多一个回合 “A —0—> 结束”(A 直接结束),批量 MC 和批量 TD 给出的 V(A)V(A) 分别是多少?

参考答案

批量 MC:A 出现两次,回报都是 0,V(A)=0V(A) = 0。 批量 TD(确定性等价):P^(B∣A)=1/2\hat P(B \mid A) = 1/2,P^(结束∣A)=1/2\hat P(\text{结束} \mid A) = 1/2,R^(A)=0\hat R(A) = 0,V(B)=0.75V(B) = 0.75 不变。所以 V(A)=0+12×0.75+12×0=0.375V(A) = 0 + \frac12 \times 0.75 + \frac12 \times 0 = 0.375。

练习 6(步长):下列步长序列是否满足 Robbins–Monro 条件?(a) αk=10k+100\alpha_k = \frac{10}{k + 100};(b) αk=1k\alpha_k = \frac{1}{\sqrt{k}};(c) αk=0.5k\alpha_k = 0.5^k。

参考答案

(a) 满足:本质上是 1/k1/k 的平移缩放,和发散,平方和收敛。它比 1/k1/k 下降得慢,前期步子更大,实践中常用这种形式。 (b) 不满足:∑1/k\sum 1/k 发散,即 ∑αk2=∞\sum \alpha_k^2 = \infty。(p=0.5p = 0.5 恰好在边界上,不满足 p>0.5p > 0.5。) (c) 不满足:∑0.5k=1<∞\sum 0.5^k = 1 < \infty,步子缩得太快,可能停在离真实值很远的地方。

练习 7(n 步回报)★:运行 05_n_step_td.py,把演示 2 中的”前 10 个回合”改成”前 50 个回合”。最佳的 nn 会如何变化?为什么?

提示

随着数据增加,价值估计越来越准,自举带来的偏差越来越小,此时”方差小”的优势更突出,最佳的 nn 会向 TD(0) 方向移动。修改方法:experiment(ns, alphas, n_episodes=50)。

参考结果(30 次运行平均):最佳的 nn 从 4 变成了 2(误差 0.193),n=1,2,4,8n = 1, 2, 4, 8 之间的差距明显缩小(0.193~0.211),而 MC(0.431)仍然远远落后。

练习 8(思考题):TD 学习只在 δt≠0\delta_t \neq 0 时才更新。在随机游走中,如果把所有状态的初始值都设为真实值,TD 还会更新吗?δt\delta_t 的期望是多少?

参考答案

会更新。即使 V=VπV = V^\pi,单次采样的 δt\delta_t 通常不为 0(比如从 C 走到 B:δ=0+1/3−1/2=−1/6\delta = 0 + 1/3 - 1/2 = -1/6),但它的期望为 0(由贝尔曼方程)。所以估计会在真实值附近随机抖动(常数 α\alpha 时),平均来说不会偏离。这也说明:常数步长的 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. 下一讲预告

本讲只解决了”评估”:给定策略,算出它有多好。下一讲我们要找到更好的策略——无模型控制。你会看到:

  • 为什么无模型控制要学 Q(s,a)Q(s,a) 而不是 V(s)V(s)(第 2 讲 5.4 节埋下的伏笔);
  • 探索问题重新出现:只按当前最好的策略行动,就永远不会发现更好的选择。ε\varepsilon-贪心与 GLIE;
  • SARSA(同策略,本讲 TD 的直接推广)与 Q-learning(异策略,“不知道模型时的价值迭代”);
  • 悬崖行走问题:为什么 SARSA 学到的路线更”安全”,Q-learning 学到的路线更”大胆”;
  • 最大化偏差与 Double Q-learning。

下一讲之前,建议你:跑通 code/lecture03/ 下的 5 个脚本,完成练习 2、3、5,并思考练习 8。

← 返回课程目录