CS234 L9 · 策略梯度 II · 全片速览

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

1 · 开场2 · 1 · 基线:减去 b(s) <3 · 2 · 无偏是无条件的,降4 · 3 · vanilla poli5 · 4 · 在 RL 里「走多远」是6 · 5 · actor-critic7 · 6 · n 步回报:TD(0) 8 · 7 · 相对性能恒等式 —— 以9 · 8 · 折扣占用测度不是<10 · 9 · 代理目标与 CPI 下界11 · 完
知识点 1

开场

1 / 65
讲解
L8 结束在一个具体的缺陷上:REINFORCE 无偏,但方差大到常常不能直接用。 这一讲做两件可以分开的事。 前半是砍方差:引入状态相关的基线 b(s),在板上证明减去它仍然无偏;装配成 vanilla policy gradient 模板;然后把蒙特卡洛回报换成 critic 的估计(actor-critic),或者换成 n 步回报——一条在偏差与方差之间连续滑动的谱。 后半是「该走多远」。这个问题在监督学习里不太要紧,在 RL 里是要紧的,因为策略决定了你接下来会看到什么数据:一步走坏了,你可能被扔到一个再也收集不到有用信息的地方。这一半为 TRPO 铺路,但讲座在铺完之前就停了——最后那一步被明确推到期中考之后。 这一讲有一处记号问题贯穿后半段,而且是整讲里最要命的:她全程把 γ-折扣占用测度称作「平稳分布」,而两者差一个 1/(1−γ) 的因子(γ=0.99 时是 100 倍)。本片会把它拆开。
知识点 2

1 · 基线:减去 b(s) 不改变期望,证明只有六步

2 / 65
g^=∑t∇θlog⁡πθ(at|st)Gt
若 G_t 全是大正数每个动作都被加强
回报全为正时,所有动作的概率都被推高 —— 区别只在推多少。
讲解
L8 末尾那条式子有一个很实际的毛病。 假设某个任务的回报都是正的(比如「活着每步 +1」),那么 G_t 恒为正,于是每一个被采到的动作,概率都被推高。好动作推得多,坏动作推得少,但没有一个被压下去。 方向上最终还是对的——相对比例会变。但这意味着梯度估计的幅度被一个与好坏无关的大基数主导了,而那个基数每次采样都在抖。 直觉上的修法很朴素:减掉一个基准,只保留「比基准好多少」。问题是这么做还算不算原来那个梯度。
3 / 65
减掉一个数就不是原梯度了凭什么可以随便减
这个顾虑很自然 —— 而答案是:只要 b 不依赖动作,期望一点不变。
讲解
这个顾虑完全合理:梯度是一个有确切定义的量,凭什么可以从估计量里随手减掉一个东西还说它是同一个梯度? 如果减的是任意东西,确实不行。但有一类东西减掉之后期望完全不变:只依赖状态、不依赖动作的量。 这类量叫基线 b(s)。 证明只有六步,而且它的最后一步你已经在 L8 第八集见过了。
4 / 65
Ea∼π[∇log⁡πθ(a|s)b(s)]=b(s)∇∑aπθ(a|s)=b(s)∇1=0
b(s) 是常数,提出去
证明的终点还是那一条:∇1 = 0。
讲解
证明的骨架:把期望写成对动作求和,b(s) 不依赖 a,所以可以提到求和号外面;里面剩下 Σ_a π·∇log π,用似然比技巧反着走一步变成 Σ_a ∇π;交换求和与求导得到 ∇Σ_a π;而 Σ_a π(a|s) = 1;∇1 = 0。 讲座在板上走的就是这六步,最后一步她特意点明是「对常数 1 求导」。 这和 L8 第八集因果性用的是同一条引理:score function 的期望恒为零。那里用它删掉了过去的奖励,这里用它减掉一个基线。 关键的前提是 b 不能依赖动作。如果 b 依赖 a,它就不能提到求和号外面,整个推导塌掉——而且那时减去它确实会改变梯度。
5 / 65
g^=∑t∇θlog⁡πθ(at|st)(Gt−b(st))
只保留「比基准好多少」
于是可以放心地减:估计量变成 (回报 − 基准),而期望不变。
讲解
有了这条保证,就可以把估计量改写成:score 乘上 G_t − b(s_t)。 读法回到 L8 第七集那个骨架,但判断标准变了:原来是「这条轨迹的回报是多少」,现在是「比这个状态的基准好多少」。回报高于基准的动作被加强,低于基准的被压低——终于有了负号。 最自然的基线是 b(s) ≈ V^π(s):这个状态本来预期能拿多少。那样 G_t − b(s_t) 就近似是优势——这个动作比平均水平好多少。 注意「近似」两个字。这里的 G_t − b(s_t) 是一个由采样回报和拟合基线算出来的经验量,它和后面第七集里那个精确的 A^π(s,a) 不是同一个对象,而讲座在板上把它们写成一样。这一处本片会在第七集再强调一次。
6 / 65
✓b 只依赖状态期望不变 · 可以减✕b 依赖动作提不出求和号 · 改变梯度✓同一条引理与 L8 因果性共用前提就这一条
指名反驳:能减不是因为它小,是因为 b 不依赖动作。
讲解
指名回去:可以减掉基线,不是因为它影响小,而是因为它的期望贡献精确为零。这不是近似,和 L8 第八集删掉过去奖励一样,是恒等变形。 前提只有一条,但必须守住:b 只能依赖状态,不能依赖动作。依赖动作的「基线」提不出求和号,减掉它会真的改变梯度——那时你优化的就不是原来那个目标了。 这条引理在这一讲里已经是第二次出现(L8 第八集是第一次),而且它的用法是同一个模式:往估计量里加减任何期望为零的东西,都不改变正确性。 于是一个很自然的问题冒出来:既然随便减都不改期望,那 b 是不是可以随便取?下一集回答它,而答案是不能。
7 / 65

知识点 1 · 总结

只依赖状态的基线,减掉它期望完全不变

核心结论

六步证明,终点是 ∇1 = 0:b(s) 不依赖 a ⟹ 提出求和号 ⟹ b·∇Σ_a π = b·∇1 = 0。

