第 13 讲:探索 III——MDP 中的高效探索

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

课程源码 ZIP ↓

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

本篇目录

对应:Stanford CS234 Lecture 13–14(Exploration in MDPs / Fast RL) 配套代码:code/lecture13/(只需 numpy) 预计阅读时间:3.5 小时


0. 本讲导航

0.1 本讲要回答的问题

在有状态、有延迟后果的环境里,怎样探索才高效?

前两讲在老虎机中得到了两种有理论保证的探索思路:乐观(UCB)和后验采样(汤普森采样)。老虎机的特点是:每个臂都可以直接拉,探索的代价只是”这一步拿少了”。

MDP 中,事情难得多:

  • 有些状态只有经过一长串特定的动作才能到达。要知道”那边好不好”,得先有计划地走过去;
  • 奖励可能在很多步之后才出现,前面的每一步都”看起来没用”;
  • 需要学的不是 KK 个数,而是整个转移与奖励模型。

这一讲回答:ε-贪心在 MDP 中为什么会彻底失败?怎样把乐观和后验采样推广到 MDP?“学得快”在 MDP 中怎么定义?

0.2 学完本讲,你应该能够

  1. 用 RiverSwim 的例子解释:为什么”每一步独立地随机”的探索需要指数时间。
  2. 定义回合制 MDP 的遗憾与 PAC-MDP 样本复杂度。
  3. 描述 R-max 和 MBIE-EB,解释”乐观 + 规划 = 深度探索”。
  4. 描述 PSRL(后验采样强化学习),说明它与汤普森采样的关系。
  5. 解释无模型的计数探索奖励,以及深度 RL 中的探索方法(伪计数、RND、好奇心、Bootstrapped DQN)。
  6. 根据问题的规模与结构,判断不同探索方法的优劣。

0.3 先修知识

知识点用在哪里最低要求
第 2 讲:动态规划、有限视界的价值迭代全讲必须
第 3 讲:确定性等价(用数据估计模型)第 1、3 节必须
第 4 讲:Q-learning、ε-贪心第 1、5 节必须
第 11 讲:遗憾、UCB第 2、3 节必须
第 12 讲:汤普森采样、Beta 后验第 4 节必须
Dirichlet 分布第 4 节本讲会介绍

0.4 本讲地图

第1节 为什么难:RiverSwim;随机探索的指数时间;朴素算法的失败
   │
第2节 怎样衡量:遗憾与 PAC-MDP
   │
第3节 乐观:R-max、MBIE-EB;乐观 + 规划 = 深度探索
   │
第4节 后验采样:PSRL
   │
第5节 无模型与深度 RL 中的探索
   │
第6节 比较与规模

1. 为什么在 MDP 中探索更难

1.1 RiverSwim

RiverSwim(Strehl & Littman, 2008)是研究探索的经典例子。代码 riverswim.py 实现了它的有限视界回合制版本:

    [0] ─ [1] ─ [2] ─ [3] ─ [4] ─ [5]
    岸边                           上游
    小奖励 0.005                   大奖励 1
  • 每个回合从岸边(状态 0)出发,走 H=20H = 20 步。
  • 向左(顺流):一定成功。在状态 0 向左,得到小奖励 0.005。
  • 向右(逆流):水流很急,在中间的状态只有 0.35 的概率前进,0.6 原地不动,0.05 被冲回。在上游(状态 5)向右,得到大奖励 1。
  • 奖励是 0/1 随机的(以上面的概率为成功率),智能体需要多次尝试才知道。

代码 01_why_exploration_is_hard.py 演示 1:

  • 最优价值 V∗=3.064V^* = 3.064。最优策略是一路向右逆流而上:前十几步没有任何奖励,但到达上游后每步都能拿 1。
  • 快结束时(从第 14 步开始),离上游太远的状态已经来不及游过去了,最优策略改为向左拿岸边的小奖励——有限视界下,最优策略会随剩余时间变化。
  • “一直向左”的价值只有 0.100(最优的 3%),但它的奖励来得最快、最容易被发现;完全随机的价值只有 0.045。

1.2 随机探索需要指数时间

