n-step — 在「等一秒」与「等一局」之间自由滑动
这一 章讲四件事: n-step return 怎么把 TD 与 MC 接成一条光谱; 为什么这条谱上每一点都站得住(误差缩减性质); 离策学习的两条 n-step 路线:重要性采样(方差大)与 tree-backup(不用采样); 以及按步选择「采样还是期望」的统一算法 Q(σ)。 读完你会理解,「学多快、信多深」是一个可以连续调节的旋钮,不是非此即彼。
1. 定位:填满 MC 与 TD 之间的空档
MC 与 one-step TD 各有失手的时候。n-step 方法把两者泛化成一条光谱:一端是 one-step TD,另一端是 MC,中间可以平滑滑动,按任务需要取位;最好的方法往往在中间1。
作者还给了个很工程的动机,叫时间步的暴政(the tyranny of the time step):one-step 方法里,「多快能改动作」和「bootstrap 跨多远」被同一个时间步绑死——改动作要快,bootstrap 却想在「发生了一次可辨认的状态变化」那么长的时间尺度上进行;one-step 里两者只能互相将就。n-step 把 bootstrap 的时长解放出来2。
2. 核心原理一:n-step return 的构造(主走查)
n-step return 就是:前 n 步的真实奖励,加上第 n 步到达状态的当前估计值(估计值替我们补上没看到的部分):
G(t:t+n) = R(t+1) + γR(t+2) + … + γ^(n−1)·R(t+n) + γ^n·V(S(t+n))
└──── n 步真金白银 ────┘ └── 一个 guess 兜底 ──┘
n=1:就是 TD(0) 的目标; n=∞(到局终):就是 MC 的目标。
主走查:同一局经验,三种 n 各学到什么(书里例 7.1 的开场景设定,状态与更新行为为书中给出)3:
5 状态随机游走(A B C D E,起点 C,到达右端 E 外终止得 +1,其余奖励 0),
所有估计初始化 0.5。假设第一局恰好一路向右:C → D → E → 终止(回报 1)。
one-step(n=1):只有 E 被更新——V(E) 从 0.5 朝 1 挪。
A、B、C、D 什么都没学到:它们离「出结果」隔了不止一步。
two-step(n=2):D 和 E 都被更新,都朝 1 挪。C 仍然没份。
n≥3: C、D、E 全部朝 1 挪,幅度相同。
同一局经验,一条路径上每个环节都记了功。
一眼可见的权衡:n 越大,单局经验传播得越远,但每条更新要等得越久。哪端更好不是定理说了算——书里在 19 状态随机游走上做了 n 与 α 的参数扫描(19 态、左端 −1、右端 +1),中间的 n 成绩最好:泛化到 n-step 确实能胜过两个极端4。