底层机制

与 L8 第八集共用同一条引理(score function 期望为零)。模式:往估计量里加减任何期望为零的东西,都不改变正确性。

常见误解

误解:「减掉一个数就不是原梯度了」。只要不依赖动作就不改期望 —— 这是恒等式不是近似。

与你的考试

前提只有一条且必须守住:b 不能依赖动作。依赖动作就提不出求和号,减掉它会真的改变梯度。

8 / 65

知识点 1 · 检验

为什么可以从策略梯度估计里减去一个基线 b(s)?

知识点 3

2 · 无偏是无条件的,降方差不是 —— 坏基线会加方差

9 / 65
任何 b(s) 都不改期望那 b 取什么都一样吗
上一集证明了任何基线都保持无偏。那还有什么可选的?
讲解
上一集的结论很强:任何只依赖状态的 b 都不改变期望。b 取 0、取 100、取 −5000,梯度的期望完全相同。 这听起来像是说 b 无所谓。 但我们引入基线本来就不是为了改期望——期望已经是对的了。引入它是为了降方差。而方差和期望不是同一件事:一个量可以不影响前者却剧烈影响后者。 这一集把方差随 b 怎么变算出来。
10 / 65
既然无偏,随便取反正证明说了任何 b 都行
「无偏」是无条件的,「降方差」不是 —— 坏基线会把方差加大。
讲解
这个错误模型是上一集那条结论的过度推广:证明确实说了「任何 b」,但它说的是无偏性。 这里要把两句话分清楚,而且讲座在这一处的措辞被字幕弄坏了(转录成「他们当然不可能靠选好的选择把它变得更好」,读不通)。她的意思是: 无偏性是无条件的——任何 b 都保持无偏。 方差下降不是无条件的——好基线降方差,坏基线会把方差加大。 下面用一个能解析算完的例子把这条曲线画出来。
11 / 65
Var=E[(R−b)2]−(E[⋅])2
关于 b 是二次函数二次 ⟹ U 形,有唯一最低点
方差是 b 的二次函数 —— 所以它是一条 U 形曲线,两边都会翘起来。
讲解
设一个最小的例子,小到可以解析算完:单状态、两个动作,π 各 0.5;两个动作的 score 分别是 +1 和 −1(和为零,符合上一集的引理);回报分别是 100 和 102——差别只有 2,但基数很大。 真梯度 = 0.5×(+1)×100 + 0.5×(−1)×102 = −1。 估计量是 score×(R − b)。因为 score² 恒为 1,方差就等于 E[(R−b)²] − 1,这是关于 b 的一个二次函数。 二次函数意味着:它有唯一的最低点,而且两侧都会翘起来。这就是下一镜那条曲线的形状,也是这一集全部的要点。
12 / 65
b=0b=50b=101b=150b=2501020126010240122201梯度期望恒为 −1
实测 U 形:最优基线把方差压到 0,而 b=250 反弹到 22201。
讲解
看什么:看柱子先降到底再翘起来:中间那根(b=101)高度就是 0——不是画错,方差真的被压没了。而最右边那根比最左边还高一倍多。五根柱子对应的梯度期望全都是 −1。 —— 把曲线算出来。 b=0(不用基线):方差 10201。 b=101(正好是两个回报的平均):方差 0——这个例子里最优基线把方差完全消掉了。 b=202:方差又回到 10201,和不用基线完全相同(曲线对称)。 b=250:方差 22201,是不用基线的 2.18 倍。 而这五种取法的梯度期望全都是 −1,一个字都没变。 这就是这一集的全部内容:无偏性完全不受 b 影响,方差剧烈地受它影响,而且可以被弄得更糟。 实践中取什么:b(s) ≈ V^π(s)。本例里 V = 0.5×100 + 0.5×102 = 101,正好是最优点——这不是巧合,状态的期望回报本来就是回报的自然基准。
13 / 65
✓无偏任何 b 都成立✕降方差只有好 b 成立✓取 b ≈ V(s)状态的期望回报两句话必须分开说
指名反驳:无偏无条件,降方差有条件。b 取远了会更糟。
讲解
指名回去:「既然无偏就随便取」把两句话合并成了一句。 无偏是无条件的——上一集的证明对任何不依赖动作的 b 都成立。 降方差是有条件的——方差是 b 的二次函数,有最优点,而且离得远时比不用基线更糟(实测 2.18 倍)。 所以基线不是一个「加了总没坏处」的技巧,它要被学出来。这也是为什么下一集那个模板里会有专门的一步:用最小二乘把 b 重新拟合到当前的回报上。 这条经验在整门课里反复出现:L3 第四集说判据是总 MSE 不是有没有偏差;这里是它的镜像——保住了无偏,不等于这个估计量可用。两件事都要看。
14 / 65

知识点 2 · 总结

无偏是无条件的,降方差不是

核心结论

实测(R=100/102、π 各 0.5、score=±1):b=0 → 方差 10201;b=101(=V)→ 0;b=202 → 10201(与不用基线相同);b=250 → 22201(2.18×,更差)。五者梯度期望全是 −1。

底层机制

方差是 b 的二次函数 ⟹ U 形,有唯一最优点,两侧都会翘起来。最优点就在 b ≈ V^π(s)。

常见误解

误解:「证明说任何 b 都行,所以随便取」。那条证明说的是无偏性,不是方差。

与你的考试

所以基线要被学出来 —— 下一集那个模板里有专门一步:用最小二乘把 b 重新拟合到当前回报上。

15 / 65

知识点 2 · 检验

策略梯度里选一个「坏」的基线 b(s),会发生什么?

知识点 4

3 · vanilla policy gradient:把这一讲装配成一个模板