从岸边出发,期望要走多少步才能第一次到达上游?这个”期望到达时间”满足一个线性方程组(T(上游)=0T(\text{上游}) = 0,T(s)=1+∑s′Pπ(s′∣s)T(s′)T(s) = 1 + \sum_{s'} P_\pi(s' \mid s) T(s')),可以精确求解(演示 2):

链长 NN一直向右完全随机ε-贪心(ε=0.3\varepsilon=0.3,贪心=向左)ε-贪心(ε=0.1\varepsilon=0.1)
49.0945.1×1035.1\times10^31.5×1051.5\times10^5
615.79361.4×1061.4\times10^64.6×1084.6\times10^8
822.48.6×1038.6\times10^33.6×1083.6\times10^81.4×10121.4\times10^{12}
1029.07.7×1047.7\times10^49.7×10109.7\times10^{10}3.7×10153.7\times10^{15}
  • 有目的地走(一直向右):到达时间随 NN 线性增长。
  • 随机地走:指数增长。在中间的状态,随机选动作时每步前进的概率 0.5×0.35=0.1750.5 \times 0.35 = 0.175,后退的概率 0.5+0.5×0.05=0.5250.5 + 0.5 \times 0.05 = 0.525——后退是前进的 3 倍。每多 2 个状态,时间约乘以 32=93^2 = 9。
  • ε-贪心更糟:岸边的小奖励最先被发现,贪心动作变成”向左”,向右的概率只剩 ε/2\varepsilon/2。N=10N = 10、ε=0.1\varepsilon = 0.1 时要 3.7×10153.7 \times 10^{15} 步——即使每秒走一百万步,也要一百多年。

这就是 MDP 中探索的核心困难:需要连续做对很多步才能发现的东西,“每一步独立地随机”的探索几乎不可能发现。 老虎机里不存在这个问题——每个臂都可以直接拉。

这类问题在实际中很常见:迷宫深处的出口、需要一系列正确操作才能打开的门、游戏中藏在很远处的关键道具(比如著名的 Atari 游戏 Montezuma’s Revenge,早期的 DQN 在这个游戏中几乎一分都拿不到)。

1.3 朴素算法的失败

演示 3(2000 个回合,20 个随机种子):

算法累积遗憾(100 / 500 / 2000 回合)最后 100 回合每回合遗憾从没到过上游的种子
确定性等价(贪心地用估计的模型)273.7 / 1281.7 / 5061.52.52070%
确定性等价 + ε-贪心(ε=0.1\varepsilon = 0.1)275.8 / 1303.1 / 5155.42.56875%
确定性等价 + ε-贪心(ε=0.3\varepsilon = 0.3)281.1 / 1377.5 / 5489.02.74160%
Q-learning + ε-贪心(ε=0.1\varepsilon = 0.1)301.5 / 1507.3 / 6037.03.02310%
Q-learning + ε-贪心(ε=0.3\varepsilon = 0.3)301.4 / 1506.0 / 6043.13.0270%

所有这些算法的遗憾都线性增长,最后每个回合的遗憾接近 V∗=3.06V^* = 3.06——它们学到的基本上是”守着岸边”。

  1. 确定性等价:没见过的 (s,a)(s, a) 被当作”原地不动、没有奖励”,所以它从不主动去尝试——和老虎机中的贪心一样。
  2. ε-贪心几乎没用:它的随机性是”每一步独立”的,没法把智能体送到很远的地方。
  3. 最值得注意的:Q-learning + ε-贪心(ε=0.3\varepsilon = 0.3)的所有种子都到达过上游,却全都没学会!偶尔到达一两次,留下的数据太少(比如只知道”在上游向右拿到了 1”,却不知道怎样可靠地游过去),估计出的 Q 值仍然认为”游过去不值得”,于是再也不去了。

探索需要持续、有计划,而不是碰运气。


2. 怎样衡量 MDP 中的探索效率

2.1 回合制 MDP 的遗憾

在第 kk 个回合,算法执行策略 πk\pi_k。遗憾为

Regret(K)=∑k=1K(V∗(s0)−Vπk(s0))\mathrm{Regret}(K) = \sum_{k=1}^K \left( V^*(s_0) - V^{\pi_k}(s_0) \right)

和老虎机一样:线性增长 = 没学会;次线性增长 = 最终学会了。代码中,基于模型的算法在一个回合内策略固定,VπkV^{\pi_k} 可以用动态规划精确计算。

2.2 PAC-MDP:样本复杂度

另一种衡量方式来自”可能近似正确”(PAC)学习理论:

一个算法是 PAC-MDP 的,如果对任意 ε,δ>0\varepsilon, \delta > 0,以至少 1−δ1 - \delta 的概率,它执行的策略不是 ε\varepsilon-最优的时间步数不超过一个关于 (S,A,H 或 11−γ,1ε,log⁡1δ)(S, A, H \text{ 或 } \tfrac{1}{1-\gamma}, \tfrac1\varepsilon, \log\tfrac1\delta) 的多项式。

这个数叫样本复杂度:算法”犯错”(不够好)的次数。PAC 关心”犯错的次数”,遗憾关心”犯错的总代价”,两者密切相关。

RiverSwim 说明了为什么这个定义有意义:ε-贪心的样本复杂度随 NN 指数增长,不是 PAC-MDP 的;下面的 R-max、MBIE-EB 是 PAC-MDP 的。

2.3 理论结果一览(了解即可)

算法类型保证
E³(Kearns & Singh, 2002)基于模型第一个多项式样本复杂度的算法
R-max(Brafman & Tennenholtz, 2002)基于模型,乐观PAC-MDP
MBIE / MBIE-EB(Strehl & Littman, 2008)基于模型,乐观PAC-MDP
UCRL2(Jaksch, Ortner & Auer, 2010)基于模型,乐观遗憾 O~(DSAT)\tilde O(DS\sqrt{AT})(DD 为 MDP 的”直径”)
PSRL(Osband, Russo & Van Roy, 2013)后验采样贝叶斯遗憾 O~(HSAT)\tilde O(HS\sqrt{AT})
UCBVI(Azar, Osband & Munos, 2017)基于模型,乐观遗憾 O~(HSAT)\tilde O(\sqrt{HSAT}),与下界只差对数因子
UCB-Q(Jin, Allen-Zhu, Bubeck & Jordan, 2018)无模型,乐观遗憾 O~(H3SAT)\tilde O(\sqrt{H^3SAT})

(TT 为总步数,O~\tilde O 忽略对数因子。)共同点:都依赖乐观或后验采样;都是 SS、AA、HH 的多项式。


3. 乐观:R-max 与 MBIE-EB

3.1 从 UCB 到 MDP

UCB:给每个臂的估计加一个”不确定性奖励”,然后贪心。直接推广到 MDP:

给每个 (s,a)(s, a) 的奖励加一个不确定性奖励,然后在这个”乐观的 MDP”上做规划,按规划出的策略行动。

关键的区别在于规划。乐观的奖励加在 (s,a)(s, a) 上之后,通过动态规划沿着转移传播回去:离未知区域越近的状态、通往未知区域的动作,价值越高。于是智能体会有计划地、连续多步地走向未知区域——哪怕路上每一步本身都没有奖励。这叫深度探索(deep exploration),是 ε-贪心做不到的。

3.2 R-max

R-max(Brafman & Tennenholtz, 2002):

  • 被访问少于 mm 次的 (s,a)(s, a) 是”未知的”:乐观地假设在那里每一步都能拿到最大奖励 Rmax⁡R_{\max};
  • 其余 (s,a)(s, a) 是”已知的”:用经验模型;
  • 在这个模型上规划,执行最优策略。

为什么有效?——“要么探索,要么利用”引理:在乐观的模型下规划出的策略,在真实 MDP 中只有两种可能:

  1. 它以不小的概率到达某个未知的 (s,a)(s, a) → 这是探索,而未知的 (s,a)(s, a) 只有有限个(SASA 个),每个最多需要 mm 次就变成已知,所以这种情况总共只会发生有限次;
  2. 它几乎不到达未知的 (s,a)(s, a) → 它在乐观模型和真实 MDP 中的价值几乎相同。而乐观模型中的价值 ≥\ge 真实的 V∗V^*(乐观!),所以这个策略在真实 MDP 中也接近最优——这是利用。

两种情况都不亏。这和 UCB 的论证(第 11 讲 5.1 节)如出一辙。

3.3 MBIE-EB

MBIE-EB(Model-Based Interval Estimation with Exploration Bonus,Strehl & Littman, 2008):用经验模型,但奖励加上探索奖励:

R~(s,a)=R^(s,a)+βN(s,a)\tilde R(s, a) = \hat R(s, a) + \frac{\beta}{\sqrt{N(s, a)}}

在 (P^,R~)(\hat P, \tilde R) 上规划,执行最优策略。(代码中,没见过的 (s,a)(s, a) 直接取最大可能的价值。)

这是 UCB 的直接推广:β/N\beta/\sqrt{N} 就是置信区间的宽度。与 R-max 的”已知/未知”硬门槛不同,MBIE-EB 的乐观随 NN 平滑地减小。

3.4 实验:深度探索

代码 02_optimism_rmax_mbie.py 演示 1:前 15 个回合中,每个回合到达过的最右边的状态(上游是 5):

确定性等价 + ε-贪心(ε = 0.3)  1 1 2 1 3 1 1 2 1 2 2 1 2 2 4
Q-learning + ε-贪心(ε = 0.3)  1 2 3 2 1 1 1 1 2 1 2 2 1 2 1
R-max(m = 20)                 1 1 3 2 3 3 5 3 5 3 3 2 4 3 4
MBIE-EB(β = 0.3)              1 2 3 1 5 5 5 5 5 5 5 5 5 4 5
  • ε-贪心在岸边附近打转。
  • 最初一两个回合,R-max 和 MBIE-EB 也只到了状态 1:什么都没见过时,所有动作的乐观价值都一样,行为和随机差不多。但岸边附近一旦被试过,乐观就把它们推向上游。MBIE-EB 从第 5 个回合起几乎每个回合都到达上游——连续很多步坚持向右。
  • R-max(m=20m = 20)要把每个 (s,a)(s, a) 都试够 20 次,会系统地来回试探。

3.5 实验:乐观如何传播

演示 2:MBIE-EB(β=0.3\beta = 0.3)在第 h=0h = 0 步各状态的乐观价值(真实的 V∗V^* 为 3.06、4.01、5.30、6.68、8.09、9.52):

回合Vopt(0)V_{\mathrm{opt}}(0)(1)(1)(2)(2)(3)(3)(4)(4)(5)(5)没见过的 (s,a)(s,a)
020.0020.0020.0020.0020.0020.0012
13.033.1520.0020.0020.0020.008
33.473.714.014.214.2920.002
105.055.907.268.479.5610.650
304.585.506.828.269.5711.000
1003.113.934.996.277.589.030
3003.194.095.266.657.999.480
  1. 一开始,所有状态的乐观价值都是最大可能值 20。
  2. 第 1 个回合之后,起点的乐观价值只有 3.03,甚至低于真实的 V∗V^*! 原因:智能体在状态 1 试了两次”向右”,一次被冲回、一次原地不动,经验模型于是认为”从状态 1 游不过去”,上游的乐观价值传不回起点。但 MBIE-EB 给只试过两次的(状态 1,向右)加了不小的探索奖励,它仍然有吸引力——下一个回合智能体继续尝试,游了过去,错误的模型被纠正。第 10 个回合时起点的乐观价值达到 5.05,高于真实值:乐观重新发挥作用。
  3. 数据越来越多,探索奖励越来越小,乐观价值降到真实的 V∗V^* 附近——乐观被数据”消耗掉”之后,剩下的就是正确的估计。

第 2 点揭示了一个微妙的问题:乐观只加在奖励上,而转移概率用的是经验估计。如果转移的估计错得离谱(“游不过去”),乐观的奖励就传不到它该去的地方。MBIE-EB 靠”试得少的 (s,a)(s, a) 总还带着一点乐观”来纠正这种错误;完整的 MBIE 和 UCRL2 则对转移概率也构造置信区间,在其中选最乐观的转移。

3.6 实验:参数的影响

演示 3(2000 个回合,20 个种子):

算法累积遗憾(100 / 500 / 2000 回合)最后 100 回合每回合遗憾从没到过上游
确定性等价(对照)273.7 / 1281.7 / 5061.52.52070%
R-max,m=1m = 1162.9 / 756.0 / 2979.71.48250%
R-max,m=2m = 2118.4 / 533.6 / 2090.51.03835%
R-max,m=5m = 546.2 / 105.7 / 328.80.1495%
R-max,m=20m = 20113.0 / 113.2 / 113.80.0000%
R-max,m=50m = 50258.4 / 271.7 / 272.30.0000%
MBIE-EB,β=0.01\beta = 0.0126.3 / 85.6 / 308.10.1485%
MBIE-EB,β=0.03\beta = 0.0312.8 / 12.9 / 13.10.0000%
MBIE-EB,β=0.1\beta = 0.112.4 / 12.5 / 12.70.0000%
MBIE-EB,β=0.3\beta = 0.313.0 / 13.3 / 13.80.0000%
MBIE-EB,β=1\beta = 119.6 / 26.4 / 31.60.0020%
MBIE-EB,β=3\beta = 367.9 / 89.7 / 121.10.0180%
  1. R-max 的 mm 太小(1、2):试一两次就把 (s,a)(s, a) 当作”已知”,而一两次的转移数据可能错得离谱(正是 3.5 节的”游不过去”)。此后 R-max 把这个错误模型当真,再也不去验证——35%~50% 的种子从没到过上游。
  2. R-max 的 mm 大(20、50):从不失败,但要把每个 (s,a)(s, a) 都试够 mm 次,前期遗憾大;一旦全部”已知”,之后遗憾恰好是 0(完全转为利用)。
  3. MBIE-EB 对 β\beta 不敏感得多:β\beta 从 0.03 到 0.3,累积遗憾都在 13 左右——比确定性等价小两个数量级以上。
  4. 又一次看到”理论 vs 实践”:理论分析需要的 mm、β\beta 都大得多(为了高概率保证),实践中小得多的值效果更好。

4. 后验采样:PSRL

4.1 算法

第 12 讲的汤普森采样:“从后验中抽一个可能的世界,在其中做最优的选择”。推广到 MDP:

PSRL(Posterior Sampling for Reinforcement Learning,Strens 2000;Osband, Russo & Van Roy, 2013)

每个回合开始时:

  1. 从后验中抽一个 MDP:M~k∼p(M∣D)\tilde M_k \sim p(M \mid \mathcal{D})
  2. 求 M~k\tilde M_k 的最优策略 πk\pi_k
  3. 按 πk\pi_k 走完整个回合,把数据加入 D\mathcal{D}

后验:转移概率 P(⋅∣s,a)P(\cdot \mid s, a) 是一个”在 SS 个下一状态上的概率分布”,它的共轭先验是 Dirichlet 分布——Beta 分布的多维推广。先验 Dir(α1,…,αS)\mathrm{Dir}(\alpha_1, \dots, \alpha_S) + 观察到转移计数 (n1,…,nS)(n_1, \dots, n_S) → 后验 Dir(α1+n1,…,αS+nS)\mathrm{Dir}(\alpha_1 + n_1, \dots, \alpha_S + n_S)。和 Beta 一样,更新只需要加法。奖励(0/1)仍然用 Beta 后验。

为什么每个回合只抽一次? 如果每一步都重新抽样,智能体这一步想”游向上游”,下一步可能又想”回岸边”,前后矛盾——又回到了 ε-贪心式的”每一步独立地随机”。整个回合坚持同一个样本的策略,才能实现深度探索:如果样本说”上游很好”,智能体就会坚持游过去,验证这个假设。

4.2 实验:一次运行的细节

代码 03_psrl_and_scaling.py 演示 1 记录了 PSRL 前 12 个回合(部分):

回合抽到的 MDP 认为能拿到的价值这个策略在真实 MDP 中的价值样本中”状态 3 向右前进”的概率本回合到达的最右状态
111.250.0000.462
27.830.1000.150
310.680.0000.341
⋮
93.893.0570.155
103.940.0000.334
  • 一开始后验很宽,抽到的 MDP 往往认为能拿到很高的价值,但真实价值几乎为 0。原因是先验 Dir(1,…,1)\mathrm{Dir}(1, \dots, 1):没见过的 (s,a)(s, a) 在样本中可以”一步跳到任何地方”,包括直接跳到上游——抽到的策略去尝试这些想象中的”捷径”,试一次就发现不行,后验就排除了一个错误的可能。
  • 样本中”状态 3 向右前进”的概率从 0.01 到 0.46 不等(真实值 0.35)——后验的宽窄就是不确定性。
  • 第 9 个回合,样本对上游足够乐观,智能体坚持这个样本的策略一路游到了上游,这个策略几乎就是最优的(3.057)。

4.3 PSRL 与乐观的比较

乐观(R-max、MBIE-EB)后验采样(PSRL)
探索的来源确定性的乐观奖励后验的随机性
需要调的参数mm 或 β\beta先验
计算每个回合一次规划每个回合一次抽样 + 一次规划
理论保证频率学派(高概率)贝叶斯遗憾
优点可控、可解释不需要设计置信区间;自然地利用先验知识和问题结构

Osband & Van Roy (2017) 论证了后验采样在很多情况下比乐观更高效:乐观算法必须对每一个 (s,a)(s, a) 同时保持乐观(置信区间要”同时成立”),而后验采样只需要抽出的样本”整体上合理”。


5. 无模型与深度 RL 中的探索

5.1 无模型的计数奖励

基于模型的方法需要估计 P^\hat P,在大规模问题中不现实。能不能直接在 Q-learning 中加探索奖励?

Q-learning + 计数奖励(Jin et al., 2018 的 UCB-Q 的简化版):

  • 乐观地初始化 Qh(s,a)=H−hQ_h(s, a) = H - h(最大可能值);
  • 更新目标加上探索奖励:Qh(s,a)←(1−αn)Qh(s,a)+αn(r+cn+max⁡a′Qh+1(s′,a′))Q_h(s,a) \leftarrow (1 - \alpha_n) Q_h(s,a) + \alpha_n\left( r + \frac{c}{\sqrt{n}} + \max_{a'} Q_{h+1}(s', a') \right),学习率 αn=H+1H+n\alpha_n = \frac{H+1}{H+n},n=Nh(s,a)n = N_h(s, a)。

演示 2(2000 个回合,20 个种子):

算法累积遗憾(100 / 500 / 2000 回合)最后 100 回合每回合遗憾
确定性等价 + ε-贪心(ε=0.1\varepsilon = 0.1)275.8 / 1303.1 / 5155.42.568
Q-learning + ε-贪心(ε=0.1\varepsilon = 0.1)301.5 / 1507.3 / 6037.03.023
Q-learning + 计数奖励(c=0.3c = 0.3)282.5 / 597.6 / 659.10.061
Q-learning + 计数奖励(c=1c = 1)289.2 / 793.2 / 1051.10.132
R-max(m=20m = 20)113.0 / 113.2 / 113.80.000
MBIE-EB(β=0.1\beta = 0.1)12.4 / 12.5 / 12.70.000
PSRL76.0 / 81.8 / 84.20.000
  • 无模型的计数奖励能学会(最后每回合遗憾接近 0),但比基于模型的方法慢得多:它没有模型,乐观只能通过一次次的 Q 更新慢慢传播回去;基于模型的方法每个回合都做一次完整的规划,一次就把新信息传播到所有状态。这又一次体现了第 3 讲、第 5 讲讨论过的”基于模型 vs 无模型”的样本效率差距(第 15 讲还会继续)。
  • 乐观初始化是必不可少的(练习 5):去掉它,这个算法的遗憾和 ε-贪心一样。

5.2 深度 RL 中的探索

在 Atari、机器人等大规模问题中,状态几乎不会重复出现,“计数”失去了意义。几类主要的思路:

  1. 伪计数(pseudo-count)(Bellemare et al., 2016):用一个密度模型估计”这个状态有多新”,把它转换成一个”等效的计数”,再用 β/N^(s)\beta/\sqrt{\hat N(s)} 作为探索奖励。它第一次在 Montezuma’s Revenge 中取得了实质性的进展。
  2. 随机网络蒸馏(RND)(Burda et al., 2018):随机初始化一个固定的”目标网络”,训练另一个网络去预测它的输出。在见过很多次的状态上,预测很准;在新状态上,预测误差大——预测误差就是”新颖程度”,用作探索奖励。
  3. 好奇心 / 内在动机(Pathak et al., 2017):训练一个模型预测”做了动作 aa 之后状态会怎样变化”,预测误差作为奖励——“对自己预测不了的东西感到好奇”。
    • 一个著名的陷阱是”嘈杂的电视”问题:如果环境中有一台播放随机噪声的电视,它永远无法被预测,好奇的智能体会一直盯着它看。这说明”预测误差”混淆了两种不确定性:可以通过学习减少的(认知不确定性,这才值得探索)和本身就是随机的(偶然不确定性,探索也没用)。计数和后验方法天然只针对前者。
  4. Bootstrapped DQN(Osband et al., 2016):训练多个 Q 网络的”集成”,每个在数据的不同子集上训练;每个回合随机选一个网络,按它贪心地行动一整个回合——这就是 PSRL 在深度 RL 中的近似,每个网络相当于一个”后验样本”。
  5. 噪声网络(NoisyNet)、参数空间噪声:在网络参数上加噪声,同样是”一个回合内保持一致”的随机性。

这些方法的共同思路,正是本讲的两大原则:对不确定的地方保持乐观(1、2、3)和从后验中采样、坚持一个回合(4、5)。


6. 比较与规模

6.1 链越长会怎样?

演示 3:链长 NN 从 6 到 12(视界 H=4NH = 4N),1000 个回合的累积遗憾(10 个种子;* 表示有种子从没到过上游):

算法N=6N = 6N=8N = 8N=10N = 10N=12N = 12
V∗V^*4.635.275.896.50
确定性等价 + ε-贪心3904.2*5125.4*5709.7*6282.0*
Q-learning + 计数奖励931.62004.03431.34947.2
R-max(m=20m = 20)132.9170.2218.7246.9
MBIE-EB(β=0.1\beta = 0.1)18.326.633.344.2
MBIE-EB(β=1\beta = 1)37.751.975.194.5
PSRL101.4204.5355.9576.3
  1. ε-贪心:N≥8N \ge 8 时所有种子都从没到过上游——遗憾就是”一直守着岸边”。
  2. R-max、MBIE-EB:遗憾随 NN 大致线性增长,始终能学会——对应”样本复杂度是多项式”。
  3. PSRL 的遗憾随 NN 增长得更快。一个重要原因是先验:Dir(1,…,1)\mathrm{Dir}(1, \dots, 1) 认为”转移到任何状态都同样可能”,状态越多,这个先验越分散,样本中经常出现”一步跳到上游”这样离谱的转移(4.2 节),需要更多数据才能排除。换成只允许转移到相邻状态的稀疏先验后,PSRL 的遗憾在 N=6N = 6 时从 101 降到 42,在 N=12N = 12 时从 576 降到 137(练习 6)。另外,MBIE-EB 的 β=0.1\beta = 0.1 是在 N=6N = 6 上挑出来的,这个比较对 PSRL 并不完全公平。
  4. 无模型的计数奖励能学会,但随 NN 增长明显变慢。

6.2 怎样选择?

  • 小规模、可以建模的问题(比如教育、医疗中的离散决策):基于模型的乐观方法或 PSRL,样本效率最高。
  • 有好的先验知识:PSRL 能自然地利用它(先验选得好,效果显著)。
  • 大规模问题:需要函数逼近;探索奖励(伪计数、RND)或近似后验采样(Bootstrapped DQN)。
  • 不管用什么:ε-贪心只适合”随便试试就能发现好东西”的问题。对于需要深度探索的问题,它会失败。

7. 本讲总结

7.1 核心概念清单

  1. MDP 中探索更难:需要连续做对很多步才能发现的东西,“每一步独立地随机”的探索需要指数时间。
  2. “到达过”不等于”学会了”:偶尔碰到一次,数据太少,估计仍然认为不值得——探索需要持续。
  3. 遗憾 ∑k(V∗−Vπk)\sum_k (V^* - V^{\pi_k}) 与 PAC-MDP 样本复杂度(非 ε-最优的步数是多项式)。
  4. 乐观 + 规划 = 深度探索:乐观的奖励通过动态规划传播,把智能体有计划地拉向未知区域。
  5. R-max:未知的 (s,a)(s, a)(访问少于 mm 次)假设最大奖励;“要么探索,要么利用”;mm 太小会被错误模型困住。
  6. MBIE-EB:奖励 + β/N(s,a)\beta/\sqrt{N(s,a)},UCB 的直接推广;对参数不敏感。
  7. PSRL:每个回合从后验抽一个 MDP,执行它的最优策略一整个回合;Dirichlet 后验;先验很重要。
  8. 无模型的计数奖励:必须配合乐观初始化;比基于模型的方法慢。
  9. 深度 RL 的探索:伪计数、RND、好奇心(注意”嘈杂的电视”)、Bootstrapped DQN。

7.2 公式速查表

名称公式
回合制遗憾Regret(K)=∑k=1K(V∗(s0)−Vπk(s0))\mathrm{Regret}(K) = \sum_{k=1}^K (V^*(s_0) - V^{\pi_k}(s_0))
期望到达时间T(g)=0T(g) = 0,T(s)=1+∑s′Pπ(s′∣s)T(s′)T(s) = 1 + \sum_{s'} P_\pi(s' \mid s) T(s')
有限视界动态规划Qh(s,a)=R(s,a)+∑s′P(s′∣s,a)max⁡a′Qh+1(s′,a′)Q_h(s,a) = R(s,a) + \sum_{s'} P(s' \mid s,a) \max_{a'} Q_{h+1}(s',a')
R-maxN(s,a)<m⇒Qh(s,a)=(H−h)Rmax⁡N(s,a) < m \Rightarrow Q_h(s,a) = (H - h) R_{\max}
MBIE-EBR~(s,a)=R^(s,a)+β/N(s,a)\tilde R(s,a) = \hat R(s,a) + \beta/\sqrt{N(s,a)}
Dirichlet 后验Dir(α)+计数 n→Dir(α+n)\mathrm{Dir}(\alpha) + \text{计数 } n \to \mathrm{Dir}(\alpha + n)
PSRLM~k∼p(M∣D)\tilde M_k \sim p(M \mid \mathcal{D}),πk=πM~k∗\pi_k = \pi^*_{\tilde M_k}
计数奖励 Q-learningQ←(1−αn)Q+αn(r+c/n+max⁡Q′)Q \leftarrow (1-\alpha_n)Q + \alpha_n(r + c/\sqrt n + \max Q'),αn=H+1H+n\alpha_n = \frac{H+1}{H+n}

7.3 中英术语对照表

中文英文中文英文
深度探索Deep exploration期望到达时间Expected hitting time
样本复杂度Sample complexityPAC-MDPProbably Approximately Correct in MDPs
确定性等价Certainty equivalence探索奖励Exploration bonus
已知/未知状态-动作对Known / unknown state-action pairs要么探索要么利用Explore or exploit
后验采样强化学习Posterior Sampling for RL (PSRL)Dirichlet 分布Dirichlet distribution
伪计数Pseudo-count随机网络蒸馏Random Network Distillation (RND)
内在动机 / 好奇心Intrinsic motivation / curiosity嘈杂的电视问题Noisy-TV problem
认知不确定性Epistemic uncertainty偶然不确定性Aleatoric uncertainty
自助法 DQNBootstrapped DQN噪声网络NoisyNet

8. 练习题

练习 1(到达时间):把 RiverSwim 中间状态”向右”的成功率从 0.35 改成 0.5(原地不动 0.45,被冲回 0.05)。完全随机地走,到达上游的期望时间还随 NN 指数增长吗?每多一个状态大约乘以多少?

参考答案

随机选动作时,每步前进的概率 0.5×0.5=0.250.5 \times 0.5 = 0.25,后退的概率 0.5+0.5×0.05=0.5250.5 + 0.5 \times 0.05 = 0.525,后退仍是前进的 2.1 倍,所以仍然是指数增长,每多一个状态约乘以 2.1。实测(用代码 01 的 hitting_time):N=4,6,8,10N = 4, 6, 8, 10 时分别为 54、295、1381、6196 步,每多 2 个状态约乘以 4.5 ≈ 2.122.1^2。只要”随机游走偏向远离目标的方向”,到达时间就是指数的。

练习 2(遗憾与 PAC):一个算法在前 1000 个回合每个回合都有 1 的遗憾,之后遗憾为 0。另一个算法每个回合都有 1/k1/\sqrt k 的遗憾。K=106K = 10^6 时,谁的累积遗憾更小?谁的”样本复杂度”(遗憾大于 0.01 的回合数)更小?

参考答案

第一个:累积遗憾 1000,样本复杂度 1000。第二个:∑k=1106k−1/2≈2106=2000\sum_{k=1}^{10^6} k^{-1/2} \approx 2\sqrt{10^6} = 2000;遗憾大于 0.01 意味着 k<104k < 10^4,样本复杂度 10410^4。第一个在两个指标上都更好。但如果 KK 只有 10310^3,第二个的累积遗憾(约 62)远小于第一个(1000)。两个指标衡量的角度不同:PAC 关心”犯错多少次”,遗憾关心”犯错的总代价”。

练习 3(R-max 的失败):解释为什么 R-max 在 m=1m = 1 时有一半的种子从没到过上游,而 MBIE-EB 在 β=0.1\beta = 0.1 时从不失败。两者的根本区别是什么?

参考答案

m=1m = 1 时,每个 (s,a)(s, a) 试一次就变成”已知”,之后完全相信经验模型。在状态 1 向右只试一次,有 0.65 的概率没能前进(原地不动或被冲回),经验模型就认为”从状态 1 游不过去”;上游的 (s,a)(s, a) 虽然仍是未知的(乐观的),但模型认为到不了,乐观传播不过去,R-max 从此只在岸边利用。MBIE-EB 没有”已知”的硬门槛:试得少的 (s,a)(s, a) 的探索奖励 β/N\beta/\sqrt N 仍然不小,状态 1 的”向右”本身就显得有吸引力,智能体会继续尝试,直到数据纠正错误的转移估计(3.5 节演示 2 正好记录了这个过程)。根本区别:R-max 在”已知”之后完全放弃乐观,MBIE-EB 的乐观随数据平滑地减少。

练习 4(PSRL 的抽样频率):如果 PSRL 在每一步(而不是每个回合)重新从后验中抽一个 MDP 并按其最优策略选动作,会发生什么?

参考答案

智能体会失去”一致性”:这一步抽到的样本认为上游很好,于是向右;下一步抽到的样本认为岸边更好,于是向左。行为变成了”每一步独立地随机”,与 ε-贪心类似,无法连续很多步地走向上游,深度探索的能力就丧失了。PSRL 的关键之一,正是在一个回合内坚持同一个假设,直到获得足够的证据验证或否定它。这与 Bootstrapped DQN “每个回合选一个网络”的设计是同一个道理。

练习 5(动手)★:在 agents.py 中去掉”Q-learning + 计数奖励”的乐观初始化(把 Q 初始化为 0),在 N=6N = 6 上运行 2000 个回合。它还能学会吗?为什么?

参考答案

实测(20 个种子):累积遗憾在第 100、500、2000 回合分别为 301.5、1507.8、6032.0,和 ε-贪心 Q-learning 几乎一样——完全学不会(有乐观初始化时是 282.5、597.6、659.1)。原因:探索奖励 c/nc/\sqrt n 只加在被访问过的 (s,a)(s, a) 上。没访问过的 (s,a)(s, a) 的 Q 值停在 0,而访问过的因为加了奖励反而显得更好——这恰好与探索的方向相反,智能体会反复选择已经试过的动作。在 UCB 中,没拉过的臂的上界是 +∞+\infty;在这里,乐观初始化扮演的正是”没试过 = 最乐观”的角色。探索奖励负责”试得少的要多试”,乐观初始化负责”没试过的一定要试”,缺一不可。

练习 6(动手)★:给 PSRL 换一个稀疏的先验:从状态 ss 出发只允许转移到 {s−1,s,s+1}\{s-1, s, s+1\}(这些位置的 Dirichlet 参数为 1,其余为 0.01)。N=6N = 6 和 N=12N = 12(H=4NH = 4N,1000 个回合)时遗憾分别是多少?这说明了什么?

参考答案

实测(10 个种子):N=6N = 6 时从 101.4 降到 42.3,N=12N = 12 时从 576.3 降到 137.0。稀疏先验排除了”一步跳到任何地方”这类不可能的转移,抽到的 MDP 不再去追逐想象中的捷径,探索集中在真正不确定的地方。这说明:PSRL 的效率很大程度上取决于先验是否反映了问题的结构。这既是它的优势(可以利用领域知识),也是它的风险(先验错了会误导探索,第 12 讲 5.1 节)。

练习 7(思考题):用”认知不确定性”和”偶然不确定性”解释”嘈杂的电视”问题。为什么基于计数的探索奖励不会被嘈杂的电视吸引?

参考答案

认知不确定性来自”数据不够”,可以通过收集更多数据来减少;偶然不确定性来自环境本身的随机性,无论收集多少数据都无法减少。好奇心用”预测误差”作为奖励,而随机噪声的预测误差永远很大(偶然不确定性),所以智能体会一直盯着电视。基于计数的奖励 β/N(s)\beta/\sqrt{N(s)} 只取决于访问次数:电视前的状态访问得越多,奖励越小,最终降到 0——它只衡量认知不确定性。(在大规模问题中,“电视画面”每次都不一样,如果把每一帧当作不同的状态来计数,同样会出问题;所以伪计数的质量取决于密度模型能否把”本质上相同”的状态归为一类。)


9. 延伸阅读

  • CS234 Spring 2024 Lecture 13–14 录像与课件。
  • Strehl & Littman (2008),An Analysis of Model-Based Interval Estimation for Markov Decision Processes:MBIE、MBIE-EB 与 RiverSwim。
  • Brafman & Tennenholtz (2002),R-max – A General Polynomial Time Algorithm for Near-Optimal Reinforcement Learning。
  • Osband, Russo & Van Roy (2013),(More) Efficient Reinforcement Learning via Posterior Sampling(PSRL)。
  • Osband & Van Roy (2017),Why is Posterior Sampling Better than Optimism for Reinforcement Learning?
  • Jin, Allen-Zhu, Bubeck & Jordan (2018),Is Q-learning Provably Efficient?
  • Bellemare et al. (2016),Unifying Count-Based Exploration and Intrinsic Motivation(伪计数)。
  • Burda et al. (2018),Exploration by Random Network Distillation。
  • Osband et al. (2016),Deep Exploration via Bootstrapped DQN。
  • Agarwal, Jiang, Kakade & Sun,Reinforcement Learning: Theory and Algorithms(免费在线书):第 7 章(UCBVI)。

10. 下一讲预告

前三讲都在问”怎样学到一个未知的世界”。下一讲换一个角度:如果世界的规则是已知的(比如围棋、国际象棋),但状态多到无法枚举(围棋约有 1017010^{170} 个状态),怎样做出好的决策?

  • 第 2 讲的动态规划需要遍历所有状态——不可能;
  • 但我们只需要知道”当前这个局面该怎么走”——可以只在当前局面附近做前向搜索;
  • 蒙特卡洛树搜索(MCTS):用模拟来评估局面,用 UCB(第 11 讲!)决定搜索树中往哪里扩展——这叫 UCT;
  • AlphaGo / AlphaZero:用神经网络提供”直觉”(策略和价值),用 MCTS 提供”深思熟虑”,再用自我对弈不断改进两者。

你会看到,本讲”乐观地探索”的思想,在搜索树的每一个节点上被反复使用。

下一讲之前,建议你:跑通 code/lecture13/ 下的 3 个脚本,完成练习 1、3、4,并尝试练习 5、6。

← 返回课程目录