16 / 65
score · 因果性 · 基线零件齐了
L8 到这里的零件已经够了。装配成一个能跑的循环。
讲解
到这里,L8 和 L9 的零件已经凑齐: score function(L8 第六集)、因果性的 reward-to-go(L8 第八集)、以及基线(这一讲前两集)。 把它们装配起来,就是讲座称作 vanilla policy gradient 的那个模板。 这一集把它写成五步,并指出一处会让人读错板书的记号问题。
17 / 65
这是一个新算法又要单独记一套流程
它是模板不是算法 —— 后面所有策略梯度方法都在往这五步里换零件。
讲解
「vanilla policy gradient」听起来像是清单上又多了一个要背的算法。 换个读法会省很多力气:它是一个模板。后面几乎所有策略梯度方法——A3C、TRPO、PPO——都保持这五步的骨架不变,只替换其中一两个零件。 所以值得记住的不是这五步本身,而是每一步可以被换成什么。这一讲后面几集正是在换:第五集换掉回报(用 critic),第六集换掉回报的长度(n 步),第九集换掉「走多远」那一步。
18 / 65
① 跑 m 条轨迹② 算 reward-to-go③ 算优势 G − b
前三步:采样 → 算回报 → 减基线。
讲解
模板的前三步。 ① 用当前策略跑 m 条轨迹。这是从 P(τ;θ) 抽样——L8 第七集说过,「抽样」在这里就是「跑一个回合」。 ② 对每条轨迹的每一步,算 reward-to-go G_t,也就是从 t 开始往后的折扣回报。这一步实现的是 L8 第八集的因果性:只算之后的奖励。 ③ 算优势估计 Â_t = G_t − b(s_t),也就是「比这个状态的基准好多少」。 按约定标一处记号:讲座在这里把 i 用成了两个意思——外层循环的迭代计数,以及 G_{i,t} 里的轨迹编号;而每轮的轨迹数她先后用了 D、d、m 三个符号。本片统一用 m 表示轨迹数。
19 / 65
④ 最小二乘重拟合 b⑤ 沿 Σ ∇log π · Â 走一步然后回到 ①
后两步:重新拟合基线,走一步梯度,然后回到采样。
讲解
后两步。 ④ 用刚收集的回报,把基线 b 重新拟合一遍——通常是最小二乘:让 b(s) 去逼近观测到的 G_t。这一步直接对应上一集的结论:基线要被学出来,因为坏基线会加方差。 ⑤ 沿 Σ_t ∇log π_θ(a_t|s_t)·Â_t 的方向走一步,更新 θ。 然后回到第一步——用新策略重新采样。这一点很关键:旧数据不能重用,因为它来自旧策略。策略梯度天生是在策略的,这和 L4 的 Q-learning 正好相反。 这也提前说明了第四集要讲的问题:既然每走一步都要重新收集数据,那这一步走坏了,代价就是下一批数据都是坏的。
20 / 65
经验的 G − b精确的 A^π(s,a)板上写成一样,其实不是
指名反驳:这是模板不是算法。另外「优势」在这一讲指两个不同的对象。
讲解
指名回去:这是一个模板,值得记的是每一步能换成什么,而不是五步本身。 最后把一处会真正造成误解的记号说破,因为它在这一讲后半段会变成麻烦。 「优势」在这一讲里指两个不同的对象: Â_t = G_t − b(s_t) 是一个经验量——由采样回报和拟合出来的基线算出来的估计,带着采样噪声和拟合误差。 A^π(s,a) = Q^π(s,a) − V^π(s) 是一个精确量——旧策略的真实优势函数,第七集的相对性能恒等式里用的是它。 两者在板上被写成一样。混起来的后果是:你会以为第七集那个恒等式是可以直接采样估计的,而它不是。 顺带纠一处口误:她一度把优势念成「Q(s_t,a_t) 减去旧策略下的 Q(s_t)」,第二项应该是 V^π(s_t)。
21 / 65

知识点 3 · 总结

vanilla policy gradient 是模板,不是又一个算法

核心结论

五步:① 跑 m 条轨迹 → ② 算 reward-to-go → ③ 算 Â=G−b → ④ 最小二乘重拟合 b → ⑤ 沿 Σ∇log π·Â 走一步,回到 ①。

底层机制

后面的方法(A3C、TRPO、PPO)都保持这个骨架,只换零件:换回报(critic)、换回报长度(n 步)、换步长规则。

常见误解

误解:「又一个要背的算法」。该记的是每一步能换成什么。

与你的考试

记号陷阱:「优势」指两个对象 —— 经验的 Â=G−b(带噪声)与精确的 A^π=Q^π−V^π(第七集用的),板上写成一样。另:每轮轨迹数讲座用了 D/d/m 三个符号。

22 / 65

知识点 3 · 检验

vanilla policy gradient 模板里,为什么每一轮都要重新采样轨迹?

知识点 5

4 · 在 RL 里「走多远」是真问题 —— 策略决定数据分布

23 / 65
监督学习:数据集固定RL:策略决定数据
同样是「梯度上升一步」,这两种设定里走坏一步的后果完全不同。
讲解
模板的第五步是「沿梯度走一步」。步长该取多大? 在监督学习里这是个调参问题:步子大了损失震荡,小了慢,试几个值就行。走坏了也不要紧——数据集还在那儿,下一步照样能算出正确的梯度,慢慢纠回来。 在 RL 里不是这样。第三集最后已经提过:每走一步都要用新策略重新采样。 所以这一步走坏了,下一批数据全部来自那个坏策略。这一集要说的是这件事有多严重。
24 / 65
步长就是个超参数调一调总能调对
在监督学习里这是对的。RL 里走坏一步可能再也回不来。
讲解
把步长当超参数,是从监督学习带过来的习惯,而那个习惯建立在一个前提上:目标函数是固定的。你在一个不动的地形上找最低点,走岔了退回来就是。 RL 里地形不是不动的——准确地说,你能看到的那一块地形,取决于你站在哪里。策略变了,状态分布跟着变,你接下来采到的样本也跟着变。 于是有一种失败是监督学习里不存在的:你走进了一个采不到有用信息的区域。梯度估计在那里要么几乎全是噪声,要么指向别处。这时候「退回来」不是免费的,因为你得先有信息才知道该往哪退。
25 / 65
θθ′??一步数据从这里起都是坏的
一步走坏 ⟹ 接下来采到的每一批数据都来自那个坏策略。
讲解
画成链条就清楚了:θ 走一步到 θ′,如果 θ′ 明显更差,那么从这里开始收集的所有数据都是由它产生的。 三件事同时恶化: 数据质量——坏策略走出来的轨迹回报低,能学到的东西少。 覆盖范围——坏策略可能根本到不了那些好状态,于是关于它们的信息一点也收集不到。 梯度信号——优势估计 Â 在低回报区域可能几乎处处相同,梯度接近噪声。 讲座的说法是:一步坏的更新可能把你困在一个收集不到有用信息的地方。这和 L7 第五集那个分布偏移是同一个家族的问题——你的决策决定了你接下来看到什么。
26 / 65
✓监督学习数据固定 · 可以纠回来✕强化学习数据跟着策略走✓所以要保证每步都不变差目标从「快」变成「稳
于是目标变了:不再是「走得快」,而是保证每一步都不把事情弄糟。
讲解
既然走坏一步的代价是不可逆的,优化的目标就变了。 监督学习追求快:在给定预算下尽量降低损失,偶尔震荡无所谓。 RL 这里追求的是单调改进:宁可慢,也要保证每一步都不比上一步差。 这正是讲座在开头就提到「monotonically improving」的原因,也是这一讲后半段全部机器的目的地:先写出一个能算的下界,再证明单调地改进这个下界就单调地改进了真值。 那个最后一步是 TRPO 的论证,而讲座明确说了要推到期中之后——所以这一讲只铺到下界为止。后面三集就是在铺这个下界。
27 / 65
步长不是调参问题是信息可得性问题
指名反驳:坏步子毁掉的不只是这一步,是接下来的数据来源。
讲解
指名回去:在 RL 里步长不是一个纯粹的优化超参数,它决定了你接下来能采到什么数据。 把这一讲和前面几讲连起来看,这是同一个主题的第三次出现: L7 第五集——行为克隆:你的动作把你推出训练分布,误差从 εT 变 εT²。 L6 第八集——DQN:回放缓冲让数据来自旧策略,加重了离策略。 这一集——策略梯度:一步走坏,接下来的数据全由坏策略产生。 三处的共同形状是 L1 第一集那个「序贯」:你的决策影响你接下来看到的数据。它在这门课里从来没有停止过发作。 接下来两集先回到降方差(critic 和 n 步回报),第七集之后再正面处理「走多远」。
28 / 65

知识点 4 · 总结

RL 里步长决定的是「接下来能采到什么数据」

核心结论

策略梯度是在策略的:走一步就要重新采样。所以一步走坏 ⟹ 之后每一批数据都来自那个坏策略。

底层机制

三件事同时恶化:数据质量(回报低)、覆盖范围(到不了好状态)、梯度信号(优势处处相同,接近噪声)。

常见误解

误解:「步长就是超参数,调一调就行」。监督学习里数据集固定、可以纠回来;这里不行。

与你的考试

于是目标从「走得快」变成单调改进。这是 L1 第一集那个「序贯」的第三次发作(另两次:L7 行为克隆、L6 回放)。

29 / 65

知识点 4 · 检验

为什么在策略梯度里,步长比在监督学习里更要紧?

知识点 6

5 · actor-critic:把回报换成 critic 的估计

30 / 65
A^t=Gt−b(st)
G_t 还是整条回报方差还在那里
基线砍掉了一部分方差。但 G_t 仍然是蒙特卡洛回报。
讲解
基线解决了「所有动作都被推高」的问题,也砍掉了一大块方差。但估计量里还有一个方差大户没动过:G_t 本身。 G_t 是从 t 开始一路走到回合结束的实际折扣回报。L3 第三集说过,蒙特卡洛回报把整条轨迹的随机性吞进一个数——那条结论在这里原样成立。 而且还有一个实际限制:要算 G_t 必须等回合结束。永不终止的任务根本没法用。 于是自然的问题是:能不能用一个估计去代替这个实际回报?
31 / 65
用 critic 只是图省事不用等回合结束而已
省事是真的 —— 但真正买到的是方差,付出的是偏差。
讲解
「不用等回合结束」确实是 critic 带来的一个好处,而且很实际。 但把它当成主要理由,会让你看不清这是一次有代价的交换——而代价恰恰是这门课反复强调的那一对。 L3 第一集已经把这组取舍建立好了:用估计去替代实际回报,就是自举。自举带来偏差,换来方差下降。 这里发生的事完全一样,只是被替换的东西从 V 换成了策略梯度里的那个权重。
32 / 65
A^t=rt+γV^(st+1;ϕ)−V^(st;ϕ)
actor:策略 π_θcritic:值函数 V̂_φ
actor-critic:一个网络演(选动作),一个网络评(估值)。
讲解
把 G_t 换成一个学出来的值函数,就得到 actor-critic。 actor 是策略 π_θ——它决定做什么。 critic 是值函数 V̂_φ(或 Q̂_φ)——它评价做得怎么样。 优势估计可以只用一步:Â_t = r_t + γV̂(s_{t+1}) − V̂(s_t)。这正是 TD 误差(L3 第八集那个 δ),只不过现在它被用作策略梯度的权重。 注意 critic 在这里同时扮演两个角色:它既是基线(被减掉的 V̂(s_t)),也是自举的目标(加上去的 γV̂(s_{t+1}))。前一个角色不引入偏差(第一集证过),后一个引入。 讲座提到 A3C 是当时最主流的深度实例。
33 / 65
✓蒙特卡洛 G_t无偏 · 方差大 · 要等回合✓critic 自举有偏 · 方差小 · 可在线✓判据总 MSE和 L3 是同一组取舍
这就是 L3 那组取舍原样搬过来:偏差换方差。
讲解
把两端摆清楚。 蒙特卡洛 G_t:无偏(L3 第三集),方差大,必须等回合结束。 critic 自举:有偏——因为 V̂ 不等于 V^π,方差小得多,而且可以在线更新。 这和 L3 第一到第四集完全是同一组取舍,判据也一样:总 MSE,不是有没有偏差(L3 第四集)。 有一处新的风险值得点明:critic 的偏差不是静态的。它是被学出来的,训练早期 V̂ 可能离谱,于是优势估计也离谱,而策略又按这个离谱的信号去更新——两个网络互相喂对方的误差。 这也是为什么 actor-critic 在实践上比 vanilla PG 更难调,尽管它的方差更小。
34 / 65
买到:方差 + 在线付出:偏差critic 还身兼基线
指名反驳:不是图省事,是用偏差换方差 —— L3 那组取舍的第二次出场。
讲解
指名回去:用 critic 不是为了省事,是一次明确的偏差换方差。省掉「等回合结束」是顺带的好处。 把 critic 的两个角色再分清楚一次,因为它们的性质相反: 作为基线(减掉的 V̂(s_t))——不引入偏差,这是第一集证过的,任何只依赖状态的量都行。 作为自举目标(加上的 γV̂(s_{t+1}))——引入偏差,因为 V̂ ≠ V^π。 同一个 V̂ 出现在两处,一处无害一处有害。这个区分在读 actor-critic 的各种变体时很有用:有些变体只用它做基线(保持无偏),有些两处都用。 下一集把这个交换变成一个连续的旋钮:n 步回报。
35 / 65

知识点 5 · 总结

actor-critic 是用偏差换方差,不是图省事

核心结论

把 G_t 换成 critic 的估计:Â_t = r_t + γV̂(s_{t+1}) − V̂(s_t),正是 TD 误差被用作策略梯度的权重。深度实例:A3C。

底层机制

critic 身兼两职:作基线(减掉的 V̂(s_t))不引入偏差;作自举目标(加上的 γV̂(s_{t+1}))引入偏差。

常见误解

误解:「用 critic 只是不用等回合结束」。省事是顺带的,真正的交换是 L3 那组偏差换方差。

与你的考试

新风险:critic 的偏差不是静态的 —— 早期 V̂ 离谱 ⟹ 优势离谱 ⟹ 策略按错信号更新,两个网络互喂误差。

36 / 65

知识点 5 · 检验

actor-critic 里,critic 的值函数 V̂ 出现在两个位置,它们的性质有什么不同?

知识点 7

6 · n 步回报:TD(0) 与蒙特卡洛之间的连续谱

37 / 65
n=1:TD(0)n=T:蒙特卡洛中间呢
上一集给了两个端点。中间是空的吗?
讲解
上一集把两个端点摆了出来:一端是完全自举的 TD 式估计(方差小、偏差大),另一端是完全不自举的蒙特卡洛回报(无偏、方差大)。 但这两个端点之间不是空的。 你可以选择「用真实奖励走 n 步,然后才开始自举」——n 是一个你可以调的整数。n=1 回到 TD(0),n=T 回到蒙特卡洛,中间是一整条连续的谱。 讲座称它们为 n 步回报。
38 / 65
n 越大越好越接近无偏,当然越准
n 大确实偏差小 —— 但方差跟着一起长。判据还是总 MSE。
讲解
这个错误模型来自一个片面但正确的观察:n 越大,自举的成分越少,偏差越小;n=T 时完全无偏。 它漏掉了另一半:n 越大,进来的真实奖励越多,而每一个都带着自己的随机性。方差随 n 一起长。 所以这是一条标准的偏差-方差曲线,判据仍然是 L3 第四集那条:总 MSE。两个端点通常都不是最优的——最优的 n 往往在中间。 实践中 n 取 5 到 20 是常见的选择,而具体多少取决于问题。
39 / 65
Gt(n)=rt+γrt+1+⋯+γn−1rt+n−1+γnV^(st+n)
前 n 项是真实奖励最后一项才自举
n 步回报:先用 n 个真实奖励,第 n 步之后才交给 V̂。
讲解
写出来很直白:前 n 项是实际收到的奖励,最后一项是 γ^n 乘以第 n 步之后那个状态的估值。 n=1 时它退化成 r_t + γV̂(s_{t+1})——就是 TD(0) 的目标。 n=T 时自举项的位置已经到了回合终点(V̂=0),它退化成完整的蒙特卡洛回报。 关键在最后那个 γ^n:它是自举那部分在整个目标里的权重。而 V̂ 正是偏差的唯一来源,所以—— 偏差大致按 γ^n 衰减。这给了 n 一个很具体的读法:n 控制的是「你让那个可能不准的估计参与多少」。 按约定标一处字幕:这里的 γ^{t′−t}·r_{t′} 被转录成「gamma 2 the t prime minus t times r t prime」,而目标里的 γ^t·r(s_t,a_t) 被转录成「gamma t_r S_t a_t」。
40 / 65
n=1n=2n=5n=100.9000.8100.5910.349γ=0.9 时的 γ^n
自举成分按 γ^n 衰减:γ=0.9 时 n=10 已降到 0.349。
讲解
看什么:看柱子降得有多慢:n 从 1 走到 10,自举的权重只从 0.900 降到 0.349 —— 还剩三分之一。所以「多走几步」买到的偏差下降,比直觉少。 —— 把自举成分的权重 γ^n 算出来。γ=0.9 时:n=1 是 0.900,n=2 是 0.810,n=5 是 0.591,n=10 是 0.349。 读法:n=10 时,那个可能不准的 V̂ 仍然占着三分之一的权重。「多走几步」买到的偏差下降比直觉少得多,而方差是实打实地跟着涨的。 γ 越大这件事越明显。γ=0.99 时,n=10 的 γ^n 是 0.904——走了十步,自举的权重几乎没降。要把它压到一半得走到 n≈69。 所以 n 的选择和 γ 强相关:γ 越接近 1,要达到同样的偏差下降就得走越多步,而方差的代价也越大。这也是为什么长时域问题特别难调。
41 / 65
✓n 小偏差大 · 方差小✓n 大偏差小 · 方差大✓最优 n通常在中间端点很少是最优的
指名反驳:n 不是越大越好。两个端点通常都不是最优的。
讲解
指名回去:n 越大偏差越小,但方差同时变大,判据是总 MSE,所以两个端点通常都不是最优解。 这条结论把 L3 和这一讲连成了一件事。L3 第二集画过那张「采样 / 自举」的两轴图,TD 和 MC 分别落在两个格子里,当时它们看起来是离散的两个选择。 n 步回报说明其实不是——自举那根轴是连续的,n 就是它上面的坐标。TD(0) 和蒙特卡洛只是 n=1 和 n=T 两个端点。 再往前一步就是 TD(λ):不选一个 n,而是把所有 n 的结果按 λ 的几何权重平均起来。讲座提到了它(字幕把名字念成「TD Gamma」),并指向 Sutton & Barto 第 12 章。 到这里降方差的部分就结束了。接下来三集回到第四集那个问题:该走多远。
42 / 65

知识点 6 · 总结

n 步回报:自举那根轴是连续的,端点很少最优

核心结论

G⁽ⁿ⁾_t = r_t + … + γ^{n−1}r_{t+n−1} + γⁿ V̂(s_{t+n})。n=1 是 TD(0),n=T 是蒙特卡洛。

底层机制

偏差大致按 γⁿ 衰减(γ^n 是自举成分的权重)。实测 γ=0.9:n=1→0.900,n=10→0.349;γ=0.99:n=10→0.904,几乎没降。

常见误解

误解:「n 越大越好,越接近无偏」。n 大偏差小但方差同时变大,判据仍是总 MSE。

与你的考试

n 的选择与 γ 强相关:γ 越接近 1,同样的偏差下降要走越多步,方差代价越大。再进一步是 TD(λ)(字幕念成「TD Gamma」)。

43 / 65

知识点 6 · 检验

γ = 0.99 时,n 步回报取 n = 10,自举成分 V̂ 在目标里的权重是多少?

知识点 8

7 · 相对性能恒等式 —— 以及那个会把推导反过来的下标

44 / 65
新策略比旧策略好多少要能写成一个式子
要保证「每步都不变差」,先得能精确地写出差了多少。
讲解
第四集立下的目标是单调改进:每一步都不比上一步差。 要做到这件事,第一步是能把「新策略比旧策略好多少」精确地写出来——不是估一个近似,而是一个恒等式。 这一集给出那个恒等式。它形式很简洁,但里面有一个下标,弄反了整个推导就倒过来,而课堂上确实有学生问到了它。
45 / 65
优势当然用新策略的我们在评价新策略,那就用它的 A
学生在课上问的正是这个 —— 答案是:不,用旧策略的。
讲解
这个错误模型非常自然:我们要评价的是新策略 π̃,那式子里的优势函数应该是 A^π̃ 才对。 课堂上有学生明确问了这个问题——上标该不该是 π̃。 答案是不该。 而且这不是一个可以两边都行的记号选择。弄反了,整个推导的方向就反了,后面的代理目标和下界全部失去依据。下一镜写出正确的形式。
46 / 65
V(π~)=V(π)+Es,a∼π~[∑tγtAπ(st,at)]
分布用新策略优势用旧策略
相对性能恒等式:分布来自新策略,优势来自旧策略。
讲解
恒等式是这样的:新策略的值,等于旧策略的值,加上一个期望项。 而那个期望项里两个下标不一样: 状态-动作分布 s,a ~ π̃——新策略走出来的轨迹。 优势函数 A^π——旧策略的优势。 读法其实很直观:沿着新策略实际会走的路,逐步累计「按旧策略的标准,这一步赚了多少」。旧策略的优势是评分标准,新策略决定你走到哪里被评分。 为什么不能换成 A^π̃:那样右边就成了 V(π̃) = V(π) + (关于 π̃ 自己的量),式子会自我指涉,也不再给出任何关于「相对于 π 改进了多少」的信息。
47 / 65
✓A^π 可算旧策略的数据在手✕分布 ~ π̃还没有它的数据✕所以恒等式不可直接估这正是下两集要解决的
恒等式是精确的 —— 但右边那个期望算不出来。
讲解
现在看这个恒等式好不好用。 A^π 是可以算的:它是旧策略的优势,而旧策略的数据你刚刚采过一批。 分布不可算:期望要对 π̃ 走出来的状态取,而 π̃ 是你正在考虑但还没执行的策略。要采它的数据,你就得先真的换过去——可是换不换正是你要决定的事。 这是一个先有鸡还是先有蛋的困境,而它不是近似造成的:恒等式本身完全精确,问题在于右边那个期望没法在决定之前估出来。 第九集给出的解决办法是一个替换,而第八集要先把那个分布是什么说清楚——因为讲座在那里用错了名字。
48 / 65
优势:旧分布:新反了推导就倒过来
指名反驳:优势用旧策略的。这不是可以两边都行的记号选择。
讲解
指名回去:恒等式里的优势是 A^π,旧策略的。学生问的那个「该不该是 π̃」,答案是不该。 把两个下标的分工记清楚:旧策略提供评分标准,新策略决定在哪些地方被评分。 这里还要把 L9 第三集那处记号陷阱再提一次,因为它在这里会造成实际的误解: 第三集里 vanilla PG 用的 Â_t = G_t − b(s_t) 是一个经验估计;而这里的 A^π(s,a) = Q^π(s,a) − V^π(s) 是一个精确量。讲座把它们都写成「advantage」,写在板上也长得一样。 混起来的后果很具体:你会以为这个恒等式可以像第三集那样直接用采样估出来。不能——它的分布来自一个你还没有数据的策略。
49 / 65

知识点 7 · 总结

相对性能恒等式:分布用新策略,优势用旧策略

核心结论

V(π̃) = V(π) + E_{s,a~π̃}[Σ γᵗ A^π(s_t,a_t)]。读法:沿新策略实际会走的路,累计「按旧策略的标准这一步赚了多少」。

底层机制

两个下标分工不同:旧策略提供评分标准,新策略决定在哪里被评分。换成 A^π̃ 会让式子自我指涉。

常见误解

误解:「评价新策略当然用它自己的优势」。课堂上有学生问过,答案是不 —— 反了整个推导就倒过来。

与你的考试

恒等式精确但不可直接估:分布来自一个你还没有数据的策略。另:这里的 A^π 是精确量,不是第三集那个经验的 G−b。

50 / 65

知识点 7 · 检验

相对性能恒等式 V(π̃) = V(π) + E[Σγᵗ A(s,a)] 里,优势函数 A 的上标应该是哪个策略?

知识点 9

8 · 折扣占用测度不是平稳分布,它的和是 1/(1−γ)

51 / 65
∑tγtP(st=s∣π)
上一集那个分布它到底是什么
上一集那个期望是对这个东西取的。先把它的身份弄清楚。
讲解
上一集恒等式里的期望,是对这个量取的:把每个时刻处在状态 s 的概率,按 γ^t 加权,再对所有 t 求和。 讲座全程把它叫作平稳分布,写成 μ_π。 这个名字是错的,而且错得有后果。这一集把它改正——这是整讲里最要命的一处记号问题,因为后面的代理目标和下界都建立在它上面。
52 / 65
它就是平稳分布带个折扣而已
讲座原话是「带折扣的平稳分布」 —— 而它根本不是一个分布。
讲解
讲座的说法是「带折扣的平稳分布」,而且她中途半更正过一次,改口叫「折扣加权分布」,但两个词在后面仍然混用。 这个叫法为什么危险:平稳分布是一个概率分布,它的和是 1(L2 第一集专门讲过它,包括它存在的前提)。 而这里这个量不是概率分布。它的和不是 1。 差多少?下一镜算出来——差的是一个在实践参数下大得离谱的因子。
53 / 65
∑s∑tγtP(st=s)=∑tγt=11−γ
和是 1/(1−γ),不是 1
把它全部加起来:每个 t 的概率和是 1,于是总和是 Σγᵗ = 1/(1−γ)。
讲解
算一下它的总和。先对状态求和:任意固定时刻 t,Σ_s P(s_t=s) = 1(那确实是一个概率分布)。 于是整个量的总和就是 Σ_t γ^t = 1/(1−γ)。 所以它是一个未归一化的量——正确的名字是折扣占用测度(discounted occupancy measure)。要把它变成概率分布,得乘上 (1−γ): d^π(s) = (1−γ)·Σ_t γ^t P(s_t=s|π) 注意 L3 第四集出现过真正的平稳分布 d(s)——那个满足 d(s′)=Σ_sΣ_a d(s)π(a|s)P(s′|s,a),和是 1,而且存在性需要不可约加非周期(L2 第一集)。那是另一个对象,不是这里这个。
54 / 65
γ=0.9γ=0.9910100它的总和(分布应为 1)
γ=0.9 时和是 10,γ=0.99 时是 100 —— 而分布的和该是 1。
讲解
看什么:看两根柱子的高度:它们是这个「分布」的总和。一个概率分布的总和应该是 1,而这里是 10 和 100 —— 柱子本身就是误差的大小。 —— 把差距算出来。γ=0.9 时总和是 10;γ=0.99 时是 100;γ=0.999 时是 1000。 而概率分布的总和是 1。 所以把它当成平稳分布,在 γ=0.99 的标准设定下就是差一百倍。这不是一个可以忽略的措辞问题。 实际后果在哪里:下一集的代理目标 L_π 和 CPI 下界都是对这个测度写的。如果你按「平稳分布」去理解它、去实现它,常数因子就错了——而那个因子恰好又是 1/(1−γ),和这一整门课里反复出现的那个放大系数是同一个。 请把它和前面几处放在一起记:L2 第九集的停机判据 γ/(1−γ)、L5 第五集的 MSVE 界 1/(1−γ)、这里的占用测度 1/(1−γ)。凡是沿时域累加的东西,这个因子就会出现。
55 / 65
✓平稳分布和为 1 · 要不可约非周期✓折扣占用测度和为 1/(1−γ) · 未归一化✕讲座两者混用差一个 1/(1−γ)
指名反驳:它是折扣占用测度,不是平稳分布。两者差 1/(1−γ)。
讲解
指名回去:这个量是折扣占用测度,未归一化,总和 1/(1−γ)。它不是平稳分布。 两者的差别不止在归一化上,还在存在条件上:平稳分布需要链不可约且非周期(L2 第一集那个 A↔B 反例就是反证),而折扣占用测度对任何策略、任何链都有定义——γ<1 保证了那个级数收敛。 所以这不是「同一个东西的两种写法」,是两个不同的对象。 这也是这一讲里我认为最值得带走的一处更正,因为它影响的是你读 TRPO 原文时能不能对上号:那些论文写的是占用测度,而如果你脑子里装的是「平稳分布」,常数和条件都会对不齐。
56 / 65

知识点 8 · 总结

它是折扣占用测度,不是平稳分布

核心结论

Σ_t γᵗP(s_t=s|π) 的总和是 Σγᵗ = 1/(1−γ),不是 1。实测:γ=0.9 → 10;γ=0.99 → 100;γ=0.999 → 1000。

底层机制

归一化版本是 d^π(s)=(1−γ)Σ_t γᵗP(s_t=s|π)。而 L3 第四集那个真正的平稳分布是另一个对象(和为 1)。

常见误解

讲座说法:「带折扣的平稳分布」。它不是分布 —— γ=0.99 时差一百倍。这是整讲最要命的记号问题。

与你的考试

两者存在条件也不同:平稳分布要不可约+非周期(L2 第一集反例),折扣占用测度对任何策略都有定义(γ<1 即收敛)。

57 / 65

知识点 8 · 检验

Σ_t γᵗ P(s_t = s | π) 对所有状态求和,结果是多少?

知识点 10

9 · 代理目标与 CPI 下界:惩罚是 O(α²),但系数是 1/(1−γ)²

58 / 65
恒等式精确但分布来自 π̃还没有它的数据
困境很具体:要评估才能决定换不换,要换了才能评估。
讲解
第七集留下的困境:恒等式精确,但右边的期望要对新策略 π̃ 的占用测度取——而你还没有它的数据。 要评估才能决定换不换,要换了才能评估。 这一集给出破局的办法,它简单得有点像作弊:把分布换成旧策略的。
59 / 65
那就先换过去采一批试试看不就知道了
可以试 —— 但第四集说过,试错的代价是不可逆的。
讲解
最直接的想法是:先把策略换过去,采一批数据,好就留下,不好就换回来。 这在有模拟器、可以随时回滚的场景里确实可行,而且实践中很多人就是这么调的。 但第四集已经说过为什么这不令人满意:一步走坏的代价不只是这一步。你在坏策略上采的那批数据本身就是坏的,它给出的梯度也不可靠——你连「该往哪退」都未必看得清。 而且在真实系统上(机器人、线上推荐、医疗),「先试试」的代价可能根本付不起。 所以我们想要的是:在换过去之前,就能保证不会变差。
60 / 65
Lπ(π~)=V(π)+Es∼π,a∼π~[∑tγtAπ(st,at)]
状态分布换成旧的
代理目标 L_π:只改一处 —— 状态分布用旧策略的,于是可算了。
讲解
代理目标 L_π(π̃) 和真实的 V(π̃) 只差一处:状态从哪个分布来。 真值用 π̃ 的占用测度(不可算);代理目标用 π 的(你刚采过数据,可算)。动作仍然按 π̃ 抽——那一部分可以用重要性采样处理,因为两个策略在同一个状态上都能算概率。 于是 L_π(π̃) 完全可以用旧策略的数据估出来:拿旧数据里的状态,问「如果在这里按新策略选动作,按旧标准能赚多少」。 一个立刻可验证的性质:L_π(π) = V(π)。把 π̃ 换成 π,两个分布重合,代理目标就回到真值。所以它在当前点是精确的——这正是它能当局部替身的理由。
61 / 65
α=0.05α=0.1049.5ε198.0εγ=0.99 时的惩罚系数
CPI 下界的惩罚 2εγα²/(1−γ)²:α 翻倍,惩罚翻四倍。
讲解
看什么:看右边那根是左边的四倍高:α 只翻了一倍(0.05→0.10),惩罚翻了四倍 —— 因为它随 α² 增长。这就是「小步走」在数学上的依据。 —— 换掉分布当然是有代价的,而 Kakade 与 Langford 的保守策略迭代(CPI)下界把这个代价写了出来:对混合策略, V(π̃) ≥ L_π(π̃) − 2εγα²/(1−γ)² 其中 α 是混合系数(走多远),ε 是 max_s |E_{a~π′}A^π(s,a)|——这个 ε 在讲座里从未被定义过,本片按约定补上。 算一下惩罚系数(γ=0.99):α=0.05 时是 49.5ε,α=0.10 时是 198ε。 两件事同时成立,而它们指向同一个结论: 惩罚随 α² 增长——步子小时它是二阶小量,所以小步一定安全。 系数带着 1/(1−γ)²——γ=0.99 时是 10000,所以「小」必须非常小。 按约定标一处字幕:这个分式被转录成「minus 2 epsilon gamma, 1 minus gamma squared alpha squared」,完全读不出原式。
62 / 65
✓L_π 可算用旧数据估✓L_π(π)=V(π)当前点精确✕最后一步讲座推到期中之后下界铺好了,论证没走完
指名反驳:不必先换过去试。但讲座在这里停了。
讲解
指名回去:不需要「先换过去试试」。代理目标 L_π 可以完全用旧数据估出来,而 CPI 下界告诉你这个替换的误差被 α² 控住。 但必须诚实地说清楚讲座停在了哪里。 它铺好了三块:相对性能恒等式(精确但不可算)、代理目标 L_π(可算,且在当前点精确)、CPI 下界(替换的代价是 O(α²))。 而最后那一步——单调地改进这个下界,就单调地改进了真值——她明确说了推到期中考之后,本讲没有讲。那一步正是 TRPO 的全部论证,也是下一讲的内容。 所以这一讲的结尾是一个半成品,而且是讲座自己声明的半成品。知道它停在哪里,比以为它讲完了要好。
63 / 65

知识点 9 · 总结

代理目标:把分布换成旧策略的,于是可算

核心结论

L_π(π̃) 与 V(π̃) 只差一处:状态分布用旧策略的(可算),动作仍按 π̃ 抽。性质:L_π(π) = V(π),在当前点精确。

底层机制

CPI 下界:V(π̃) ≥ L_π(π̃) − 2εγα²/(1−γ)²,其中 ε = max_s |E_{a~π′}A^π(s,a)|(讲座从未定义)。

常见误解

误解:「先换过去采一批试试」。第四集说过试错代价不可逆;而 L_π 可以在换之前用旧数据估。

与你的考试

惩罚随 α²(小步是二阶小量 ⟹ 安全)但系数带 1/(1−γ)²(γ=0.99 时 10000 ⟹ 「小」必须很小)。实测 α=0.05→49.5ε,α=0.10→198ε。讲座在此停止,最后一步推到期中后。

64 / 65

知识点 9 · 检验

代理目标 L_π(π̃) 与真实的 V(π̃) 相比,改动的是哪一处?

知识点 11

完

65 / 65
讲解
回头看这九集,承重的是三件事。 第一,无偏是无条件的,降方差不是。任何只依赖状态的基线都不改变期望——证明六步,最后一步是「对常数 1 求导等于 0」,和 L8 因果性用的是同一条引理。但方差是一条 U 形曲线:实测 b=0 时方差 10201,最优基线(≈平均回报 101)压到 0,而 b=250 时反弹到 22201——比不用基线还差 2.18 倍。好基线降方差,坏基线加方差。 第二,RL 里「走多远」是一个监督学习没有的问题。监督学习的数据集是固定的,一步走坏了下一步还能纠回来;RL 里策略决定数据分布,走坏一步可能把你扔到一个连有用梯度都收集不到的地方。这就是后面整条 TRPO/PPO 路线存在的理由。 第三,代理目标是怎么来的。相对性能恒等式里,优势 A^π 取自旧策略,而状态-动作分布取自新策略——后者不可算。代理目标 L_π 的全部内容就是把分布换成旧策略的,于是变得可算,并且在 π̃=π 处与真值相等。CPI 下界给出这个替换的代价:惩罚是 O(α²),但系数带着 1/(1−γ)²——γ=0.99、α=0.1 时是 198ε。 下一讲把最后一步走完:单调地改进一个下界,就单调地改进了真值——这就是 TRPO 的论证。